@startuml Процесс создания и жизненный цикл заказа state "Заказ не создан" as start state "НОВЫЙ" as new_order state "ЗАБРОНИРОВАН" as booked { state "Таймер брони (3 дня)" as reserve_timer } state "Оформление..." as processing_payment state "В РАБОТЕ" as in_progress state "ОТМЕНЕН" as cancelled state "Товар в закупке" as purchasing start --> new_order : Создать заказ new_order --> cancelled : Кнопка "Отменить заказ"\n(Ручная отмена) new_order --> booked : Кнопка "Забронировать"\n(Синхронный запрос во Втис) booked --> booked : **Успех:** Товары зарезервированы booked --> new_order : Кнопка "Отменить бронирование"\n(Таймер брони продолжает идти)" reserve_timer --> cancelled : Истек 3 дня\n(Автоотмена брони) booked --> cancelled : Кнопка "Отменить заказ"\n(Ручная отмена) new_order --> processing_payment : Кнопка "Оформить" booked --> processing_payment : Кнопка "Оформить" processing_payment --> in_progress : **Успех:** Товары доступны\nЗаказ передан в системы товародвижения processing_payment --> purchasing : **Неудача:** Товара нет в наличии\n(Запуск процесса закупки) purchasing --> in_progress : Товар закуплен state in_progress { state "Заказ выполняется" as active state "Резерв продлен" as extended active --> extended : Кнопка "Продлить резерв"\n(Правила: 1 раз если не оплачен,\n∞ раз (Ст. менеджер) если оплачен) extended --> active } in_progress --> cancelled : Кнопка "Отменить заказ" @enduml