Процесс возврата Волны 1. Пул-дорожка Кассир и внешняя система WebKassa (сторно / реверс чека), гейты решений и раскладка «выдать деньги» по тендерам (карта → реверс, нал → ящик, бонусы → баланс). Danger-ветка — «возврат без права → авторизация MSR-картой». Граф 1:1 с Mermaid-каноном front/refund.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(["Нажать «Возврат»"]) --> GR{"Есть право
на возврат?"}
GR -->|нет| AU["Авторизация: прокатка MSR-карты"]
AU --> GF{"ФПД валиден?
(скан QR / ввод)"}
GR -->|да| GF
GF -->|"нет / без чека"| ESC["Блок на кассе →
эскалация в бухгалтерию"]
GF -->|да| SEL["Выбрать позиции к возврату + причина
(не больше проданного)"]
SEL --> SHIFT{"Чек текущей
или прошлой смены?"}
SHIFT -->|"текущая"| STO["Сторнировать чек / позиции"]
SHIFT -->|"прошлая (закрытая)"| AUM["Авториз. уполномоченного (холодный чек);
возврат по вчерашнему чеку (в текущей смене)"]
STO --> PAY{"Выдать по тендерам — «каждый способ на свой источник»
(сплит-чек → несколько веток разом)"}
AUM --> PAY
PAY -->|"карта / Kaspi QR"| RCARD["Реверс на ту же карту (эквайер)"]
PAY -->|"наличные"| CASH["Нал из ящика
(прошлая смена → + объяснительная + коммент)"]
PAY -->|"бонусами (потрачены · Этап 2)"| RBON["На бонусный баланс (CRM)"]
RCARD --> CB
CASH --> CB
RBON --> CB
CB["Сторно начисленного кэшбэка
пропорц. возврату (Этап 2)"] --> D1(["Возврат оформлен"])
ESC --> D2(["Возврат вне кассы"])
end
subgraph Ext["Внешн. система"]
WK["WebKassa"]
end
PAY -. "возврат чека" .-> WK
WK -. "подтверждение" .-> D1
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 danger fill:#f6dcd5,stroke:#bc3f2b,color:#7a241c;
class STO,SEL,RCARD,CASH,RBON,CB task;
class WK ext;
class GR,GF,SHIFT,PAY gate;
class AU,AUM,ESC danger;
class S1,D1,D2 event;
style Cash fill:#fbf7ef,stroke:#e2d6c1;
style Ext fill:#f6efe2,stroke:#d0c1a6;
GR «нет» → AU авторизация прокаткой MSR-карты перед проверкой ФПД. (2) Прошлая («холодная») смена → AUM авторизация уполномоченного; возврат = операция текущей смены. Нал за прошлую смену — с кассы + обязательная объяснительная (контроль кросс-сменной выдачи), CASH. (3) Невалидный ФПД / без чека → ESC блок на кассе и эскалация. Все контроль-ветки протоколируются (Audit Trail).