Files
JY1.0/docs/入库退货同步库存盘点库存设计说明.md

7.0 KiB
Raw Blame History

入库退货同步库存盘点库存设计说明

01-功能内容

本次修复针对入库记录组件发起退货后,库存盘点组件中的对应库位库存未同步减少的问题。

原问题现象:

  1. 用户在“入库记录”组件中对采购件、耗材或自制件执行退货。
  2. 入库记录自身的退货数、入库数等数据已修改。
  3. 库存盘点组件中对应物料、对应库位的库存数未同步减少。
  4. 用户在库存盘点组件中点击编辑库存时,页面会重新读取未同步的盘点库存,导致库存数看起来“变回来”。

修复目标:

  1. 入库记录退货成功时,同步扣减库存盘点对应库位库存。
  2. 扣减对象必须精确到原入库记录的 货位流水号
  3. 采购件、耗材、自制件退货均支持同步扣减。
  4. 如果库存盘点中找不到对应库位库存,或库存不足,应阻止退货并给出错误。
  5. 保持原有入库记录、退货记录、采购合同状态更新逻辑不变。

02-程序开发步骤

前端改造

  1. 在入库记录组件发起退货校验时,补传当前行的 入库记录流水号
  2. 后端通过 入库记录流水号 读取原入库记录中的 货位流水号
  3. 避免仅通过物料、合同、批次、入库时间等条件推断库位,防止扣错库位。

涉及前端文件:

  • src/views/WarehouseManagement/WarehousingRecord/WarehousingRecord.vue

核心参数调整:

param[6] = ['入库记录流水号', this.DeliveryNumber]

后端改造

  1. 调整采购/耗材退货验证过程:
    • 仓储管理_入库记录_退货入库_验证
  2. 调整采购/耗材退货执行过程:
    • 仓储管理_入库记录_退货入库
  3. 调整自制件退货执行过程:
    • 仓储管理_自制件入库记录_退货入库
  4. 退货时按原入库记录中的 货位流水号 扣减:
    • 库存管理_物料与货位对照表.货位存量
  5. 采购件和耗材按外购件库存表处理。
  6. 自制件按自制件入库记录中的库位处理。
  7. 所有扣减、退货记录插入、入库记录回写放在事务中执行,任一步失败则回滚。

涉及 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

验证内容:

  1. 采购/耗材退货校验参数已补充:
param[6] = ['入库记录流水号', this.DeliveryNumber]
  1. Vue 单文件结构解析通过:
template ok
script ok

SQL 验证

目标数据库:

  • SQL Server192.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-后续注意事项

  1. 之后所有库存减少类业务,都应明确扣减到具体 货位流水号
  2. 不建议再用“物料 + 批次 + 时间”推断库位,存在多库位同批次时扣错风险。
  3. 若后续增加退货撤销功能,应同步反向增加对应库位库存。
  4. 若库存盘点支持通用件、自制件、采购件多库存表,后续可抽出统一库存变动存储过程,减少重复逻辑。