ERP/FIX_SUMMARY.md
zzh c11a70fdf2 修复采购需求计算和返修记录上传功能
- 修复采购需求计算时工厂匹配问题
  - calculate_purchase_demand: 添加工厂参数并按工厂过滤期初库存
  - calculate_all_purchase_demand: 添加工厂参数并按工厂过滤期初库存
  - calculate_purchase_demand_from_orders: 修复INSERT语句字段顺序
  - recalculate_purchase_demand: 添加工厂参数并按工厂过滤期初库存

- 修复返修记录上传页面按钮无响应问题
  - 修正isUploadPage判断逻辑,使事件监听器正确绑定
  - 图片上传、提交、清空按钮现在可以正常工作

- 添加数据库到Git仓库
  - 修改.gitignore允许server/data.db被提交
  - 包含所有生产数据和配置
2026-04-08 11:24:26 +08:00

46 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🎯 问题修复总结
## 问题描述
计算铨宝采购需求时,期初库存显示的是友辉的数据。例如:
- 铨宝的"6*6*7.5支架 TS-1166VW"期初库存应该是 0但显示 995友辉的库存
- 铨宝的"0402B102K500NT"期初库存应该是 0但显示 1243友辉的库存
## 根本原因
**`/api/purchase-demand/recalculate` 接口**在查询期初库存时,只用了 `material_code`,没有按 `factory` 过滤:
```python
# 错误的查询第7408行
c.execute('SELECT stock_qty, min_package as stock_min_package FROM initial_stock WHERE material_code=?', (material_code,))
```
当友辉和铨宝有相同的物料编码时,这个查询会返回第一个匹配的记录(通常是友辉的),导致铨宝的采购需求使用了友辉的库存数据。
## 修复方案
在查询时添加工厂过滤条件:
```python
# 正确的查询第7409行
factory = item['factory'] or '友辉' # 从采购需求记录中获取工厂字段
c.execute('SELECT stock_qty, min_package as stock_min_package FROM initial_stock WHERE material_code=? AND factory=?', (material_code, factory))
```
## 已修复的接口
1.`/api/purchase-demand/calculate` - 计算单个产品采购需求
2.`/api/purchase-demand/calculate-all` - 计算所有产品采购需求
3.`/api/purchase-demand/calculate-from-orders` - 从客户订单计算采购需求
4.`/api/purchase-demand/recalculate` - 重新计算现有采购需求(**这个是你使用的接口**
## 验证步骤
1. 重启服务器:`systemctl restart prod-mgmt`
2. 在前端选择"铨宝"工厂
3. 选择产品(如"AP05商超")并输入数量
4. 点击"重新计算"
5. 检查采购需求列表中的期初库存字段:
- 铨宝的"6*6*7.5支架 TS-1166VW"应该显示 0 ✅
- 铨宝的"0402B102K500NT"应该显示 0 ✅
- 铨宝的"0402B104K160NT"应该显示 30124 ✅
## 其他修复
- ✅ 期初库存导入:支持同一物料在不同工厂独立存在
- ✅ 数据备份恢复:导入/删除前自动备份,可一键恢复