@startuml
mainframe TO BE применение акций и скидок в заказе B2C
scale 1500x1500
actor user as user
participant ARM
participant Sherlock
participant Gateway
participant Order
participant PDM
participant Druz
participant SCROOGE
participant Promo

autonumber
user -> ARM: Нажимает кнопку "Применить скидки"
ARM -> ARM: Рендерит модальное окно
ARM -> ARM: Акции сайта - чекбокс активен
ARM -> ARM: Скидки, выбрано: Без скидки
autonumber 5.1
alt Выбирает только скидки уровня ОПТ
    user -> ARM: Выбирает тип ОПТа для клиента
    user -> ARM: Снимает чекбокс "Акции сайта"
    user -> ARM: Нажимает кнопку "Применить"
    ARM -> Gateway: Передает запрос
    Gateway -> Gateway: Получает название региона из кэша
    Gateway -> SCROOGE: Запрашивает цены из SCROOGE согласно уровню ОПТа
    SCROOGE --> Gateway: answer
autonumber 6.1
else Выбирает только акции сайта
    user -> ARM: Оставляет чекбокс "Акции сайта"
    user -> ARM: Оставляет скидку с типом "Без скидки"
    user -> ARM: Нажимает кнопку "Применить"
    ARM -> Gateway: Передает запрос
    Gateway -> Gateway: Получает название региона из кэша
    Gateway -> Gateway: Готовит запрос в promo
    Gateway -> Promo: Запрашивает акции и цены по товарам из Promo
    Promo --> Gateway: answer
autonumber 7.1
else Выбирает акции и скидки ОПТ
    user -> ARM: Выбирает тип ОПТа для клиента
    user -> ARM: Оставляет чекбокс "Акции сайта"
    user -> ARM: Нажимает кнопку "Применить"
    ARM -> Gateway: Передает запрос
    Gateway -> Gateway: Получает название региона из кэша
    Gateway -> Gateway: Готовит запрос в promo
    Gateway -> Promo: Запрашивает акции и цены по товарам из Promo
    Promo --> Gateway: answer
    Gateway -> SCROOGE: Запрашивает цены из SCROOGE согласно уровню ОПТа
    SCROOGE --> Gateway: answer
    Gateway -> Gateway: Применяет наименьшие цены\nк каждому из товаров
end
autonumber 8
Gateway -> Order: Записывает изменения в модель
Order --> Gateway: Изменения успешно применены
Gateway -> Gateway: Собирает ответ для frontend
Gateway --> ARM: Answer
ARM -> user: Отображает примененные акции
@enduml