Wholety 使用手册
官网

第10章 仓库场景

仓库是库存物理流转的地方:货进来(入库)、货出去(出库)、货移动(移库/移货架)、货盘点、货销毁。本章覆盖所有仓库操作。

入口:左侧菜单 仓库(功能总览 / 仓库预警 / 仓库查看 / 库存销毁 / 仓库管理 / 入库与出库 / 退货 / 移库 / 上架管理 / 仓库盘点 / 移货架 / 库存变动记录)。 功能总览:仓库首页卡片,展示各仓在库总量、今日入/出库数、库存预警数,点卡片可跳到对应列表。

下图是仓库作业的全景:所有入库增加库存、出库/销毁减少库存,移库/移货架只调整分布。

st=>start: 库存(五维:SKU×仓库×过期日×订单×货位)
p=>parallel: 三类库存动作
in=>inputoutput: 增加:采购入库(0) / 退货入库(1) / 移库入库(2)
out=>inputoutput: 减少:销售出库(3·释放占用) / 移库出库(4) / 库存销毁(5)
mv=>subroutine: 分布调整:跨仓移库 / 仓内移货架(总量不变)
e=>end: 库存变动记录(全程可追溯)
st->p
p(path1, bottom)->in->e
p(path2, right)->out->e
p(path3, left)->mv->e

10.1 维护仓库档案与仓储费用参数

  1. 仓库 → 仓库管理 → 新建仓库:填仓库名称、仓库编号(warehouse_code)、所属地区/地址、备注;保存即建一个库存五维里的「仓库」维度。
  2. 仓库 → 仓库管理 → 编辑已有仓库:改名称、编号、地址,或启用/停用。
  3. 仓储费用参数:按仓维护计费规则(如按体积/按天数计费的标准),用于后续费用核算。

仓库是库存五维之一(见 2.5),建 SKU 之前应先有仓库。系统当前已有多仓,新增前先确认是否真的需要新仓,避免维度膨胀。 停用仓库:若该仓还有在库库存,系统会阻止停用,需先移库清空。


10.2 采购入库

  1. 仓库 → 入库与出库 → 采购入库。
  2. 在订单选择弹窗里按供应商/订单号筛选出待入的供应链订单;点选后系统带出待入商品行。
  3. 列表页逐行录数量、货架位(shelf position)、过期日(expiry);支持扫码自动带出 SKU、减少手输(见 10.11)。
  4. 可分批入库:同一订单多次提交,每次只入部分数量;全部入完才推进订单到「已入库(8)」。
  5. 确认无误点提交 → 生成供应链入库记录(类型 0)。
  6. 提交后可打印入库单(含商品、批次、货架位)留底。

过期日决定临期/过期预警(见 10.10);货架位决定后续出库从哪里拿。 分批改数量时不要超过待入数量,超出会被拦截。

待入量按整个订单的完整入库记录汇总,同一 SKU 跨仓库计算。两行分别订购 0.50 箱和 1.00 箱,已经到货 1.00 箱时,还可入库 0.50 箱;已到货量只扣减一次。超过 100 条的历史也会全部纳入,历史不完整或读取失败时不能继续提交。保留小数箱数;保存的计划行草稿数量按快照恢复,调整行顺序不会填入另一行。

已连接的 Agent 可先读取来源订单和完整入库记录,再提出下一步操作。通过 MCP 发现出入库列表操作,传入 return_all_matching: true、正数 order_id 和 type: 0。读取范围由账户权限决定。迁入旧订单和期初库存前,先按 Agent 迁移指南做只读预检。

采购入库


10.3 销售出库

  1. 仓库 → 入库与出库 → 销售出库。
  2. 选 销售订单(已审批、已冻结占用),系统带出待出商品行。
  3. 从指定批次 / 货架位出货,逐行录数量;支持扫码核销。
  4. 点提交 → 生成销售出库记录(WarehouseIO 类型 1);部分出库继续保持待出库,全部完成后订单推进到「已出库(4)」;占用释放、实物减少。
  5. 可打印出库单。

销售待出量同样使用整个订单跨仓库的完整历史。Agent 读取时传入 return_all_matching: true、销售 order_id 和 type: 1。

出库受可用库存约束;出货后实物减少、占用释放。若某 SKU 可用不足,系统提示,需先补货或调整。


10.4 销售退库

  1. 仓库 → 退货 → 销售退库(退货入库)。
  2. 选 退货中的退货单,系统带出待退商品行;有关联销售时,在收货前选择实际出库来源。
  3. 指定退回的仓库、货架位,录数量;关联销售的总退货量不得超过实际出库减去此前已退数量。提交生成退货库存流水(类型 1);全部商品入库后,退货单到「已入库(1)」,部分收货仍为退货中。已收货商品和来源保持原记录,重复确认收货不会增加库存。
  4. 退库后可打印退库单。

