FlowPOS · tochka
hi-fi · схема L1 · BPMN

E-05 — Закрытие смены и инкассация

Процесс Волны 1. Пулы-дорожки Кассир · Внешн. система, три гейта решений (открытые заказы · право на принуд. закрытие · сверка факта) и danger-ветка «принудительное закрытие чужих заказов → авторизация MSR». Слепой пересчёт Blind Drop, Z-отчёт → WebKassa. Граф 1:1 с Mermaid-каноном front/close-shift.md.

ДисплейFraunces
ИнтерфейсHanken Grotesk
Цифры / кодыJetBrains Mono
1 · Роль · внешние · danger-оп Контекст процесса Роль-исполнитель, внешние системы и одна опасная операция. Правила расчёта — business-rules §5.
Роль-исполнитель Кассир — закрывает смену, проводит слепой пересчёт, инкассацию и печать Z-отчёта.
Внешние WebKassa (система) — принимает Z-отчёт при закрытии смены.
△ Опасная операция Принудительное закрытие чужих заказов → без права «смену закрыть нельзя»; при праве — авторизация MSR-картой.
Смежные потоки РКО (внесение / изъятие в течение смены) — отдельный мини-поток: сумма + ФИО + статья → нефискальный квиток → ДДС (E-23). При расхождении факта и расчёта — эскалация в бэк-офис «Требует проверки». Альтитуда → слой 4/5: топология офлайн-модуля WebKassa (A/B), реверс закрытосменной транзакции у эквайера/Kaspi.
2 · Пулы-дорожки Дорожки-исполнители Два пула канона: роль-исполнитель и внешняя система. Тип узла = цвет + метка-kicker + значок-форма (не цветом одним).
Внешн. системаsystem
◫ рамка
WKWebKassaприём Z-отчёта при закрытии сменысистема
Кассирроль-исполнитель
◆ задачи + гейты
S1Нажать «Закрыть смену»событие
GOЕсть открытые / неоплаченные заказы?гейт
GPЕсть право на принуд. закрытие?гейт
BLKСмену закрыть нельзянет права → тупикстоп·danger
AUАвторизация: прокатка MSR-картыdanger·auth
BLINDСлепой пересчёт (Blind Drop)касса скрывает выручку, ввести фактзадача
GCФакт = расчёт?гейт
DIFFРасхождение → бэк-офис «Требует проверки»расхожд.
OKСверка: «Принята»задача
INKИнкассация: изъять крупные купюры, оставить размензадача
ZRПечать Z-отчётазадача
LOCKТерминал блокируется (экран авторизации)задача
D1Смена закрытасобытие
RSВнесение / изъятие в течение сменысобытие
RKOРКО: сумма + ФИО + статья → нефиск. квиток → ДДС (E-23)задача
RDУчтено в ДДС / P&Lсобытие
3 · BPMN-граф Поток процесса Режим fallback-mermaid (§5/§7): тёплая тема поверх канона. Связи — sequence сплошная, message пунктир.
событие задача / шаг гейт (решение) авторизация MSR danger / стоп-ветка расхождение → бэк-офис система sequence flow message flow (Z-отчёт)
%%{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",
    "tertiaryColor":"#f6efe2"
  },
  "flowchart":{"curve":"basis","nodeSpacing":42,"rankSpacing":52,"htmlLabels":true}
}}%%
flowchart TD
    subgraph Cash["Кассир"]
        S1(["Нажать «Закрыть смену»"]) --> GO{"Есть открытые /
неоплаченные заказы?"} GO -->|да| GP{"Есть право на
принудительное закрытие?"} GP -->|нет| BLK["Смену закрыть нельзя"] GP -->|да| AU["Авторизация: прокатка MSR-карты"] AU --> BLIND GO -->|нет| BLIND["Слепой пересчёт (Blind Drop):
касса скрывает выручку, ввести факт"] BLIND --> GC{"Факт = расчёт?"} GC -->|нет| DIFF["Расхождение → бэк-офис:
«Требует проверки»"] GC -->|да| OK["Сверка: «Принята»"] DIFF --> INK OK --> INK["Инкассация: изъять крупные купюры,
оставить размен"] INK --> ZR["Печать Z-отчёта"] ZR --> LOCK["Терминал блокируется
(экран авторизации)"] LOCK --> D1(["Смена закрыта"]) RS(["Внесение / изъятие в течение смены"]) --> RKO["РКО: сумма + ФИО + статья →
нефискальный квиток → ДДС (E-23)"] RKO --> RD(["Учтено в ДДС / P&L"]) end subgraph Ext["Внешн. система"] WK["WebKassa"] end ZR -. "Z-отчёт" .-> WK classDef actor fill:#fbf7ef,stroke:#94866f,color:#241b12,stroke-dasharray:5 3; classDef ext fill:#e5ecf6,stroke:#5b7bb0,color:#243a5f; classDef gate fill:#f8e8cf,stroke:#c9791f,color:#7a4a10; classDef event fill:#dcefe1,stroke:#3c8a5b,color:#1c4a30; classDef task fill:#f6e6cd,stroke:#d5842a,color:#241b12; classDef auth fill:#ede7f6,stroke:#7e57c2,color:#4527a0; classDef danger fill:#f6dcd5,stroke:#bc3f2b,color:#7a241c; class BLIND,OK,INK,ZR,LOCK,RKO,DIFF task; class WK ext; class GO,GP,GC gate; class S1,D1,RS,RD event; class AU auth; class BLK danger; style Cash fill:#fbf7ef,stroke:#e2d6c1; style Ext fill:#f6efe2,stroke:#d0c1a6;
◍ fallback-mermaid Санкционировано design-system §5/§7 (утверждён для ВСЕХ L1): swimlanes + 3 гейта + danger-ветка авторизации + message-flow Z-отчёт → WebKassa делают hand-authored CSS-grid хрупким.
Danger-ветка (гейт GO «да» → гейт GP): при открытых / неоплаченных заказах закрытие смены требует принудительного закрытия чужих заказов. Без права (ветка GP «нет») — тупик BLK «смену закрыть нельзя». При наличии права (ветка «да») — обязательная AU авторизация прокаткой MSR-карты, затем слепой пересчёт BLIND. Опасная операция не выполняется без права и авторизации.