karrio-dhl-poland 2025.5rc1__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.
- karrio/mappers/dhl_poland/__init__.py +3 -0
- karrio/mappers/dhl_poland/mapper.py +51 -0
- karrio/mappers/dhl_poland/proxy.py +59 -0
- karrio/mappers/dhl_poland/settings.py +34 -0
- karrio/plugins/dhl_poland/__init__.py +23 -0
- karrio/providers/dhl_poland/__init__.py +11 -0
- karrio/providers/dhl_poland/error.py +21 -0
- karrio/providers/dhl_poland/shipment/__init__.py +8 -0
- karrio/providers/dhl_poland/shipment/cancel.py +55 -0
- karrio/providers/dhl_poland/shipment/create.py +307 -0
- karrio/providers/dhl_poland/tracking.py +91 -0
- karrio/providers/dhl_poland/units.py +146 -0
- karrio/providers/dhl_poland/utils.py +62 -0
- karrio/schemas/dhl_poland/__init__.py +0 -0
- karrio/schemas/dhl_poland/services.py +43970 -0
- karrio_dhl_poland-2025.5rc1.dist-info/METADATA +44 -0
- karrio_dhl_poland-2025.5rc1.dist-info/RECORD +20 -0
- karrio_dhl_poland-2025.5rc1.dist-info/WHEEL +5 -0
- karrio_dhl_poland-2025.5rc1.dist-info/entry_points.txt +2 -0
- karrio_dhl_poland-2025.5rc1.dist-info/top_level.txt +3 -0
@@ -0,0 +1,146 @@
|
|
1
|
+
import karrio.lib as lib
|
2
|
+
import karrio.core.units as units
|
3
|
+
import karrio.core.models as models
|
4
|
+
|
5
|
+
|
6
|
+
class CustomsContentType(lib.StrEnum):
|
7
|
+
other = "9"
|
8
|
+
sale_of_goods = "11"
|
9
|
+
return_of_goods = "21"
|
10
|
+
gifts = "31"
|
11
|
+
samples_of_goods = "32"
|
12
|
+
documents = "91"
|
13
|
+
|
14
|
+
""" Unified Content type mapping """
|
15
|
+
gift = gifts
|
16
|
+
sample = samples_of_goods
|
17
|
+
merchandise = sale_of_goods
|
18
|
+
return_merchandise = return_of_goods
|
19
|
+
|
20
|
+
|
21
|
+
class LabelType(lib.StrEnum):
|
22
|
+
BLP_LABEL = "BLP"
|
23
|
+
LBLP_LABEL_A4_PDF = "LBLP"
|
24
|
+
ZBLP_LABEL_ZPL = "ZBLP"
|
25
|
+
|
26
|
+
""" Unified Label type mapping """
|
27
|
+
PDF = BLP_LABEL
|
28
|
+
ZPL = ZBLP_LABEL_ZPL
|
29
|
+
|
30
|
+
|
31
|
+
class PaymentType(lib.StrEnum):
|
32
|
+
shipper = "SHIPPER"
|
33
|
+
receiver = "RECEIVER"
|
34
|
+
user = "USER"
|
35
|
+
|
36
|
+
""" Unified Payment type mapping """
|
37
|
+
sender = shipper
|
38
|
+
recipient = receiver
|
39
|
+
third_party = user
|
40
|
+
|
41
|
+
|
42
|
+
class PackagingType(lib.StrEnum):
|
43
|
+
dhl_poland_envelope = "ENVELOPE"
|
44
|
+
dhl_poland_package = "PACKAGE"
|
45
|
+
dhl_poland_pallet = "PALLET"
|
46
|
+
|
47
|
+
""" Unified Packaging type mapping """
|
48
|
+
envelope = dhl_poland_envelope
|
49
|
+
pak = dhl_poland_package
|
50
|
+
tube = dhl_poland_package
|
51
|
+
pallet = dhl_poland_pallet
|
52
|
+
small_box = dhl_poland_package
|
53
|
+
medium_box = dhl_poland_package
|
54
|
+
large_box = dhl_poland_package
|
55
|
+
your_packaging = dhl_poland_package
|
56
|
+
|
57
|
+
|
58
|
+
class Service(lib.Enum):
|
59
|
+
dhl_poland_premium = "PR"
|
60
|
+
dhl_poland_polska = "AH"
|
61
|
+
dhl_poland_09 = "09"
|
62
|
+
dhl_poland_12 = "12"
|
63
|
+
dhl_poland_connect = "EK"
|
64
|
+
dhl_poland_international = "PI"
|
65
|
+
|
66
|
+
|
67
|
+
class ShippingOption(lib.Enum):
|
68
|
+
dhl_poland_delivery_in_18_22_hours = lib.OptionEnum("1722", bool)
|
69
|
+
dhl_poland_delivery_on_saturday = lib.OptionEnum("SATURDAY", bool)
|
70
|
+
dhl_poland_pickup_on_staturday = lib.OptionEnum("NAD_SOBOTA", bool)
|
71
|
+
dhl_poland_insuration = lib.OptionEnum("UBEZP", float)
|
72
|
+
dhl_poland_collect_on_delivery = lib.OptionEnum("COD", float)
|
73
|
+
dhl_poland_information_to_receiver = lib.OptionEnum("PDI")
|
74
|
+
dhl_poland_return_of_document = lib.OptionEnum("ROD", bool)
|
75
|
+
dhl_poland_proof_of_delivery = lib.OptionEnum("POD", bool)
|
76
|
+
dhl_poland_delivery_to_neighbour = lib.OptionEnum("SAS", bool)
|
77
|
+
dhl_poland_self_collect = lib.OptionEnum("ODB", bool)
|
78
|
+
|
79
|
+
""" Unified Option type mapping """
|
80
|
+
insurance = dhl_poland_insuration
|
81
|
+
cash_on_delivery = dhl_poland_collect_on_delivery
|
82
|
+
saturday_delivery = dhl_poland_delivery_on_saturday
|
83
|
+
|
84
|
+
|
85
|
+
def shipping_options_initializer(
|
86
|
+
options: dict,
|
87
|
+
package_options: units.ShippingOptions = None,
|
88
|
+
) -> units.ShippingOptions:
|
89
|
+
"""
|
90
|
+
Apply default values to the given options.
|
91
|
+
"""
|
92
|
+
_options = options.copy()
|
93
|
+
|
94
|
+
if package_options is not None:
|
95
|
+
_options.update(package_options.content)
|
96
|
+
|
97
|
+
def items_filter(key: str) -> bool:
|
98
|
+
return key in ShippingOption # type: ignore
|
99
|
+
|
100
|
+
return units.ShippingOptions(_options, ShippingOption, items_filter=items_filter)
|
101
|
+
|
102
|
+
|
103
|
+
DEFAULT_SERVICES = [
|
104
|
+
models.ServiceLevel(
|
105
|
+
service_name="DHL Poland Premium",
|
106
|
+
service_code="dhl_poland_premium",
|
107
|
+
currency="EUR",
|
108
|
+
domicile=True,
|
109
|
+
zones=[models.ServiceZone(label="Zone 1", rate=0.0)],
|
110
|
+
),
|
111
|
+
models.ServiceLevel(
|
112
|
+
service_name="DHL Poland Polska",
|
113
|
+
service_code="dhl_poland_polska",
|
114
|
+
currency="EUR",
|
115
|
+
domicile=True,
|
116
|
+
zones=[models.ServiceZone(label="Zone 1", rate=0.0)],
|
117
|
+
),
|
118
|
+
models.ServiceLevel(
|
119
|
+
service_name="DHL Poland 09",
|
120
|
+
service_code="dhl_poland_09",
|
121
|
+
currency="EUR",
|
122
|
+
domicile=True,
|
123
|
+
zones=[models.ServiceZone(label="Zone 1", rate=0.0)],
|
124
|
+
),
|
125
|
+
models.ServiceLevel(
|
126
|
+
service_name="DHL Poland 12",
|
127
|
+
service_code="dhl_poland_12",
|
128
|
+
currency="EUR",
|
129
|
+
domicile=True,
|
130
|
+
zones=[models.ServiceZone(label="Zone 1", rate=0.0)],
|
131
|
+
),
|
132
|
+
models.ServiceLevel(
|
133
|
+
service_name="DHL Poland Connect",
|
134
|
+
service_code="dhl_poland_connect",
|
135
|
+
currency="EUR",
|
136
|
+
international=True,
|
137
|
+
zones=[models.ServiceZone(label="Zone 1", rate=0.0)],
|
138
|
+
),
|
139
|
+
models.ServiceLevel(
|
140
|
+
service_name="DHL Poland International",
|
141
|
+
service_code="dhl_poland_international",
|
142
|
+
currency="EUR",
|
143
|
+
international=True,
|
144
|
+
zones=[models.ServiceZone(label="Zone 1", rate=0.0)],
|
145
|
+
),
|
146
|
+
]
|
@@ -0,0 +1,62 @@
|
|
1
|
+
"""Karrio DHL Parcel Poland client settings."""
|
2
|
+
|
3
|
+
from karrio.schemas.dhl_poland.services import AuthData
|
4
|
+
from karrio.core.settings import Settings as BaseSettings
|
5
|
+
from karrio.core.utils import Envelope, apply_namespaceprefix, XP
|
6
|
+
|
7
|
+
|
8
|
+
class Settings(BaseSettings):
|
9
|
+
"""DHL Parcel Poland connection settings."""
|
10
|
+
|
11
|
+
username: str
|
12
|
+
password: str
|
13
|
+
account_number: str = None
|
14
|
+
|
15
|
+
id: str = None
|
16
|
+
account_country_code: str = "PL"
|
17
|
+
metadata: dict = {}
|
18
|
+
|
19
|
+
@property
|
20
|
+
def carrier_name(self):
|
21
|
+
return "dhl_poland"
|
22
|
+
|
23
|
+
@property
|
24
|
+
def server_url(self):
|
25
|
+
return (
|
26
|
+
"https://sandbox.dhl24.com.pl/webapi2/provider/service.html?ws=1"
|
27
|
+
if self.test_mode
|
28
|
+
else "https://dhl24.com.pl/webapi2/provider/service.html?ws=1"
|
29
|
+
)
|
30
|
+
|
31
|
+
@property
|
32
|
+
def tracking_url(self):
|
33
|
+
return "https://www.dhl.com/pl-en/home/tracking/tracking-parcel.html?submit=1&tracking-id={}"
|
34
|
+
|
35
|
+
@property
|
36
|
+
def auth_data(self):
|
37
|
+
return AuthData(
|
38
|
+
username=self.username,
|
39
|
+
password=self.password,
|
40
|
+
)
|
41
|
+
|
42
|
+
@staticmethod
|
43
|
+
def serialize(envelope: Envelope, request_name: str, namesapce: str) -> str:
|
44
|
+
namespacedef_ = (
|
45
|
+
'xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"'
|
46
|
+
f' xmlns="{namesapce}"'
|
47
|
+
)
|
48
|
+
envelope.ns_prefix_ = "soap-env"
|
49
|
+
envelope.Body.ns_prefix_ = envelope.ns_prefix_
|
50
|
+
|
51
|
+
apply_namespaceprefix(envelope.Body.anytypeobjs_[0], "")
|
52
|
+
return (
|
53
|
+
XP.export(envelope, namespacedef_=namespacedef_)
|
54
|
+
.replace(
|
55
|
+
"<%s:%s" % (envelope.ns_prefix_, request_name),
|
56
|
+
"<%s%s" % ("", request_name),
|
57
|
+
)
|
58
|
+
.replace(
|
59
|
+
"</%s:%s" % (envelope.ns_prefix_, request_name),
|
60
|
+
"</%s%s" % ("", request_name),
|
61
|
+
)
|
62
|
+
)
|
File without changes
|