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:
parent
8785fd60d1
commit
839fcaf9fc
|
|
@ -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++,
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue