core-flow.md 27 KB

核心业务流程说明:订单 → 库存 → 采购 → 到货 → 入库


一、全局概览

系统的核心是一条履约闭环,通过库存这个中枢连接两条链路:

  • 正向链路(消耗库存):买家下单 → 支付 → 锁定库存 → 发货扣减库存 → 签收 → 完成
  • 反向链路(补充库存):库存低于安全线 → 生成补货建议 → 创建采购单 → 审批 → 下单给供应商 → 到货 → 质检 → 合格品入库 → 库存恢复

两条链路的交汇点是库存:订单侧不断消耗可用库存,采购侧不断补充可用库存。当可用库存低于安全库存时,系统自动触发补货建议,形成自循环。


二、数据模型说明

2.1 订单(Orders)

一张订单记录一笔买家交易的完整信息,核心字段分为以下几组:

订单标识:订单号(系统自动生成,格式为「渠道编码-日期-5位流水号」,例如 SHOPIFY-20260601-00001)、渠道订单号(来自外部平台的原始订单号)

状态字段(四个独立维度):

  • 订单状态:待支付 → 已支付 → 已分配 → 已发货 → 已签收 → 已完成(另有已取消、已退款两个终态)
  • 支付状态:待支付 → 待确认 → 部分支付 → 已支付
  • 发货状态:未发货 → 待拣货 → 待发货 → 已发货 → 已签收
  • 退款状态:未退款 → 待退款 → 已退货待入库 / 已退款 / 已补发 → 已完成

买家信息:买家ID、姓名、邮箱、电话、国家、会员等级、历史订单数、累计消费金额

收货信息:收件人姓名、电话、国家、州/省、城市、区县、邮编、详细地址、经纬度

金额信息:商品金额、税金、运费、折扣、优惠券抵扣、实付金额(= 商品金额 + 税金 + 运费 - 折扣 - 优惠券抵扣)、退款金额、币种、汇率

物流信息:发货方式、承运商名称、运单号、物流追踪链接

归属信息:销售渠道ID、发货仓库ID、处理人ID/姓名

关联信息:父订单ID(拆单场景)、合并目标订单ID(合单场景)、原始订单ID(补发场景)

2.2 订单明细(OrderItem)

每张订单包含一条或多条订单明细,每条明细对应一个SKU:

  • SKU信息:SKU ID、SKU编码、商品标题、商品图片、分类、规格、条码
  • 数量与价格:购买数量、单价、小计(= 单价 × 数量)、成本价、利润、利润率
  • 库存追踪:可用数量、锁定数量、在途数量、已预留数量、已发货数量、已退货数量
  • 标记:是否赠品

2.3 库存(Inventory)

每条库存记录对应一个「SKU + 仓库」的唯一组合:

  • 可用数量:当前可以被新订单使用的库存。订单分配时减少,取消时恢复,采购入库时增加
  • 锁定数量:已被订单占用但尚未发货的库存。订单分配时增加,发货时清零,取消时减少
  • 在途数量:已下采购单但尚未到货入库的数量(当前仅做记录,不参与可用库存计算)
  • 安全库存:低于此值时触发预警和补货建议
  • 预警状态:正常 / 低于安全库存(系统自动计算,不可手动修改)

三者关系:物理库存 = 可用数量 + 锁定数量。在途数量是独立的参考值。

2.4 库存变动日志(InventoryLog)

每一次库存变动都会生成一条日志,记录:

  • 变动来源:ORDER_ALLOCATION(订单分配)、ORDER_SHIPMENT(订单发货)、PURCHASE_ARRIVAL(采购入库)、STOCKTAKE(盘点)、TRANSFER(调拨)
  • 变动类型:LOCK(锁定)、UNLOCK(解锁)、INCREMENT(增加)、SHIP(发货扣减)、STOCKTAKE_GAIN(盘盈)、STOCKTAKE_LOSS(盘亏)、TRANSFER_OUT(调出)、TRANSFER_IN(调入)
  • 变动前后数量、操作人、关联订单ID/单号

2.5 采购单(PurchaseOrder)

采购单用于向供应商采购商品以补充库存,核心字段:

单据信息:采购单号(格式为 PO-日期-5位流水号)、供应商ID、目标仓库ID、SKU种类数、总金额、币种(默认CNY)、税金、运费、预计到货日期

状态:草稿 → 已提交 → 已审批 → 已下单 → 部分到货 → 全部到货 → 已关闭 / 已完成(另有已拒绝、已取消两个终态)

到货进度:待到货 → 部分到货 → 全部到货(系统根据采购项的累计到货数量自动更新)

2.6 采购项(PurchaseOrderItem)

每张采购单包含一条或多条采购项,每条对应一个SKU:

  • SKU信息:SKU ID、SKU编码、商品标题
  • 采购信息:采购数量、单价、小计
  • 到货追踪:累计到货数量、累计合格数量(到货和质检时自动累加)

2.7 到货单(PurchaseArrival)

到货单记录供应商的一次发货到达,关联到对应的采购单:

  • 到货单号、关联采购单ID、到货仓库、到货时间、操作人
  • 状态:已到货

同一张采购单可以产生多张到货单(分批到货场景)。

2.8 到货项(PurchaseArrivalItem)

每张到货单包含一条或多条到货项:

  • 关联采购项ID(追溯到采购单中的具体SKU)
  • SKU ID、预期数量(从采购项同步)、实际到货数量
  • 质检结果:合格数量、不合格数量、质检状态(待质检 / 合格 / 不合格)

2.9 售后单(AfterSale)

售后单记录买家的退款/退货/补发请求:

  • 售后单号、关联订单ID/单号、买家信息
  • 售后类型、退款金额、退款原因、责任归属
  • 审核状态:待审核 → 已审批 / 已拒绝
  • 退款状态:未退款 → 待退款 → 已退货待入库 / 已退款 / 已补发 → 已完成
  • 退货物流:退货承运商、退货单号
  • 补发信息:补发仓库ID、补发SKU ID、补发订单ID

2.10 发货单(ShippingOrder)

发货单记录一次发货操作,关联到对应的订单:

  • 发货单号(格式 SHP-时间戳)、关联订单ID/单号、发货仓库
  • SKU种类数、应发数量、实发数量
  • 物流信息:承运商名称、运单号
  • 状态:待拣货 → 待发货 → 已发货 → 已签收
  • 退货状态:未退货 / 已退货

三、订单履约链路(正向)

3.1 创建订单

触发方式:手动创建、外部渠道同步

系统自动处理

  1. 校验销售渠道是否存在(如指定了渠道)
  2. 校验发货仓库是否存在(如指定了仓库)
  3. 自动生成订单号(格式:渠道编码-日期-5位流水号,例如 SHOPIFY-20260601-00001)
  4. 初始化所有状态字段:订单状态=待支付,支付状态=待支付,发货状态=未发货,退款状态=未退款
  5. 默认币种 USD,汇率 1.00
  6. 记录创建时间

订单号生成规则:取渠道编码(如无渠道则用 OMS)+ 当天日期 + 自增序号(5位补零)。序号基于时间戳生成,同一天内保证不重复。

创建后的订单状态:订单已录入系统,等待买家支付。此时不影响任何库存。

3.2 确认支付

触发方式:操作人员确认买家已付款

前置条件:订单状态必须为「待支付」

系统自动处理

场景一 — 简单确认(不传支付金额):

  1. 校验订单状态为「待支付」,否则报错
  2. 将订单状态更新为「已支付」
  3. 将支付状态更新为「已支付」
  4. 记录支付时间
  5. 写入操作日志(类型:ORDER,内容:支付确认,备注含金额)
  6. 写入状态事件时间线
  7. 自动触发库存分配(见 3.3 节)

场景二 — 带金额确认(传入实际支付金额和交易流水号):

  1. 校验订单状态为「待支付」
  2. 比对实际支付金额与订单应付金额:
    • 实际金额 >= 应付金额 → 支付状态 = 已支付
    • 实际金额 < 应付金额 → 支付状态 = 部分支付
  3. 记录交易流水号
  4. 记录支付时间
  5. 写入操作日志和状态事件
  6. 仅当支付状态为「已支付」(非部分支付)时,才自动触发库存分配

业务说明:部分支付的订单不会自动分配库存,需要等待全额到账后手动触发分配。

3.3 库存分配(锁定库存)

触发方式:支付确认后自动触发,也可手动触发

前置条件:订单状态必须为「已支付」

