电商系统开发之产品订单分拆设计技术思路

如今电商行业发展迅速,用户可以在电商平台进行购物交易,为了用户的方便,用户可以同时选中多家店铺商品进行统一买单,这些订单在后台会进行拆分;本文作者分享了关于订单系统中的订单拆单规则与流程详解,我们一起来了解一下。

用户在电商平台上一次购物,通常会将多个商家的多个商品作为一个订单提交,同时也会使用各种优惠券和满减;支付完成后,后台对这一订单是如何进行分拆的,拆分后系统对资金,供应商,运费,优惠折扣如何处理呢,请往下看。

拆单,就是将一个大的订单按照某些规则,将其拆解成两个或多个子订单的过程,原来的订单就是父订单。

比如你在电商平台上买了两件商品,一个是玩具,一个是手机。玩具和手机很可能来自不同商家,所以系统会把你的这笔订单拆成两个子订单,每个子订单由相应的商家发货;因为不同商家的货都是存在自己的仓库里,这也就是为什么购物车里面要根据不同的商家进行拆单。

什么是订单拆分

用户提交的订单在物理上并不是一个不可拆分的单元,也即:它不是一个颗粒度最小的实体,可以进行多种形式的分解,具体如何分解根据不同的业务场景,可以进行不同形式的拆分。

为什么要订单拆分

之所以要订单拆分,一般会有以下几个原因:

1. 仓库原因

一些大型电商公司(京东、考拉等),都有自建仓库,商品会根据以往出货量数据在各个不同的仓库进行备货,用户的订单如果包含多个仓库的商品,那么就必须对不同的仓库商品进行拆分。

2. 店铺原因

一些电商平台(天猫、淘宝、拼多多等),有很多入驻的商家,用户的订单跨店铺结算的情况非常普遍,那么这时候也需要对订单进行拆分,本质上这种情况和仓库有类似之处,每个入驻的商家可以看做一个仓库。

3. 跨境商品原因

对于跨境商品,由于需要 订单、支付单核运单 三单对碰,而且每笔订单不能超过2000元,年度不能2万元,如果用户单笔订单金额超过2000元,则必须对订单进行拆分,拆分的子订单每笔不能超过2000元,且分别每笔子订单都有独立的的订单号和物流单号,确保正常通关。

4. 物流原因

不同物流公司对单个包裹的重量或体积都有特殊要求,例如有些物流公司(邮政小包)规定单个包裹不能超过20kg,并且还存在一种情况:一个10kg的包裹有可能比两个5kg的包裹收费更高,基于物流成本考虑一般也会将一个订单拆分成两个,例如申通:10罐啤酒寄到辽宁价格为24,同样地点5瓶的价格是6块(与申通的签约价格不是市场价)。

5. 商品品类

某些商品品类需要特殊处理,例如:易碎品 需要单独发货;大件商品(儿童座椅、冰箱、洗衣机、电视等)需要单独发货;如果一个订单里面包含这些商品,一般也需要对订单进行拆分。

什么时候拆分订单

订单拆分时机:下单之后付款之前和支付之后

这两者的区别:如果在下单之后支付之前进行拆分订单,用户提交订单后,如果没有立即付款而是返回订单列表,就可以看到订单被拆分成若干个子订单,分别包含不同的商品。此时,每笔子订单有都会有独立的物流查询入口,如果父订单包含了运费和优惠金额,需要将优惠和运费分摊到每笔子订单上去(最好需要分摊到每件正价商品,方便后续售后退款处理,取决于售后是整单退还是单件商品退);

在支付后进行拆分订单,一般是为了方便进行财务结算,例如淘宝平台预收款父订单金额,用户确认收货某家店铺商品后,平台将对应店铺货款转给店家,这时候平台需要在用户支付后根据订单所跨的店铺进行拆分,并把用户支付的金额分摊到每个店铺,用户端一般感知不到订单被拆分,看到的订单仍然是一个订单(父订单)。

1. 下单之后付款之前拆分多个子订单

常见于以下几种情况:

跨境商品(以上第三种情况):由于跨境商品需要三单(订单、支付单和运单)对碰才能够清关,如果在支付后再进行拆分订单,那支付单号只有一个,如果订单由于某种原因必须拆分(参考上述五种情况)那么,这笔订单将有多个运单号,导致不能进行三单对碰,无法完成清关。所以,基于这种原因,对于跨境商品而言,一般都采用下单之后,支付之前进行拆单。

2. 支付之后拆分多个子订单订单

跨仓库商品(以上第一种情况):由于涉及多个仓库,需要分不同包裹进行发货,为了方便用户分别查询每个包裹的物流状态,一般都需要在订单支付完成后根据不同的仓库拆分成不同的订单,此处订单需要根据包裹单位进行拆分。每个订单对应一个物流单号。至于订单是根据说明规则进行拆分的,涉及调度系统的规则,一般会根据用户收货地址就近选择仓库,动态拆单。

3. 支付之后拆分多个子订单订单

跨仓库商品(以上第一种情况):由于涉及多个仓库,需要分不同包裹进行发货,为了方便用户分别查询每个包裹的物流状态,一般都需要在订单支付完成后根据不同的仓库拆分成不同的订单,此处订单需要根据包裹单位进行拆分。每个订单对应一个物流单号。至于订单是根据说明规则进行拆分的,涉及调度系统的规则,一般会根据用户收货地址就近选择仓库,动态拆单。

如何拆分订单

在我们知道为什么需要拆分之后,我们就可以针对性的设计将订单进行拆分了

在这里插入图片描述
订单拆分流程

例如:SKU A 和 SKU B 分属同一仓库,SKUB 是特殊品类商品,2个 SKU C 重量超过物流限制,且和SKU A、SKU B不在同一个仓库

那么如果一个订单同时买了1个SKU A 和 SKU B ,2个SKU C ,按照上述流程拆单如下:

在这里插入图片描述
订单拆分结果

*注:这里面没有说明具体的拆分逻辑。例如:下面只讲了物流限制需要拆单,但是没有说明具体是如何拆单的:是超过20kg 拆单,还是拿订单所有 SKU 的重量/体积 套快递费用公式,综合同一SKU在一个包裹、保证拆分后的快递费用尽量低于合并发货的费用等因素拆分一个最优配比,这些需要根据具体业务需求和快递公司的物流计算公式来综合考虑,再往下讲老板就要不高兴了 。

订单金额拆分

父订单如果被拆分,那么跟随订单一起变化的不仅仅只有商品和商品数量,订单的金额也会跟随变化,同时为了方便解决后续售后问题,必须对拆分后的订单金额进行合理拆分,我们先看下订单金额组成:
在这里插入图片描述
订单金额组成

本图展示了一笔订单的金额组成,它由正值和负值两部分组成

正值:商品金额、运费

负值:促销优惠金额、积分抵扣、优惠券优惠、后台改价等

这里优惠金额涉及:改SKU的价格,满减、满折,优惠券,优惠码等等金额。后台需要标记每一个金额扣减时,对应的字段,方便统计查询。

订单金额计算流程:

  1. 先计算商品金额(即:改商品价格)

  2. 促销后商品小计金额(即:满减、满折、满赠,优惠券)

  3. 促销后订单金额(即:满减、满折、满赠)

  4. 后续针对订单的优惠券、优惠码

  5. 金额累计叠加后,再判断是否包邮,计算运费

  6. 积分抵扣订单金额

  7. 其他金额抵扣,如:后台人工修改价格(需要使用独立字段记录,不能直接在原订单金额上直接修改)

订单拆分后金额分布:

订单涉及跨店铺拆分的情况,一般建议商品包邮上架避免订单分拆后单独计算运费,这对用户来讲难以接受(一笔订单需要支付多笔运费),商品包邮上架后同时免去邮费分摊的问题

举一个例子:

  1. 针对指定商品的满减活动,需要将促销后的金额来分摊

例如 一笔订单 如下

SKUA 2件 共25 元 单品参加 满20减5 促销

SKUB 2件 共60 元 无促销

SKUC 1件 共20 元 无促销

全场促销活动:满100减10

使用了一张优惠券: 满80减10

包邮
这笔订单促销后,用户实际需要支付(实付款)为:105-5-10-10=80 元

假如我门把它拆分成三个子订单,1、2、3 分别对应三种SKU,各个子订单的金额应该如何分布?这里面 就涉及 优惠金额 分摊的问题了

对于子订单1(SKU A)

商品总价:25元

促销优惠:5元

促销分摊优惠:(25-5)/(20+60+20)*10=2 元

优惠券分摊优惠:(25-5)/(20+60+20)*10=2 元

订单实付款:25-5-2-2=16 元

对于子订单2(SKU B)

商品总价:60 元

促销分摊优惠:60/(20+60+20)*10=6 元

优惠券分摊优惠:60/(20+60+20)*10=6 元

订单实付款:60-6-6=48 元

对于子订单3(SKU C)

商品总价:20 元

促销分摊优惠:20/(20+60+20)*10=2 元

优惠券分摊优惠:20/(20+60+20)*10=2 元

订单实付款:20-2-2=16 元

拆分后订单售后如何处理

如果执行部分订单退款时,就必须根据每笔子订单的实付款进行退款。

如果执行售后退货退款时,也必须根据子订单的实付款进行退款处理。

如果涉及积分抵扣的情况,也一样根据上述公式,把积分抵扣的金额分摊的每笔子订单上去,不过在执行退款时,需要将对应金额的等比例积分返还用户

执行部分退款,因为一般没有指定金额的优惠券(优惠券一般不支持部分退),所以执行部分退款时,优惠券不退

如果全部退款,可以考虑退回优惠券,具体情况视业务需求而定

*注:上述分摊规则也只是一个折中的方案,涉及跨店铺的情况时,由于每种商品的毛利率都不同,按照商品金额进行比例分摊,可能导致部分店铺亏损

例如:肥皂毛利率10%,杯子毛利率50%,由于优惠时根据商品金额等比例分摊,有可能导致肥皂实际上是被亏本的。此问题目前并没有特别好的解决方案。

猜你喜欢

转载自blog.csdn.net/venus150/article/details/124499056