fix: filter zero quantity items in inventory export and add batch/sn traceability to outbound record details
This commit is contained in:
@ -636,7 +636,7 @@ class MaterialBaseService:
|
|||||||
# 2.1 采购库存 (StockBuy)
|
# 2.1 采购库存 (StockBuy)
|
||||||
query_buy = db.session.query(StockBuy, MaterialBase).join(
|
query_buy = db.session.query(StockBuy, MaterialBase).join(
|
||||||
MaterialBase, StockBuy.base_id == MaterialBase.id
|
MaterialBase, StockBuy.base_id == MaterialBase.id
|
||||||
)
|
).filter(StockBuy.stock_quantity > 0)
|
||||||
for cond in filter_conditions:
|
for cond in filter_conditions:
|
||||||
query_buy = query_buy.filter(cond)
|
query_buy = query_buy.filter(cond)
|
||||||
list_buy = query_buy.all()
|
list_buy = query_buy.all()
|
||||||
@ -644,7 +644,7 @@ class MaterialBaseService:
|
|||||||
# 2.2 半成品库存 (StockSemi)
|
# 2.2 半成品库存 (StockSemi)
|
||||||
query_semi = db.session.query(StockSemi, MaterialBase).join(
|
query_semi = db.session.query(StockSemi, MaterialBase).join(
|
||||||
MaterialBase, StockSemi.base_id == MaterialBase.id
|
MaterialBase, StockSemi.base_id == MaterialBase.id
|
||||||
)
|
).filter(StockSemi.stock_quantity > 0)
|
||||||
for cond in filter_conditions:
|
for cond in filter_conditions:
|
||||||
query_semi = query_semi.filter(cond)
|
query_semi = query_semi.filter(cond)
|
||||||
list_semi = query_semi.all()
|
list_semi = query_semi.all()
|
||||||
@ -652,7 +652,7 @@ class MaterialBaseService:
|
|||||||
# 2.3 成品库存 (StockProduct)
|
# 2.3 成品库存 (StockProduct)
|
||||||
query_product = db.session.query(StockProduct, MaterialBase).join(
|
query_product = db.session.query(StockProduct, MaterialBase).join(
|
||||||
MaterialBase, StockProduct.base_id == MaterialBase.id
|
MaterialBase, StockProduct.base_id == MaterialBase.id
|
||||||
)
|
).filter(StockProduct.stock_quantity > 0)
|
||||||
for cond in filter_conditions:
|
for cond in filter_conditions:
|
||||||
query_product = query_product.filter(cond)
|
query_product = query_product.filter(cond)
|
||||||
list_product = query_product.all()
|
list_product = query_product.all()
|
||||||
|
|||||||
@ -403,11 +403,12 @@ class OutboundService:
|
|||||||
'items': []
|
'items': []
|
||||||
}
|
}
|
||||||
|
|
||||||
# --- 查询物品详细信息 (名称, 规格, 类型, 类别) ---
|
# --- 查询物品详细信息 (名称, 规格, 类型, 类别, 批号/SN) ---
|
||||||
item_name = "未知物品"
|
item_name = "未知物品"
|
||||||
item_spec = ""
|
item_spec = ""
|
||||||
item_cat = ""
|
item_cat = ""
|
||||||
item_type = ""
|
item_type = ""
|
||||||
|
batch_sn = "-"
|
||||||
|
|
||||||
ModelClass = model_map.get(d.source_table)
|
ModelClass = model_map.get(d.source_table)
|
||||||
if ModelClass and d.stock_id:
|
if ModelClass and d.stock_id:
|
||||||
@ -415,7 +416,10 @@ class OutboundService:
|
|||||||
# 生产环境建议优化为预加载或批量查询
|
# 生产环境建议优化为预加载或批量查询
|
||||||
try:
|
try:
|
||||||
stock_item = ModelClass.query.get(d.stock_id)
|
stock_item = ModelClass.query.get(d.stock_id)
|
||||||
if stock_item and stock_item.base:
|
if stock_item:
|
||||||
|
# 获取批号/序列号用于追溯
|
||||||
|
batch_sn = getattr(stock_item, 'batch_number', None) or getattr(stock_item, 'serial_number', None) or '-'
|
||||||
|
if stock_item.base:
|
||||||
item_name = stock_item.base.name
|
item_name = stock_item.base.name
|
||||||
item_spec = stock_item.base.spec_model
|
item_spec = stock_item.base.spec_model
|
||||||
item_cat = stock_item.base.category
|
item_cat = stock_item.base.category
|
||||||
@ -445,7 +449,8 @@ class OutboundService:
|
|||||||
'material_type': item_type,
|
'material_type': item_type,
|
||||||
'quantity': qty,
|
'quantity': qty,
|
||||||
'unit_price': price,
|
'unit_price': price,
|
||||||
'subtotal': subtotal
|
'subtotal': subtotal,
|
||||||
|
'batch_sn': batch_sn
|
||||||
})
|
})
|
||||||
|
|
||||||
# 4. 排序输出
|
# 4. 排序输出
|
||||||
|
|||||||
@ -53,6 +53,7 @@
|
|||||||
<el-table-column v-if="hasColumnPermission('material_type')" prop="material_type" label="类型" width="120" show-overflow-tooltip />
|
<el-table-column v-if="hasColumnPermission('material_type')" prop="material_type" label="类型" width="120" show-overflow-tooltip />
|
||||||
<el-table-column v-if="hasColumnPermission('category')" prop="category" label="类别" width="120" show-overflow-tooltip />
|
<el-table-column v-if="hasColumnPermission('category')" prop="category" label="类别" width="120" show-overflow-tooltip />
|
||||||
<el-table-column v-if="hasColumnPermission('spec_model')" prop="spec_model" label="规格型号" min-width="150" show-overflow-tooltip />
|
<el-table-column v-if="hasColumnPermission('spec_model')" prop="spec_model" label="规格型号" min-width="150" show-overflow-tooltip />
|
||||||
|
<el-table-column prop="batch_sn" label="批号/SN" min-width="120" />
|
||||||
|
|
||||||
<el-table-column v-if="hasColumnPermission('quantity')" prop="quantity" label="数量" width="100" />
|
<el-table-column v-if="hasColumnPermission('quantity')" prop="quantity" label="数量" width="100" />
|
||||||
<el-table-column v-if="hasColumnPermission('unit_price')" prop="unit_price" label="单价" width="120">
|
<el-table-column v-if="hasColumnPermission('unit_price')" prop="unit_price" label="单价" width="120">
|
||||||
|
|||||||
Reference in New Issue
Block a user