From ab74d0670659555780851fa90351d02a59c1a497 Mon Sep 17 00:00:00 2001 From: nns Date: Thu, 28 May 2026 09:24:52 +0500 Subject: [PATCH] docs(sprint2): P1-2 done Co-Authored-By: Claude Opus 4.7 --- docs/sprint2-progress.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/sprint2-progress.md b/docs/sprint2-progress.md index 4762347..78cc507 100644 --- a/docs/sprint2-progress.md +++ b/docs/sprint2-progress.md @@ -16,9 +16,13 @@ query filter. Stock-инвариант: после каждого Post/Unpost ✅ Контроллер `api/inventory/enters`; миграция `Phase6a_Enters`; пункт «Оприходования» в сайдбаре Admin/Storekeeper. Тесты: 4 интеграционных (post raise stock, unpost откатывает, double post→409, tenant-изоляция, блокировка unpost при минусе). -2. [ ] **P1-2 Списание (Loss)** — Domain `Loss`+`LossLine` + enum `LossReason` +2. [x] **P1-2 Списание (Loss)** — Domain `Loss`+`LossLine` + enum `LossReason` (Defect/Expired/Damage/Shortage/Other). EF, миграция, контроллер, Web, `StockMovement` тип `WriteOff`. + ✅ Контроллер `api/inventory/losses` (CRUD + Post/Unpost) с проверкой + «не списать сверх остатка» (409). Миграция `Phase6b_Losses`. Web с + фильтром по причине и колонкой stockAtStore. Тесты: 3 интеграционных + (post снижает stock, over-write-off → 409, tenant-изоляция). 3. [ ] **P1-3 Перемещение (Transfer)** — Domain `Transfer`+`TransferLine` (FromStoreId → ToStoreId, обязательны и различны). Атомарная транзакция: `TransferOut` из From + `TransferIn` в To. EF, миграция, контроллер + Post/Unpost,