@startuml Редактирование счета на оплату !pragma teoz true title AS IS Редактирование счета на оплату (флоу из ТЗ COMPRO-3467) actor "Пользователь (АРМ)" as User participant "Frontend (АРМ)" as Front participant "Gateway (Прокси)" as Gateway participant "OMS-Documents (метаданные)" as Docs participant "Хранилище (S3)" as S3 participant "OMS-Print (конвертация)" as Print participant "Редактор (Tiptap)" as Editor == 1. ИНИЦИАЦИЯ РЕДАКТИРОВАНИЯ (ПОЛУЧЕНИЕ HTML) == User -> Front: Клик "Редактировать счет" (актуальный) activate Front Front -> Gateway: GET /documents/v1/invoice/{id}/html activate Gateway Gateway -> Docs: Запрос docURL для invoiceID activate Docs Docs --> Gateway: docURL (ссылка на PDF в S3) deactivate Docs Gateway -> S3: Запрос PDF файла по docURL activate S3 S3 --> Gateway: PDF файл счета deactivate S3 Gateway -> Print: Конвертация PDF в HTML (вызов метода) activate Print Print --> Gateway: HTML файл счета deactivate Print Gateway --> Front: HTML файл (ответ 200) deactivate Gateway Front -> Editor: Инициализация редактора с HTML activate Editor Editor --> Front: Готово deactivate Editor Front --> User: Открыто окно редактора deactivate Front == 2. РЕДАКТИРОВАНИЕ И СОХРАНЕНИЕ НОВОЙ ВЕРСИИ == User -> Editor: Вносит изменения (текст, таблицы) activate Editor Editor --> User: Изменения отображены User -> Editor: Клик "Сохранить" Editor -> Front: Передача измененного HTML deactivate Editor activate Front Front -> Gateway: POST /documents/v1/invoice/{id}/html\n{ "html": "..." } activate Gateway Gateway -> Print: Конвертация HTML в PDF activate Print Print --> Gateway: Новый PDF файл deactivate Print Gateway -> S3: Сохранение нового PDF файла activate S3 S3 --> Gateway: newDocURL (ссылка на новый файл) deactivate S3 Gateway -> Docs: Создание новой версии записи\n(новый docURL, isSend:false, обновленные Base/Details) activate Docs Docs --> Gateway: OK (новая версия создана) deactivate Docs Gateway --> Front: 204 No Content (Успех) deactivate Gateway == 3. ОБНОВЛЕНИЕ ИНТЕРФЕЙСА == Front -> User: 1. Закрывает редактор\n2. Уведомление "Счет изменен" Front -> Gateway: Вызов getInvoiceLatest (перезапрос) activate Gateway Gateway -> Docs: Запрос последней версии счета activate Docs Docs --> Gateway: Данные обновленного счета (с newDocURL) deactivate Docs Gateway --> Front: Данные обновленного счета deactivate Gateway Front -> User: Обновляет отображение во вкладке "Счет на оплату" deactivate Front @enduml @startuml @enduml @startuml title TO BE Логика расчета НДС actor "Триггер" as User participant "OMS" as OMS participant "NDS" as NDS User -> OMS: Создание спеки / счета на оплату / триггер ПМП OMS --> OMS: Заполнение необходимых данных (Блок КА, блок доставок,\nшапка документа и т.д. в зависимости от типа документа) OMS -> NDS: Вызывает метод: nds/vat_calc в сервисе NDS alt Если вернулся nds_calc = nds_reverse || nds_calc = nds_direct OMS -> NDS: Запрашашивает НДС и производные NDS --> OMS: answer OMS --> OMS: Подставляет НДС и производные из ответа сервиса NDS else Если вернулся nds_calc = self OMS --> OMS: Рассчитывает НДС и производные по формуле (UnitPrice*20)/120\n(как и было) end OMS --> User: answer @enduml