168 lines
7.0 KiB
Markdown
168 lines
7.0 KiB
Markdown
# 入库退货同步库存盘点库存设计说明
|
||
|
||
## 01-功能内容
|
||
|
||
本次修复针对入库记录组件发起退货后,库存盘点组件中的对应库位库存未同步减少的问题。
|
||
|
||
原问题现象:
|
||
|
||
1. 用户在“入库记录”组件中对采购件、耗材或自制件执行退货。
|
||
2. 入库记录自身的退货数、入库数等数据已修改。
|
||
3. 库存盘点组件中对应物料、对应库位的库存数未同步减少。
|
||
4. 用户在库存盘点组件中点击编辑库存时,页面会重新读取未同步的盘点库存,导致库存数看起来“变回来”。
|
||
|
||
修复目标:
|
||
|
||
1. 入库记录退货成功时,同步扣减库存盘点对应库位库存。
|
||
2. 扣减对象必须精确到原入库记录的 `货位流水号`。
|
||
3. 采购件、耗材、自制件退货均支持同步扣减。
|
||
4. 如果库存盘点中找不到对应库位库存,或库存不足,应阻止退货并给出错误。
|
||
5. 保持原有入库记录、退货记录、采购合同状态更新逻辑不变。
|
||
|
||
## 02-程序开发步骤
|
||
|
||
### 前端改造
|
||
|
||
1. 在入库记录组件发起退货校验时,补传当前行的 `入库记录流水号`。
|
||
2. 后端通过 `入库记录流水号` 读取原入库记录中的 `货位流水号`。
|
||
3. 避免仅通过物料、合同、批次、入库时间等条件推断库位,防止扣错库位。
|
||
|
||
涉及前端文件:
|
||
|
||
- `src/views/WarehouseManagement/WarehousingRecord/WarehousingRecord.vue`
|
||
|
||
核心参数调整:
|
||
|
||
```js
|
||
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. 采购/耗材退货校验参数已补充:
|
||
|
||
```js
|
||
param[6] = ['入库记录流水号', this.DeliveryNumber]
|
||
```
|
||
|
||
2. Vue 单文件结构解析通过:
|
||
|
||
```text
|
||
template ok
|
||
script ok
|
||
```
|
||
|
||
### SQL 验证
|
||
|
||
目标数据库:
|
||
|
||
- SQL Server:`192.168.1.27`
|
||
- 数据库:`ERPTOOL_JY_20250826Back`
|
||
|
||
部署脚本:
|
||
|
||
```text
|
||
sql/仓储管理_入库退货同步盘点库存.sql
|
||
```
|
||
|
||
已更新对象:
|
||
|
||
```text
|
||
仓储管理_入库记录_退货入库
|
||
仓储管理_入库记录_退货入库_验证
|
||
仓储管理_自制件入库记录_退货入库
|
||
```
|
||
|
||
验证结果:
|
||
|
||
```text
|
||
sql compile ok
|
||
仓储管理_入库记录_退货入库 2026/6/27 9:30:02
|
||
仓储管理_入库记录_退货入库_验证 2026/6/27 9:30:02
|
||
仓储管理_自制件入库记录_退货入库 2026/6/27 9:30:02
|
||
```
|
||
|
||
## 06-决策记录
|
||
|
||
| 决策点 | 选择 | 原因 |
|
||
| --- | --- | --- |
|
||
| 库存扣减定位方式 | 使用 `入库记录流水号` 反查原 `货位流水号` | 最精确,避免同物料多库位时扣错库位 |
|
||
| 是否继续按物料、合同、批次、时间匹配 | 保留为辅助条件,但核心以原入库库位为准 | 原匹配条件无法唯一确定库位 |
|
||
| 库存不足时如何处理 | 阻止退货并回滚事务 | 避免库存盘点出现负数或账实不一致 |
|
||
| 采购/耗材和自制件是否共用逻辑 | 分别改造对应过程 | 两类入库记录来源表不同,分开更符合现有结构 |
|
||
| 是否只改前端 | 否,必须改后端存储过程 | 库存一致性应由数据库事务保证 |
|
||
| 是否影响库存调拨功能 | 不直接影响 | 退货扣减和调拨是两条库存变动路径,但都作用于库存盘点库位库存 |
|
||
|
||
## 07-业务流程
|
||
|
||
```mermaid
|
||
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. 若库存盘点支持通用件、自制件、采购件多库存表,后续可抽出统一库存变动存储过程,减少重复逻辑。
|