Как при переводе заказа в статус "отправлено" передать и номер трэкинга
В документации есть чудная глава https://developers.webasyst.ru... о том как программно менять статусы заказов. Это работает. Но у меня возникла трудность с переводом заказа в статус "отправлено". Когда это делается через интерфейс бэкэнда, то появляется дополнительный диалог, в котором можно ввести помимо всего прочего ещё и номер трэкинга, который потом используется плагином доставки и при этом формируются уведомления согласно настройкам магазина. Вопрос в том, а как всё то же сделать, если заказ переводится в статус "отправлено" программно? Есть способ инициировать всю это процедуру по схранению трэкинга, параметров и посылку уведомления не копируя в свой обработчик весь код из магазина?
Эта тема в архиве. Добавление комментариев к ней отключено.










6 ответов
Можете добавить данные в таблицу shop_order_params и после этого менять статус.
Вынужден поднять тему. Предложенный рецепт сработал, но частично. Почему-то у заказов, у которых номер трэкинга добавлен вручную добавлением данных в таблицу при формировании уведомления параметр $action_data.params.tracking_number пустой и номер трэкинга в письме клиенту не отсылается, хотя если войти в личный кабинет заказа и в бакэнде результат трэкинга есть. Видимо номер трэкинга надо ещё куда-то записать?
еще нужна запись в таблицы shop_order_log, shop_order_log_params
Всё не совсем так. Да, запись в shop_order_log_params нужна для $action_data.params.tracking_number. Но туда пишет и shopWorkflowEditshippingdetailsAction при вызове
и если до этого сделать запись в shop_order_log, то в результате будет дубликат действия. Log_id должен быть уникален и в хронологическом порядке для заказа, если я правильно пропарсил код shopscrip. К сожалению в shopWorkflowEditshippingdetailsAction->execute не передать параметры. там изначально стоит
а номер трэкинга передаётся как
$tracking = waRequest::post('tracking_number', '', 'string')
и это при вызове вручную Action я не понимаю как подменить.
$_POST/$_GET массивы не защищены от перезаписи т.ч.
перед вызовом shopWorkflowEditshippingdetailsAction->execute
Большое спасибо. Это решило проблему! Теперь код работает как надо.