food-market/src/food-market.api
nns 1e6d7fb2ab fix(money): движения смены попадают в остатки счетов + запрет отрицательного остатка
Раньше продажи/возвраты/внесения/выплаты/расхождение смены не влияли на остаток
кассы (касса уходила в −, эквайринг оставался 0). Теперь при закрытии смены
MoneyService.MaterializeShiftMovementsAsync создаёт Posted-движения money_transactions
по типам (Category): продажи нал/карта, возвраты нал/карта, внесение, выплата,
излишек/недостача — привязанные к смене, идемпотентно. Остаток кассы/эквайринга и
отчёт «Деньги» теперь верны автоматически (всё читает money_transactions).

Отрицательный остаток: расход (CashOut/PaymentOut/TransferOut) больше остатка счёта
и выплата из смены больше наличных смены → 409 insufficient-funds; настройка
Organization.AllowNegativeBalance (по умолч. выкл., меняет только Admin).

Миграция Phase34 (idempotent): money_transactions.Category/.CashShiftId,
organizations.AllowNegativeBalance.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 03:11:09 +05:00
..
Background feat(s30): PruneAutoTestEntities + одноразовая зачистка стейджа (шаг 7/9) 2026-10-04 15:49:25 +05:00
Controllers fix(money): движения смены попадают в остатки счетов + запрет отрицательного остатка 2026-10-08 03:11:09 +05:00
Infrastructure fix(auth): кассир без модуля «Деньги», кладовщик со складскими правами, ИЛИ-семантика прав 2026-10-08 02:10:11 +05:00
Integrations/Telegram feat(telegram): OwnerDailySummaryJob + bot binding (P2-14) 2026-05-31 19:50:33 +05:00
Properties fix: pin API dev port to 5081 (match Vite proxy config) 2026-04-21 15:37:05 +05:00
Realtime feat(realtime): SignalR hub /hubs/notifications per-org + dashboard live 2026-05-31 19:29:59 +05:00
Resources/EmailTemplates feat(email): HTML-шаблоны MailKit + invite/weekly/low-stock джобы (P1-22) 2026-05-28 16:37:32 +05:00
Seed fix(auth): кассир без модуля «Деньги», кладовщик со складскими правами, ИЛИ-семантика прав 2026-10-08 02:10:11 +05:00
Storage perf(s14): индексы + N+1 fix + bundle -50% + WebP variants + pool + Hangfire timing 2026-06-07 13:21:39 +05:00
appsettings.Development.json Phase 0: project scaffolding and end-to-end auth 2026-04-21 13:59:13 +05:00
appsettings.json revert(domains): публичный сайт → test.food-market.kz, apex 404 до релиза 2026-05-01 18:06:31 +05:00
food-market.api.csproj feat(s20): Mapster + SSO scaffold + maintenance automation (7 пунктов) 2026-06-07 21:54:12 +05:00
Program.cs feat(money): бэкенд модуля «Деньги» для простого режима (пп.0–6) 2026-10-07 21:52:04 +05:00