sysmocom_value_calculator: Update to 2017 pricing/zones of Deutsche Post
This commit is contained in:
parent
3274db3d7e
commit
ac9e54666b
|
@ -8,85 +8,95 @@ module Spree
|
|||
end
|
||||
|
||||
ZONE1 = {
|
||||
"AT" => 1,
|
||||
"BE" => 1,
|
||||
"BG" => 1,
|
||||
"HR" => 1,
|
||||
"CZ" => 1,
|
||||
"DK" => 1,
|
||||
"EE" => 1,
|
||||
"FI" => 1,
|
||||
"FR" => 1,
|
||||
"GR" => 1,
|
||||
"GB" => 1,
|
||||
"HU" => 1,
|
||||
"IE" => 1,
|
||||
"IT" => 1,
|
||||
"LV" => 1,
|
||||
"LT" => 1,
|
||||
"LU" => 1,
|
||||
"MT" => 1,
|
||||
"MC" => 1,
|
||||
"NL" => 1,
|
||||
"AT" => 1,
|
||||
"PL" => 1,
|
||||
"PT" => 1,
|
||||
"RO" => 1,
|
||||
"SE" => 1,
|
||||
"SK" => 1,
|
||||
"SI" => 1,
|
||||
"ES" => 1,
|
||||
"CZ" => 1,
|
||||
"HU" => 1,
|
||||
"CY" => 1
|
||||
"SE" => 1,
|
||||
"GB" => 1
|
||||
}.freeze()
|
||||
|
||||
ZONE2 = {
|
||||
#"Älandinseln (Finnland)"
|
||||
"AD" => 1,
|
||||
"AL" => 1,
|
||||
"BY" => 1,
|
||||
#Berg Athos
|
||||
"BA" => 1,
|
||||
#Campione d'Italia Italien
|
||||
#Ceuta..Spanien
|
||||
"FO" => 1,
|
||||
"GE" => 1,
|
||||
"GI" => 1,
|
||||
"IS" => 1,
|
||||
#Kanalinseln (Großbritannien)
|
||||
#Kanarische Inseln (Spanien)
|
||||
#Kosovo
|
||||
"HR" => 1,
|
||||
"LI" => 1,
|
||||
#Livigno
|
||||
"MK" => 1,
|
||||
"MD" => 1,
|
||||
#Melila (Spanien)
|
||||
#Montenegro
|
||||
"NO" => 1,
|
||||
"CH" => 1,
|
||||
"RU" => 1,
|
||||
"SM" => 1,
|
||||
"RS" => 1,
|
||||
"TR" => 1,
|
||||
"UA" => 1,
|
||||
"VA" => 1,
|
||||
ZONE2 = {
|
||||
"CH" => 1
|
||||
}.freeze()
|
||||
|
||||
ZONE3 = {
|
||||
"AL" => 1,
|
||||
"AD" => 1,
|
||||
"BY" => 1,
|
||||
"BA" => 1,
|
||||
"CY" => 1,
|
||||
"FO" => 1,
|
||||
"GE" => 1,
|
||||
"GI" => 1,
|
||||
"GL" => 1,
|
||||
"GG" => 1,
|
||||
"VA" => 1,
|
||||
"IS" => 1,
|
||||
"JE" => 1,
|
||||
"KZ" => 1,
|
||||
"LI" => 1,
|
||||
"MK" => 1,
|
||||
"MD" => 1,
|
||||
"ME" => 1,
|
||||
"NO" => 1,
|
||||
"SM" => 1,
|
||||
"RS" => 1,
|
||||
"TR" => 1,
|
||||
"UA" => 1,
|
||||
"AX" => 1
|
||||
}.freeze
|
||||
|
||||
ZONE3 = {
|
||||
"EG" => 1,
|
||||
"DZ" => 1,
|
||||
"AM" => 1,
|
||||
"AZ" => 1,
|
||||
"IL" => 1,
|
||||
"JO" => 1,
|
||||
"CA" => 1,
|
||||
"KZ" => 1,
|
||||
"LB" => 1,
|
||||
"LY" => 1,
|
||||
"MA" => 1,
|
||||
#Palästinensische Gebiete
|
||||
"PM" => 1,
|
||||
"SY" => 1,
|
||||
"TN" => 1,
|
||||
"US" => 1,
|
||||
}.freeze
|
||||
ZONE4 = {
|
||||
"RU" => 1
|
||||
}.freeze()
|
||||
|
||||
ZONE5 = {
|
||||
"US" => 1
|
||||
}.freeze()
|
||||
|
||||
ZONE6 = {
|
||||
"DZ" => 1,
|
||||
"AM" => 1,
|
||||
"AZ" => 1,
|
||||
"CA" => 1,
|
||||
"EG" => 1,
|
||||
"IL" => 1,
|
||||
"JO" => 1,
|
||||
"KZ" => 1,
|
||||
"LB" => 1,
|
||||
"LY" => 1,
|
||||
"MA" => 1,
|
||||
"PS" => 1,
|
||||
"PM" => 1,
|
||||
"SY" => 1,
|
||||
"TN" => 1
|
||||
}.freeze()
|
||||
|
||||
ZONE7 = {
|
||||
"CN" => 1
|
||||
}.freeze()
|
||||
|
||||
def packages_price(value, limit, price_each)
|
||||
price = 0
|
||||
|
@ -102,51 +112,44 @@ ZONE3 = {
|
|||
price
|
||||
end
|
||||
|
||||
# we choose pricing between 2kg and 5gk
|
||||
def price_germany(value)
|
||||
# 6 Euro and up to 500 Euro in Value for a 2kg package
|
||||
# http://www.dhl.de/dhl-paket
|
||||
return packages_price(value, 500, 6.0)
|
||||
end
|
||||
|
||||
# We assume a 5kg package in all zones below
|
||||
def price_package_zone1(value)
|
||||
# 17 Euro and up to 500 Euro in value for a 5kg package or
|
||||
# 2kg registered parcel with 35 Euro of value...
|
||||
# http://www.dhl.de/de/paket/pakete-versenden/weltweit-versenden/paket.html
|
||||
if value < 35
|
||||
return packages_price(value, 35, 12)
|
||||
else
|
||||
return packages_price(value, 500, 17.0)
|
||||
end
|
||||
return packages_price(value, 500, 17.0)
|
||||
end
|
||||
|
||||
def price_package_zone2(value)
|
||||
# 5kg package
|
||||
# TODO: for the last item we could check for 74.11 again
|
||||
if value < 74.11
|
||||
return packages_price(value, 74.11, 32)
|
||||
else
|
||||
return packages_price(value, 500, 38)
|
||||
end
|
||||
return packages_price(value, 500, 29)
|
||||
end
|
||||
|
||||
def price_package_zone3(value)
|
||||
# 5kg package
|
||||
# TODO see zone2
|
||||
if value < 74.11
|
||||
return packages_price(value, 74.11, 38)
|
||||
else
|
||||
return packages_price(value, 500, 54)
|
||||
end
|
||||
return packages_price(value, 500, 30)
|
||||
end
|
||||
|
||||
def price_package_zone4(value)
|
||||
if value < 74.11
|
||||
return packages_price(value, 74.11, 44)
|
||||
else
|
||||
return packages_price(value, 500, 66)
|
||||
end
|
||||
return packages_price(value, 500, 33)
|
||||
end
|
||||
|
||||
|
||||
def price_package_zone5(value)
|
||||
return packages_price(value, 500, 38)
|
||||
end
|
||||
|
||||
def price_package_zone6(value)
|
||||
return packages_price(value, 500, 40)
|
||||
end
|
||||
|
||||
def price_package_zone7(value)
|
||||
return packages_price(value, 500, 60)
|
||||
end
|
||||
|
||||
def price_package_zone8(value)
|
||||
return packages_price(value, 500, 63)
|
||||
end
|
||||
|
||||
|
||||
def total_value_no_tax(o)
|
||||
item_total = o.line_items.map(&:amount).sum
|
||||
|
@ -174,8 +177,16 @@ ZONE3 = {
|
|||
return price_package_zone2(shipping_value)
|
||||
elsif ZONE3.has_key?(iso_code)
|
||||
return price_package_zone3(shipping_value)
|
||||
else
|
||||
elsif ZONE4.has_key?(iso_code)
|
||||
return price_package_zone4(shipping_value)
|
||||
elsif ZONE5.has_key?(iso_code)
|
||||
return price_package_zone5(shipping_value)
|
||||
elsif ZONE6.has_key?(iso_code)
|
||||
return price_package_zone6(shipping_value)
|
||||
elsif ZONE7.has_key?(iso_code)
|
||||
return price_package_zone7(shipping_value)
|
||||
else
|
||||
return price_package_zone8(shipping_value)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue