docs(sprint3): P1-8 done
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
ac77849901
commit
76380d86bf
|
|
@ -9,10 +9,14 @@ Multi-tenant: все запросы фильтруются по `OrganizationId`
|
||||||
|
|
||||||
## Чек-лист
|
## Чек-лист
|
||||||
|
|
||||||
1. [ ] **P1-8 Отчёт «Продажи»** — `/api/reports/sales` с группировкой по период
|
1. [x] **P1-8 Отчёт «Продажи»** — `/api/reports/sales` с группировкой по период
|
||||||
(день/неделя/месяц), товар, кассир, касса, способ оплаты; фильтры
|
(день/неделя/месяц), товар, кассир, касса, способ оплаты; фильтры
|
||||||
(от/до, магазин, группа товаров). Web `/reports/sales`: фильтр периода,
|
(от/до, магазин, группа товаров). Web `/reports/sales`: фильтр периода,
|
||||||
табы по группировкам, экспорт CSV+XLSX.
|
табы по группировкам, экспорт CSV+XLSX.
|
||||||
|
✅ Реализация: проекция в плоский ряд на сервере + агрегация в C#
|
||||||
|
(EF8 не переводит «distinct count» в group-проекции с nullable-ключами).
|
||||||
|
`CsvHelper` + `ClosedXML`. Bonus: исправлен баг `RetailSalesController.Update`
|
||||||
|
(DbUpdateConcurrency на свеже-созданном возврате). 5 интеграционных тестов.
|
||||||
2. [ ] **P1-9 Отчёт «Остатки на дату»** — `/api/reports/stock` восстанавливает
|
2. [ ] **P1-9 Отчёт «Остатки на дату»** — `/api/reports/stock` восстанавливает
|
||||||
остатки на произвольную дату через журнал `StockMovement` (Σ движений до
|
остатки на произвольную дату через журнал `StockMovement` (Σ движений до
|
||||||
даты по продукту). Web `/reports/stock`: выбор даты, фильтр магазин/группа,
|
даты по продукту). Web `/reports/stock`: выбор даты, фильтр магазин/группа,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue