83 lines
2.8 KiB
Plaintext
83 lines
2.8 KiB
Plaintext
@startuml
|
||
!theme plain
|
||
title Обработка товарных позиций при корректировке
|
||
|
||
start
|
||
|
||
:Получена корректировка заказа;
|
||
|
||
:Сравнить товары OMS и WTIS;
|
||
|
||
partition "Определить операции с товарами" {
|
||
:Товары для добавления;
|
||
note right: Есть в OMS, нет в WTIS
|
||
|
||
:Товары для удаления;
|
||
note right: Есть в WTIS, нет в OMS
|
||
|
||
:Товары для изменения;
|
||
note right: Есть в обоих, но с отличиями
|
||
}
|
||
|
||
partition "Обработать изменения товаров" {
|
||
if (Есть товары для изменения?) then (да)
|
||
:Для каждого товара проверить изменения;
|
||
|
||
if (Изменилось количество?) then (да)
|
||
if (Товар в резерве?) then (да)
|
||
:Создать копию с новым количеством;
|
||
:Удалить избыточную часть;
|
||
note right: Сложная логика split
|
||
else (нет)
|
||
:Изменить количество напрямую;
|
||
endif
|
||
endif
|
||
|
||
if (Изменилась цена?) then (да)
|
||
:Обновить цену и скидку;
|
||
endif
|
||
|
||
if (Изменился резерв?) then (да)
|
||
:Обновить дату резерва;
|
||
endif
|
||
endif
|
||
}
|
||
|
||
partition "Применить операции" {
|
||
if (Есть товары для добавления?) then (да)
|
||
:Создать новые товарные позиции;
|
||
endif
|
||
|
||
if (Есть товары для изменения?) then (да)
|
||
:Обновить существующие позиции;
|
||
endif
|
||
|
||
if (Есть товары для удаления?) then (да)
|
||
:Снять резерв с товаров;
|
||
:Установить статус "Удален";
|
||
:Удалить из заказа;
|
||
endif
|
||
}
|
||
|
||
partition "Обработать резервирование" {
|
||
if (Смена региона или ПВЗ?) then (да)
|
||
:Снять резерв со всех товаров;
|
||
note right: При смене региона/ПВЗ
|
||
endif
|
||
|
||
if (Есть товары для резервирования?) then (да)
|
||
:Зарезервировать товары;
|
||
note right: Из массива reserve
|
||
endif
|
||
|
||
if (Есть товары для снятия резерва?) then (да)
|
||
:Снять резерв с товаров;
|
||
note right: Из массива unreserve
|
||
endif
|
||
}
|
||
|
||
:Завершить обработку;
|
||
|
||
stop
|
||
|
||
@enduml |