docs(sprint2): P1-6 done

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
nns 2026-05-28 09:51:16 +05:00
parent ea29ab63c7
commit cc9289ef75

View file

@ -41,9 +41,15 @@ query filter. Stock-инвариант: после каждого Post/Unpost
только по строкам с diff != 0 (400 если нет расхождений). Unpost блочит только по строкам с diff != 0 (400 если нет расхождений). Unpost блочит
при «излишек уже расходован». Web с CSV-импортом (productId|article;qty). при «излишек уже расходован». Web с CSV-импортом (productId|article;qty).
Тесты: 3 интеграционных. Тесты: 3 интеграционных.
5. [ ] **P1-6 Возврат от покупателя (CustomerReturn)** — расширение `RetailSale` 5. [x] **P1-6 Возврат от покупателя (CustomerReturn)** — расширение `RetailSale`
опцией возврата (referenceSaleId или без). Контроллер: создание возврата из опцией возврата (referenceSaleId или без). Контроллер: создание возврата из
проведённой продажи, `CustomerReturn` тип уже есть. Web: кнопка «Создать возврат». проведённой продажи, `CustomerReturn` тип уже есть. Web: кнопка «Создать возврат».
✅ RetailSale.IsReturn + ReferenceSaleId; RetailSaleLine.QtyReturned
(агрегация для защиты от over-return). `POST /create-return` копирует
проведённый чек в Draft-возврат с qty = (Quantity - QtyReturned).
Post return через `CustomerReturn`-движение с +Quantity, инкрементит
QtyReturned на исходных строках. Запрещён unpost оригинала при активных
возвратах. Тесты: 3 интеграционных.
6. [ ] **P1-7 Возврат поставщику (SupplierReturn)** — по аналогии для Supply. 6. [ ] **P1-7 Возврат поставщику (SupplierReturn)** — по аналогии для Supply.
Domain `SupplierReturn`+`Line` (referenceSupplyId). Контроллер. Web. Domain `SupplierReturn`+`Line` (referenceSupplyId). Контроллер. Web.
7. [ ] **P1-16 Hangfire dashboard + cleanup**`Hangfire.Dashboard` с 7. [ ] **P1-16 Hangfire dashboard + cleanup**`Hangfire.Dashboard` с