系统自动处理

  1. 校验订单状态为「已支付」
  2. 获取订单下所有明细项(SKU列表)
  3. 逐一校验每个 SKU 的可用库存是否 >= 购买数量
  4. 如果任何一个 SKU 库存不足,整体失败,已锁定的 SKU 自动回滚(事务机制)
  5. 全部校验通过后,对每个 SKU 执行锁定操作:
    • 该 SKU 对应库存记录的「可用数量」减少购买数量
    • 该 SKU 对应库存记录的「锁定数量」增加购买数量
    • 写入库存变动日志(来源:ORDER_ALLOCATION,类型:LOCK,记录变动前后数量)
    • 自动重新计算该库存记录的预警状态(可用 < 安全库存 → 标记为「低于安全库存」)
  6. 将订单状态更新为「已分配」
  7. 写入状态事件(内容:库存锁定完成,备注含 SKU 数量)

分配失败的场景

  • 某 SKU 无库存记录(该 SKU 从未入库)
  • 某 SKU 可用库存 < 购买数量
  • 失败后所有已锁定的库存自动释放,订单状态保持「已支付」不变

业务说明:分配是一个原子操作,不存在「部分锁定」的情况。要么全部 SKU 锁定成功,要么全部不锁定。

3.4 发货

发货分两步完成。

第一步:录入物流信息

触发方式:操作人员填写承运商和运单号

前置条件:发货单状态为「待拣货」

系统自动处理

  1. 校验发货单存在
  2. 校验发货单状态为「待拣货」,否则报错
  3. 记录承运商名称和运单号
  4. 将发货单状态更新为「待发货」
  5. 写入订单状态事件(内容:运单号已录入,备注含承运商+单号)

第二步:确认发货

触发方式:操作人员确认货物已交由承运商

前置条件:发货单状态为「待发货」,且运单号不能为空

系统自动处理

  1. 校验发货单存在
  2. 校验运单号非空
  3. 校验发货单状态为「待发货」
  4. 对订单中每个 SKU 执行库存扣减:
    • 该 SKU 对应库存记录的「锁定数量」减少购买数量(归零)
    • 写入库存变动日志(来源:ORDER_SHIPMENT,类型:SHIP)
  5. 将发货单状态更新为「已发货」,记录发货时间
  6. 同步更新关联订单:订单状态→已发货,发货状态→已发货,记录运单号、承运商、发货时间
  7. 写入状态事件

业务说明:发货时只扣减锁定数量,不扣减可用数量(因为可用数量在分配时已经扣减过了)。发货后锁定数量归零,意味着这部分库存已经物理离开仓库。

3.5 签收

触发方式:确认买家已收到货物

前置条件:订单状态为「已发货」

系统自动处理

  1. 校验订单状态为「已发货」
  2. 将订单状态更新为「已签收」
  3. 记录签收时间
  4. 写入状态事件(内容:已签收,备注:买家已确认收货)

同步更新发货单状态为「已签收」。

3.6 完成

触发方式:订单进入终态

前置条件:订单状态为「已签收」

系统自动处理

  1. 校验订单状态为「已签收」
  2. 将订单状态更新为「已完成」
  3. 写入状态事件

业务说明:完成后的订单可以进入售后流程(退款/补发)。

3.7 取消订单

触发方式:操作人员主动取消

前置条件:订单未完成(已完成和已取消的订单不能取消)

系统自动处理

  1. 校验订单不是「已取消」状态
  2. 如果订单当前是「已分配」状态(已锁定库存),则自动释放所有已锁定的库存
    • 对每个明细 SKU:锁定数量减少,可用数量恢复
    • 写入库存变动日志(来源:ORDER_ALLOCATION,类型:UNLOCK)
    • 自动重新计算预警状态
  3. 将订单状态更新为「已取消」
  4. 写入状态事件和操作日志(含取消原因)

业务说明:取消操作会自动释放库存,确保不会出现「幽灵锁定」。已支付但未分配的订单取消时不需要释放库存。

3.8 拆单

触发方式:操作人员将一张订单拆分为两张

前置条件

  • 原订单状态为「已支付」或「已分配」
  • 拆出的每个 SKU 数量 > 0 且 < 原订单中该 SKU 的数量
  • 拆出的 SKU 库存充足(如果原订单已分配,需要额外校验)

系统自动处理

  1. 校验原订单状态
  2. 校验拆分数量合法(不为0,不超过原数量)
  3. 校验每个拆出 SKU 的可用库存 >= 拆出数量
  4. 创建子订单:
    • 订单号 = 原订单号 + "-S"
    • 继承原订单的渠道、买家、收货地址等全部信息
    • 订单状态 = 待支付
    • 记录父订单ID
  5. 将拆出的 SKU 从原订单移到子订单:
    • 子订单创建新的明细项(复制 SKU 信息,数量为拆出数量)
    • 原订单明细项数量减少(数量和小计同步更新)
  6. 子订单金额计算:
    • 商品金额 = 各明细小计之和
    • 运费和税金按金额比例从原订单分摊
    • 实付金额 = 商品金额 + 运费 + 税金
  7. 原订单金额自动重新计算
  8. 写入状态事件(原订单记录拆单完成,备注含子订单号)

