FlowPOS · tochka
hi-fi · схема-флоу L2 · user-flow

Завсклад — приёмка, инвентаризация, списание

Путь роли по экранам (user-flow). Узлы — экраны S-NN, события и решения; тип кодируется цветом (словарь §5). Внешние системы — пунктиром. Граф 1:1 с Mermaid-каноном warehouse-receiving-inventory.md.

FLOW Путь по экранам Тематизированный Mermaid — единый стиль со схемами слоя 1. Граф 1:1 с каноном user-flows/warehouse-receiving-inventory.md.
событие экран S-NN гейт авторизация предупреждение стоп / отказ переход message flow
%%{init:{"theme":"base","themeVariables":{"fontFamily":"Hanken Grotesk, ui-sans-serif, sans-serif","fontSize":"14px","lineColor":"#5a4d3d","primaryColor":"#f6e6cd","primaryBorderColor":"#d5842a","primaryTextColor":"#241b12","clusterBkg":"#fbf7ef","clusterBorder":"#d0c1a6","edgeLabelBackground":"#fbf7ef"},"flowchart":{"curve":"basis","nodeSpacing":40,"rankSpacing":52,"htmlLabels":true,"useMaxWidth":false,"padding":16}}}%%
flowchart TD
    Start(["Завсклад: складская операция"]) --> TASK{"Какая задача:
приёмка, инвентаризация
или списание?"} TASK -->|"приёмка / перемещение"| S15["S-15 · Приёмка / накладные"] TASK -->|"инвентаризация"| S16["S-16 · Инвентаризация"] TASK -->|"списание"| S17["S-17 · Списание"] S15 --> KIND{"Тип документа:
приход или расход-перемещение?"} KIND -->|"приход (от поставщика /
по перемещению)"| RECV["Приходная накладная — DRAFT"] KIND -->|"расход (исходящее
перемещение на другую точку)"| OUTD["Расходная накладная — DRAFT"] OUTD -->|"«Отправить»"| SENT["SENT: документ заблокирован,
остаток отправителя списан"] SENT -. "приёмка на точке-получателе
(та же S-15, др. точка)" .-> RECV RECV --> FACT["Ввести факт прихода +
срок годности партии (FEFO)"] FACT --> DEFECT{"Брак / пересорт?"} DEFECT -->|"да"| RETINV["Возвратная накладная поставщику"] RETINV --> D_RET(["Возврат оформлен"]) DEFECT -->|"нет"| POSTGATE["Шаг: «Провести»
(авториз-шлюз)"] POSTGATE --> POSTED["Проведена: FIFO-слой партии,
документ ReadOnly"] POSTED --> D_RECV(["Склад пополнен по факту"]) D_RECV --> S15 S16 --> OPENINV["Открыть ревизию — выбрать позиции"] OPENINV --> BLIND["Слепой пересчёт: книжный остаток
скрыт «••••», ввести факт"] BLIND --> CLOSEGATE["Шаг: «Закрыть ревизию»
(авториз-шлюз)"] CLOSEGATE --> DIFFGATE{"Факт = книжный остаток?"} DIFFGATE -->|"да"| NODIFF["Расхождений нет"] DIFFGATE -->|"нет"| DIFF["Расхождение зафиксировано"] NODIFF --> ADJ["Остатки скорректированы"] DIFF --> ADJ ADJ --> D_INV(["Инвентаризация проведена"]) D_INV --> S16 S17 --> REASON["Указать причину (Порча / HACCP /
Недостача) + позиции"] REASON --> STOCKGATE{"Остаток > 0
в этот момент?"} STOCKGATE -->|"нет"| RACE["Блок: нечего списывать
(race condition — успели продать)"] RACE --> S17 STOCKGATE -->|"да"| POSTWO["Шаг: «Провести акт»
(авториз-шлюз)"] POSTWO --> WO["Ингредиенты списаны по ТТК
→ стоимость в убыток"] WO --> D_WO(["Списание проведено"]) D_WO --> S17 AUTO1(["Staff Meal 100% — авто-акт (E-14)"]) -. "авто" .-> AUTOWO["Авто-акт — сразу «Проведён»"] AUTO2(["Возврат готового блюда — HACCP (E-04/E-06)"]) -. "авто" .-> AUTOWO AUTOWO --> D_WO classDef screen fill:#e5ecf6,stroke:#5b7bb0,color:#243a5f; classDef gate fill:#f8e8cf,stroke:#c9791f,color:#7a4a10; classDef event fill:#dcefe1,stroke:#3c8a5b,color:#1c4a30; classDef warn fill:#faedd0,stroke:#d99a2b,color:#7a4d06; classDef auth fill:#ede7f6,stroke:#7e57c2,color:#4527a0; classDef stop fill:#f6dcd5,stroke:#bc3f2b,color:#7a241c; class S15,S16,S17,RECV,OUTD,SENT,FACT,POSTED,OPENINV,BLIND,NODIFF,ADJ,REASON,WO,AUTOWO screen; class TASK,KIND,DEFECT,DIFFGATE,STOCKGATE gate; class Start,D_RET,D_RECV,D_INV,D_WO,AUTO1,AUTO2 event; class RETINV,DIFF warn; class POSTGATE,CLOSEGATE,POSTWO auth; class RACE stop;
◍ тематизированный MermaidТот же граф, что в каноне — тёплая тема поверх (как в схемах L1), граф-паритет 1:1.