退库后进入销售侧确认退价、财务打款(见 8.6)。


10.5 上架管理

在 上架管理 中,将已收货批次落位,或在同仓内移动其中一部分:

  1. 选择供应链订单、销售退货单或可用区入口,查看来源库存行。供应链入口核对来源采购单;退货入口仅展示该退货单实际收货记录关联的批次,空退货单不会列出其他库存。可用区入口只展示可用区货架,不包含不可用区。
  2. 每行分别显示实存、销售预留、锁定和可上架数量。可上架 = 实存 − 预留 − 锁定,最低为零。
  3. 逐行填写目标货架位、数量和保质期;扫码可辅助选商品和填写货架。数量不得超过来源当时的可移动库存;销售预留和锁定数量留在来源行。
  4. 核对来源批次与目标货架,确认上架。提交期间拦截重复点击并锁定入口切换;货架或保质期至少变更一项。

上架不改变仓库总实存,部分拆分货架采用相同的可移动数量规则。目标批次已存在时,单位商品成本与单位货运成本分别按实物数量加权,保留六位小数;缺失成本保持未知,明确的零成本保留为零。API 省略保质期会保留来源效期,明确传 null 表示清空;页面会提交确认时看到的保质期,包括清空值。

来源的待销毁、人工过期及预库存标记会保留。目标已有库存且标记不同时,上架、拆分和整行移货架都会拒绝合并,请选择其他货架;不要为移动而随意清除标记。空目标行会采用来源标记。

上架成功后页面显示操作记录编号。点行内「上架记录」或成功提示中的「查看记录」,可查看该商品在此仓库最近 20 条记录,包含操作人、时间、来源/目标批次、货架和移动前后实存。即使来源没有采购单,也会留记录。请求结果不明确时,先核对这些记录与库存,再决定后续操作。历史动作不能补造为新的收货记录;移到别的批次后,可通过盘点或适用的库存入口继续操作。

整行移货架属于另一个盘点动作,可随批次移动占用关联;上架和拆分只移动未预留、未锁定的部分。可在库存指南操作示例。


10.6 移库(跨仓)与移货架(仓内)

移库出库与入库分别记录。出库后、入库前,货物尚未计入目标仓在库数量;完成后才完成跨仓转移。创建前核对目标仓与数量。

移库详情的来源货架有三种依据:待出库时显示当前来源货架;已出库或已完成时显示出库时记录的货架,后续移货架不会改写它;缺失或冲突的历史依据显示未知,不能用今天的库存位置补齐。详情中的 SKU 名称、编码、单位优先使用单据快照。

移库出库会记录该批货物当时的单位采购成本、单位货运成本、保质期与供应链订单。入库沿用这份出库快照;来源仓剩余库存后来修改成本、保质期或合并到另一货架,不会改写在途货物的依据。单位成本按 SKU 单位记录,支持六位小数;明确的零成本保留为零,历史没有记录的成本保持未知,不用当前库存补算。

移库入库合并到已有批次或仓内移货架合并批次时,当前库存的单位采购成本、单位货运成本按实物数量加权,保留六位小数;实际出入库快照仍保存本次货物的原成本。例如 0.75 箱 × 20 加上 0.50 箱 × 12.34,1.25 箱的合并单位成本为 16.936。参与合并的非零数量缺失成本时,合并成本保持未知;零库存不参与加权,不把缺失成本当免费货物。

入库前系统核对出库记录、商品、数量及来源批次。依据缺失或不一致时停止入库,需先核对原始单据,不会生成目标库存。仓内合并只让尚未出库的移库计划跟随新库存批次;已经出库或完成的计划保留原来源关联。移库成本快照的读取沿用库存成本权限,普通仓库成员仍能读取数量与货架。

出库同时冻结预库存和库存标记(正常、待销毁、人工标记过期)。入库保留出库时的标记,来源剩余批次后来改标记不影响在途货物。目标已有实存或锁定量且标记不同时,拒绝合并,应选择其他接收货架;空且未锁定的目标采用来货标记。历史出库没有记录标记时,须先核对再收货。移库详情分别显示待出库时的当前来源标记、出库时记录的标记或历史未知状态。

历史移库已出库待入库、但缺少标记时,有移库权限的成员可在移库详情对应行选择核对历史标记。查阅原始出库单据后明确选择出库时的上架状态与库存标记,并填写核对依据;已记录的有效字段不能改写。确认后留下核对人、依据和前后值的操作记录,不改动数量、成本或出入库事实。所有实际出库行的标记完整后才能收货;出库关联缺失或冲突时,须先核对原始记录。