业务说明:拆单后产生两张独立的订单,各自走后续的发货流程。子订单继承原订单的支付状态(已支付),不需要重新支付。

3.9 合单

触发方式:操作人员将两张订单合并为一张

前置条件

  • 两张订单均为「待创建」或「已支付」状态
  • 同一仓库(或其中一方未指定仓库)
  • 同一币种

系统自动处理

  1. 校验两张订单状态
  2. 校验仓库和币种一致
  3. 将来源订单的所有明细项复制到目标订单(创建新的明细项)
  4. 来源订单状态更新为「已取消」,记录合并目标订单ID
  5. 目标订单的金额重新计算(商品金额 = 所有明细小计之和)
  6. 运费取两者较大值
  7. 目标订单实付金额重新计算
  8. 写入状态事件(目标订单记录合单完成,备注含来源订单号)

业务说明:合单后来源订单作废,目标订单包含两个订单的所有商品。运费取较大值而非累加,因为合并发货通常比分开发货更经济。


四、库存管理

4.1 库存盘点

触发方式:操作人员输入实际盘点数量

系统自动处理

  1. 校验库存记录存在
  2. 校验盘点数量 >= 0
  3. 计算差异 = 实际盘点数量 - 当前可用数量
  4. 将可用数量更新为实际盘点数量
  5. 写入库存变动日志:
    • 差异 > 0:变动类型 = STOCKTAKE_GAIN(盘盈)
    • 差异 < 0:变动类型 = STOCKTAKE_LOSS(盘亏)
    • 差异 = 0:变动类型 = STOCKTAKE(平账)
  6. 自动重新计算预警状态

业务说明:盘点会直接覆盖可用数量,而非增量调整。盘盈说明实际库存比系统记录多(可能有未记录的入库),盘亏说明实际库存比系统记录少(可能有丢失或未记录的出库)。

4.2 库存调拨

触发方式:操作人员发起仓库间调拨

系统自动处理

  1. 校验源仓库和目标仓库不同
  2. 校验调拨数量 > 0
  3. 校验源仓库有该 SKU 的库存记录,且可用数量 >= 调拨数量
  4. 从源仓库扣减可用数量,写入日志(类型:TRANSFER_OUT)
  5. 在目标仓库增加可用数量,写入日志(类型:TRANSFER_IN)
  6. 如果目标仓库没有该 SKU 的库存记录,系统自动创建一条(初始可用数量为0,然后加上调拨数量)
  7. 两端都自动重新计算预警状态

业务说明:调拨是原子操作,源仓库扣减和目标仓库增加要么同时成功,要么同时失败。

4.3 安全库存预警

触发方式:每次库存变动后自动检查

判断逻辑

  • 可用数量 < 安全库存 → 预警状态 = 「低于安全库存」
  • 可用数量 >= 安全库存 → 预警状态 = 「正常」

影响范围:预警状态为「低于安全库存」的 SKU 会被补货建议扫描到。


五、采购链路(反向)

5.1 补货建议生成

触发方式:手动触发

系统自动处理

  1. 扫描所有可用数量 < 安全库存的库存记录
  2. 对每个低库存 SKU:
    • 跳过已有待处理建议的 SKU(避免重复建议)
    • 计算建议数量 = 安全库存 - 可用数量 + 锁定数量 - 在途数量
    • 如果结果 <= 0,跳过(在途库存已足够补货)
    • 查询该 SKU 的默认供应商(从供货能力表获取)
    • 如果默认供应商有最小起订量(MOQ)且建议数量 < MOQ,则将建议数量上调至 MOQ
    • 创建补货建议记录,状态为「待处理」
  3. 返回生成的建议数量

建议记录包含:SKU ID、商品标题、仓库ID、安全库存、当前库存、在途数量、建议采购数量、建议供应商ID

业务说明:补货建议不是采购单,只是一种建议。需要操作人员审核后才能转为采购单。

5.2 从补货建议生成采购单

触发方式:操作人员选择多条建议,一键生成

