前段时间,由于公司业务需要,开发了智能配货系统。
业务需求:服装行业的商品是按款号、颜色、尺码来确定一个SKU,同一款色,有好几个尺码,每次配货时,都需要一个一个尺码去根据库存数量来分配配货数量,工作量非常大。
经过与业务部门的详细沟通,确定解决方案:
1、只需填写款色的总数量,由程序自动分配尺码
2、概念:
1)统计该款色的所有现有库存尺码总数(总库存数intQtyStockSum)
2) 配货时输入的数量(配货数intQtyOrder)
3)该款色的尺码库存数(库存码数intQtyStock)
4)分配完后,所有尺码的剩余库存总数(最小剩余数intQtySurplus)
5)库存码数 / 总库存数 (库存码数比重flotRate)
6)配货数与第一次循环库存码数分配结果的差额(分配差额intQtyDiff)
3、自动分配的规则:
1) 配货数intQtyOrder > 总库存数intQtyStockSum,按库存码数全部分配
2) 配货数intQtyOrder >总库存数intQtySotckSum - 最小剩余数intQTySurplus,按库存码数全部分配
3)循环库存码数,根据库存码数比重分配:
比如库存有S、M、L三个码,数量分别为10、15、20,配货数为20,则分配结果为:
S码:20 × 10 / (10+15+20) 结果向下取整 = 4
M码:20 × 15 / (10+15+20) 结果向下取整 = 6
L码:20 × 20 / (10+15+20) 结果向下取整 = 8
分配总数=4+6+8=18,和配货数20相差2(分配差额intQtyDiff),需要进一步做调整,调整规则:根据库存码数比重来进一步分配intQtyDiff,循环库存码数比重flotRate,如果intQtyDiff=0,则退出循环,否则按 flotRate × intQtyDiff (计算时采用四舍五入)分配,分配完后intQtyDiff减去已分配数(验证分配完后的intQtyDiff如果<0,则要将本次调整的数量减去intQtyDiff的绝对值)。调整完后结果如下:
分配数:S码:4,M码:7, L码:9
剩余库存: S码:6,M码:8, L码:11
业务需求:服装行业的商品是按款号、颜色、尺码来确定一个SKU,同一款色,有好几个尺码,每次配货时,都需要一个一个尺码去根据库存数量来分配配货数量,工作量非常大。
经过与业务部门的详细沟通,确定解决方案:
1、只需填写款色的总数量,由程序自动分配尺码
2、概念:
1)统计该款色的所有现有库存尺码总数(总库存数intQtyStockSum)
2) 配货时输入的数量(配货数intQtyOrder)
3)该款色的尺码库存数(库存码数intQtyStock)
4)分配完后,所有尺码的剩余库存总数(最小剩余数intQtySurplus)
5)库存码数 / 总库存数 (库存码数比重flotRate)
6)配货数与第一次循环库存码数分配结果的差额(分配差额intQtyDiff)
3、自动分配的规则:
1) 配货数intQtyOrder > 总库存数intQtyStockSum,按库存码数全部分配
2) 配货数intQtyOrder >总库存数intQtySotckSum - 最小剩余数intQTySurplus,按库存码数全部分配
3)循环库存码数,根据库存码数比重分配:
比如库存有S、M、L三个码,数量分别为10、15、20,配货数为20,则分配结果为:
S码:20 × 10 / (10+15+20) 结果向下取整 = 4
M码:20 × 15 / (10+15+20) 结果向下取整 = 6
L码:20 × 20 / (10+15+20) 结果向下取整 = 8
分配总数=4+6+8=18,和配货数20相差2(分配差额intQtyDiff),需要进一步做调整,调整规则:根据库存码数比重来进一步分配intQtyDiff,循环库存码数比重flotRate,如果intQtyDiff=0,则退出循环,否则按 flotRate × intQtyDiff (计算时采用四舍五入)分配,分配完后intQtyDiff减去已分配数(验证分配完后的intQtyDiff如果<0,则要将本次调整的数量减去intQtyDiff的绝对值)。调整完后结果如下:
分配数:S码:4,M码:7, L码:9
剩余库存: S码:6,M码:8, L码:11