配送公式说明

来自DBShop帮助中心
跳转至: 导航搜索

目录

配送公式表达式字母含义、字符含义

公式表达式中商品总重量用字母“w”表示,商品总金额用字母“p”表示 
公式表达式中符号含义: 
+  加号 
-  减号 
*  乘号
/  除号
( ) 普通的优先计算符号
[ ]: 
当[ ]中的数值 >0时 整体值向上取整数,如[7+2.2]=10
当[ ]中的数值=0时 整体值取0,如[0]=0
当[ ]中的数值<0时 整体值取0,如[0]=0
多用于给出倍数
{ }: 
当{ }中的数值 >0时,整体值取1,如{23565}=1、{0.00001}=1
当{ }中的数值=0时,整体值取0.5,如{0}=0.5
当{ }中的数值<0时,整体值取0,如{-2255}=0,{-0.002}=0
多用于给出状态值

W的基本单位是克,设置公式时要注意。 
特别是[]、{}中数值在0这个临界点时的值是非常关键的,只有这里完全理解了,才会看懂公式的含义,才能写新公式

以重量为计算标准的配送公式

例如:首重1公斤是15元,续重每增加0.5公斤,加5元
分析:因为要考虑到货物总重量会少于首重,所以首重要单独考虑 
续重时考虑商品总重量减去首重后,是续重标准的倍数,是几倍就用倍数乘以续重的标准 
两者的和即是总的配送费用。 
结合本例,(w-1000)/500即为商品重量去除首重后对续重的倍数,因此结果不一定为整数,故用[(w-1000)/500]来向上取整

两者结合起来,总的公式即为:15+[(w-1000)/500]*5
当然,目前这样简单的功能已经可以在后台通过直接设置单位与数值来实现。

再例如:某种配送方式,要求如下: 
2公斤以下的包裹按照:首重500克? 算10元,每续500克 按3元计算; 
大于等于2公斤,小于5公斤的包裹按照:每1公斤6元;(如重5公斤=6×5元=¥30元) 
大于等于5公斤,小于10公斤的包裹按照:每1公斤5元计算;(如重10公斤=5×10元=50元) 
大于等于10公斤及以上的包裹按照:每1公斤4元计算;(如重20公斤=4×20元=80元) 

第一段分析:由字面意思可以看出,包括两个方面,一个是重量范围,小于2公斤;另一个是费用计算的标准。 
因此,只要货物的重量是在要求范围内,就给出符合要求的标识,这里用1表示;如果不符合就给出0的状态。 
要求是状态值,考虑用[ ]或{ }。用[ ]时,当其中的值大于0时,整体值是个大于1的整数值,并不适合用状态标识,所以使用{ }。 
设置为{2000-w},当w<2000时 {2000-w}值是1,符合要求;当w>0时,{2000-w}值是0,也符合要求。但有个临界值是要注意的,就是当w恰好等于2000时,{2000-w}结果就为0.5,这不属于本范围内,因此,再加个判断:{{2000-w}-0.6},即当w等于2000时,{2000-w}-0.6值为负数,{{2000-w}-0.6}}值就为0,则总值为0。 
同时还要考虑到w≤0的情况,因此用{{w}-0.1}来进行界定 
这样 当0<w<2000时,{{w}-0.1}*{{2000-w}-0.6}给出的值就为1,否则就为0,只有两个结果。

金额计算:考虑到商品重量会有小于500克的情况,因此设置默认值10元;仿照上例原理,用[(w-500)/500]得出一个整数,再乘以续重标准就可以了

所以第一段的公式可以设置为:{{w}-0.1}*{{2000-w}-0.6}*(10+[(w-500)/ 500]*3)

其它几段的设置与之类似,关键的地方是重量的临界值的设置 
如:{{w-2000}-0.1}*{{5000-w}-0.6}? 就表示 2000≤w<5000 这个重量范围。

小技巧:至于用0.1还是0.6主要是考虑{ }中值为0,而结果为0.5时,这个值属于哪个范围的问题 
{{w-2000}-0.1}*{{5000-w}-0.6} 表示范围 2000≤w<5000
{{w-2000}-0.6}*{{5000-w}-0.6} 表示范围 2000<w<5000
{{w-2000}-0.6}*{{5000-w}-0.1} 表示范围 2000<w≤5000
{{w-2000}-0.1}*{{5000-w}-0.1} 表示范围 2000≤w≤5000

同理可得出其它分段公式。

最终配送公式: 
{{w}-0.1}*{{2000-w}-0.6}*(10+[(w-500)/500]*3)+{{w-2000}-0.1}*{{5000-w}-0.6}*[w]*6+{{w-5000}-0.1}*{{10000-w}-0.6}*[w]*5+{{w-10000}-0.1}*[w]*4

以金额为计算标准的配送公式

例如:订单金额满200元免运费,不满200元加收5元运费 
分析:本例是以200元为界,低于200元的只要给出个1的状态,然后乘以5即可;而超过200元的,则给出个0状态,这样总值也为0,即符合要求。 
实际范围是 0≤p<200; 200≤p 临界点是200
因为只考虑状态,而不考虑具体值,所以用{ },不用[ ];又因为大于200元时值为0,所以有效值用200-p 。 
{200-p},这样当p值小于或大于200元时是给出正常状态的,但要考虑当p恰好等于200元时的情况,所以增加对临界值的判断 
设置为{{200-p}-0.6},这样,不论什么情况,都只会给出1或0两个状态

注:如果是{{200-p}-0.1},则p等于200元时也会收5元 

最终配送公式: {{200-p}-0.6}*5

再例如:200元以下运费乘以12%,200元及以上乘以10%,500元及以上乘以8%,1000元及以上6%,2000元及以上免费 
分析:关键还是范围的判断与状态的给出 
实际范围是 0≤p<200; 200≤p<500;500≤p<1000;1000≤p<2000;2000≤p
所以只要给出每一个范围的状态,然后乘以金额值即可 
结合前例,可得出第一个范围的公式:{{200-p}-0.6}*p*0.12

最终配送公式: 
{{200-p}-0.6}*p*0.12+{{p-200}-0.1}*{{500-p}-0.6}*p*0.1+{{p-500}-0.1}*{{1000-p}-0.6}*p*0.08+{{p-1000}-0.1}*{{2000-p}-0.6}*p*0.06

同时以商品重量、订单金额为计算标准的配送公式

此种方式其实就是上述两种方式的结合 
例如:订单金额满200元免运费;不满200元时,首重1公斤15元,续重每增加0.5公斤加5元 
分析:实际是要求两个状态,当金额不足200时给出一个1的状态,此时正常计算;当金额是200元及以上时给出状态0
结合前例,不足200元时,公式为:15+[(w-1000)/500]*5
然后再加一个限制条件,只要少于200元状态为1,超过200元时状态为0就可以了,此时公式为:{{200-p}-0.6}
把这两部分结合在一起,最终公式就是:{{200-p}-0.6}*(15+[(w-1000)/500]*5)