Обработка события order.changed (изменение заказа)

Уведомление может быть обработано при любом состоянии заказа, кроме «Доставлен» и «Отменен». Если заказ находится в статусе «Новый», и данные уведомления содержат информацию о товарах payload.positions, то состав заказа должен быть изменен. Во всех остальных случаях меняются реквизиты заказа, но не его состав.

Алгоритм обработки:

  • открыть транзакцию
  • найти документ заказа по идентификатору заказа СМ, заблокировать его от изменений
  • если документ заказа с таким номером не найден, завершить обработку с кодом 404
  • проверить статус заказа, если статус заказа равен «Доставлен» или «Отменен», то завершить обработку с кодом 200
  • если статус заказа «Новый», и в уведомлении есть информация о товарах payload.positions, то заново загрузить состав заказа аналогично уведомлению order.crtated,
  • обновить реквизиты шапки заказа, если они изменились,
  • если любой из перечисленных выше шагов внутри транзакции завершился с ошибкой, то выполнить откат транзакции
  • фиксировать транзакцию
  • вернуть СМ код завершения