Доброго дня. В общем проблема у меня возникла с клонированием этого модуля, вроде делал всё по феншую- скопировал, переименовал, внутри всех файлов название модуля поправил, название таблиц BANK_WIRE_DETAILS, BANK_WIRE_OWNER, BANK_WIRE_ADDRESS изменил. Установил модуль, настроил и при попытке оплатить словил 500 ошибку. Полез в отладку- там мне сказали что ошибка выбивается на classes/PaymentModule.php в строке if (!Validate::isLoadedObject($order_status)) { PrestaShopLogger::addLog('PaymentModule::validateOrder - Order Status cannot be loaded', 3, null, 'Cart', (int)$id_cart, true); throw new PrestaShopException('Can\'t load Order status'); Насколько я нагуглил проблема в отсутствии статуса в который шоп мог бы перевести заказ. Попытался в таблицы ps_order_state и ps_order_state_lang добавить ручками статусы для данного модуля с новым названием, ничего не изменилось, по тому же принципу в ps_configuration добавил запись анологичную PS_OS_BANKWIRE Позже нашёл ещё что validation ссылается на config/config.inc.php , там тоже всё прописал по аналогии с остальным. Но ничего не изменилось. Я это всё к чему- я честно-честно пытался, но ничерта не вышло у меня. в общем помогите - в какую сторону думать. Если у кого есть готовое решение клонирования этого модуля буду очень благодарен(нужно 3 банка сделать), может у кого есть модуль multibankwire только не создающий всякую чушь, вроде зелёной строки в хэдере, которая уродует весь сайт и заставляет клиентов думать(не та аудитория, что бы ещё сканировать и прикладывать скан чека). Да и с адаптацией внешнего вида под мою тему очень не хотелось бы возиться много. PS: понимаю что всё начинать надо было с лога дебага, но я вот такой неумный сейчас на работе, домашний комп вырубил и лог скопировать куда-нибудь забыл, может без него кто чего подскажет, а вечером обязательно лог выложу.
Что значит добавил ручками и сделал аналогичную? В магазине делаете статус для заказа под этот модуль, с его id добавляете в ps_configuration какую-нибудь PS_OS_BANKWIRE1, везде в модуле PS_OS_BANKWIRE меняете на PS_OS_BANKWIRE1
Статус добавлял не через backoffice а через phpmyadmin сразу вписывал в ps_order_state и ps_order_state_lang по идее не должно быть разницы, но обязательно попробую и через backoffice, как-то не подумал что может куда-нибудь ещё дописывать.
ошибка что не может добавить в заказ соответствующий модулю статус, то есть его или нет в базе или он не прописан в модуле
Это я понял, а вот почему так и где накосячил не понял. В любом случае как доеду домой попробую заново уже через backoffice добавить статусы. А вообще хотелось бы использовать уже существующие статусы для bankwire если это возможно(т к по сути мне нужен точно такой же статус "ожидает оплаты" и нет особого смысла плодить статусы без надобности), где вообще настраивается это и возможно ли это? Ну и может ещё какие идеи есть или кто может чего дельного посоветовать, т к чет не сильно вериться что есть принципиальная разница добавлю я через phpmyadmin в базу 3 строчки или это сделает за меня такой же скрипт(хотя и хочется верить что не такой же, и это и правда решит проблему)
Уф.. в общем дурак я)) Проблема была простая и нелепая, как всегда в погоне за автоматизацией не заметил что в Notepad++ у меня не стояло "учитывая регистр", по итогу переменную из БД в одном месте прописал в нижнем регистре, а в отладке эта сволочь мне отказывалась показать что запрашивает несуществующую переменную. Но раз уж я тему открывал и в сети сейчас инструкции для оленей на 1.6 нет - то вот пошаговое клонирование bankwire на prestashop (вдруг такой же "умный" как я будет искать): 1. Создаём новый статус(не важно через backoffice или БД, лично мне удобнее через БД, что бы сразу прописать какое письмо отправлять при заказе) 2. Добавляем в ps_configuration Код: INSERT INTO `brandsno_pres16b`.`ps_configuration` ( `id_configuration` , `id_shop_group` , `id_shop` , `name` , `value` , `date_add` , `date_upd` ) VALUES ( NULL , NULL , NULL , 'PS_OS_BANKWIREONE', 'Сюда id статуса', '0000-00-00 00:00:00', '0000-00-00 00:00:00' ); 3. Добавляем в config.inc.php PHP: define('_PS_OS_BANKWIREONE_', Configuration::get('PS_OS_BANKWIREONE')); 4. Копируем папку модуля 5. Прогоняемся по всем файлам в копии и меняем bankwire to bankwireone 6. Та же схема PS_OS_BANKWIRE to PS_OS_BANKWIREONE 7. И ещё круг BANK_WIRE to BANK_WIREONE 8. Не забываем скопировать в темах модуль что бы не побить презентабельность страницы 9. И соответственно в теме тоже прогоняем все файлы на наличие bankwire и меняем на bankwireone Ну надеюсь будет кому полезно, бонусом уже склонированая папочка, дабы опустить пункты 4-7, да и честно говоря с ней проще работать из-за чуть более уникальной переменной. Тык на меге.
AvaTTaR, все вроде просто, но что-то у меня выдает 500 ошибку, видимо из-за второго пункта: " Добавляем в ps_configuration " - это куда? Файла с таким названием у меня нет. А само слово ps_configuration встречается только в тексте двух файлов на хосте: ps_emailsmanager.php и configuration_exeptions.php пробовал добавлять указанный вами код и туда и туда, разумеется проставляя свой айди статуса и если вставлять в первый то в админке мы получаем: "[PrestaShop] Fatal error in module file :/home/......./........./www/modules/ps_emailsmanager/ps_emailsmanager.php: syntax error, unexpected 'INTO' (T_STRING)" В БД, кстати, таблицы с таким названием тоже нет. (престра 1.6.1.11)
Вот как раз в БД и должна быть такая таблица, посмотрите внимательнее, и код который я добавил это просто sql-запрос, выполняете (естественно заменив "brandsno_pres16b" на свою базу, тут мой косяк, не пометил) и всё должно быть ок.
В общем клонировал модуль два раза все ок, а на третий раз возникла проблемка, в корзине стало выдавать ошибку: "TECHNICAL ERROR: unable to save adresses Details: Error thrown: [object Object] Text status: parsererror" Код перепроверил сто раз, пробовал сносить третий клон и ставить снова, все равно такая ерунда на выходе. И что интересно банкваер три сам по себе работает без проблем, но в связке с клонами один и два, получается ошибка. Вы с подобным не сталкивались?
Забавная ошибка... ну первое это проверить нет ли каких модулей ещё связанных с корзиной и попробовать их вырубить. Если не поможет или нет то попробуйте включить все 3 модуля, потом добавить новый товар и попробовать его в корзину добавить- сработает ли. Ещё вариант- добавить пару левых модулей оплаты сначала(можно даже не включая их, просто добавить), а потом раскатить уже 2 дополнительных bankwire . Дальше надо смотреть, возможно включить полную отладку и искать к чему в базе обращается во время ошибки.