forked from erp-dev/erp
feat: auto complete stock change
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from . import models
|
||||
from django.db.models import Sum
|
||||
from django.utils import timezone
|
||||
import logging
|
||||
|
||||
@@ -30,6 +31,7 @@ def create_stock_snapshot(stock_change_detail: models.StockChangeDetail, invento
|
||||
|
||||
# 必须在库存变动发生后创建快照
|
||||
snapshot = models.StockSnapshot(
|
||||
merchant_id=stock_change_detail.merchant_id,
|
||||
product_id=inventory.product_id,
|
||||
warehouse_id=inventory.warehouse_id,
|
||||
delta=delta,
|
||||
@@ -92,6 +94,7 @@ def make_stock_change_completed(stock_change_record: models.StockChangeRecord) -
|
||||
else:
|
||||
# 创建新库存记录
|
||||
inventory_record = models.Inventory(
|
||||
merchant_id=stock_change_record.merchant_id,
|
||||
product_id=detail.product_id,
|
||||
warehouse_id=stock_change_record.warehouse_id,
|
||||
quantity=detail.quantity * positive,
|
||||
@@ -114,3 +117,13 @@ def make_stock_change_completed(stock_change_record: models.StockChangeRecord) -
|
||||
f'库存变动记录 {stock_change_record.id} 标记为已完成。'
|
||||
)
|
||||
return True
|
||||
|
||||
|
||||
def get_frozen_stock_count(product_id: int, warehouse_id: int) -> int:
|
||||
"""获取指定产品在指定仓库的冻结库存数量"""
|
||||
total_frozen = models.StockFreeze.objects.filter(
|
||||
product_id=product_id,
|
||||
warehouse_id=warehouse_id,
|
||||
status=models.StockFreezeStatusEnum.FROZEN
|
||||
).aggregate(total=Sum('quantity'))['total'] or 0
|
||||
return total_frozen
|
||||
|
||||
Reference in New Issue
Block a user