一键清零和单位转换
This commit is contained in:
@@ -86,45 +86,55 @@ class FabricManager(QMainWindow):
|
||||
try:
|
||||
with self.get_conn() as conn:
|
||||
cursor = conn.execute('''
|
||||
SELECT category, fabric_type, usage_per_piece, unit
|
||||
SELECT model, category, fabric_type, usage_per_piece, unit
|
||||
FROM garment_materials
|
||||
WHERE style_number = ?
|
||||
''', (style_number,))
|
||||
rows = cursor.fetchall()
|
||||
inserted = 0
|
||||
for category, fabric_type, usage_per_piece, unit in rows:
|
||||
for model, category, fabric_type, usage_per_piece, unit in rows:
|
||||
if usage_per_piece == 0:
|
||||
continue
|
||||
|
||||
# 获取该原料在入库时使用的单位
|
||||
|
||||
# 优先使用精确原料型号(model);如无型号则退回到分类名称(兼容旧数据)
|
||||
raw_identifier = model if model else category
|
||||
|
||||
# 获取该原料在入库时使用的单位(最近一次入库)
|
||||
stock_cursor = conn.execute('''
|
||||
SELECT unit FROM fabric_stock_in
|
||||
WHERE model = ?
|
||||
ORDER BY purchase_date DESC
|
||||
LIMIT 1
|
||||
''', (category,))
|
||||
''', (raw_identifier,))
|
||||
stock_unit_row = stock_cursor.fetchone()
|
||||
|
||||
# 如果有入库记录,使用入库单位;否则使用原来的单位
|
||||
|
||||
total_usage = usage_per_piece * quantity * (1 + loss_rate)
|
||||
|
||||
# 如果有入库记录,则按入库单位扣减库存;必要时进行单位换算
|
||||
if stock_unit_row:
|
||||
stock_unit = stock_unit_row[0]
|
||||
# 如果单位不同,需要转换
|
||||
if unit != stock_unit:
|
||||
consume_qty = self.convert_unit_value(usage_per_piece * quantity * (1 + loss_rate), unit, stock_unit, category)
|
||||
# 单位不同,尝试进行单位转换(米/码/公斤互转依赖面料幅宽和克重)
|
||||
consume_qty = self.convert_unit_value(
|
||||
total_usage,
|
||||
unit,
|
||||
stock_unit,
|
||||
fabric_model=model if model else None
|
||||
)
|
||||
final_unit = stock_unit
|
||||
else:
|
||||
consume_qty = usage_per_piece * quantity * (1 + loss_rate)
|
||||
consume_qty = total_usage
|
||||
final_unit = unit
|
||||
else:
|
||||
# 没有入库记录,使用原单位
|
||||
consume_qty = usage_per_piece * quantity * (1 + loss_rate)
|
||||
# 没有入库记录,只能按原单位记录消耗
|
||||
consume_qty = total_usage
|
||||
final_unit = unit
|
||||
|
||||
|
||||
conn.execute('''
|
||||
INSERT INTO fabric_consumption
|
||||
(style_number, model, single_usage, quantity_made, loss_rate, consume_quantity, consume_date, unit)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
||||
''', (style_number, category, usage_per_piece, quantity, loss_rate, consume_qty, datetime.now().strftime('%Y-%m-%d'), final_unit))
|
||||
''', (style_number, raw_identifier, usage_per_piece, quantity, loss_rate, consume_qty, datetime.now().strftime('%Y-%m-%d'), final_unit))
|
||||
inserted += 1
|
||||
conn.commit()
|
||||
if inserted > 0:
|
||||
|
||||
Reference in New Issue
Block a user