7.0 KiB
7.0 KiB
入库退货同步库存盘点库存设计说明
01-功能内容
本次修复针对入库记录组件发起退货后,库存盘点组件中的对应库位库存未同步减少的问题。
原问题现象:
- 用户在“入库记录”组件中对采购件、耗材或自制件执行退货。
- 入库记录自身的退货数、入库数等数据已修改。
- 库存盘点组件中对应物料、对应库位的库存数未同步减少。
- 用户在库存盘点组件中点击编辑库存时,页面会重新读取未同步的盘点库存,导致库存数看起来“变回来”。
修复目标:
- 入库记录退货成功时,同步扣减库存盘点对应库位库存。
- 扣减对象必须精确到原入库记录的
货位流水号。 - 采购件、耗材、自制件退货均支持同步扣减。
- 如果库存盘点中找不到对应库位库存,或库存不足,应阻止退货并给出错误。
- 保持原有入库记录、退货记录、采购合同状态更新逻辑不变。
02-程序开发步骤
前端改造
- 在入库记录组件发起退货校验时,补传当前行的
入库记录流水号。 - 后端通过
入库记录流水号读取原入库记录中的货位流水号。 - 避免仅通过物料、合同、批次、入库时间等条件推断库位,防止扣错库位。
涉及前端文件:
src/views/WarehouseManagement/WarehousingRecord/WarehousingRecord.vue
核心参数调整:
param[6] = ['入库记录流水号', this.DeliveryNumber]
后端改造
- 调整采购/耗材退货验证过程:
仓储管理_入库记录_退货入库_验证
- 调整采购/耗材退货执行过程:
仓储管理_入库记录_退货入库
- 调整自制件退货执行过程:
仓储管理_自制件入库记录_退货入库
- 退货时按原入库记录中的
货位流水号扣减:库存管理_物料与货位对照表.货位存量
- 采购件和耗材按外购件库存表处理。
- 自制件按自制件入库记录中的库位处理。
- 所有扣减、退货记录插入、入库记录回写放在事务中执行,任一步失败则回滚。
涉及 SQL 脚本:
sql/仓储管理_入库退货同步盘点库存.sql
03-推进台账
| 轮次 | 做了什么 | 改了哪些文件/对象 | 验证了什么 | 下一步 |
|---|---|---|---|---|
| 1 | 分析退货后库存盘点不变原因 | 入库记录组件、退货存储过程 | 确认退货未按原入库库位精确扣减盘点库存 | 设计同步扣减方案 |
| 2 | 前端退货校验补传入库记录流水号 | WarehousingRecord.vue |
参数可传到后端验证过程 | 改造 SQL |
| 3 | 改造采购/耗材退货验证过程 | 仓储管理_入库记录_退货入库_验证 |
可按入库记录读取原货位 | 改造退货执行 |
| 4 | 改造采购/耗材退货执行过程 | 仓储管理_入库记录_退货入库 |
退货时扣减对应库位库存 | 覆盖自制件 |
| 5 | 改造自制件退货执行过程 | 仓储管理_自制件入库记录_退货入库 |
自制件退货也同步扣减盘点库存 | 编译和执行脚本 |
| 6 | 执行 SQL 脚本并验证对象 | SQL Server 数据库 | 3 个过程已成功更新 | 形成修复文档 |
04-任务矩阵
| 任务编号 | 任务内容 | 状态 | 验收标准 |
|---|---|---|---|
| R-001 | 定位入库退货和库存盘点库存不同步原因 | 已完成 | 明确退货扣减未精确同步库存盘点库位库存 |
| R-002 | 前端退货验证补传 入库记录流水号 |
已完成 | 采购/耗材退货验证参数包含入库记录流水号 |
| R-003 | 采购/耗材退货验证按原入库库位校验库存 | 已完成 | 库存不足或未找到对应库位库存时不允许退货 |
| R-004 | 采购/耗材退货执行同步扣减盘点库存 | 已完成 | 库存管理_物料与货位对照表.货位存量 减少退货数量 |
| R-005 | 自制件退货执行同步扣减盘点库存 | 已完成 | 自制件原入库库位库存同步减少 |
| R-006 | SQL 事务保护 | 已完成 | 退货记录、入库记录、库存扣减任一步失败均回滚 |
| R-007 | 前端结构验证 | 已完成 | WarehousingRecord.vue 模板和脚本解析通过 |
| R-008 | SQL 对象部署验证 | 已完成 | 相关存储过程已在目标库更新 |
05-验收证据
前端验证
验证文件:
src/views/WarehouseManagement/WarehousingRecord/WarehousingRecord.vue
验证内容:
- 采购/耗材退货校验参数已补充:
param[6] = ['入库记录流水号', this.DeliveryNumber]
- Vue 单文件结构解析通过:
template ok
script ok
SQL 验证
目标数据库:
- SQL Server:
192.168.1.27 - 数据库:
ERPTOOL_JY_20250826Back
部署脚本:
sql/仓储管理_入库退货同步盘点库存.sql
已更新对象:
仓储管理_入库记录_退货入库
仓储管理_入库记录_退货入库_验证
仓储管理_自制件入库记录_退货入库
验证结果:
sql compile ok
仓储管理_入库记录_退货入库 2026/6/27 9:30:02
仓储管理_入库记录_退货入库_验证 2026/6/27 9:30:02
仓储管理_自制件入库记录_退货入库 2026/6/27 9:30:02
06-决策记录
| 决策点 | 选择 | 原因 |
|---|---|---|
| 库存扣减定位方式 | 使用 入库记录流水号 反查原 货位流水号 |
最精确,避免同物料多库位时扣错库位 |
| 是否继续按物料、合同、批次、时间匹配 | 保留为辅助条件,但核心以原入库库位为准 | 原匹配条件无法唯一确定库位 |
| 库存不足时如何处理 | 阻止退货并回滚事务 | 避免库存盘点出现负数或账实不一致 |
| 采购/耗材和自制件是否共用逻辑 | 分别改造对应过程 | 两类入库记录来源表不同,分开更符合现有结构 |
| 是否只改前端 | 否,必须改后端存储过程 | 库存一致性应由数据库事务保证 |
| 是否影响库存调拨功能 | 不直接影响 | 退货扣减和调拨是两条库存变动路径,但都作用于库存盘点库位库存 |
07-业务流程
flowchart TD
A["入库记录组件点击退货"] --> B["前端提交退货数量、原因、入库记录流水号"]
B --> C["后端读取原入库记录"]
C --> D["取得物料流水号、批次、原货位流水号"]
D --> E{"对应库位库存是否足够"}
E -- "否" --> F["阻止退货并返回错误"]
E -- "是" --> G["插入退货记录"]
G --> H["回写入库记录退货数量"]
H --> I["扣减库存盘点对应库位货位存量"]
I --> J["更新采购合同/订单状态"]
J --> K["提交事务"]
08-后续注意事项
- 之后所有库存减少类业务,都应明确扣减到具体
货位流水号。 - 不建议再用“物料 + 批次 + 时间”推断库位,存在多库位同批次时扣错风险。
- 若后续增加退货撤销功能,应同步反向增加对应库位库存。
- 若库存盘点支持通用件、自制件、采购件多库存表,后续可抽出统一库存变动存储过程,减少重复逻辑。