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

Это уведомление может быть обработано при любом состоянии заказа, кроме «Доставлен»

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

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