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