2026-03-09 10:29:38 +08:00
|
|
|
|
### 详细入库全流程解析
|
|
|
|
|
|
|
|
|
|
|
|
#### 单据创建阶段 (Creation)
|
|
|
|
|
|
|
|
|
|
|
|
* 动作: 用户通过 add 接口新增,或 importData 导入 Excel。
|
|
|
|
|
|
* 数据变更:
|
|
|
|
|
|
* 插入 TRkWareNotice,状态 ReceivingStatus = "0"。
|
|
|
|
|
|
* 插入 TRkWareNoticeTab,状态 ReceivingStatus = "0", InStatus = "0"。
|
|
|
|
|
|
|
|
|
|
|
|
#### 收货确认阶段 (Receiving / Task Generation)
|
|
|
|
|
|
|
|
|
|
|
|
此阶段是“实物清点与任务生成”,并非流程的终点。
|
|
|
|
|
|
|
|
|
|
|
|
* 接口: confirmNoticeTab
|
|
|
|
|
|
* 业务逻辑:
|
|
|
|
|
|
1. 校验: 检查托盘状态、是否冻结(InStatus=="1")。
|
|
|
|
|
|
2. 更新收货量: 累加 RecNum (累计收货数量)。
|
|
|
|
|
|
3. 判定冻结: 如果 RecNum (累计收货) == ReceivingNum (应收总数),将明细 InStatus 更新为 "1"。这标志着该物料收货动作结束,不能再收了。
|
|
|
|
|
|
4. 生成任务: 创建 TOngoodsshelf (入库任务),状态 InStatus = "0"。
|
|
|
|
|
|
5. 发送通知: 生成 TCallNotice,通知下游(如AGV或搬运工)执行上架任务。
|
|
|
|
|
|
* 关键点: 此时单据状态 `ReceivingStatus` 依然是 `"0"`,库存表尚未增加库存。
|
|
|
|
|
|
|
|
|
|
|
|
#### 上架确认阶段 (Putaway / Completion)
|
|
|
|
|
|
|
|
|
|
|
|
此阶段是“任务执行与库存生成”,驱动状态流转。
|
|
|
|
|
|
|
|
|
|
|
|
* 接口: shelvesConfirm
|
|
|
|
|
|
* 业务逻辑:
|
|
|
|
|
|
1. 校验: 检查库位 (LocationId) 有效性。
|
|
|
|
|
|
2. 更新上架量: 累加 AcceNum (累计上架数量)。
|
|
|
|
|
|
3. 更新明细状态:
|
|
|
|
|
|
* 若 AcceNum < RecNum: 设置 ReceivingStatus = "1" (部分上架)。
|
|
|
|
|
|
* 若 AcceNum >= RecNum: 设置 ReceivingStatus = "2" (全部上架)。
|
|
|
|
|
|
4. 完成任务: 将 TOngoodsshelf 移入历史表 TOngoodsshelfBak,并从原表删除。
|
|
|
|
|
|
5. 生成库存:
|
|
|
|
|
|
* 普通模式: 插入 TMiStock (真实库存)。
|
|
|
|
|
|
* 虚拟模式 (Fictitious="1"): 插入 TMiStockF (虚拟库存)。
|
|
|
|
|
|
6. 判断主单完结:
|
|
|
|
|
|
* 遍历该单据下所有明细。
|
|
|
|
|
|
* 如果所有明细的状态都为 `"2"` (已上架),则触发归档流程。
|
|
|
|
|
|
|
|
|
|
|
|
#### 归档流程 (Archiving)
|
|
|
|
|
|
|
|
|
|
|
|
当上架确认检测到主单完结时自动触发。
|
|
|
|
|
|
|
|
|
|
|
|
* 更新主单: 将 TRkWareNotice 的 ReceivingStatus 设为 "2"。
|
|
|
|
|
|
* 同步收货表: 更新或插入 TRkReceivingGoods (收货记录表)。
|
|
|
|
|
|
* 历史迁移:
|
|
|
|
|
|
* 将主单数据移入 TRkWareNoticeBak。
|
|
|
|
|
|
* 将明细数据移入 TRkWareNoticeTabBak。
|
|
|
|
|
|
* 数据清理: 物理删除 TRkWareNotice 和 TRkWareNoticeTab 中的原数据。
|
|
|
|
|
|
* 关闭通知: 关闭关联的 TCallNoticeOrder 任务。
|