Модуль оплаты счет opencart — разбор ошибок (Счет для OpenCart)

По просьбам телезрителей публикуем эту статью для модуля оплаты по безналу интернет-магазина opencart, созданный одним из наших уважаемых авторов.

Рассмотрим пример разбора полётов самых распространённых ошибок. Хотелось бы заметить, что если у вас не кастомная сборка (скаченная непонятно откуда) — то пардон это ваши трудности. Мы рассматриваем стандартный классический движок версий: 1.4.9- 1.5.X.

Все редакции касаются только файла print.php Многие скачав программу — заливают её и выводят сразу файл php — это не верно, т.к. сначала должен быть Заказ, т.е. таблицы MySQL, с которыми работает модуль:

Ошибка N1: Нет доступа к данным!

// Строка 28

$order_db = DB_PREFIX.»order«;                     // Таблица Заказов
$order_product_db = DB_PREFIX.»order_product«;     // Таблица Заказанных товаров
$order_total_db = DB_PREFIX.»order_total«;        // Таблица Итоговая

Заходим в /phpmyadmin и убеждаемся что они есть и называются именно так. Пароли берутся из файла config.php Ну если всё это есть, попробуйте прописать верный путь к config к строке 22. Хотя вернее всего — от корня сервера это DOCUMENT_ROOT так правильно. Ну уж это дело — смотря какой у кого провайдер. Например на Мастерхост — именно так. У всех нормальных по-человечески это сделано. Впишите db_connection — прямо в файл, например. Эта ошибка говорит лишь о том, что программа не может соединиться с Базой Данных. Вот и всё.

Ошибка N2: Ошибка: Такого Заказа нет

Это означает, что не может построиться массив при выводе из БД первой таблицы:

// Строка 41 // SELECT в «Таблице Заказов»
$queryz =»SELECT `order_id`, `invoice_no`, `invoice_prefix`, `store_id`, `store_name`, `store_url`, `customer_id`, `customer_group_id`, `firstname`, `lastname`, `email`, `telephone`, `fax`, `shipping_firstname`,     `shipping_lastname`, `shipping_company`, `shipping_address_1`, `shipping_address_2`, `shipping_city`, `shipping_postcode`, `shipping_country`, `shipping_country_id`, `shipping_zone`, `shipping_zone_id`,     `shipping_address_format`, `shipping_method`, `payment_firstname`, `payment_lastname`, `payment_company`, `payment_address_1`, `payment_address_2`, `payment_city`, `payment_postcode`, `payment_country`, `payment_country_id`, `payment_zone`, `payment_zone_id`, `payment_address_format`, `payment_method`, `comment`, `total`, `reward`, `order_status_id`, `affiliate_id`, `commission`, `language_id`, `currency_id`,     `currency_code`, `currency_value`, `date_added`, `date_modified`, `ip` FROM `».$order_db.»` WHERE `order_id`='».$my_id.»‘ AND `ip` LIKE ‘».$my_ip.»‘ ORDER BY `».$order_db.»`.`order_id` DESC LIMIT 1″; // OR `email`= ЛК OR= `order_id`= ЛК

Бывает, что в кастомных сборках, подсунутых вам — поля reward — нет, из-за этого возникает эта ошибка. Проверьте все поля и их название (удалите) вручную. Откройте /phpmyadmin Структура и сверьте визуально имена полей. Если нет каких-то имён полей — закоментарьте, например reward. Также и в строке: 93 — знаком // комментария строки для переменной в PHP. Для всех версий — не угодишь. Но тут сделано всё по максимуму. Нефига было увлекаться красотой магазина. Красота — требует жертв 🙂

Ошибка N3: Ошибка: Товаров нет

Это означает, по аналогии с Ошибкой N2 — не может построиться массив данных из БД.

// Cтрока 351 // SELECT в «Таблице заказанных Товаров»
$queryt =»SELECT `order_product_id`, `order_id`, `product_id`, `name`, `model`, `quantity`, `price`, `total`, `tax` FROM `».$order_product_db.»` WHERE `order_id`='».$order_id.»‘ ORDER BY `».$order_product_db.»`.`order_product_id` ASC»;

