Клонирование bankwire

Тема в разделе "PrestaShop", создана пользователем AvaTTaR, 28 ноя 2016.

  1. AvaTTaR

    AvaTTaR

    Регистрация:
    28 ноя 2016
    Сообщения:
    33
    Симпатии:
    6
    Доброго дня.
    В общем проблема у меня возникла с клонированием этого модуля, вроде делал всё по феншую- скопировал, переименовал, внутри всех файлов название модуля поправил, название таблиц 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: понимаю что всё начинать надо было с лога дебага, но я вот такой неумный сейчас на работе, домашний комп вырубил и лог скопировать куда-нибудь забыл, может без него кто чего подскажет, а вечером обязательно лог выложу.
     
  2. duke1999

    duke1999

    Регистрация:
    30 дек 2014
    Сообщения:
    164
    Симпатии:
    50
    Что значит добавил ручками и сделал аналогичную?
    В магазине делаете статус для заказа под этот модуль, с его id добавляете в ps_configuration какую-нибудь PS_OS_BANKWIRE1, везде в модуле PS_OS_BANKWIRE меняете на PS_OS_BANKWIRE1
     
  3. AvaTTaR

    AvaTTaR

    Регистрация:
    28 ноя 2016
    Сообщения:
    33
    Симпатии:
    6
    Статус добавлял не через backoffice а через phpmyadmin сразу вписывал в ps_order_state и ps_order_state_lang по идее не должно быть разницы, но обязательно попробую и через backoffice, как-то не подумал что может куда-нибудь ещё дописывать.
     
  4. duke1999

    duke1999

    Регистрация:
    30 дек 2014
    Сообщения:
    164
    Симпатии:
    50
    ошибка что не может добавить в заказ соответствующий модулю статус, то есть его или нет в базе или он не прописан в модуле
     
  5. AvaTTaR

    AvaTTaR

    Регистрация:
    28 ноя 2016
    Сообщения:
    33
    Симпатии:
    6
    Это я понял, а вот почему так и где накосячил не понял. В любом случае как доеду домой попробую заново уже через backoffice добавить статусы. А вообще хотелось бы использовать уже существующие статусы для bankwire если это возможно(т к по сути мне нужен точно такой же статус "ожидает оплаты" и нет особого смысла плодить статусы без надобности), где вообще настраивается это и возможно ли это?

    Ну и может ещё какие идеи есть или кто может чего дельного посоветовать, т к чет не сильно вериться что есть принципиальная разница добавлю я через phpmyadmin в базу 3 строчки или это сделает за меня такой же скрипт(хотя и хочется верить что не такой же, и это и правда решит проблему)
     
  6. AvaTTaR

    AvaTTaR

    Регистрация:
    28 ноя 2016
    Сообщения:
    33
    Симпатии:
    6
    Уф.. в общем дурак я)) Проблема была простая и нелепая, как всегда в погоне за автоматизацией не заметил что в 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, да и честно говоря с ней проще работать из-за чуть более уникальной переменной. Тык на меге.
     
    Epus и duke1999 нравится это.
  7. Epus

    Epus

    Регистрация:
    14 июн 2017
    Сообщения:
    19
    Симпатии:
    0
    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)
     
    Последнее редактирование: 26 окт 2017
  8. AvaTTaR

    AvaTTaR

    Регистрация:
    28 ноя 2016
    Сообщения:
    33
    Симпатии:
    6
    Вот как раз в БД и должна быть такая таблица, посмотрите внимательнее, и код который я добавил это просто sql-запрос, выполняете (естественно заменив "brandsno_pres16b" на свою базу, тут мой косяк, не пометил) и всё должно быть ок.
     
    Epus нравится это.
  9. Epus

    Epus

    Регистрация:
    14 июн 2017
    Сообщения:
    19
    Симпатии:
    0
    AvaTTaR, все разобрался, большущее спасибо!!! :Good:
     
  10. Epus

    Epus

    Регистрация:
    14 июн 2017
    Сообщения:
    19
    Симпатии:
    0
    В общем клонировал модуль два раза все ок, а на третий раз возникла проблемка, в корзине стало выдавать ошибку: "TECHNICAL ERROR: unable to save adresses Details: Error thrown: [object Object] Text status: parsererror"
    Код перепроверил сто раз, пробовал сносить третий клон и ставить снова, все равно такая ерунда на выходе. И что интересно банкваер три сам по себе работает без проблем, но в связке с клонами один и два, получается ошибка. Вы с подобным не сталкивались?
     
  11. AvaTTaR

    AvaTTaR

    Регистрация:
    28 ноя 2016
    Сообщения:
    33
    Симпатии:
    6
    Забавная ошибка... ну первое это проверить нет ли каких модулей ещё связанных с корзиной и попробовать их вырубить.
    Если не поможет или нет то попробуйте включить все 3 модуля, потом добавить новый товар и попробовать его в корзину добавить- сработает ли.
    Ещё вариант- добавить пару левых модулей оплаты сначала(можно даже не включая их, просто добавить), а потом раскатить уже 2 дополнительных bankwire . Дальше надо смотреть, возможно включить полную отладку и искать к чему в базе обращается во время ошибки.