Процесс Волны 1. Пулы-дорожки Кассир · Уполномоченный (бэк-офис) · Внешн. система, три гейта решений (открытые заказы · право на принуд. закрытие · сверка факта) и danger-ветка «принудительная отмена чужих заказов → авторизация MSR» (судьба открытых POS-корзин — по настройке точки: переносить, закрывать или спрашивать менеджера, D-20; доставки переносятся между сменами всегда, D-34). Слепой пересчёт Blind Drop, Z-отчёт → WebKassa. Второй путь — административное закрытие из бэк-офиса под правом, с обязательной причиной и пометкой «закрыта административно»: слепым пересчётом он идти не может, сумма там видна (D-56). Граф 1:1 с Mermaid-каноном front/close-shift.md.
business-rules §5.
%%{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{"Есть открытые POS-корзины /
неоплаченные заказы?"}
GO -->|да| MODE{"Настройка точки: открытые заказы
при закрытии смены"}
MODE -->|«Все переносить»| CARRY["Корзины остаются на кассе —
достанутся следующей смене"]
MODE -->|«На усмотрение менеджера»| PICK{"По каждой корзине:
перенести или погасить?"}
MODE -->|«Все закрывать»| GP{"Есть право на принудительную
отмену чужого заказа?"}
PICK -->|перенести| CARRY
PICK -->|погасить| GP
CARRY --> BLIND
GP -->|нет| BLK["Смену закрыть нельзя — корзину
оплатить или отменить на S-02"]
GP -->|да| AU["Авторизация: прокатка MSR-карты"]
AU --> BLIND
GO -->|нет| BLIND["Слепой пересчёт (Blind Drop):
касса скрывает выручку, ввести факт"]
%% судьба корзин — по настройке точки (D-20); доставки переносятся всегда (D-34)
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 BO["Уполномоченный · бэк-офис"]
B1(["Смена осталась открытой,
терминал недоступен"]) --> B2["Указать причину (обязательно)"]
B2 --> B3["Закрыть смену административно:
пометка «закрыта административно» + Audit Trail
(слепого пересчёта нет — сумма видна)"]
end
B3 --> D1
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,B2,B3,CARRY task;
class WK ext;
class GO,GP,GC,MODE,PICK gate;
class S1,D1,RS,RD,B1 event;
class AU auth;
class BLK danger;
style Cash fill:#fbf7ef,stroke:#e2d6c1;
style BO fill:#fbf7ef,stroke:#e2d6c1;
style Ext fill:#f6efe2,stroke:#d0c1a6;
CARRY), все закрывать (каждую оплатить или отменить) или на усмотрение менеджера (PICK — выбор по каждой). Гасят корзину — включается danger-ветка: без права (GP «нет») тупик BLK «смену закрыть нельзя», с правом — обязательная AU авторизация прокаткой MSR-карты. Опасная операция не выполняется без права и авторизации. Доставки переносятся всегда (D-34) и в гейт не входят.