fix(inventory): пустая инвентаризация больше не обнуляет непосчитанное

Авто-подтянутые строки создаются как ActualQty=BookQty (Diff=0) вместо
ActualQty=0 (Diff=-stock). Проведение не трогает непересчитанные позиции (в т.ч.
вне выбранной группы); истинный ноль вводится явным ActualQty=0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
nns 2026-10-08 02:10:11 +05:00
parent 8785fd60d1
commit 839fcaf9fc

View file

@ -268,7 +268,13 @@ public async Task<ActionResult<InventoryDto>> Create([FromBody] InventoryInput i
Notes = input.Notes, Notes = input.Notes,
}; };
// Если строки не указаны — подтягиваем все товары с ненулевым stock на складе. // Если строки не указаны — подтягиваем товары склада как «ещё не
// посчитанные»: ActualQty = BookQty, Diff = 0. Так проведение НЕ трогает
// непосчитанные позиции (Diff=0 пропускается). Раньше здесь ставилось
// ActualQty=0 → Diff=-stock, и проведение ОБНУЛЯЛО всё, что кладовщик не
// пересчитал (в т.ч. всё вне выбранной группы). Кладовщик меняет ActualQty
// только у реально пересчитанных товаров (через add-line / правку строки);
// истинный ноль на складе вводится явным ActualQty=0.
if (input.Lines is null || input.Lines.Count == 0) if (input.Lines is null || input.Lines.Count == 0)
{ {
var stocks = await (from s in _db.Stocks.AsNoTracking() var stocks = await (from s in _db.Stocks.AsNoTracking()
@ -283,8 +289,8 @@ public async Task<ActionResult<InventoryDto>> Create([FromBody] InventoryInput i
{ {
ProductId = st.ProductId, ProductId = st.ProductId,
BookQty = st.Quantity, BookQty = st.Quantity,
ActualQty = 0, ActualQty = st.Quantity,
Diff = -st.Quantity, Diff = 0,
UnitCost = st.Cost, UnitCost = st.Cost,
SortOrder = order++, SortOrder = order++,
}); });