food-market/docs/money-moysklad-reference.md
nns 0977c639cd
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
docs(money): модель «деньги смены → остатки» + МойСклад reference + прогресс
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 03:11:10 +05:00

3.9 KiB
Raw Permalink Blame History

МойСклад — розничные деньги (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 в деньги сразу (живой остаток в течение смены); у нас остаток кассы меняется при закрытии, но «живой» нал смены для контроля выплат считается на лету (размен + продажи − возвраты + внесения − выплаты).