Обновление трек номера в заказе

Автор aokhrimenko, 12 декабря 2018, 13:05:55

« назад - далее »

aokhrimenko

Здравствуйте.
Разрабатываю модуль. Возник вопрос.
Мне в моем модуле хочется производить некоторые действия после того, как в заказе сменился номер отслеживания.
Если номер меняется через админку, то тут на помощь приходит хук "actionAdminOrdersTrackingNumberUpdate", вызов которого явственно мне покажет, что у заказа сменился трек номер.
Как я понимаю, трек номер у заказа может менять не только человек через панель администратора, но и сторонние модули.
Собственно, вопрос. Я могу как-то отследить смену номера отслеживания, если это обновление происходит из-за какого-то другого модуля?

Mr.Sen

Нет разницы при смене номера админом или модулем (с условием того что модуль должен быть создан по правилам prestashop).
Оба действия используют "actionAdminOrdersTrackingNumberUpdate",  для этого и создавали систему хуков.
Ну а если кто-то создает модули по своим правилам, то такие модули учитывать не нужно, все равно всех вариантов не предусмотреть.

aokhrimenko

Цитата: Mr.Sen от 12 декабря 2018, 13:30:44
Нет разницы при смене номера админом или модулем (с условием того что модуль должен быть создан по правилам prestashop).
Оба действия используют "actionAdminOrdersTrackingNumberUpdate",  для этого и создавали систему хуков.
Т.е. сторонний модуль после успешного обновления трек номера по правилам должен вызывать хук "actionAdminOrdersTrackingNumberUpdate"?

Adik

Модуль нет, а контроллер к которому он обращается да.

tigran

Цитата: aokhrimenko от 12 декабря 2018, 14:14:01
Цитата: Mr.Sen от 12 декабря 2018, 13:30:44
Нет разницы при смене номера админом или модулем (с условием того что модуль должен быть создан по правилам prestashop).
Оба действия используют "actionAdminOrdersTrackingNumberUpdate",  для этого и создавали систему хуков.
Т.е. сторонний модуль после успешного обновления трек номера по правилам должен вызывать хук "actionAdminOrdersTrackingNumberUpdate"?
Если он прямым запросом к базе изменит номер, тогда должен вызвать хук
Hook::exec('actionAdminOrdersTrackingNumberUpdate', array('order' => $order));
Не всегда это делают.
Я так думаю, что это не ваша проблема.
Делайте как нужно и пусть другие соблюдают правила и проблем не будет.

aokhrimenko

Спасибо большое за ответы.

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

У меня получился вот такой код
$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)) позволял вызвать хук, и я думал, что я что-то делаю не так :)