fix(borrow): 借库转报废实物不足时报错回滚,不再夹断到 0
原逻辑在 stock_quantity 减为负数时直接置 0。但借出时已扣减过 available_quantity,夹断会使 available_quantity > stock_quantity, 凭空多出可用库存,后续出库/借库可继续占用这批并不存在的实物。 改为不足即抛 ValueError,与同一事务内其余校验一致,整单回滚。
This commit is contained in:
@ -381,10 +381,14 @@ class TransService:
|
||||
if ModelClass:
|
||||
stock = ModelClass.query.with_for_update().get(record.stock_id)
|
||||
if stock:
|
||||
stock.stock_quantity = float(stock.stock_quantity or 0) - pending_qty
|
||||
# 防止负库存
|
||||
if stock.stock_quantity < 0:
|
||||
stock.stock_quantity = 0
|
||||
stock_qty = float(stock.stock_quantity or 0)
|
||||
# 不足则报错整单回滚:直接夹到 0 会让 available_quantity > stock_quantity,
|
||||
# 凭空多出可用库存
|
||||
if pending_qty > stock_qty:
|
||||
raise ValueError(
|
||||
f"SKU {record.sku} 实物库存不足(剩 {stock_qty}),无法报废 {pending_qty}"
|
||||
)
|
||||
stock.stock_quantity = stock_qty - pending_qty
|
||||
|
||||
# 3. 创建报废记录
|
||||
scrap_record = TransScrap(
|
||||
|
||||
Reference in New Issue
Block a user