This commit is contained in:
Wenxixi 2025-07-29 09:05:57 +08:00
parent 87dfb3201d
commit c2cbfaf59c
5 changed files with 236 additions and 65 deletions

View File

@ -40,9 +40,9 @@ class DPDASLLogistics(TailLogistics):
detail_amount['tail_amount'] = 99999 detail_amount['tail_amount'] = 99999
return detail_amount return detail_amount
for package in packages: # 逐个处理列表中的每个包裹 for package in packages: # 逐个处理列表中的每个包裹
# if package.weight > 31500 or package.girth > 350 or package.fst_size > 200: if package.weight > 31500 or package.girth > 350 or package.fst_size > 200:
# detail_amount['tail_amount'] = 99999 detail_amount['tail_amount'] = 99999
# return detail_amount return detail_amount
detail_amount['base'] += self.base_fee detail_amount['base'] += self.base_fee
detail_amount['remote'] +=self.remote_fee* isremote detail_amount['remote'] +=self.remote_fee* isremote
detail_amount['overweight'] += self.overweight if package.weight >= 20000 else 0 detail_amount['overweight'] += self.overweight if package.weight >= 20000 else 0
@ -228,9 +228,9 @@ class DPDZGLogistics(TailLogistics):
detail_amount['tail_amount'] = 99999 detail_amount['tail_amount'] = 99999
return detail_amount return detail_amount
for package in packages: # 逐个处理列表中的每个包裹 for package in packages: # 逐个处理列表中的每个包裹
# if package.weight > 31500 or package.girth > 300 or package.fst_size >175: if package.weight > 31500 or package.girth > 300 or package.fst_size >175:
# detail_amount['tail_amount'] = 99999 detail_amount['tail_amount'] = 99999
# return detail_amount return detail_amount
if package.weight <5000: if package.weight <5000:
detail_amount['base'] += self.base_fee[0] detail_amount['base'] += self.base_fee[0]
elif package.weight < 10000: elif package.weight < 10000:
@ -251,7 +251,7 @@ class DPDZGLogistics_DE(DPDZGLogistics):
country = 'Germany' country = 'Germany'
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.base_fee = [7.72,8.83,11.67] self.base_fee = [7.92,8.53,10.3]
self.remote_fee=11.5 self.remote_fee=11.5
def is_remote(self,postcode): def is_remote(self,postcode):
"""判断是否偏远,1偏远0非偏远""" """判断是否偏远,1偏远0非偏远"""
@ -276,7 +276,7 @@ class DPDZGLogistics_FR(DPDZGLogistics):
country = 'France' country = 'France'
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.base_fee = [10.77,11.92,14.03] self.base_fee = [11.27,11.72,13.73]
self.remote_fee= 18.5 self.remote_fee= 18.5
def is_remote(self,postcode): def is_remote(self,postcode):
"""判断是否偏远,1偏远0非偏远""" """判断是否偏远,1偏远0非偏远"""
@ -294,7 +294,7 @@ class DPDZGLogistics_SP(DPDZGLogistics):
country = 'Spain' country = 'Spain'
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.base_fee = [12.1,13.17,15.46] self.base_fee = [12.8,13.37,15.16]
self.remote_fee= 32 self.remote_fee= 32
def is_remote(self,postcode): def is_remote(self,postcode):
"""判断是否偏远,1偏远0非偏远""" """判断是否偏远,1偏远0非偏远"""
@ -311,7 +311,7 @@ class DPDZGLogistics_IT(DPDZGLogistics):
country = 'Italy' country = 'Italy'
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.base_fee = [13.69,14.75,17.27] self.base_fee = [14.19,14.95,16.97]
self.remote_fee=19.5 self.remote_fee=19.5
def is_remote(self,postcode): def is_remote(self,postcode):
"""判断是否偏远,1偏远0非偏远""" """判断是否偏远,1偏远0非偏远"""
@ -337,7 +337,7 @@ class DPDZGLogistics_NL(DPDZGLogistics):
country = 'Netherlands' country = 'Netherlands'
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.base_fee = [8.88,9.83,11.62] self.base_fee = [8.98,9.53,11.32]
self.remote_fee=7.5 self.remote_fee=7.5
def is_remote(self,postcode): def is_remote(self,postcode):
"""判断是否偏远,1偏远0非偏远""" """判断是否偏远,1偏远0非偏远"""
@ -359,7 +359,7 @@ class DPDZGLogistics_PT(DPDZGLogistics):
country = 'Portugal' country = 'Portugal'
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.base_fee = [8.11,9.27,10.98] self.base_fee = [8.31,8.97,10.68]
self.remote_fee=49 self.remote_fee=49
def is_remote(self,postcode): def is_remote(self,postcode):
"""判断是否偏远,1偏远0非偏远""" """判断是否偏远,1偏远0非偏远"""
@ -381,7 +381,7 @@ class DPDZGLogistics_BE(DPDZGLogistics):
country = 'Belgium' country = 'Belgium'
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.base_fee = [8.62,9.72,11.51] self.base_fee = [8.82,9.42,11.21]
self.remote_fee=0 self.remote_fee=0
def is_remote(self,postcode): def is_remote(self,postcode):
"""判断是否偏远,1偏远0非偏远""" """判断是否偏远,1偏远0非偏远"""
@ -389,7 +389,20 @@ class DPDZGLogistics_BE(DPDZGLogistics):
if not re.match(r'^\d{4}$', postcode): if not re.match(r'^\d{4}$', postcode):
return "邮编格式不合法" return "邮编格式不合法"
return 0 return 0
# DPD-ZG 爱尔兰实现
class DPDZGLogistics_IR(DPDZGLogistics):
country_code = 'IR'
country = 'Ireland'
def __init__(self):
super().__init__()
self.base_fee = [14.1,14.74,16.74]
self.remote_fee=0
def is_remote(self,postcode):
"""判断是否偏远,1偏远0非偏远"""
# 先判断邮编是否合法
# if not re.match(r'^\d{4}$', postcode):
# return "邮编格式不合法"
return 0
# 卡派-ASL 欧洲各国基类 # 卡派-ASL 欧洲各国基类
class KPASLLogistics(TailLogistics): class KPASLLogistics(TailLogistics):
@ -510,12 +523,12 @@ class KPGELLogistics(TailLogistics):
total_weight = 0 total_weight = 0
for package in packages: for package in packages:
# if (package.fst_size > 320 or package.sed_size>170 or package.trd_size>120) and (self.country_code != "DE"): if (package.fst_size > 320 or package.sed_size>170 or package.trd_size>120) and (self.country_code != "DE"):
# detail_amount['tail_amount'] = 99999 detail_amount['tail_amount'] = 99999
# return detail_amount return detail_amount
# if package.fst_size > 320 or package.sed_size>200 or package.trd_size>120: if package.fst_size > 320 or package.sed_size>200 or package.trd_size>120:
# detail_amount['tail_amount'] = 99999 detail_amount['tail_amount'] = 99999
# return detail_amount return detail_amount
billing_weight = max(package.weight/1000,package.get_volume_weight(6000)) billing_weight = max(package.weight/1000,package.get_volume_weight(6000))
total_weight += billing_weight total_weight += billing_weight
# 基础费用 # 基础费用
@ -652,7 +665,7 @@ class EURZGLogistics(TailLogistics):
self.per_kg = None self.per_kg = None
self.limit_kg = None self.limit_kg = None
self.remote = None self.remote = None
self.fuel_rate = 0.13 self.fuel_rate = None
def is_remote(self,postcode): def is_remote(self,postcode):
"""判断是否偏远,1偏远0非偏远""" """判断是否偏远,1偏远0非偏远"""
raise NotImplementedError("Subclasses must implement remote calculation.") raise NotImplementedError("Subclasses must implement remote calculation.")
@ -672,9 +685,9 @@ class EURZGLogistics(TailLogistics):
detail_amount['remote'] = self.remote detail_amount['remote'] = self.remote
for package in packages: # 逐个处理列表中的每个包裹 for package in packages: # 逐个处理列表中的每个包裹
# if package.length+package.width+package.height > 150 or package.weight > self.limit_kg*1000: if package.length+package.width+package.height > 150 or package.weight > self.limit_kg*1000:
# detail_amount['tail_amount'] = 99999 detail_amount['tail_amount'] = 99999
# return detail_amount return detail_amount
detail_amount['base'] += self.per_item+self.per_kg*package.weight/1000 detail_amount['base'] += self.per_item+self.per_kg*package.weight/1000
for key in detail_amount: for key in detail_amount:
@ -692,6 +705,7 @@ class EURZGLogistics_DE(EURZGLogistics):
self.per_kg = 0.87 self.per_kg = 0.87
self.limit_kg = 30 self.limit_kg = 30
self.remote = 0 self.remote = 0
self.fuel_rate = 0.0125
def is_remote(self,postcode): def is_remote(self,postcode):
return 0 return 0
@ -704,6 +718,7 @@ class EURZGLogistics_FR(EURZGLogistics):
self.per_kg = 1.07 self.per_kg = 1.07
self.limit_kg = 30 self.limit_kg = 30
self.remote = [5.5,14] self.remote = [5.5,14]
self.fuel_rate = 0.0325
def calculate_fee(self,packages,postcode): def calculate_fee(self,packages,postcode):
"""计算快递费用""" """计算快递费用"""
detail_amount = { detail_amount = {
@ -718,9 +733,9 @@ class EURZGLogistics_FR(EURZGLogistics):
return detail_amount return detail_amount
for package in packages: # 逐个处理列表中的每个包裹 for package in packages: # 逐个处理列表中的每个包裹
# if package.length+package.width+package.height > 150 or package.weight > self.limit_kg*1000: if package.length+package.width+package.height > 150 or package.weight > self.limit_kg*1000:
# detail_amount['tail_amount'] = 99999 detail_amount['tail_amount'] = 99999
# return detail_amount return detail_amount
if package.weight <=500: if package.weight <=500:
per_item = self.per_item[0] per_item = self.per_item[0]
elif package.weight <=2000: elif package.weight <=2000:
@ -759,6 +774,7 @@ class EURZGLogistics_IT(EURZGLogistics):
self.per_kg = 1.38 self.per_kg = 1.38
self.limit_kg = 30 self.limit_kg = 30
self.remote = 6 self.remote = 6
self.fuel_rate = 0.06
def is_remote(self,postcode): def is_remote(self,postcode):
remote_list = ["51024","67020", "67030", "67013", "67049","39030", "39032", "39040", "39043", "39054", "39058","98050", "98055","85046","89030", "89040", "89012", "89049", "89043", remote_list = ["51024","67020", "67030", "67013", "67049","39030", "39032", "39040", "39043", "39054", "39058","98050", "98055","85046","89030", "89040", "89012", "89049", "89043",
"80051", "80071", "80072", "80073", "80074", "80075", "80076", "80077", "80079", "80081", "80051", "80071", "80072", "80073", "80074", "80075", "80076", "80077", "80079", "80081",
@ -782,6 +798,7 @@ class EURZGLogistics_PT(EURZGLogistics):
self.per_kg = 1.95 self.per_kg = 1.95
self.limit_kg = 30 self.limit_kg = 30
self.remote = 5 self.remote = 5
self.fuel_rate = 0
def is_remote(self,postcode): def is_remote(self,postcode):
postcode = str(postcode) postcode = str(postcode)
if postcode.startswith("9"): if postcode.startswith("9"):
@ -802,9 +819,9 @@ class EURZGLogistics_PT(EURZGLogistics):
return detail_amount return detail_amount
for package in packages: # 逐个处理列表中的每个包裹 for package in packages: # 逐个处理列表中的每个包裹
# if package.length+package.width+package.height > 150 or package.weight > self.limit_kg*1000: if package.length+package.width+package.height > 150 or package.weight > self.limit_kg*1000:
# detail_amount['tail_amount'] = 99999 detail_amount['tail_amount'] = 99999
# return detail_amount return detail_amount
detail_amount['base'] += self.per_item+self.per_kg*package.weight/1000 detail_amount['base'] += self.per_item+self.per_kg*package.weight/1000
if isremote == 1: if isremote == 1:
detail_amount['remote'] += self.remote*package.weight/1000+15 detail_amount['remote'] += self.remote*package.weight/1000+15
@ -824,10 +841,24 @@ class EURZGLogistics_ES(EURZGLogistics):
self.per_kg = 1.85 self.per_kg = 1.85
self.limit_kg = 30 self.limit_kg = 30
self.remote = 99999 self.remote = 99999
self.fuel_rate = 0.01
def is_remote(self,postcode): def is_remote(self,postcode):
postcode = str(postcode) postcode = str(postcode)
postcode_str = postcode[:2] postcode_str = postcode[:2]
if postcode_str in ['07','51','52','35','38']: if postcode_str in ['07','51','52','35','38']:
return 1 return 1
else: else:
return 0
class EURZGLogistics_IR(EURZGLogistics):
country_code = 'IR'
country = 'Ireland'
def __init__(self):
super().__init__()
self.per_item = 3.92
self.per_kg = 1.58
self.limit_kg = 30
self.remote = 999999
self.fuel_rate = 0.01
def is_remote(self,postcode):
return 0 return 0

View File

@ -15,7 +15,7 @@ class DPDLogistics_UK(TailLogistics):
currency = 'GBP' currency = 'GBP'
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.base_fee = 3.7 self.base_fee = 3.8
self.oversize = 26 self.oversize = 26
self.fuel_rate = 0.2 # BT开头的有20%燃油费 self.fuel_rate = 0.2 # BT开头的有20%燃油费
self.remote_fee = 35 self.remote_fee = 35
@ -34,9 +34,9 @@ class DPDLogistics_UK(TailLogistics):
if self.is_remote(postcode): if self.is_remote(postcode):
detail_amount['remote'] = self.remote_fee detail_amount['remote'] = self.remote_fee
for package in packages: for package in packages:
# if package.weight >= 40000 or package.fst_size >= 175 or package.girth>=339: if package.weight >= 40000 or package.fst_size >= 175 or package.girth>=339:
# detail_amount['tail_amount'] =99999 detail_amount['tail_amount'] =99999
# return detail_amount return detail_amount
if package.weight >= 30000 or package.fst_size >= 100 or package.sed_size >=60: if package.weight >= 30000 or package.fst_size >= 100 or package.sed_size >=60:
detail_amount['oversize'] += self.oversize detail_amount['oversize'] += self.oversize
detail_amount['base'] += self.base_fee detail_amount['base'] += self.base_fee

View File

@ -59,6 +59,7 @@ class WestLogistics_US(TailLogistics):
def get_west_zone(self, postcode): def get_west_zone(self, postcode):
"""获取美西邮编分区""" """获取美西邮编分区"""
postcode = str(postcode)
if not re.match(r'\d{5}-\d{4}|\d{5}', postcode): if not re.match(r'\d{5}-\d{4}|\d{5}', postcode):
return "邮编格式不合法" return "邮编格式不合法"
postcode = postcode[:5] postcode = postcode[:5]
@ -78,7 +79,6 @@ class WestLogistics_US(TailLogistics):
return zone return zone
return "未查询到邮编分区" return "未查询到邮编分区"
class FedexLogistics(WestLogistics_US): class FedexLogistics(WestLogistics_US):
"""Fedex""" """Fedex"""
country = "United States" country = "United States"
@ -500,11 +500,11 @@ class CEVALogistics_US(TailLogistics):
detail_amount['tail_amount'] += detail_amount[key] detail_amount['tail_amount'] += detail_amount[key]
return detail_amount return detail_amount
class MetroLogistics_US(TailLogistics): class MetroLALogistics_US(TailLogistics):
"""卡派:Metro""" """卡派:Metro"""
country = "United States" country = "United States"
country_code = "US" country_code = "US"
company = "Metro-SAIR" company = "Metro-SAIR-美西"
logistics_type = LogisticsType.LTL logistics_type = LogisticsType.LTL
parent_current_directory = Path(__file__).parent.parent parent_current_directory = Path(__file__).parent.parent
@ -516,15 +516,6 @@ class MetroLogistics_US(TailLogistics):
over_35_min = None over_35_min = None
zone_table = None zone_table = None
remote_table = None remote_table = None
@staticmethod
def refresh():
"""清空已加载的数据,以便下次重新加载"""
MetroLogistics_US.cuft_25 = None
MetroLogistics_US.cuft_35 = None
MetroLogistics_US.over_35_per_cuft = None
MetroLogistics_US.over_35_min = None
MetroLogistics_US.zone_table = None
MetroLogistics_US.remote_table = None
def __new__(cls): def __new__(cls):
"""实现单例模式,只加载一次文件""" """实现单例模式,只加载一次文件"""
if cls.cuft_25 is None or cls.cuft_35 is None: if cls.cuft_25 is None or cls.cuft_35 is None:
@ -611,6 +602,113 @@ class MetroLogistics_US(TailLogistics):
detail_amount['tail_amount'] += detail_amount[key] detail_amount['tail_amount'] += detail_amount[key]
return detail_amount return detail_amount
class MetroNYLogistics_US(TailLogistics):
"""卡派:Metro"""
country = "United States"
country_code = "US"
company = "Metro-SAIR-美东"
logistics_type = LogisticsType.LTL
parent_current_directory = Path(__file__).parent.parent
data_path = parent_current_directory.joinpath("data")
_price_files = data_path.joinpath("Metro.xlsx")
cuft_25 = None
cuft_35 = None
over_35_per_cuft = None
over_35_min = None
zone_table = None
remote_table = None
def __new__(cls):
"""实现单例模式,只加载一次文件"""
if cls.cuft_25 is None or cls.cuft_35 is None:
cls.cuft_25 = pandas.read_excel(cls._price_files,sheet_name="cuft_25")
cls.cuft_35 = pandas.read_excel(cls._price_files,sheet_name="cuft_35")
cls.over_35_per_cuft = pandas.read_excel(cls._price_files,sheet_name="over35_per_cuft")
cls.over_35_min = pandas.read_excel(cls._price_files,sheet_name="over35_min")
cls.zone_table = pandas.read_excel(cls._price_files,sheet_name="zone_table")
cls.remote_table = pandas.read_excel(cls._price_files,sheet_name="remote_table")
return super().__new__(cls)
def __init__(self):
super().__init__()
self.fuel_rate = 0.4 # 基础费用必*1.4,附加费不用
self.discount = 0.88 # 折扣,所有费用都吃
def calculate_fee(self,packages,postcode):
"""
计算运费,in,lbs,250
from邮编固定,
to邮编先根据remote_df获取State和remote_type,
再根据zone_df分组,
最后从price_df取对应价格
只有big_package和oversize是以单包裹为单位,其他费用混合计算
"""
detail_amount = {
"base":0.00,
"oversize":0.00,
"remote":0.00,
"transfer":0.00, # 美西到美东的中转费
"tail_amount":0.00
}
if not re.match(r'\d{5}-\d{4}|\d{5}', postcode):
detail_amount['tail_amount'] = 99999
return detail_amount
postcode = int(postcode[:5])
# 出发地分区为 Zone 2 L
# 取目的地分区
zone_result = self.zone_table[self.zone_table['Zip Code'] ==postcode]['New Zone Name']
if zone_result.empty:
detail_amount["tail_amount"] = 99999
return detail_amount
zone = zone_result.iloc[0]
total_cuft = 0
max_weight = 0
max_length = 0
volume_weight = 0
for package in packages:
total_cuft += round(package.volume_inch/1728,2)
# cm则为长*宽*高/28316.846592,单位是立方英尺
max_weight = max(max_weight,package.lbs_weight)
max_length = max(max_length,package.fst_inch)
volume_weight += package.weight/1000
# base费用 25立方英尺 美西是Zone 2 L 美东是Zone 17 L
if total_cuft < 25:
detail_amount["base"] = self.cuft_25[self.cuft_25['Origins']==zone]["Zone 17 L"].iloc[0]
elif 25<=total_cuft <35:
detail_amount["base"] = self.cuft_35[self.cuft_35['Origins']==zone]["Zone 17 L"].iloc[0]
else:
per_cuft = self.over_35_per_cuft[self.over_35_per_cuft['Origins']==zone]["Zone 17 L"].iloc[0]
base_min = self.over_35_min[self.over_35_min['Origins']==zone]["Zone 17 L"].iloc[0]
detail_amount["base"] = max(per_cuft*total_cuft,base_min)
# 超尺寸,包括超重或超长
if max_weight >400 or max_length>125: # 不可派
detail_amount['tail_amount'] = 99999
return detail_amount
if 300<max_weight <=400:
detail_amount["oversize"] += 110
if 100<max_length <=125:
detail_amount["oversize"] += 110
# 偏远费
remote_result = self.remote_table[self.remote_table['ZIPCode'] == postcode]['Area Type']
if not remote_result.empty:
value = remote_result.iloc[0]
if value.startswith("Beyond"):
detail_amount["remote"] = 110
detail_amount["base"] = detail_amount["base"] * (1+self.fuel_rate)
for key in detail_amount:
if key!= 'tail_amount':
detail_amount[key] *= self.discount
detail_amount['tail_amount'] += detail_amount[key]
detail_amount['transfer'] = 0.5*volume_weight # 美西到美东的中转费
detail_amount['tail_amount'] += detail_amount['transfer']
return detail_amount
class XmilesLogistics_US(TailLogistics): class XmilesLogistics_US(TailLogistics):
"""一票多件快递:XMILES, """一票多件快递:XMILES,
包含美东和美西 包含美东和美西
@ -687,13 +785,14 @@ class XmilesLogistics_US(TailLogistics):
else: else:
detail_amount["base"] = base_fee_list[0] + sum(base_fee_list[1:])/2 detail_amount["base"] = base_fee_list[0] + sum(base_fee_list[1:])/2
zone = zone.iloc[0]
if zone =="NJ":
detail_amount["transfer"] = 0.5*volume_weight
for key in detail_amount: for key in detail_amount:
if key!= 'tail_amount': if key!= 'tail_amount':
detail_amount['tail_amount'] += detail_amount[key] detail_amount['tail_amount'] += detail_amount[key]
zone = zone.iloc[0]
if zone =="NJ":
detail_amount["transfer"] = 0.5*volume_weight # 美西到美东的中转费
detail_amount['tail_amount'] += detail_amount['transfer']
return detail_amount return detail_amount
class AMTWestLogistics_US(TailLogistics): class AMTWestLogistics_US(TailLogistics):
@ -832,7 +931,7 @@ class AMTEastLogistics_US(TailLogistics):
volume_weight +=package.get_volume_weight(6000) volume_weight +=package.get_volume_weight(6000)
total_lbs_weight += package.lbs_weight total_lbs_weight += package.lbs_weight
if package.lbs_weight >1000: if package.lbs_weight >1000:
detail_amount['tail_amount'] = 99999 detail_amount['tail_amount'] = 999999
return detail_amount return detail_amount
zone = self.PUZone+DLZone zone = self.PUZone+DLZone
@ -844,7 +943,9 @@ class AMTEastLogistics_US(TailLogistics):
return detail_amount return detail_amount
detail_amount["base"] = row['w/o SC'].iloc[0] detail_amount["base"] = row['w/o SC'].iloc[0]
detail_amount["surcharge"] = row['Surcharge'].iloc[0] detail_amount["surcharge"] = row['Surcharge'].iloc[0]
detail_amount["transfer"] = 0.5*volume_weight
detail_amount["transfer"] = 0.5*volume_weight # 美西到美东的中转费
if detail_amount['base']==0: if detail_amount['base']==0:
detail_amount['tail_amount'] = 99999 detail_amount['tail_amount'] = 99999
return detail_amount return detail_amount

View File

@ -2,16 +2,31 @@ from logisticsClass.logisticsBaseClass import HeadLogistics, PortType, TailLogis
# logistics_config.py # logistics_config.py
ACTIVE_LOGISTICS = { ACTIVE_LOGISTICS = {
"FedexPPLogistics_US": True, # US
"FedexKHLogistics_US": True, "FedexPPLogistics_US": False,# 需关闭
"FedexKHLogistics_US": False,# 需关闭
"FedexHOMELogistics_US": True, "FedexHOMELogistics_US": True,
"FedexGROUDLogistics_US": True, "FedexGROUDLogistics_US": True,
"MetroLogistics_US": True, "MetroLogistics_US": True,
"GIGALogistics_US": True, "GIGALogistics_US": False,# 需关闭
"CEVALogistics_US": True, "CEVALogistics_US": False,# 需关闭
"XmilesLogistics_US":True, "XmilesLogistics_US":True,
"AMTWestLogistics_US":True, "AMTWestLogistics_US":True,
"AMTEastLogistics_US":True "AMTEastLogistics_US":True,
# UK
"DPDLogistics_UK": True,
"bigLogistics_UK": True,
"KPZGLogistics_UK": True,
"KPNVlogistics_UK": False,# 需关闭
# EUR
"DPDASLLogistics":False, # 需关闭
# GB
"bigLogistics_UK":False, # 需关闭
"KPZGLogistics_UK":False, # 需关闭
"bigLogistics_UK":False, # 需关闭,智谷旧版大件8新版是分区的
} }
def apply_active_config(): def apply_active_config():
stack = list(BaseLogistics.__subclasses__()) stack = list(BaseLogistics.__subclasses__())

View File

@ -1,20 +1,27 @@
logistics_name = { logistics_name = {
"--":"--",
"三态带电":"--",
# US # US
"空LAX-USPS/F":"--", # 待补
"空LAX-USPS/P":"--", # 待补
"空LAX-FEDEX-SAIR-H": "Fedex-HOME", "空LAX-FEDEX-SAIR-H": "Fedex-HOME",
"空LAX-FEDEX-SAIR-G": "Fedex-GROUD", "空LAX-FEDEX-SAIR-G": "Fedex-GROUD",
"海MS-FEDEX-SAIR-H": "Fedex-HOME", "海MS-FEDEX-SAIR-H": "Fedex-HOME",
"海MS-FEDEX-SAIR-G": "Fedex-GROUD", "海MS-FEDEX-SAIR-G": "Fedex-GROUD",
"海MS-METRO-SAIR": "Metro-SAIR", "海MS-METRO-SAIR": "Metro-SAIR-美西",
"海NY-METRO-SAIR": "Metro-SAIR", # 暂时没写 "海NY-METRO-SAIR": "Metro-SAIR-美东",
"海NY-XMILES-SAIR": "XMILES-SAIR", "海NY-XMILES-SAIR": "XMILES-SAIR",
"海MS-XMILES": "XMILES-SAIR", "海MS-XMILES": "XMILES-SAIR",
"海NY-AMT-SAIR": "AM-美东", "海NY-AMT-SAIR": "AM-美东",
"海MS-AMT-SAIR": "AM-美西", "海MS-AMT-SAIR": "AM-美西",
"海MS-FEDEX02":"Fedex-彩虹小马", # 已关闭
"海MS-FEDEX02":"Fedex-彩虹小马", "空LAX-FEDEX02":"Fedex-彩虹小马", # 已关闭
"空LAX-FEDEX02":"Fedex-彩虹小马", "海MS-美西卡派":"Metro-SAIR", # 不确定的渠道默认为Metro
"海MS-美东卡派":"Metro-SAIR",# 不确定的渠道默认为Metro
"空LAX-卡派":"Metro-SAIR",# 不确定的渠道默认为Metro
"易可达/WEST-USPS":"--", # 无法计算
"易可达/WEST-UPS":"--", # 无法计算
# AU # AU
"海SY-POST3":"POST", "海SY-POST3":"POST",
"海POST- TMS改重":"POST", "海POST- TMS改重":"POST",
@ -26,6 +33,23 @@ logistics_name = {
"空SYD-TOLL1":"TOLL", "空SYD-TOLL1":"TOLL",
"海SY-ALL": "ALL", "海SY-ALL": "ALL",
"空SYD-ALL": "ALL", "空SYD-ALL": "ALL",
# UK
"空LHR-DPD":"智谷-DPD",
"海GB-DPD2":"智谷-DPD",
"海GB-卡派":"卡派-NV",
"海GB-AIT-FX":"--", # 待补
"空LHR-卡派":"卡派-ZG",
"海GB-大件":"智谷-大件",
# 欧洲整体
"空AMS-DPD":"DPD-ZG",
"海NL-DPD-ZG":"DPD-ZG",
"空AMS-EUR":"EUR-ZG",
"海NL-卡派2":"卡派-GEL",
"海NL-DPD-ASL":"DPD-ASL",
"海NL-DPD-NV":"--"
} }
#海NY-WWEX-SAIR海MS-WWEX-SAIR没报价表也停用了 #海NY-WWEX-SAIR海MS-WWEX-SAIR没报价表也停用了