收货:从入库单到上架完成
最后更新 2026-10-13
建入库单、选收货模式、按托或直接收货——含差异确认与标签打印的完整收货流程。
第一步:建入库单#
进入 WMS → Inbound Receipts(入库单),手工建单或导入建单。手工建单填写:客户/货主(从 merchant 列表选择,Title 默认即 merchant,不再手输)、PO 号、承运商、柜号/拖车号、BOL(提单号)、铅封号,以及预期明细行(SKU + 预期数量 + 单位)。导入用 CSV 模板:下载模板 → 上传 → 校验 → 复核 → 确认入库。入库单号自动生成。如需给到车安排月台时段,可在 WMS → Appointments 建预约(新建 / 查询 / 编辑 / 预约设置);收货本身不强制预约(签到步骤已移除)。
第二步:选收货模式#
收货模式是仓库级三态开关(wms_warehouses.receiving_mode,默认 both),在 master-data → 仓库编辑页设置:desktop(仅桌面收货——入库单详情只显示 Receive 下拉)、mobile(仅手机收货——只显示 Create Receive Task)、both(两个按钮都显示)。模式互斥只做 UI 层强制,避免同一张单两边同时操作造成混乱。
桌面端收货:Receive 下拉#
- 按托收货(Palletized)——打开 Receive → 选 Palletized。Summary 区每产品一行:SKU/品名、Expected 数量+单位、已组托数量、剩余(多收/少收打 Tag)。Build 区:从 remaining>0 的明细行选 1+ 产品+数量,填托盘数 N(默认 1)一次生成 N 个相同托盘;Condition 下拉(Good/Damaged,整托维度,默认 Good);storage location 必填(只列 storage 类型库位)。点 Build → 托盘进 Pallet 区,Summary 联动更新;有空 building 托盘时橙色 Tag 提示(不阻断)。点 Receive → 差异确认框逐行列出 expected vs 已组托(多收/少收逐行确认)→ 确认后按每托盘的 storage 库位一次性写库存(上架合并进来,无单独上架步骤)→ receipt → received。之后勾选一个/多个/全部托盘打印 pallet label。
- 直接收货(Direct)——弹窗列表每行为一条入库单明细:产品信息、Expected、Received Qty 输入(默认 remaining)、Location(必填,只限 picking 类型库位,前后端都校验)、Condition 下拉(Good/Damaged,默认 Good)、Lot#、Expiry。Split 按钮可把一行拆成多行放不同库位,可重复拆。Receive → 差异确认 → 调 receive-batch 写库存。
- 差异收货规则(桌面+手机统一):多收/少收都可以。任何差异必须弹确认框逐行列出(多收红色/少收橙色高亮),用户明确确认后才能提交。
- Condition 映射到库存状态:Good → available(可用),Damaged → damaged(破损)。
- 库位类型限制:组托只能选 storage 类型库位;直接收货只能选 picking 类型库位。
手机端收货:Create Receive Task#
- 在桌面端入库单详情点 Create Receive Task(mobile/both 模式可见)。弹框两项:Assignee(本组织成员下拉)+ 入库方式三选一:组托入库(工人手机上只能用组托流程)/ 直接入库(只能用直接入库流程)/ 执行时决定(工人进入任务后自己选,默认)。提交后生成 task(task_type=receive)。
- 工人手机打开任务详情(task_type=receive):锁定模式显示方式标签 + [开始入库] 直接进对应流程;decide 模式显示两个大卡片(组托入库 / 直接入库)→ 点选 → 二次确认 → 回写 task(receiving_method 更新为实际值)→ 进入对应流程。首次提交收货后锁定方式,之前可返回重选。
- 手机组托入库流程(4 步):①汇总——按产品卡片(SKU/品名、Expected、已组托、剩余);②组托——选行 + 每托数量、托盘数 N、Condition(整托)、storage 库位(扫码/手输/下拉选择,只限 storage 类型)→ [组托],可重复建多组;原厂标签模式:勾选"使用原厂标签"后,托盘数改为逐托录入原厂标签码(扫码/手输,每托一个,批内去重),建托时 lpn = 原厂标签码、label_source='factory',不走 LPN 序列、不打新标签;③托盘——托盘列表(LPN/内容/库位/状态),可删空托盘(二次确认);④确认收货——差异确认 → 提交 → 成功页列出托盘 LPN。打印标签手机端不做;成功页提示"标签已生成,请在桌面端打印"(原厂标签模式除外,提示"原厂标签,无需打印")。
- 手机直接入库流程(单屏卡片):卡片列表,一行一个 item(SKU/品名/Expected);每卡填实收数量(默认 remaining)、picking 库位(扫码/选,必填)、Condition、Lot#/Expiry(选填)、Split 拆行按钮。[提交收货] 统一提交 → 差异确认 → 调 receive-batch。允许多轮提交:大单一次收不完可分多次提交;receipt 由后端按"全部收完"自动推进 received。
- 收尾:提交成功 → 返回任务主界面 → [关闭任务] 调 receive-complete:校验全部收完 → receipt → received + 回写 Purchase 全量重算。有剩余未收完时关闭会被后端拦(WMS_STATE_001),提示工人找主管处理(拒收/关闭入库单)。
建了 Receive task 后,桌面端的 Receive 下拉会被锁定禁用(前后端都拦)——同一张单只走一边,避免两边同时操作数据混乱。
check-in 已移除:new / imported 状态的入库单可直接收货(首次收货动作自动把单据推进为 receiving)。旧的 Complete Receiving 按钮也已移除——收货一步到位,不再需要手工完成。
入库单状态#
- new / imported → receiving(首次收货动作自动推进)→ received(全部收完)。
- 完成口径:所有行 received_qty + damaged_qty + rejected_qty ≥ expected_qty(桌面/手机/任务关闭共用同一口径)。
- 少收部分保持为 remaining(receipt 停在 receiving),或由主管记 rejected 后关闭入库单。