OMS订单拆单的流程中要做哪些工作( 四 )


订单一般分为订单主表和订单商品表、订单支付明细表和订单活动表 。
订单金额有几个主要的部分:订单商品金额、折扣金额、礼品卡支付金额、积分支付金额、优惠券支付金额、订单支付金额等几个部分 。
运费是订单表中一个特殊字段 , 运费如何分摊是要特殊考虑的,一般情况是按金额占比进行 。所以生成的子订单中各部分金额,也要保证与父订单金额一致 。
订单商品表、支付明细表、活动表属于明细信息,要根据原始订单明细表的数据和标识进行计算分摊 。
子订单的金额要保证横向、纵向都正确才行,横向是指子单的合与父单金额一致,纵向是指子单订单主表与明细表金额一致 。
此外,在金额分摊计算过程有一项重要规则不可避免,即开票金额的考虑 。
这部分金额的分摊与公司缴税息息相关,单据与发票要一致 , 要考虑商品信息、活动规则等等 , 非常复杂 。
有的拆单服务将金额分摊独立出来,以降低对拆单的影响,提高订单流转速度 。
十二、拆单的速度要求由于拆单后订单才会下发到仓储或商家进行生产,所以对于速度要求就是快 。
在系统设计时可以依据规则等综合考虑,多线程是最常用的方法 , 但多线程需要考虑资源竞争和安全性 。一般情况,如果下单后已经确定了仓库,那么可以按仓库启动多个服务,这样可以避免程序的难度 。
对于拆单和下发在系统上也要有数据监控,不能出现积压的情况 。如果拆单有异常时,在定时任务中,很多情况都是依赖一个信息字段的状态来进行循环处理,在服务中要有容错处理 , 不能一直停滞不前 。
十三、拆单的影响什么是拆单?为什么拆单?如何拆单?前面说了很多,但对于拆单有什么影响呢?
先说一个场景,公司搞促销活动,买A赠B,但A与B商品的温控属性不同 , 所以用户下单后一定会拆单 。
拆单后仓储拣货、发货是根据子订单进行的,很有可能赠品B先发货了,A后发货 。用户先收到B签收了,然后A进行拒收或取消 。此时 , 如果在拒收或取消A时不判断关联子订单,那么公司就会损失B 。
如果判断关联子订单的状态,那么系统的复杂度将会非常之大,因为实际场景中一个父单拆为多单时是很常见的 。
拆单后 , 子订单数量增加,对于客单价、统计分析等报表需要考虑其影响,维度和统计口径不同,数据结果必然不同 , 从而会影响到经营分析及决策 。
影响,对于不同的业务有不同的理解,作为产品研发应该在拆单设计时还是需要要将利害与业务说清楚,尤其是运营人员(活动方面重点考虑),虽然这属于一个后台服务 。
十四、总结拆单是复杂的,合理的拆单会加快订单的流转,友好的用户体验,过度拆单则会产生冗余的数据,增加订单的复杂关系,统计、计算、售后等各个环节 。
本文由 @梁凤财 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Unsplash,基于 CC0 协议