系统的核心是一条履约闭环,通过库存这个中枢连接两条链路:
两条链路的交汇点是库存:订单侧不断消耗可用库存,采购侧不断补充可用库存。当可用库存低于安全库存时,系统自动触发补货建议,形成自循环。
一张订单记录一笔买家交易的完整信息,核心字段分为以下几组:
订单标识:订单号(系统自动生成,格式为「渠道编码-日期-5位流水号」,例如 SHOPIFY-20260601-00001)、渠道订单号(来自外部平台的原始订单号)
状态字段(四个独立维度):
买家信息:买家ID、姓名、邮箱、电话、国家、会员等级、历史订单数、累计消费金额
收货信息:收件人姓名、电话、国家、州/省、城市、区县、邮编、详细地址、经纬度
金额信息:商品金额、税金、运费、折扣、优惠券抵扣、实付金额(= 商品金额 + 税金 + 运费 - 折扣 - 优惠券抵扣)、退款金额、币种、汇率
物流信息:发货方式、承运商名称、运单号、物流追踪链接
归属信息:销售渠道ID、发货仓库ID、处理人ID/姓名
关联信息:父订单ID(拆单场景)、合并目标订单ID(合单场景)、原始订单ID(补发场景)
每张订单包含一条或多条订单明细,每条明细对应一个SKU:
每条库存记录对应一个「SKU + 仓库」的唯一组合:
三者关系:物理库存 = 可用数量 + 锁定数量。在途数量是独立的参考值。
每一次库存变动都会生成一条日志,记录:
采购单用于向供应商采购商品以补充库存,核心字段:
单据信息:采购单号(格式为 PO-日期-5位流水号)、供应商ID、目标仓库ID、SKU种类数、总金额、币种(默认CNY)、税金、运费、预计到货日期
状态:草稿 → 已提交 → 已审批 → 已下单 → 部分到货 → 全部到货 → 已关闭 / 已完成(另有已拒绝、已取消两个终态)
到货进度:待到货 → 部分到货 → 全部到货(系统根据采购项的累计到货数量自动更新)
每张采购单包含一条或多条采购项,每条对应一个SKU:
到货单记录供应商的一次发货到达,关联到对应的采购单:
同一张采购单可以产生多张到货单(分批到货场景)。
每张到货单包含一条或多条到货项:
售后单记录买家的退款/退货/补发请求:
发货单记录一次发货操作,关联到对应的订单:
触发方式:手动创建、外部渠道同步
系统自动处理:
订单号生成规则:取渠道编码(如无渠道则用 OMS)+ 当天日期 + 自增序号(5位补零)。序号基于时间戳生成,同一天内保证不重复。
创建后的订单状态:订单已录入系统,等待买家支付。此时不影响任何库存。
触发方式:操作人员确认买家已付款
前置条件:订单状态必须为「待支付」
系统自动处理:
场景一 — 简单确认(不传支付金额):
场景二 — 带金额确认(传入实际支付金额和交易流水号):
业务说明:部分支付的订单不会自动分配库存,需要等待全额到账后手动触发分配。
触发方式:支付确认后自动触发,也可手动触发
前置条件:订单状态必须为「已支付」
系统自动处理:
分配失败的场景:
业务说明:分配是一个原子操作,不存在「部分锁定」的情况。要么全部 SKU 锁定成功,要么全部不锁定。
发货分两步完成。
第一步:录入物流信息
触发方式:操作人员填写承运商和运单号
前置条件:发货单状态为「待拣货」
系统自动处理:
第二步:确认发货
触发方式:操作人员确认货物已交由承运商
前置条件:发货单状态为「待发货」,且运单号不能为空
系统自动处理:
业务说明:发货时只扣减锁定数量,不扣减可用数量(因为可用数量在分配时已经扣减过了)。发货后锁定数量归零,意味着这部分库存已经物理离开仓库。
触发方式:确认买家已收到货物
前置条件:订单状态为「已发货」
系统自动处理:
同步更新发货单状态为「已签收」。
触发方式:订单进入终态
前置条件:订单状态为「已签收」
系统自动处理:
业务说明:完成后的订单可以进入售后流程(退款/补发)。
触发方式:操作人员主动取消
前置条件:订单未完成(已完成和已取消的订单不能取消)
系统自动处理:
业务说明:取消操作会自动释放库存,确保不会出现「幽灵锁定」。已支付但未分配的订单取消时不需要释放库存。
触发方式:操作人员将一张订单拆分为两张
前置条件:
系统自动处理:
业务说明:拆单后产生两张独立的订单,各自走后续的发货流程。子订单继承原订单的支付状态(已支付),不需要重新支付。
触发方式:操作人员将两张订单合并为一张
前置条件:
系统自动处理:
业务说明:合单后来源订单作废,目标订单包含两个订单的所有商品。运费取较大值而非累加,因为合并发货通常比分开发货更经济。
触发方式:操作人员输入实际盘点数量
系统自动处理:
业务说明:盘点会直接覆盖可用数量,而非增量调整。盘盈说明实际库存比系统记录多(可能有未记录的入库),盘亏说明实际库存比系统记录少(可能有丢失或未记录的出库)。
触发方式:操作人员发起仓库间调拨
系统自动处理:
业务说明:调拨是原子操作,源仓库扣减和目标仓库增加要么同时成功,要么同时失败。
触发方式:每次库存变动后自动检查
判断逻辑:
影响范围:预警状态为「低于安全库存」的 SKU 会被补货建议扫描到。
触发方式:手动触发
系统自动处理:
建议记录包含:SKU ID、商品标题、仓库ID、安全库存、当前库存、在途数量、建议采购数量、建议供应商ID
业务说明:补货建议不是采购单,只是一种建议。需要操作人员审核后才能转为采购单。
触发方式:操作人员选择多条建议,一键生成
系统自动处理:
业务说明:多条建议可以合并为一张采购单(只要供应商相同),减少采购单数量。
状态流转:草稿 → 已提交 → 已审批 → 已下单
提交:
审批通过:
审批拒绝:
下单给供应商:
取消采购单:
触发方式:仓库人员确认供应商货物到达
前置条件:采购单状态为「已下单」或「部分到货」
系统自动处理:
业务说明:
触发方式:质检人员对到货商品进行检验
质检通过:
质检不合格:
业务说明:质检结果直接决定货物是否入库。质检不合格的货物不进入可用库存,需要后续处理(退货给供应商或让步接收)。
触发方式:质检通过后自动执行,无需手动操作
系统自动处理:
业务说明:入库是采购链路的终点,也是库存恢复的起点。入库后,之前因订单消耗而降低的可用库存得到补充,如果已触发过补货建议,预警状态会自动解除。
触发方式:操作人员手动关闭
前置条件:
系统自动处理:
业务说明:关闭是一个管理动作,表示这张采购单的业务已终结。部分到货的采购单也可以关闭(例如剩余部分不再采购)。
审核状态:待审核 → 已审批 / 已拒绝
审批通过:售后单进入退款流程,操作人员可以选择退款、退货退款或补发
审批拒绝:售后单终结,记录拒绝原因
退款状态独立于审核状态,经历以下路径:
路径一 — 直接退款(无需退货):
路径二 — 退货退款:
路径三 — 补发:
当售后退款完成(退款状态变为「已退款」)时,同步更新关联订单的退款状态为「已退款」。
补发订单是一张独立的新订单,系统自动完成以下处理:
待支付 ──→ 已支付 ──→ 已分配 ──→ 已发货 ──→ 已签收 ──→ 已完成
│ │ │ │
└──→ 已取消 ←┘ └──→ 已取消 └──→ 已退款
任何未完成的状态都可以直接取消(已分配状态取消时会释放库存)。
待拣货 ──→ 待发货 ──→ 已发货 ──→ 已签收
单向流转,不可回退。
草稿 ──→ 已提交 ──→ 已审批 ──→ 已下单 ──→ 部分到货 ──→ 全部到货 ──→ 已关闭/已完成
│ │ │
└──→ 已取消 └──→ 已拒绝 └──→ 已取消
未退款 ──→ 待退款 ──→ 已退款 ──→ 已完成
│
├──→ 已退货待入库 ──→ 已退款
│
└──→ 已补发
| 序号 | 规则 | 详细说明 |
|---|---|---|
| 1 | 订单分配原子性 | 任一 SKU 库存不足则整体失败,已锁定的自动回滚,不存在部分锁定 |
| 2 | 到货数量不可超采 | 每个 SKU 的累计到货数量不能超过采购单中该 SKU 的采购数量,系统按累计值校验 |
| 3 | 质检与入库联动 | 质检通过 → 自动入库(可用数量增加);质检不合格 → 不入库 |
| 4 | 安全库存自动预警 | 任何库存变动(锁定/解锁/增减/盘点/调拨)后自动检查,无需手动操作 |
| 5 | 取消自动释放库存 | 已分配的订单取消时,系统自动释放所有已锁定的库存 |
| 6 | 拆单库存校验 | 拆单前校验拆出的每个 SKU 可用库存是否充足 |
| 7 | 合单条件严格 | 必须同仓库、同币种、均为未发货状态 |
| 8 | 采购单关闭前置条件 | 所有已到货的 SKU 必须已完成质检(不能有到货但未质检的项) |
| 9 | 补发创建新订单 | 售后补发会创建一张全新的独立订单,而非修改原订单 |
| 10 | 每次操作留痕 | 所有状态变更记录操作日志和事件时间线,包含操作人、时间、变更内容 |
| 11 | 分批到货支持 | 同一采购单可多次到货,每次创建独立到货单,累计数量达标后自动更新采购单状态 |
| 12 | 补货建议去重 | 同一 SKU + 仓库已有待处理建议时,不会重复生成 |
| 13 | 补货建议满足MOQ | 建议数量如果低于供应商最小起订量,自动上调至MOQ |
| 14 | 调拨自动建记录 | 目标仓库无该SKU库存记录时,调拨自动创建 |
| 15 | 盘点直接覆盖 | 盘点输入的是绝对数量而非增量,直接覆盖可用数量 |