docs(sprint2): P1-4 done

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
nns 2026-05-28 09:39:48 +05:00
parent 4285bdee91
commit 561291f226

View file

@ -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: кнопка «Создать возврат».