Обработка события order.received (передача заказа в доставку)

Уведомление может быть обработано только при состоянии заказа «Собран». В остальных статусах это уведомление игнорируется. В результате обработки заказ переводится в состояние «Передан курьеру», в поле «Дата передачи курьеру» записываются текущие дата-время.

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

  • открыть транзакцию
  • найти документ заказа по идентификатору заказа СМ, заблокировать его от изменений
  • если документ заказа с таким номером не найден, завершить обработку с кодом 404
  • проверить статус заказа, если он не равен «Собран» - завершить обработку с кодом 200
  • изменить статус заказа на «Передан курьеру», установить в шапке заказа дату передачи курьеру
  • если любой из перечисленных выше шагов внутри транзакции завершился с ошибкой, то выполнить откат транзакции
  • фиксировать транзакцию
  • вернуть СМ код завершения