系统自动处理

  1. 校验所有选中的建议存在且状态为「待处理」
  2. 校验每条建议都有指定供应商
  3. 按供应商分组:同一供应商的建议合并为一张采购单
  4. 对每个供应商分组:
    • 创建采购单(状态=草稿,到货进度=待到货,币种=CNY)
    • 为每条建议创建采购项:
      • 从供货能力表获取该 SKU 的阶梯价格
      • 采购数量 = 建议数量
      • 小计 = 单价 × 数量
    • 汇总采购单总金额和 SKU 种类数
    • 更新补货建议状态为「已生效」(表示已生成采购单)
  5. 返回所有生成的采购单ID

业务说明:多条建议可以合并为一张采购单(只要供应商相同),减少采购单数量。

5.3 采购单审批流程

状态流转:草稿 → 已提交 → 已审批 → 已下单

提交

  • 前置条件:采购单状态为「草稿」
  • 将状态更新为「已提交」,等待审批人审批

审批通过

  • 前置条件:采购单状态为「已提交」
  • 将状态更新为「已审批」
  • 审批通过后,操作人员可以向供应商正式下单

审批拒绝

  • 前置条件:采购单状态为「已提交」
  • 将状态更新为「已拒绝」,记录拒绝原因
  • 被拒绝的采购单不能再次提交,需要新建

下单给供应商

  • 前置条件:采购单状态为「已审批」
  • 将状态更新为「已下单」
  • 此后进入等待到货阶段

取消采购单

  • 前置条件:采购单不是「已关闭」或「已完成」状态
  • 将状态更新为「已取消」,记录取消原因
  • 已下单后仍可取消(例如供应商无法供货)

5.4 到货确认

触发方式:仓库人员确认供应商货物到达

前置条件:采购单状态为「已下单」或「部分到货」

系统自动处理

  1. 创建到货单,关联采购单ID,记录到货仓库和到货时间
  2. 校验到货单未被重复确认(已确认的到货单不能再次确认)
  3. 对每个到货项:
    • 校验该 SKU 的累计到货数量(已有到货 + 本次到货)不超过采购数量
    • 如果超过,报错并提示剩余可到货数量
    • 从采购项同步预期数量
    • 创建到货项记录(实际到货数量、质检状态=待质检)
  4. 更新采购单的到货进度:
    • 遍历所有采购项,比较累计到货数量与采购数量
    • 所有 SKU 累计到货 >= 采购数量 → 到货进度 = 全部到货,采购单状态 = 全部到货
    • 有部分 SKU 到货但未全部到齐 → 到货进度 = 部分到货,采购单状态 = 部分到货
    • 同步更新采购项的累计到货数量

业务说明

  • 同一采购单支持多次到货(分批送货场景)。每次到货创建一张新的到货单。
  • 到货数量校验是基于累计值的,例如采购100个,第一次到60个,第二次最多再到40个。
  • 到货确认后,货物进入「待质检」状态,尚未入库。

5.5 质检

触发方式:质检人员对到货商品进行检验

质检通过

  1. 将到货项的质检状态更新为「合格」
  2. 合格数量 = 实际到货数量,不合格数量 = 0
  3. 更新采购项的累计合格数量(累加本次合格数量)
  4. 自动执行入库(见 5.6 节)
  5. 更新采购单到货进度

质检不合格

  1. 将到货项的质检状态更新为「不合格」
  2. 合格数量 = 0,不合格数量 = 实际到货数量
  3. 更新采购项(合格数量为0,但到货数量已计入)
  4. 更新采购单到货进度
  5. 不执行入库(不合格品不进入可用库存)

业务说明:质检结果直接决定货物是否入库。质检不合格的货物不进入可用库存,需要后续处理(退货给供应商或让步接收)。

5.6 入库

触发方式:质检通过后自动执行,无需手动操作

系统自动处理

  1. 查找该 SKU + 到货仓库对应的库存记录
  2. 如果库存记录存在:
    • 可用数量 += 合格数量
    • 写入库存变动日志(来源:PURCHASE_ARRIVAL,类型:INCREMENT,关联采购单ID和到货单号)
    • 自动重新计算预警状态(如果可用数量恢复到安全库存以上,预警自动解除)
  3. 如果库存记录不存在(该仓库首次有此 SKU),当前逻辑不做处理(需要先手动创建库存记录)

业务说明:入库是采购链路的终点,也是库存恢复的起点。入库后,之前因订单消耗而降低的可用库存得到补充,如果已触发过补货建议,预警状态会自动解除。

5.7 关闭采购单

触发方式:操作人员手动关闭