收货入口为仓库 → 出入库 → 入库,选择已出库的移库单。实际出库的数量和有效期固定展示,每行可填写收货货位;留空表示不指定货位。计划货位发生冲突时,可改选空货位后确认入库。原计划和原出库记录保留,完成后的移库详情分别展示计划货位与实际收货货位。普通入库、出库权限才可执行调拨收货,仅有退库权限不能操作。

请求超时后,页面只查询最新调拨状态,不自动重复收货;再次操作前应核对出入库记录。图片上传失败不会撤销货物入库,请通过入库记录核对附件。

可体验移库快照示例:出库 0.50 箱,修改剩余来源标记,再比较收进已有货架或空货架的结果。


10.7 仓库盘点(实时核对)

系统是实时盘点,不产生独立的「盘点单」,也不直接改动仓库总库存。盘点时你在库存上做三类操作:

st=>start: 仓库盘点 → 载入库存
a=>parallel: 三类盘点操作
b=>operation: 改货架(A→B 货位调整)
c=>operation: 拆分(一批拆两份)
d=>operation: 标记销毁(后续正式出账)
e=>end: 实时落库到库存变动记录
st->a
a(path1, right)->b->e
a(path2, bottom)->c->e
a(path3, left)->d->e

盘点只调整货位/拆分/标记,不改总库存数量。账实不符(盘盈/盘亏)要用正规单据修正。

操作 说明 操作入口
改货架 把某批库存从 A 货架位改到 B 货架位(仓内货位调整) 盘点列表行内「改货架」
拆分 把一个库存批次按数量拆成两份(便于分货架/分批) 行内「拆分」,填拆分数量
标记销毁 / 取消标记 标记某批为待销毁(之后走正式的库存销毁出账) 行内「标记销毁」/「取消标记」
  1. 仓库 → 仓库盘点 → 载入盘点(可按仓库/SKU/货架筛选当前库存)。
  2. 逐行执行上述操作,每次操作实时落库到库存变动记录。
  3. 标记销毁的批次,后续到「库存销毁」正式出账。

重要:盘点只调整货位/拆分/标记,不改总库存数量。实地清点若发现账实不符(盘盈/盘亏),要用正规单据修正总量:盘盈走采购入库(无单入库),盘亏走销售出库或库存销毁。别指望盘点直接把数字改平。


10.8 库存销毁

  1. 仓库 → 库存销毁 → 载入待销毁批次(含盘点标记的批次)。
  2. 勾选要销毁的行,可全选;录销毁数量、原因(过期/损坏/不可售)。
  3. 点提交 → 生成库存销毁记录(类型 5),库存相应减少。

销毁是不可逆的库存减少,需谨慎;原因建议必填,便于溯源。


10.9 仓库查看与库存变动记录

只读 API Key 与已接入 Agent 可以调用 POST /product/product-stock-records/list,使用 page 与 page_size(1–100)翻页。记录按时间、ID 同时倒序;仅日期的范围使用多伦多业务日期,结束日期包含整天,带时区的时间会转换到多伦多。来源取值为 supplier_inbound、sale_outbound、sale_return、transfer,无效筛选会被拒绝。这是普通分页,不是冻结快照;多页读取期间若有新库存变动,需重新查询核对,不能直接视为完整盘点依据。

近期补货筛选取最近 30 天到当前业务时间内,某个库存批次从零变正数的 SKU,排除隐藏 SKU 与未来日期记录;不代表该 SKU 所有仓库或总库存原先均为零。选购页面加载全部分页;查询失败或结果不一致时提供重试,不展示不完整或假空的商品列表。

库存变动记录


10.10 仓库预警

  1. 仓库 → 仓库预警。
  2. 系统监控三类异常(阈值可在预警设置里配置):
    • 临期:快到过期日的库存(按天数阈值)。
    • 缺货:可用库存低于阈值的 SKU。
    • 积压:长期未动、占用资金的库存(按天数阈值)。
  3. 针对预警做处理:临期考虑促销/销毁,缺货安排采购,积压清理或调拨。

阈值建议在上线初期就设好,避免漏看。


10.11 条码扫码作业

SKU 可维护条码(upc / barcodes)。出入库、上架时支持扫码快速识别 SKU,减少手输错误:

  1. 商品明细里维护条码(见 6.3);扫码枪/相机识别后自动带出 SKU。
  2. 入库/出库/上架列表行内点「扫码」调起扫码,识别后自动填 SKU / 货架位。
  3. 扫货架位条码可直接绑定落位。

条码在商品明细维护(见 6.3);扫码枪/相机识别后自动带出 SKU。


本章小结

下一章讲 财务场景。