Ну прежде всего нужно опять-таки убедиться в /phpmyadmin, что в таблице MySQL xxx_order_product_id — поля точно те, какие есть. Если их нет — дописать в коде. Если лишние — удалить. Например, представим, что есть некий tax2, а в запросе его нет. Добавляем его в $queryt= вместе с кавычками и запятой, между другими полями. Собственно вот и всё.

Ошибка N4: Вывод Счёта-Договора на печать возможен только с компьютера, которого вы делали Заказ на сайте! (по безопасности)

// Строка 419 // SELECT в «Таблице Итоговая»
$queryr = «SELECT `order_total_id`, `order_id`, `code`, `title`, `text`, `value`, `sort_order` FROM `».$order_total_db.»` WHERE `order_id` = ‘».$order_id.»‘ ORDER BY `».$order_total_db.»`.`order_total_id` ASC»;

Опять же — убеждаемся через /phpmyadmin в наличие имён полей в таблице. И если всё верно, то забываем про это. Как страшный сон. У нас всё нормально. Всё в порядке. Дыхание ровное, самочувствие бодрое 🙂

Предупреждение: Вывод Счёта-Договора на печать возможен только с компьютера, которого вы делали Заказ на сайте!

Это означает, что если Заказа нет и вы его вызываете ИЛИ c IP-которого делался Заказ вы вызываете ИЛИ Вы не получили по-каким либо причинам доступ к данным — выводится эта надпись. Вот вродебы и всё. Все ошибки описаны — других не может быть. И упаси вас бох, сказать, что мол: у меня нет папки /admin в OpenCart — как написал один товарищ 🙂 А вы в утюге можете радио слушать — включив его в антенную розетку? Вот и я про тоже… Модуль Счет для OpenCart — предназначен для OpenCart! Хотите переделать под Джумлу? — скачивайте и пилите как хотите, ничего сложного не вижу.

Предупреждение: FPDF error: Some data has already been output, can’t send PDF file

Это просто предупреждение, что PDF не может сформироватся в файле, т.к. ну блин — Ошибки 1,2,3,4!  🙂 А что, пардон он может вывести, если заваливается при выводе из-за ошибок ИЛИ Блокировки доступа к Данным в БД. Ну если бы я убрал ошибки — ВЫ БЫ ВИДЕЛИ БЕЛЫЙ ЭКРАН, и было бы в обще не понятно — что происходит с файлом! Или сделал бы после трёх попыток редиркт на ФСБ сайт.

Как и зачем реализованы выводы ошибок?

Зачем? Затем, что бы Вы видели где у вас не работает программа и понимали в каком именно месте Затык и могли поправить мало-мальски владея php. Добивайтесь сначала коннекта файла print и mysql. Затем проверяйте таблицу в ошибке N2 — как только это будет исправлено: будет работать как Швейцарские часы!!!

Как? ВНИМАНИЕ Ошибки: 1,2,3,4 — самоисключающие друг-друга. Т.е. Исправив Ошибку N1 , 2,3,4 — остальные пропадут сами. Уверен на 100%! 1 и 2 — 3 и 4, ну и 4. Из-за разнародных версий и кастомных сборок — вот они — ваши ошибки. А на будущее — качайте OpenCart не у абы кого, а с официального сайта! Это же конструктор для взрослых! Я например, сделал вывод из Адмики всех заказов сразу — в 1 клик. Да уверен вы и сами сможете сделать что сами захотите…

А когда как на картинке OpenCart? (Без ошибки N1) — это значит, что посмотреть чужой заказ невозможно по IP-адресу 🙂 Всё верно! Если не пишет: Ошибка N1 (N2): Нет доступа к данным! — ЗНАЧИТ ВСЁ КОРРЕКТНО!

 

Скачать Счет для OpenCart можно на на этом сайте.

