docs(sprint3): P1-9 done
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
63c58ef6c1
commit
3ded4db73a
|
|
@ -17,10 +17,14 @@ Multi-tenant: все запросы фильтруются по `OrganizationId`
|
||||||
(EF8 не переводит «distinct count» в group-проекции с nullable-ключами).
|
(EF8 не переводит «distinct count» в group-проекции с nullable-ключами).
|
||||||
`CsvHelper` + `ClosedXML`. Bonus: исправлен баг `RetailSalesController.Update`
|
`CsvHelper` + `ClosedXML`. Bonus: исправлен баг `RetailSalesController.Update`
|
||||||
(DbUpdateConcurrency на свеже-созданном возврате). 5 интеграционных тестов.
|
(DbUpdateConcurrency на свеже-созданном возврате). 5 интеграционных тестов.
|
||||||
2. [ ] **P1-9 Отчёт «Остатки на дату»** — `/api/reports/stock` восстанавливает
|
2. [x] **P1-9 Отчёт «Остатки на дату»** — `/api/reports/stock` восстанавливает
|
||||||
остатки на произвольную дату через журнал `StockMovement` (Σ движений до
|
остатки на произвольную дату через журнал `StockMovement` (Σ движений до
|
||||||
даты по продукту). Web `/reports/stock`: выбор даты, фильтр магазин/группа,
|
даты по продукту). Web `/reports/stock`: выбор даты, фильтр магазин/группа,
|
||||||
экспорт. Edge: дата в будущем, дата раньше первой операции.
|
экспорт. Edge: дата в будущем, дата раньше первой операции.
|
||||||
|
✅ Реконструкция через Σ `StockMovement.Quantity` где `OccurredAt ≤ date`.
|
||||||
|
Стоимость — последний `UnitCost` движения до даты + fallback на `Product.Cost`.
|
||||||
|
Edge'ы покрыты тестами: 5 интеграционных (today=current, before-first→empty,
|
||||||
|
future=current, future-supply исключается на «сегодня», tenant-изоляция).
|
||||||
3. [ ] **P1-10 Отчёт «Прибыль»** — `/api/reports/profit` = выручка − себестоимость
|
3. [ ] **P1-10 Отчёт «Прибыль»** — `/api/reports/profit` = выручка − себестоимость
|
||||||
по периодам/группам/товарам. Cost-snapshot уже есть в `RetailSaleLine`
|
по периодам/группам/товарам. Cost-snapshot уже есть в `RetailSaleLine`
|
||||||
(через `UnitCost` movement'а). Защита от деления на ноль при нулевой выручке.
|
(через `UnitCost` movement'а). Защита от деления на ноль при нулевой выручке.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue