目的:根据货件签收情况,自动判断是否需要补快递/空派/海运数量?
在进销存表中,"ASIN-SKU-国家"是唯一值,在图一快递这一个单元格,要先判断FBA可售天数是否大于等于15,若大于15,则不用补快递,输出0,若FBA可售天数小于15,则需要判断FBA可售天数是否能维持到距离最近一批货件到达衔接上(图二是货件的预计签收情况),若能衔接上,则判断FBA库存跟第一批优先到达的货件数量,两者加起来的数量可否维持到第二批货件到达?若衔接不上,则需要补缺口多少天等到第二批货件到,若衔接上,则继续判断FBA库存+最先第一批货件数量+最先第二批货件数量相加起来的的可售天数是否维持到第三批货件到达,一直循环下去,直至FBA+最先一批+最先二批+最先三批+.判断所有的批次,相加的可售天数大于15,则可结束判断;其中需要考虑到有一种情况就是假设第一批货物,FBA衔接不上,需要补快递衔接,补完之后,又发现第三批货物衔接补上,那也需要将两次补快递的数量相加起来输出在“快递补货数量”,有可能多次衔接补上,则需要将累加补发的数量
图一:
图二:
引用chatGPT作答,根据您的描述,您需要一个程序或脚本来自动判断是否需要补快递/空派/海运数量,具体流程如下:
1.获取每个货件的唯一标识ASIN-SKU-国家和FBA可售天数。
2.判断FBA可售天数是否大于等于15,若大于15,则不需要补快递,输出0。
3.若FBA可售天数小于15,则需要判断FBA可售天数是否能维持到距离最近一批货件到达衔接上。
4.根据货件预计签收情况,确定最近一批货件到达时间,并计算距离当前时间的天数差,记为X。
5.如果FBA可售天数加上X大于等于15,则不需要补快递,输出0。
6.如果FBA可售天数加上X小于15,则需要考虑补发货数量。
7.首先判断FBA库存+第一批货件数量是否能维持到最近一批货件到达,如果可以,则不需要补发货数量,输出0。
8.如果FBA库存+第一批货件数量不能维持到最近一批货件到达,则需要补发货数量。
9.计算补发货数量的天数差,记为Y。
10.继续判断FBA库存+第一批货件数量+补发货数量是否能维持到第二批货件到达,如果可以,则不需要再次补发货数量,输出0。
11.如果FBA库存+第一批货件数量+补发货数量不能维持到第二批货件到达,则需要再次补发货数量。
12.计算再次补发货数量的天数差,记为Z。
13.重复步骤10和11,直至FBA库存+所有已到货件数量的可售天数相加大于等于15。
14.输出补发货数量的总和作为“快递补货数量”。
需要注意的是,对于每一个货件,您需要考虑所有已经到货的批次,并且需要在计算补发货数量时,考虑到之前已经补发货的情况。此外,还需要考虑到货件的国家和运输方式(快递/空派/海运)对于判断的影响。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这个问题比较复杂,需要考虑的情况比较多,其中有一些需要手动输入或者从其他来源获取的数据,比如FBA可售天数和货件签收情况,因此无法完全实现自动化。
下面是一个大概的思路,以及一些伪代码:
获取进销存表格中的数据,包括货件ASIN、SKU、国家、FBA库存数量等信息。
判断FBA可售天数是否大于等于15,如果是,则不需要补快递,输出0。
if FBA可售天数 >= 15:
return 0
如果FBA可售天数小于15,则需要判断FBA可售天数是否能维持到距离最近一批货件到达衔接上,这个需要根据货件签收情况来判断。假设货件签收情况已经保存在一个名为“货件签收”的列表中,其中每个元素包含货件的ASIN、SKU、国家和预计签收时间。
for item in 货件签收:
if item['ASIN'] == 进销存表格中的ASIN and item['SKU'] == 进销存表格中的SKU and item['国家'] == 进销存表格中的国家:
if item['预计签收时间'] - 最近一批货件到达时间 < FBA可售天数:
# 能够衔接上
# 判断FBA库存和第一批货件数量是否足够
if FBA库存数量 + 第一批货件数量 >= (第二批货件到达时间 - 最近一批货件到达时间 + item['预计签收时间'] - 第二批货件到达时间):
# 继续判断下一批货件
...
else:
# 需要补快递
快递补货数量 += ...
else:
# 不能衔接上,需要计算缺口时间和补快递数量
缺口天数 = ...
快递补货数量 += ...
# 继续判断下一批货件
...
需要递归地判断所有的批次,直至FBA+所有批次的库存加起来的可售天数大于15。为了避免重复计算,可以使用一个类似“缓存”的数据结构来保存某个货件的已计算的结果,下次遇到相同的货件就可以直接从缓存中取出。
def 计算补货数量(ASIN, SKU, 国家, 最近一批货件到达时间, FBA库存数量, 所有批次的货件签收, 缓存):
if (ASIN, SKU, 国家) in 缓存:
return 缓存[(ASIN, SKU, 国家)]
# 判断FBA可售天数是否大于等于15
if FBA可售天数 >= 15:
return 0
# 判断能否衔接上最近一批货件
for item in 所有批次的货件签收:
if item['ASIN'] == ASIN and item['SKU'] == SKU and item['国家'] == 国家:
if item['预计签收时间'] - 最近一批货件到达时间 < FBA可售天数:
# 能够衔接上
# 判断FBA库存和第一批货件数量是否足够
if FBA库存数量 + 第一批货件数量 >= (第二批货件到达时间 - 最近一批货件到达时间 + item['预计签收时间'] - 第二批货件到达时间):
# 继续判断下一批货件
补货数量 = 计算补货数量(ASIN, SKU, 国家, 第二批货件到达时间, FBA库存数量 + 第一批货件数量 + 第二批货件数量, 所有批次的货件签收, 缓存)
else:
# 需要补快递
# 计算快递补货数量和缺口天数
...
else:
# 不能衔接上,需要计算缺口时间和补快递数量
# 计算快递补货数量和缺口天数
...
# 将补货数量加入缓存
缓存[(ASIN, SKU, 国家)] = 补货数量
return 补货数量
以上是一个大概的思路,具体实现需要考虑更多细节和特殊情况,并且需要结合具体数据进行调试和测试,建议借助Python的一些库和工具来简化开发,比如pandas用于数据处理,datetime用于日期和时间计算等。
如果我的回答解决了您的问题,请采纳!
你好,谢谢你的回答哈~ 但是我对Python 这方面不太懂,我原先是希望能用EXCEL函数或者是用VBA的脚本来实现的;像里面的最近一批货件到达时间,我应该要怎么输出?我可能需要更具体的