前置条件

  • 采购单状态为「部分到货」或「全部到货」
  • 所有已到货的 SKU 必须已完成质检(不能有到货数量 > 0 但合格数量 = 0 且未标记为不合格的项目)

系统自动处理

  1. 校验所有采购项:如果有到货但未质检完成的项,报错
  2. 将采购单状态更新为「已关闭」

业务说明:关闭是一个管理动作,表示这张采购单的业务已终结。部分到货的采购单也可以关闭(例如剩余部分不再采购)。


六、售后链路

6.1 售后审核

审核状态:待审核 → 已审批 / 已拒绝

审批通过:售后单进入退款流程,操作人员可以选择退款、退货退款或补发

审批拒绝:售后单终结,记录拒绝原因

6.2 退款状态流转

退款状态独立于审核状态,经历以下路径:

路径一 — 直接退款(无需退货)

  • 未退款 → 待退款 → 已退款 → 已完成
  • 适用场景:小额退款、质量问题协商退款

路径二 — 退货退款

  • 未退款 → 待退款 → 已退货待入库 → 已退款 → 已完成
  • 买家填写退货物流单号后进入「已退货待入库」
  • 仓库确认收到退货后执行退款,进入「已退款」

路径三 — 补发

  • 未退款 → 待退款 → 已补发
  • 不退款,而是重新发一件商品给买家
  • 系统自动创建一张新的补发订单(继承原订单的渠道、买家、收货地址等信息)
  • 原售后单记录补发订单的关联关系

6.3 退款与订单状态联动

当售后退款完成(退款状态变为「已退款」)时,同步更新关联订单的退款状态为「已退款」。

6.4 补发订单

补发订单是一张独立的新订单,系统自动完成以下处理:

  1. 继承原订单的渠道ID、买家信息(姓名、ID)、收货信息(姓名、电话、地址)
  2. 币种继承原订单
  3. 内部备注标记为「售后补发单,原售后单: XXX」
  4. 原售后单记录补发订单ID

七、状态机汇总

7.1 订单状态

待支付 ──→ 已支付 ──→ 已分配 ──→ 已发货 ──→ 已签收 ──→ 已完成
  │          │          │                              │
  └──→ 已取消 ←┘          └──→ 已取消                    └──→ 已退款

任何未完成的状态都可以直接取消(已分配状态取消时会释放库存)。

7.2 发货单状态

待拣货 ──→ 待发货 ──→ 已发货 ──→ 已签收

单向流转,不可回退。

7.3 采购单状态

草稿 ──→ 已提交 ──→ 已审批 ──→ 已下单 ──→ 部分到货 ──→ 全部到货 ──→ 已关闭/已完成
  │                  │          │
  └──→ 已取消         └──→ 已拒绝  └──→ 已取消

7.4 退款状态

未退款 ──→ 待退款 ──→ 已退款 ──→ 已完成
                │
                ├──→ 已退货待入库 ──→ 已退款
                │
                └──→ 已补发

八、关键业务规则

序号 规则 详细说明
1 订单分配原子性 任一 SKU 库存不足则整体失败,已锁定的自动回滚,不存在部分锁定
2 到货数量不可超采 每个 SKU 的累计到货数量不能超过采购单中该 SKU 的采购数量,系统按累计值校验
3 质检与入库联动 质检通过 → 自动入库(可用数量增加);质检不合格 → 不入库
4 安全库存自动预警 任何库存变动(锁定/解锁/增减/盘点/调拨)后自动检查,无需手动操作
5 取消自动释放库存 已分配的订单取消时,系统自动释放所有已锁定的库存
6 拆单库存校验 拆单前校验拆出的每个 SKU 可用库存是否充足
7 合单条件严格 必须同仓库、同币种、均为未发货状态
8 采购单关闭前置条件 所有已到货的 SKU 必须已完成质检(不能有到货但未质检的项)
9 补发创建新订单 售后补发会创建一张全新的独立订单,而非修改原订单
10 每次操作留痕 所有状态变更记录操作日志和事件时间线,包含操作人、时间、变更内容
11 分批到货支持 同一采购单可多次到货,每次创建独立到货单,累计数量达标后自动更新采购单状态
12 补货建议去重 同一 SKU + 仓库已有待处理建议时,不会重复生成
13 补货建议满足MOQ 建议数量如果低于供应商最小起订量,自动上调至MOQ
14 调拨自动建记录 目标仓库无该SKU库存记录时,调拨自动创建
15 盘点直接覆盖 盘点输入的是绝对数量而非增量,直接覆盖可用数量