Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
40 lines
3.9 KiB
Markdown
40 lines
3.9 KiB
Markdown
# МойСклад — розничные деньги (reference для модели смены)
|
||
|
||
Как в МойСклад розничные операции отражаются в деньгах (по
|
||
`https://dev.moysklad.ru/doc/api/remap/1.2/documents/` и известной семантике;
|
||
страница docs отдаётся JS-ом, поэтому ниже — сводка модели, а не дословная цитата).
|
||
|
||
## Сущности
|
||
- **Розничная смена** `retailshift` — контейнер смены на точке (ККМ). Хранит
|
||
начальный остаток (размен), суммы продаж нал/безнал, возвраты, внесения/изъятия,
|
||
итоговые суммы на закрытие.
|
||
- **Розничная продажа** `retaildemand` — чек. Внутри — оплата: `cashSum` (нал) и
|
||
`noCashSum`/`bankPercent` (безнал, эквайринг). Привязана к смене.
|
||
- **Розничный возврат** `retailsalesreturn` — возврат покупателю (нал/безнал).
|
||
- **Внесение/Изъятие** `retaildrawercashin` / `retaildrawercashout` — движение
|
||
наличных в кассе ККМ внутри смены (внесение разменом, изъятие инкассацией).
|
||
- **Приходный/расходный ордер** `cashin` / `cashout`, платёж `paymentin`/`paymentout`
|
||
— общие денежные документы (не розничные), влияют на остаток счёта/кассы.
|
||
|
||
## Как попадает в деньги
|
||
- Касса (денежный счёт типа «касса») = размен + Σ продаж нал − Σ возвратов нал +
|
||
Σ внесений − Σ изъятий. Безнал (карты) идёт на привязанный **расчётный счёт/
|
||
эквайринг**, отдельно от наличной кассы.
|
||
- Каждый `retaildemand`/`retailsalesreturn`/`drawercashin|out` — это движение по
|
||
счёту; в отчёте «Деньги» (движение ДС) они видны по типам.
|
||
- **Закрытие смены**: фиксируется фактический остаток наличных; **расхождение**
|
||
(факт − расчёт) оформляется как излишек/недостача — отдельное движение кассы.
|
||
- Размен (начальный остаток смены) — НЕ новое поступление: это те же деньги, что
|
||
уже в кассе; он не задваивается как приход.
|
||
|
||
## Наша адаптация (food-market, простой режим)
|
||
- Материализуем движения смены в `money_transactions` ПРИ ЗАКРЫТИИ (а не по каждому
|
||
чеку) — проще для простого магазина, остаток кассы/эквайринга становится верным
|
||
сразу после закрытия. Типы — `MoneyTransactionCategory` (RetailSalesCash/…/ShiftSurplus).
|
||
- Карта → отдельный счёт «Эквайринг» смены (как расчётный счёт в МойСклад).
|
||
- Размен не материализуем (деньги уже в кассе). Итог кассы после закрытия = факту
|
||
наличных, если по кассе не было других операций.
|
||
- Отличие: МойСклад проводит `retaildemand` в деньги сразу (живой остаток в течение
|
||
смены); у нас остаток кассы меняется при закрытии, но «живой» нал смены для
|
||
контроля выплат считается на лету (размен + продажи − возвраты + внесения − выплаты).
|