karrio-landmark 2025.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ from karrio.mappers.landmark.mapper import Mapper
2
+ from karrio.mappers.landmark.proxy import Proxy
3
+ from karrio.mappers.landmark.settings import Settings
@@ -0,0 +1,51 @@
1
+ """Karrio Landmark Global client mapper."""
2
+
3
+ import typing
4
+ import karrio.lib as lib
5
+ import karrio.api.mapper as mapper
6
+ import karrio.core.models as models
7
+ import karrio.providers.landmark as provider
8
+ import karrio.universal.providers.rating as universal_provider
9
+ import karrio.mappers.landmark.settings as provider_settings
10
+
11
+
12
+ class Mapper(mapper.Mapper):
13
+ settings: provider_settings.Settings
14
+
15
+ def create_rate_request(self, payload: models.RateRequest) -> lib.Serializable:
16
+ return universal_provider.rate_request(payload, self.settings)
17
+
18
+ def create_tracking_request(
19
+ self, payload: models.TrackingRequest
20
+ ) -> lib.Serializable:
21
+ return provider.tracking_request(payload, self.settings)
22
+
23
+ def create_shipment_request(
24
+ self, payload: models.ShipmentRequest
25
+ ) -> lib.Serializable:
26
+ return provider.shipment_request(payload, self.settings)
27
+
28
+ def create_cancel_shipment_request(
29
+ self, payload: models.ShipmentCancelRequest
30
+ ) -> lib.Serializable[str]:
31
+ return provider.shipment_cancel_request(payload, self.settings)
32
+
33
+ def parse_rate_response(
34
+ self, response: lib.Deserializable[str]
35
+ ) -> typing.Tuple[typing.List[models.RateDetails], typing.List[models.Message]]:
36
+ return universal_provider.parse_rate_response(response, self.settings)
37
+
38
+ def parse_cancel_shipment_response(
39
+ self, response: lib.Deserializable[str]
40
+ ) -> typing.Tuple[models.ConfirmationDetails, typing.List[models.Message]]:
41
+ return provider.parse_shipment_cancel_response(response, self.settings)
42
+
43
+ def parse_shipment_response(
44
+ self, response: lib.Deserializable[str]
45
+ ) -> typing.Tuple[models.ShipmentDetails, typing.List[models.Message]]:
46
+ return provider.parse_shipment_response(response, self.settings)
47
+
48
+ def parse_tracking_response(
49
+ self, response: lib.Deserializable[str]
50
+ ) -> typing.Tuple[typing.List[models.TrackingDetails], typing.List[models.Message]]:
51
+ return provider.parse_tracking_response(response, self.settings)
@@ -0,0 +1,63 @@
1
+ """Karrio Landmark Global client proxy."""
2
+
3
+ import karrio.lib as lib
4
+ import karrio.api.proxy as proxy
5
+ import karrio.universal.mappers.rating_proxy as rating_proxy
6
+ import karrio.mappers.landmark.settings as provider_settings
7
+
8
+
9
+ class Proxy(rating_proxy.RatingMixinProxy, proxy.Proxy):
10
+ settings: provider_settings.Settings
11
+
12
+ def get_rates(self, request: lib.Serializable) -> lib.Deserializable[str]:
13
+ return super().get_rates(request)
14
+
15
+ def create_shipment(self, request: lib.Serializable) -> lib.Deserializable[str]:
16
+ response = lib.request(
17
+ url=f"{self.settings.server_url}/{request.ctx['API']}.php",
18
+ data=request.serialize(),
19
+ trace=self.trace_as("xml"),
20
+ method="POST",
21
+ headers={
22
+ "Content-Type": "application/xml",
23
+ },
24
+ )
25
+
26
+ return lib.Deserializable(response, lib.to_element)
27
+
28
+ def cancel_shipment(self, request: lib.Serializable) -> lib.Deserializable[str]:
29
+ response = lib.request(
30
+ url=f"{self.settings.server_url}/Cancel.php",
31
+ data=request.serialize(),
32
+ trace=self.trace_as("xml"),
33
+ method="POST",
34
+ headers={
35
+ "Content-Type": "application/xml",
36
+ },
37
+ )
38
+
39
+ return lib.Deserializable(response, lib.to_element)
40
+
41
+ def get_tracking(self, requests: lib.Serializable) -> lib.Deserializable[str]:
42
+ responses = lib.run_concurently(
43
+ lambda request: (
44
+ request.number,
45
+ lib.request(
46
+ url=f"{self.settings.server_url}/Track.php",
47
+ data=request.request,
48
+ trace=self.trace_as("xml"),
49
+ method="POST",
50
+ headers={
51
+ "Content-Type": "application/xml",
52
+ },
53
+ ),
54
+ ),
55
+ requests.serialize(),
56
+ )
57
+
58
+ return lib.Deserializable(
59
+ responses,
60
+ lambda res: [
61
+ (num, lib.to_element(track)) for num, track in res if any(track.strip())
62
+ ],
63
+ )
@@ -0,0 +1,37 @@
1
+ """Karrio Landmark Global client settings."""
2
+
3
+ import attr
4
+ import typing
5
+ import jstruct
6
+ import karrio.core.models as models
7
+ import karrio.universal.mappers.rating_proxy as rating_proxy
8
+ import karrio.providers.landmark.units as provider_units
9
+ import karrio.providers.landmark.utils as provider_utils
10
+
11
+
12
+ @attr.s(auto_attribs=True)
13
+ class Settings(provider_utils.Settings, rating_proxy.RatingMixinSettings):
14
+ """Landmark Global connection settings."""
15
+
16
+ # Add carrier specific API connection properties here
17
+ username: str
18
+ password: str
19
+ client_id: str
20
+ account_number: str = None
21
+ region: str = "Landmark CMH" # Default BE region
22
+
23
+ # generic properties
24
+ id: str = None
25
+ test_mode: bool = False
26
+ carrier_id: str = "landmark"
27
+ services: typing.List[models.ServiceLevel] = jstruct.JList[models.ServiceLevel, False, dict(default=provider_units.DEFAULT_SERVICES)] # type: ignore
28
+ account_country_code: str = None # Default to BE region
29
+ metadata: dict = {}
30
+ config: dict = {}
31
+
32
+ @property
33
+ def shipping_services(self) -> typing.List[models.ServiceLevel]:
34
+ if any(self.services or []):
35
+ return self.services
36
+
37
+ return provider_units.DEFAULT_SERVICES
@@ -0,0 +1,30 @@
1
+ from karrio.core.metadata import PluginMetadata
2
+
3
+ from karrio.mappers.landmark.mapper import Mapper
4
+ from karrio.mappers.landmark.proxy import Proxy
5
+ from karrio.mappers.landmark.settings import Settings
6
+ import karrio.providers.landmark.units as units
7
+ import karrio.providers.landmark.utils as utils
8
+
9
+
10
+ # This METADATA object is used by Karrio to discover and register this plugin
11
+ # when loaded through Python entrypoints or local plugin directories.
12
+ # The entrypoint is defined in pyproject.toml under [project.entry-points."karrio.plugins"]
13
+ METADATA = PluginMetadata(
14
+ id="landmark",
15
+ label="Landmark Global",
16
+ description="Landmark Global shipping integration for Karrio",
17
+ # Integrations
18
+ Mapper=Mapper,
19
+ Proxy=Proxy,
20
+ Settings=Settings,
21
+ # Data Units
22
+ is_hub=False,
23
+ options=units.ShippingOption,
24
+ services=units.ShippingService,
25
+ connection_configs=units.ConnectionConfig,
26
+ service_levels=units.DEFAULT_SERVICES,
27
+ # Extra info
28
+ website="https://landmarkglobal.com",
29
+ documentation="https://mercurydocs.landmarkglobal.com/docs/api-documentation",
30
+ )
@@ -0,0 +1,12 @@
1
+ """Karrio Landmark Global provider imports."""
2
+ from karrio.providers.landmark.utils import Settings
3
+ from karrio.providers.landmark.shipment import (
4
+ parse_shipment_cancel_response,
5
+ parse_shipment_response,
6
+ shipment_cancel_request,
7
+ shipment_request,
8
+ )
9
+ from karrio.providers.landmark.tracking import (
10
+ parse_tracking_response,
11
+ tracking_request,
12
+ )
@@ -0,0 +1,38 @@
1
+ """Karrio Landmark Global error parser."""
2
+
3
+ import typing
4
+ import karrio.lib as lib
5
+ import karrio.core.models as models
6
+ import karrio.providers.landmark.utils as provider_utils
7
+ import karrio.schemas.landmark.error_response as landmark
8
+
9
+
10
+ def parse_error_response(
11
+ response: lib.Element,
12
+ settings: provider_utils.Settings,
13
+ details: dict = None,
14
+ **kwargs,
15
+ ) -> typing.List[models.Message]:
16
+ responses = lib.to_list(response)
17
+ errors: typing.List[landmark.ErrorType] = sum(
18
+ [
19
+ [
20
+ *(lib.find_element("Error", resp, landmark.ErrorType)),
21
+ *(lib.find_element("error", resp, landmark.ErrorType)),
22
+ ]
23
+ for resp in responses
24
+ ],
25
+ [],
26
+ )
27
+
28
+ return [
29
+ models.Message(
30
+ carrier_name=settings.carrier_name,
31
+ carrier_id=settings.carrier_id,
32
+ code=error.ErrorCode,
33
+ message=error.ErrorMessage,
34
+ details={**kwargs, **(details or {})},
35
+ )
36
+ for error in errors
37
+ if error.ErrorCode or error.ErrorMessage
38
+ ]
@@ -0,0 +1,301 @@
1
+ service_code,service_name,zone_label,country_codes,min_weight,max_weight,rate,currency,transit_days
2
+ LGINTSTD,MaxiPak Scan DDP,United States,US,0.0,0.25,5.71,GBP,7
3
+ LGINTSTD,MaxiPak Scan DDP,United States,US,0.25,0.5,6.86,GBP,7
4
+ LGINTSTD,MaxiPak Scan DDP,United States,US,0.5,1.0,8.78,GBP,7
5
+ LGINTSTD,MaxiPak Scan DDP,United States,US,1.0,2.0,10.81,GBP,7
6
+ LGINTSTD,MaxiPak Scan DDP,United States,US,2.0,5.0,15.39,GBP,7
7
+ LGINTSTD,MaxiPak Scan DDP,United States,US,5.0,10.0,28.82,GBP,7
8
+ LGINTSTD,MaxiPak Scan DDP,United States,US,10.0,20.0,87.80,GBP,7
9
+ LGINTSTD,MaxiPak Scan DDP,United States,US,20.0,30.0,165.76,GBP,7
10
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.0,0.25,4.33,GBP,8
11
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.25,0.5,4.64,GBP,8
12
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.5,1.0,5.16,GBP,8
13
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",1.0,2.0,6.19,GBP,8
14
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",2.0,5.0,8.26,GBP,8
15
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",5.0,10.0,13.34,GBP,8
16
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",10.0,20.0,22.82,GBP,8
17
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",20.0,30.0,34.80,GBP,8
18
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.0,0.25,3.35,GBP,9
19
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.25,0.5,4.00,GBP,9
20
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.5,1.0,5.07,GBP,9
21
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",1.0,2.0,5.24,GBP,9
22
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",2.0,5.0,5.45,GBP,9
23
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",5.0,10.0,6.25,GBP,9
24
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",10.0,20.0,7.51,GBP,9
25
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",20.0,30.0,10.95,GBP,9
26
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.0,0.25,3.16,GBP,10
27
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.25,0.5,4.20,GBP,10
28
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.5,1.0,4.72,GBP,10
29
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",1.0,2.0,6.01,GBP,10
30
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",2.0,5.0,9.29,GBP,10
31
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",5.0,10.0,18.68,GBP,10
32
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",10.0,20.0,35.92,GBP,10
33
+ LGINTSTD,MaxiPak Scan DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",20.0,30.0,70.42,GBP,10
34
+ LGINTSTD,MaxiPak Scan DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.0,0.25,3.54,GBP,9
35
+ LGINTSTD,MaxiPak Scan DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.25,0.5,5.51,GBP,9
36
+ LGINTSTD,MaxiPak Scan DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.5,1.0,6.89,GBP,9
37
+ LGINTSTD,MaxiPak Scan DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",1.0,2.0,10.07,GBP,9
38
+ LGINTSTD,MaxiPak Scan DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",2.0,5.0,16.43,GBP,9
39
+ LGINTSTD,MaxiPak Scan DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",5.0,10.0,34.09,GBP,9
40
+ LGINTSTD,MaxiPak Scan DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",10.0,20.0,65.89,GBP,9
41
+ LGINTSTD,MaxiPak Scan DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",20.0,30.0,129.49,GBP,9
42
+ LGINTSTDU,MaxiPak Scan DDU,United States,US,0.0,0.25,5.71,GBP,7
43
+ LGINTSTDU,MaxiPak Scan DDU,United States,US,0.25,0.5,6.86,GBP,7
44
+ LGINTSTDU,MaxiPak Scan DDU,United States,US,0.5,1.0,8.78,GBP,7
45
+ LGINTSTDU,MaxiPak Scan DDU,United States,US,1.0,2.0,10.81,GBP,7
46
+ LGINTSTDU,MaxiPak Scan DDU,United States,US,2.0,5.0,15.39,GBP,7
47
+ LGINTSTDU,MaxiPak Scan DDU,United States,US,5.0,10.0,28.82,GBP,7
48
+ LGINTSTDU,MaxiPak Scan DDU,United States,US,10.0,20.0,87.80,GBP,7
49
+ LGINTSTDU,MaxiPak Scan DDU,United States,US,20.0,30.0,165.76,GBP,7
50
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.0,0.25,4.33,GBP,8
51
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.25,0.5,4.64,GBP,8
52
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.5,1.0,5.16,GBP,8
53
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",1.0,2.0,6.19,GBP,8
54
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",2.0,5.0,8.26,GBP,8
55
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",5.0,10.0,13.34,GBP,8
56
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",10.0,20.0,22.82,GBP,8
57
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",20.0,30.0,34.80,GBP,8
58
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.0,0.25,3.35,GBP,9
59
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.25,0.5,4.00,GBP,9
60
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.5,1.0,5.07,GBP,9
61
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",1.0,2.0,5.24,GBP,9
62
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",2.0,5.0,5.45,GBP,9
63
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",5.0,10.0,6.25,GBP,9
64
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",10.0,20.0,7.51,GBP,9
65
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",20.0,30.0,10.95,GBP,9
66
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.0,0.25,3.16,GBP,10
67
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.25,0.5,4.20,GBP,10
68
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.5,1.0,4.72,GBP,10
69
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",1.0,2.0,6.01,GBP,10
70
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",2.0,5.0,9.29,GBP,10
71
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",5.0,10.0,18.68,GBP,10
72
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",10.0,20.0,35.92,GBP,10
73
+ LGINTSTDU,MaxiPak Scan DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",20.0,30.0,70.42,GBP,10
74
+ LGINTSTDU,MaxiPak Scan DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.0,0.25,3.54,GBP,9
75
+ LGINTSTDU,MaxiPak Scan DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.25,0.5,5.51,GBP,9
76
+ LGINTSTDU,MaxiPak Scan DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.5,1.0,6.89,GBP,9
77
+ LGINTSTDU,MaxiPak Scan DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",1.0,2.0,10.07,GBP,9
78
+ LGINTSTDU,MaxiPak Scan DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",2.0,5.0,16.43,GBP,9
79
+ LGINTSTDU,MaxiPak Scan DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",5.0,10.0,34.09,GBP,9
80
+ LGINTSTDU,MaxiPak Scan DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",10.0,20.0,65.89,GBP,9
81
+ LGINTSTDU,MaxiPak Scan DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",20.0,30.0,129.49,GBP,9
82
+ LGINTBPIP,MiniPak Scan DDP (EU Only),EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.0,0.25,4.33,GBP,8
83
+ LGINTBPIP,MiniPak Scan DDP (EU Only),EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.25,0.5,4.64,GBP,8
84
+ LGINTBPIP,MiniPak Scan DDP (EU Only),EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.5,1.0,5.16,GBP,8
85
+ LGINTBPIP,MiniPak Scan DDP (EU Only),EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",1.0,2.0,6.19,GBP,8
86
+ LGINTBPIP,MiniPak Scan DDP (EU Only),EU Zone 2,"ES,FI,HU,IT,PT,SE",0.0,0.25,3.35,GBP,9
87
+ LGINTBPIP,MiniPak Scan DDP (EU Only),EU Zone 2,"ES,FI,HU,IT,PT,SE",0.25,0.5,4.00,GBP,9
88
+ LGINTBPIP,MiniPak Scan DDP (EU Only),EU Zone 2,"ES,FI,HU,IT,PT,SE",0.5,1.0,5.07,GBP,9
89
+ LGINTBPIP,MiniPak Scan DDP (EU Only),EU Zone 2,"ES,FI,HU,IT,PT,SE",1.0,2.0,5.24,GBP,9
90
+ LGINTBPIP,MiniPak Scan DDP (EU Only),EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.0,0.25,3.16,GBP,10
91
+ LGINTBPIP,MiniPak Scan DDP (EU Only),EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.25,0.5,4.20,GBP,10
92
+ LGINTBPIP,MiniPak Scan DDP (EU Only),EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.5,1.0,4.72,GBP,10
93
+ LGINTBPIP,MiniPak Scan DDP (EU Only),EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",1.0,2.0,6.01,GBP,10
94
+ LGINTBPIU,MiniPak Scan DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.0,0.25,4.33,GBP,8
95
+ LGINTBPIU,MiniPak Scan DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.25,0.5,4.64,GBP,8
96
+ LGINTBPIU,MiniPak Scan DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.5,1.0,5.16,GBP,8
97
+ LGINTBPIU,MiniPak Scan DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",1.0,2.0,6.19,GBP,8
98
+ LGINTBPIU,MiniPak Scan DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.0,0.25,3.35,GBP,9
99
+ LGINTBPIU,MiniPak Scan DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.25,0.5,4.00,GBP,9
100
+ LGINTBPIU,MiniPak Scan DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.5,1.0,5.07,GBP,9
101
+ LGINTBPIU,MiniPak Scan DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",1.0,2.0,5.24,GBP,9
102
+ LGINTBPIU,MiniPak Scan DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.0,0.25,3.16,GBP,10
103
+ LGINTBPIU,MiniPak Scan DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.25,0.5,4.20,GBP,10
104
+ LGINTBPIU,MiniPak Scan DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.5,1.0,4.72,GBP,10
105
+ LGINTBPIU,MiniPak Scan DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",1.0,2.0,6.01,GBP,10
106
+ LGINTBPIU,MiniPak Scan DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.0,0.25,3.54,GBP,9
107
+ LGINTBPIU,MiniPak Scan DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.25,0.5,5.51,GBP,9
108
+ LGINTBPIU,MiniPak Scan DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.5,1.0,6.89,GBP,9
109
+ LGINTBPIU,MiniPak Scan DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",1.0,2.0,10.07,GBP,9
110
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.0,0.25,5.50,GBP,6
111
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.25,0.5,6.00,GBP,6
112
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.5,1.0,7.00,GBP,6
113
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",1.0,2.0,8.50,GBP,6
114
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",2.0,5.0,11.00,GBP,6
115
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",5.0,10.0,18.00,GBP,6
116
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",10.0,20.0,30.00,GBP,6
117
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",20.0,30.0,45.00,GBP,6
118
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.0,0.25,4.50,GBP,7
119
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.25,0.5,5.50,GBP,7
120
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.5,1.0,6.50,GBP,7
121
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",1.0,2.0,7.00,GBP,7
122
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",2.0,5.0,8.00,GBP,7
123
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",5.0,10.0,9.50,GBP,7
124
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",10.0,20.0,12.00,GBP,7
125
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",20.0,30.0,17.50,GBP,7
126
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.0,0.25,4.00,GBP,8
127
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.25,0.5,5.50,GBP,8
128
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.5,1.0,6.50,GBP,8
129
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",1.0,2.0,8.00,GBP,8
130
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",2.0,5.0,12.50,GBP,8
131
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",5.0,10.0,24.00,GBP,8
132
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",10.0,20.0,45.00,GBP,8
133
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",20.0,30.0,88.00,GBP,8
134
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.0,0.25,4.50,GBP,7
135
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.25,0.5,7.00,GBP,7
136
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.5,1.0,9.00,GBP,7
137
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",1.0,2.0,13.00,GBP,7
138
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",2.0,5.0,21.00,GBP,7
139
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",5.0,10.0,43.00,GBP,7
140
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",10.0,20.0,82.00,GBP,7
141
+ LGINTUPST,MaxiPak Scan Premium UPS Standard DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",20.0,30.0,160.00,GBP,7
142
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.0,0.25,5.50,GBP,6
143
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.25,0.5,6.00,GBP,6
144
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.5,1.0,7.00,GBP,6
145
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",1.0,2.0,8.50,GBP,6
146
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",2.0,5.0,11.00,GBP,6
147
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",5.0,10.0,18.00,GBP,6
148
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",10.0,20.0,30.00,GBP,6
149
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",20.0,30.0,45.00,GBP,6
150
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.0,0.25,4.50,GBP,7
151
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.25,0.5,5.50,GBP,7
152
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.5,1.0,6.50,GBP,7
153
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",1.0,2.0,7.00,GBP,7
154
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",2.0,5.0,8.00,GBP,7
155
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",5.0,10.0,9.50,GBP,7
156
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",10.0,20.0,12.00,GBP,7
157
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",20.0,30.0,17.50,GBP,7
158
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.0,0.25,4.00,GBP,8
159
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.25,0.5,5.50,GBP,8
160
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.5,1.0,6.50,GBP,8
161
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",1.0,2.0,8.00,GBP,8
162
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",2.0,5.0,12.50,GBP,8
163
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",5.0,10.0,24.00,GBP,8
164
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",10.0,20.0,45.00,GBP,8
165
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",20.0,30.0,88.00,GBP,8
166
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.0,0.25,4.50,GBP,7
167
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.25,0.5,7.00,GBP,7
168
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.5,1.0,9.00,GBP,7
169
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",1.0,2.0,13.00,GBP,7
170
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",2.0,5.0,21.00,GBP,7
171
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",5.0,10.0,43.00,GBP,7
172
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",10.0,20.0,82.00,GBP,7
173
+ LGINTUPSTU,MaxiPak Scan Premium UPS Standard DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",20.0,30.0,160.00,GBP,7
174
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.0,0.25,4.33,GBP,8
175
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.25,0.5,4.64,GBP,8
176
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.5,1.0,5.16,GBP,8
177
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",1.0,2.0,6.19,GBP,8
178
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",2.0,5.0,8.26,GBP,8
179
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",5.0,10.0,13.34,GBP,8
180
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",10.0,20.0,22.82,GBP,8
181
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",20.0,30.0,34.80,GBP,8
182
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.0,0.25,3.35,GBP,9
183
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.25,0.5,4.00,GBP,9
184
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.5,1.0,5.07,GBP,9
185
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 2,"ES,FI,HU,IT,PT,SE",1.0,2.0,5.24,GBP,9
186
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 2,"ES,FI,HU,IT,PT,SE",2.0,5.0,5.45,GBP,9
187
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 2,"ES,FI,HU,IT,PT,SE",5.0,10.0,6.25,GBP,9
188
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 2,"ES,FI,HU,IT,PT,SE",10.0,20.0,7.51,GBP,9
189
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 2,"ES,FI,HU,IT,PT,SE",20.0,30.0,10.95,GBP,9
190
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.0,0.25,3.16,GBP,10
191
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.25,0.5,4.20,GBP,10
192
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.5,1.0,4.72,GBP,10
193
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",1.0,2.0,6.01,GBP,10
194
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",2.0,5.0,9.29,GBP,10
195
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",5.0,10.0,18.68,GBP,10
196
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",10.0,20.0,35.92,GBP,10
197
+ LGINTPUDO,MaxiPak Scan DDP PUDO,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",20.0,30.0,70.42,GBP,10
198
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.0,0.25,7.50,GBP,3
199
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.25,0.5,8.50,GBP,3
200
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.5,1.0,10.00,GBP,3
201
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",1.0,2.0,12.50,GBP,3
202
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",2.0,5.0,16.50,GBP,3
203
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",5.0,10.0,26.00,GBP,3
204
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",10.0,20.0,44.00,GBP,3
205
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",20.0,30.0,66.00,GBP,3
206
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.0,0.25,6.50,GBP,4
207
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.25,0.5,8.00,GBP,4
208
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.5,1.0,9.50,GBP,4
209
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",1.0,2.0,10.50,GBP,4
210
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",2.0,5.0,12.00,GBP,4
211
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",5.0,10.0,14.50,GBP,4
212
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",10.0,20.0,18.00,GBP,4
213
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",20.0,30.0,26.00,GBP,4
214
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.0,0.25,6.00,GBP,5
215
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.25,0.5,8.00,GBP,5
216
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.5,1.0,9.50,GBP,5
217
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",1.0,2.0,12.00,GBP,5
218
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",2.0,5.0,18.50,GBP,5
219
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",5.0,10.0,35.00,GBP,5
220
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",10.0,20.0,66.00,GBP,5
221
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",20.0,30.0,130.00,GBP,5
222
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.0,0.25,6.50,GBP,4
223
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.25,0.5,10.00,GBP,4
224
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.5,1.0,13.00,GBP,4
225
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",1.0,2.0,19.00,GBP,4
226
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",2.0,5.0,31.00,GBP,4
227
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",5.0,10.0,63.00,GBP,4
228
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",10.0,20.0,120.00,GBP,4
229
+ LGINTUPSS,MaxiPak Scan Premium UPS Express DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",20.0,30.0,235.00,GBP,4
230
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.0,0.25,7.50,GBP,3
231
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.25,0.5,8.50,GBP,3
232
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.5,1.0,10.00,GBP,3
233
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",1.0,2.0,12.50,GBP,3
234
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",2.0,5.0,16.50,GBP,3
235
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",5.0,10.0,26.00,GBP,3
236
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",10.0,20.0,44.00,GBP,3
237
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",20.0,30.0,66.00,GBP,3
238
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.0,0.25,6.50,GBP,4
239
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.25,0.5,8.00,GBP,4
240
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.5,1.0,9.50,GBP,4
241
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",1.0,2.0,10.50,GBP,4
242
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",2.0,5.0,12.00,GBP,4
243
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",5.0,10.0,14.50,GBP,4
244
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",10.0,20.0,18.00,GBP,4
245
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 2,"ES,FI,HU,IT,PT,SE",20.0,30.0,26.00,GBP,4
246
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.0,0.25,6.00,GBP,5
247
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.25,0.5,8.00,GBP,5
248
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.5,1.0,9.50,GBP,5
249
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",1.0,2.0,12.00,GBP,5
250
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",2.0,5.0,18.50,GBP,5
251
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",5.0,10.0,35.00,GBP,5
252
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",10.0,20.0,66.00,GBP,5
253
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",20.0,30.0,130.00,GBP,5
254
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.0,0.25,6.50,GBP,4
255
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.25,0.5,10.00,GBP,4
256
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.5,1.0,13.00,GBP,4
257
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",1.0,2.0,19.00,GBP,4
258
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",2.0,5.0,31.00,GBP,4
259
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",5.0,10.0,63.00,GBP,4
260
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",10.0,20.0,120.00,GBP,4
261
+ LGINTUPSSU,MaxiPak Scan Premium UPS Express DDU,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",20.0,30.0,235.00,GBP,4
262
+ LGINTBPMO,MaxiPak Scan Postal DDP,United States,US,0.0,0.25,2.50,GBP,12
263
+ LGINTBPMO,MaxiPak Scan Postal DDP,United States,US,0.25,0.5,3.00,GBP,12
264
+ LGINTBPMO,MaxiPak Scan Postal DDP,United States,US,0.5,1.0,3.75,GBP,12
265
+ LGINTBPMO,MaxiPak Scan Postal DDP,United States,US,1.0,2.0,4.50,GBP,12
266
+ LGINTBPMO,MaxiPak Scan Postal DDP,United States,US,2.0,5.0,6.75,GBP,12
267
+ LGINTBPMO,MaxiPak Scan Postal DDP,United States,US,5.0,10.0,12.50,GBP,12
268
+ LGINTBPMO,MaxiPak Scan Postal DDP,United States,US,10.0,20.0,38.00,GBP,12
269
+ LGINTBPMO,MaxiPak Scan Postal DDP,United States,US,20.0,30.0,72.00,GBP,12
270
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.0,0.25,1.95,GBP,10
271
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.25,0.5,2.15,GBP,10
272
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",0.5,1.0,2.40,GBP,10
273
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",1.0,2.0,2.85,GBP,10
274
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",2.0,5.0,3.80,GBP,10
275
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",5.0,10.0,6.15,GBP,10
276
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",10.0,20.0,10.50,GBP,10
277
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 1,"AT,BE,CZ,DE,DK,FR,IE,LU,NL,PL",20.0,30.0,16.00,GBP,10
278
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.0,0.25,1.55,GBP,11
279
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.25,0.5,1.85,GBP,11
280
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",0.5,1.0,2.35,GBP,11
281
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",1.0,2.0,2.40,GBP,11
282
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",2.0,5.0,2.50,GBP,11
283
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",5.0,10.0,2.85,GBP,11
284
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",10.0,20.0,3.45,GBP,11
285
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 2,"ES,FI,HU,IT,PT,SE",20.0,30.0,5.05,GBP,11
286
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.0,0.25,1.45,GBP,12
287
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.25,0.5,1.95,GBP,12
288
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",0.5,1.0,2.20,GBP,12
289
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",1.0,2.0,2.75,GBP,12
290
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",2.0,5.0,4.25,GBP,12
291
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",5.0,10.0,8.60,GBP,12
292
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",10.0,20.0,16.50,GBP,12
293
+ LGINTBPMO,MaxiPak Scan Postal DDP,EU Zone 3,"BG,CY,EE,GR,HR,LT,LV,MT,RO,SI,SK",20.0,30.0,32.50,GBP,12
294
+ LGINTBPMO,MaxiPak Scan Postal DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.0,0.25,1.65,GBP,14
295
+ LGINTBPMO,MaxiPak Scan Postal DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.25,0.5,2.55,GBP,14
296
+ LGINTBPMO,MaxiPak Scan Postal DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",0.5,1.0,3.20,GBP,14
297
+ LGINTBPMO,MaxiPak Scan Postal DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",1.0,2.0,4.65,GBP,14
298
+ LGINTBPMO,MaxiPak Scan Postal DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",2.0,5.0,7.60,GBP,14
299
+ LGINTBPMO,MaxiPak Scan Postal DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",5.0,10.0,15.75,GBP,14
300
+ LGINTBPMO,MaxiPak Scan Postal DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",10.0,20.0,30.45,GBP,14
301
+ LGINTBPMO,MaxiPak Scan Postal DDP,Rest of World,"AE,AU,CA,HK,NZ,SA,SG",20.0,30.0,59.85,GBP,14
@@ -0,0 +1,9 @@
1
+
2
+ from karrio.providers.landmark.shipment.create import (
3
+ parse_shipment_response,
4
+ shipment_request,
5
+ )
6
+ from karrio.providers.landmark.shipment.cancel import (
7
+ parse_shipment_cancel_response,
8
+ shipment_cancel_request,
9
+ )
@@ -0,0 +1,69 @@
1
+ """Karrio Landmark Global shipment cancellation implementation."""
2
+
3
+ import karrio.schemas.landmark.cancel_request as cancel_req
4
+ import karrio.schemas.landmark.cancel_response as cancel_res
5
+
6
+ import typing
7
+ import karrio.lib as lib
8
+ import karrio.core.models as models
9
+ import karrio.providers.landmark.error as error
10
+ import karrio.providers.landmark.utils as provider_utils
11
+
12
+
13
+ def parse_shipment_cancel_response(
14
+ _response: lib.Deserializable[lib.Element],
15
+ settings: provider_utils.Settings,
16
+ ) -> typing.Tuple[models.ConfirmationDetails, typing.List[models.Message]]:
17
+ response = _response.deserialize()
18
+ messages = error.parse_error_response(response, settings)
19
+
20
+ cancellation = (
21
+ _extract_cancellation_details(response, settings)
22
+ if len(messages) == 0
23
+ else None
24
+ )
25
+
26
+ return cancellation, messages
27
+
28
+
29
+ def _extract_cancellation_details(
30
+ data: lib.Element,
31
+ settings: provider_utils.Settings,
32
+ ) -> models.ConfirmationDetails:
33
+ """Extract cancellation confirmation details from CancelResponse"""
34
+ cancel_response = lib.to_object(cancel_res.CancelResponse, data)
35
+ result = cancel_response.Result
36
+
37
+ if not result or not result.Success:
38
+ return None
39
+
40
+ return models.ConfirmationDetails(
41
+ carrier_id=settings.carrier_id,
42
+ carrier_name=settings.carrier_name,
43
+ operation="Shipment Cancellation",
44
+ success=result.Success,
45
+ )
46
+
47
+
48
+ def shipment_cancel_request(
49
+ payload: models.ShipmentCancelRequest,
50
+ settings: provider_utils.Settings,
51
+ ) -> lib.Serializable:
52
+ """Create a shipment cancellation request for the carrier API"""
53
+
54
+ request = cancel_req.CancelRequest(
55
+ Login=cancel_req.LoginType(
56
+ Username=settings.username,
57
+ Password=settings.password,
58
+ ),
59
+ Test=settings.test_mode,
60
+ ClientID=settings.client_id,
61
+ TrackingNumber=payload.shipment_identifier,
62
+ DeleteShipment=True,
63
+ Reason=lib.identity(
64
+ payload.options.get("reason")
65
+ or "Consignee canceled shipment."
66
+ ),
67
+ )
68
+
69
+ return lib.Serializable(request, lib.to_xml)