订单履约流程
本文档整理跨境电商订单从多平台接入到最终完结的完整履约流程,包含状态管理、异常处理、分仓选物流逻辑等。
一、订单履约八步流程
第 1 步:多平台订单接入落库
定时拉取各平台订单,按「平台 + 平台订单号」做幂等校验,校验通过写入原始订单主表、子表。
第 2 步:数据标准化,生成 ERP 标准订单
对原始订单数据清洗、字段映射,统一币种、时区、SKU,生成 ERP 标准订单主表、子表、地址表。
第 3 步:订单校验,生成待审核单
依次校验以下规则:
- 订单数量超额
- 收货地址不全或违法
- 买家邮件黑名单
- 全仓库存不足
- 买家存在留言
校验不通过标记原因,流转人工审核。
第 4 步:智能分仓,库存预占
自动 / 人工执行最优分仓策略,按分配仓库生成销售出库单及出库明细,完成库存预占锁定。
第 5 步:包裹装箱,物流预下单
自动 / 人工根据出库单拆分包裹;调用物流商接口预下单,获取物流追踪号并生成快递面单。
第 6 步:下发 WMS,接收拣货回调
将出库单、包裹信息、面单下发至 WMS 系统;WMS 完成拣货打包后,回调 OMS 通知状态变更。
第 7 步:平台标记发货,释放锁定库存
收到 WMS 打包完成回调后,向电商平台推送发货通知,同时释放预占锁定库存,二次向仓储发送确认指令确保不产生非法出库。
第 8 步:物流轨迹跟踪,订单完结
定时拉取包裹物流轨迹,持续更新包裹运输状态;所有包裹签收完成,订单正式完结。
二、涉及的单据主状态
| 单据 | 状态 |
|---|---|
| 平台订单 | 待付款、待发货、部分发货、已发货、已取消 |
| ERP 订单 | 待审核、待发货、已发货、已完成、终止 |
| 出库单 | 待发货、已发货、终止 |
| 包裹单 | 待发货、运输中、已签收 |
三、异常情况处理
异常 1:物流商面单申请失败 / 仓库实际出库失败
释放库存,取消面单,作废涉及包裹单、出库单,订单重新走待审核流程,记录异常事件。
异常 2:收到买家修改 SKU、数量、地址、取消订单
根据 ERP 订单当前状态分别处理:
| 当前状态 | 处理方式 |
|---|---|
| 待审核 | 给订单打上异常事件标签,重新进行审核修改,甚至取消订单 |
| 待发货 | 触发拦截,回调仓库撤回全部出库单发货指令,成功时释放库存,取消面单,作废涉及包裹单、出库单,订单重新走待审核流程,记录异常事件 |
| 其他状态 | 不予执行修改,走售后流程 |
四、设计原则
- 内置状态机,强行校验状态流程
- 状态变化时订单级别的锁
- 数据库更新时乐观锁 SQL 语句
- 写操作幂等判断
- 事务一致性原则
- 订单状态变化和下游事件同事务
- 每一步状态变化留痕可追溯
五、最优分仓、选物流逻辑
刚性原则(必须满足)
- 库存可用刚性原则
- 时效满足原则
优化原则
在满足整单最少拆原则下,做时效优先、成本优先原则的取舍,或取得综合平衡。
本质就是穷举候选仓库与可发物流,选排名中位数方案。
六、标发逻辑
标发填入底层物流商、追踪号、以及包裹明细。
七、物流对接逻辑
物流对接对接了云途(国内货代,屏蔽底层物流商对接),传入:
- 业务订单号
- 业务包裹号
- 收发货地址
- 包裹尺寸
- 商品明细
得到面单和追踪号。
关于贪心背包算法,实际上呢就是首先用最大的箱子去将所有商品分组,分组之前呢所有商品都按体积从大到小排序,并且旋转得到长宽高的边,之后呢从大到小一件一件的往最大的箱子里塞。在此时呢要判断重量和剩余体积是不是超限,分完组之后呢,再将每一组用最小的包裹去进行适配,最终得到最优的装箱策略,装箱和装卡车是一个逻辑。这样呢就实现了包裹数,最少并且包裹最少。