Автор Тема: Обновление трек номера в заказе  (Прочитано 509 раз)

12 Декабрь 2018, 13:05:55
  • Новичок
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте.
Разрабатываю модуль. Возник вопрос.
Мне в моем модуле хочется производить некоторые действия после того, как в заказе сменился номер отслеживания.
Если номер меняется через админку, то тут на помощь приходит хук "actionAdminOrdersTrackingNumberUpdate", вызов которого явственно мне покажет, что у заказа сменился трек номер.
Как я понимаю, трек номер у заказа может менять не только человек через панель администратора, но и сторонние модули.
Собственно, вопрос. Я могу как-то отследить смену номера отслеживания, если это обновление происходит из-за какого-то другого модуля?
12 Декабрь 2018, 13:30:44
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1807
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Нет разницы при смене номера админом или модулем (с условием того что модуль должен быть создан по правилам prestashop).
Оба действия используют "actionAdminOrdersTrackingNumberUpdate",  для этого и создавали систему хуков.
Ну а если кто-то создает модули по своим правилам, то такие модули учитывать не нужно, все равно всех вариантов не предусмотреть.
12 Декабрь 2018, 14:14:01
Ответ #2
  • Новичок
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нет разницы при смене номера админом или модулем (с условием того что модуль должен быть создан по правилам prestashop).
Оба действия используют "actionAdminOrdersTrackingNumberUpdate",  для этого и создавали систему хуков.
Т.е. сторонний модуль после успешного обновления трек номера по правилам должен вызывать хук "actionAdminOrdersTrackingNumberUpdate"?
12 Декабрь 2018, 14:44:48
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Модуль нет, а контроллер к которому он обращается да.
12 Декабрь 2018, 14:54:56
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Нет разницы при смене номера админом или модулем (с условием того что модуль должен быть создан по правилам prestashop).
Оба действия используют "actionAdminOrdersTrackingNumberUpdate",  для этого и создавали систему хуков.
Т.е. сторонний модуль после успешного обновления трек номера по правилам должен вызывать хук "actionAdminOrdersTrackingNumberUpdate"?
Если он прямым запросом к базе изменит номер, тогда должен вызвать хук
Hook::exec('actionAdminOrdersTrackingNumberUpdate', array('order' => $order));Не всегда это делают.
Я так думаю, что это не ваша проблема.
Делайте как нужно и пусть другие соблюдают правила и проблем не будет.
12 Декабрь 2018, 16:15:08
Ответ #5
  • Новичок
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо большое за ответы.

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

У меня получился вот такой код
$order_id = intval(Tools::getValue('order_id'));
$tracking_number = intval(Tools::getValue('tracking_number'));
     
$order = new Order($order_id);
$order->shipping_number = $tracking_number;
$order->update();

$order_carrier = new OrderCarrier($order_id);
$order_carrier->tracking_number = pSQL($tracking_number);
$order_carrier->update(); 
     
Hook::exec('actionAdminOrdersTrackingNumberUpdate', array('order' => $order));

И только явственный вызов Hook::exec('actionAdminOrdersTrackingNumberUpdate', array('order' => $order)) позволял вызвать хук, и я думал, что я что-то делаю не так :)