diff --git a/docs/sprint2-progress.md b/docs/sprint2-progress.md index 7df4c34..271f69c 100644 --- a/docs/sprint2-progress.md +++ b/docs/sprint2-progress.md @@ -31,10 +31,16 @@ query filter. Stock-инвариант: после каждого Post/Unpost в Unpost. Проверка «not short» на FromStore при Post и ToStore при Unpost. Permission `TransferEdit`. Тесты: 4 интеграционных, ключевой проверяет что движений ровно 2 после Post и ровно 4 после Unpost (никаких orphan). -4. [ ] **P1-4 Инвентаризация (Inventory)** — Domain `Inventory`+`InventoryLine` +4. [x] **P1-4 Инвентаризация (Inventory)** — Domain `Inventory`+`InventoryLine` (productId, bookQty, actualQty, diff). EF, миграция. Контроллер: создание подгружает текущие остатки; Post создаёт `InventoryAdjustment` на diff. Web: форма со списком товаров склада, импорт CSV факта. + ✅ Доменная сущность `InventoryDoc` (имя чтобы не пересекаться с системным + неймспейсом). Create с пустыми lines подтягивает все товары склада; + Update пишет actualQty построчно. Post создаёт `InventoryAdjustment` + только по строкам с diff != 0 (400 если нет расхождений). Unpost блочит + при «излишек уже расходован». Web с CSV-импортом (productId|article;qty). + Тесты: 3 интеграционных. 5. [ ] **P1-6 Возврат от покупателя (CustomerReturn)** — расширение `RetailSale` опцией возврата (referenceSaleId или без). Контроллер: создание возврата из проведённой продажи, `CustomerReturn` тип уже есть. Web: кнопка «Создать возврат».