Skip to main content

Изменение статуса заказа на сайте, на основе реквизитов заказа из 1С

8 июня, 2020 (обновлено: 7 сентября, 2023)
Просмотров 1207
Section background
Версия: 1.131.0 | Последнее обновление: 08 октября 2024 | открыть

Нередко, возникает задача автоматизации смены статуса заказа на сайте, по данным из 1С, например, когда раннее выгруженный заказ с сайта, был помечен в 1С на удаление или проведен или является теперь оплаченным/отгруженным.

В плагине есть настройки для смены статуса заказа на сайте на основе данных в реквизитах заказа, который 1С ранее получила с сайта, а теперь выгружает заказ обратно на сайт, по причине того, что он был изменен. Конечно же это не будет работать, если выгрузка заказов с сайта в 1С не производится.

Состояние реквизитов проверяется последовательно, сверху — вниз, то есть итоговый статус будет по последнему выполненному условию. На примере, предположим, что из 1С поступил заказ, у которого задан реквизит «Дата оплаты по 1С», а также «ПометкаУдаления» в значении «true», итоговый статус получится «Отменен».
 

Пример данных по реквизитам в содержимом заказа, поступившего из 1С на сайт

 
 
 
Если, например, вам не требуется смена статуса при реквизите «Проведен» в значении «true», вы можете оставить выбор статуса для него в состоянии «Не выбрано», чтобы не производить никаких действий.

Свое поведение смены статуса

Вполне возможно, что вам потребуется какой-то другой вариант смены статуса и по другим данным. В данном случае, можно не выбирать ничего в селектах, только включить обработку изменений статуса и использовать фильтр `itglx_wc1c_handle_order_result_status` (может передать в callback до четырех параметров — текущее значение, массив реквизитов документа,  SimpleXml объект узла документа, а также объект заказа на сайте) для реализации своего поведения по статусу.

Предположим, что у документа есть какой-то реквизит «Статус для сайта», который содержит необходимое значение статуса, также предположим, что он содержит уже конкретный код статуса, то есть processing, pending и т.д.

В итоге получится следующее (устанавливать статус не нужно, из фильтра ожидается лишь необходимое значение кода статуса, который нужно установить):

Поделиться: