跳到主要内容

金额拆分需求说明

拆分公式

拆分到SKU上的优惠金额= 优惠金额 * (SKU售价/ 所有SKU售价)

sku售价是指:上一个优惠后的金额,比如A商品原价100元,单品立减减10元,之后有参与满减,那么参与满减的金额为90元(100-10)

拆分逻辑

  • 先对SKU的售价乘数量进行排序,如果Am < Bn,则skuA先进行拆分。
  • 拆分满减券(X元)在skuA上面享受的优惠。公式为S1 = X A m / (A m + B n)。此时注意是先优惠金额乘SKU的金额,再除以SKU总金额。为什么是先乘再除呢?反过来先除再乘是否可以?是不可以的,因为这样会有丢失精度的问题,也是为了保证所有系统数据的一致性。
  • 拆分满减券(X元)在skuB上面享受的优惠。公式为S2 = X - S1。其他的订单级别优惠采用类似的方式。(补差)

精度要求

  • 小数点保留2位,四舍五入
  • 最后sku的计算要用补差法,保证总和平衡

举例

商品单价数量
A610
B410

优惠活动1

满100减10元,A、B都适用

image-20220802141135845

退款金额

商品优惠分摊(总计)实付退款(单价)全部退款
A660-6=54(54/购买数量)*退货数量54
B440-4=36(36/购买数量)*退货数量36

全部退款退实付

优惠活动2

满50减10元,A适用

image-20220802141202211