9 thoughts on “Модуль оплаты счет opencart — разбор ошибок (Счет для OpenCart)

  1. Напоследок — убедитесь, что ваш файл: config.php может инклудится в файл print.php. Ведь в конфиге настройки с коннектом к вашей БД! А без этого работать не будет: пожалуй самая РАСПРОСТРАНЁННАЯ ОШИБКА. Потом, проверьте поля Таблиц — СРАЗУ ЗАРАБОТАЕТ! 😛

  2. Добрый день, модуль реально хороший и рабочий. У некоторых могут быть проблеммы с настройками из за того, чио забывают или не замечают… что нужно поменять адрес сайта в catalog\view\theme\default\template\payment\bank_transfer.tpl
    ОДНАКО — может подскажете как сделать что бы из ИСТОРИИ ЗАКАЗОВ так же можно было распечатать счет… КАК туда добавить кнопку???

    1. Кнопку также, там где: «Выставить счёт» — таже самая кнопка, тот же инклуд, а вот доступ к ней — только Админская сессия имеет возможность сделать инклуд. Делается в три строчки IF($session==»admin») { INCLUDE «/…»; } примерно, точно не вспомню, надо смотреть, т.к. модуль делал уважаемый человек.

  3. подскажите как сделать что бы в админке была кнопка, можно админу посмотреть или же распечатать этот счёт!очень нужно,кнопочку сделала по анологии со старой(дифолтной) но выводит только если заказ оформил с этого компа,тоесть не проходит если с другого ip,как эту проверку можно обмануть в админке?

    1. Ну у вас ссылка-то работает! Возьмите ссылку. В админке, на странице заказов сделайте ссылку с нумератором. Вот и всё. Работы минут

  4. удалось сделать распечатку из админки,но самый главный вопрос — если товаров много то выводится на несколько листов и вот тут ошибка,первая страница нормально, а остальные — каждая страница с одним словом — например на одной странице Сумма: 28 469,00 p и всё пусто -ниже на другой Итого: 28 469,00 p и пусто,ниже на следующей — двадцать восемь тысяч четыреста шестьдесят девять рублей 00 копеек и так далее!ну это мне кажется серьёзная ошибка!как исправить?

  5. Уважаемый Сисадмин !я не на столько силён в программировании,просьба более подробно объяснить,на сколько я понял у вас на сайте всё нормально работает,значить вы это как то реализовали,подскажите как,думаю людям будет полезно,а не только мне!

    1. Уважаемые пользователи.
      А что тут «более подробно объяснять-то»???
      Автор придумал программу. Она продаётся как модуль (читайте — как конструктор). Программирование это вообще масштабируемый конструктор (вот только для взрослых или ещё пока детей!?) Вы ЧИТАЕТЕ (а не проглядываете быстренько ЭТУ статью) Всё популярно написано. Открываете PHP-код и идёте на курсы по программированию за ответами: как, где и что: добавить, поправить, изменить, поменять.. А почему это так? А почему то этак? Вы в состоянии открыть 1 (один) единственный файл PHP под названием «print.php» внутри которого происходит генерация пдф документа по средством библиотеки FPDF! Чего тут не понятного? — Курсы!!!!!!!!! минимум вас ждут.
      PS: Все в жизни много хоят — всё на халяву, а платить никто не хочет. Если платить не кто не хочет так становись сам ГУРУ и программируй, не платя никому… Сказки, про: А ДАВАЙТЕ ВЫ НАМ ПЕРЕДЕЛАЕТЕ ПОД НАС… уже не катят!!! Знавал я тут таких, когда до сути доходило — цена вопроса 3 копейки… Работы на 3-4 дня… Вот вы подумайте при нормо-часе 100000рубл/30дней = 3333 рублей в день минимум! (А нам предлагают…. купите этот старый пиджак, который нам и даром не нужен — 100 рублей. ЗА бутылку пива — простите!?) КУРСЫ!!!!!!!!!!

Comments are closed.