Skip to content

Commit d1ecca0

Browse files
authored
Merge pull request #138 from purplship/patch-purolator-label-type-mapper
[patch] Use unified label_type mapper for the purolator shipping label_type
2 parents 5ef1615 + f5f5055 commit d1ecca0

File tree

4 files changed

+29
-40
lines changed

4 files changed

+29
-40
lines changed

extensions/purolator/purplship/providers/purolator/shipment/create.py

Lines changed: 17 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def _shipment_request(payload: ShipmentRequest, settings: Settings) -> Serializa
101101
is_international = (payload.shipper.country_code != payload.recipient.country_code)
102102
shipper_phone_number = Phone(payload.shipper.phone_number, payload.shipper.country_code)
103103
recipient_phone_number = Phone(payload.recipient.phone_number, payload.recipient.country_code)
104-
printing = PrintType[options.label_printing or "PDF"].value
104+
printing = PrintType.map(payload.label_type or "PDF").value
105105
option_ids = [
106106
(key, value) for key, value in options if key in Service and key not in NON_OFFICIAL_SERVICES
107107
]
@@ -111,7 +111,7 @@ def _shipment_request(payload: ShipmentRequest, settings: Settings) -> Serializa
111111
Version="2.1",
112112
Language=settings.language,
113113
GroupID="",
114-
RequestReference="",
114+
RequestReference=payload.reference,
115115
UserToken=settings.user_token,
116116
),
117117
body_content=CreateShipmentRequest(
@@ -128,9 +128,7 @@ def _shipment_request(payload: ShipmentRequest, settings: Settings) -> Serializa
128128
StreetDirection=None,
129129
Suite=None,
130130
Floor=None,
131-
StreetAddress2=SF.concat_str(
132-
payload.shipper.address_line2, join=True
133-
),
131+
StreetAddress2=SF.concat_str(payload.shipper.address_line2, join=True),
134132
StreetAddress3=None,
135133
City=payload.shipper.city or "",
136134
Province=payload.shipper.state_code or "",
@@ -144,8 +142,7 @@ def _shipment_request(payload: ShipmentRequest, settings: Settings) -> Serializa
144142
),
145143
FaxNumber=None,
146144
),
147-
TaxNumber=payload.shipper.federal_tax_id
148-
or payload.shipper.state_tax_id,
145+
TaxNumber=(payload.shipper.federal_tax_id or payload.shipper.state_tax_id),
149146
),
150147
ReceiverInformation=ReceiverInformation(
151148
Address=Address(
@@ -154,16 +151,12 @@ def _shipment_request(payload: ShipmentRequest, settings: Settings) -> Serializa
154151
Department=None,
155152
StreetNumber="",
156153
StreetSuffix=None,
157-
StreetName=SF.concat_str(
158-
payload.recipient.address_line1, join=True
159-
),
154+
StreetName=SF.concat_str(payload.recipient.address_line1, join=True),
160155
StreetType=None,
161156
StreetDirection=None,
162157
Suite=None,
163158
Floor=None,
164-
StreetAddress2=SF.concat_str(
165-
payload.recipient.address_line2, join=True
166-
),
159+
StreetAddress2=SF.concat_str(payload.recipient.address_line2, join=True),
167160
StreetAddress3=None,
168161
City=payload.recipient.city or "",
169162
Province=payload.recipient.state_code or "",
@@ -177,9 +170,7 @@ def _shipment_request(payload: ShipmentRequest, settings: Settings) -> Serializa
177170
),
178171
FaxNumber=None,
179172
),
180-
TaxNumber=(
181-
payload.recipient.federal_tax_id or payload.recipient.state_tax_id
182-
),
173+
TaxNumber=(payload.recipient.federal_tax_id or payload.recipient.state_tax_id),
183174
),
184175
FromOnLabelIndicator=None,
185176
FromOnLabelInformation=None,
@@ -304,7 +295,7 @@ def _shipment_request(payload: ShipmentRequest, settings: Settings) -> Serializa
304295
),
305296
NotificationInformation=(
306297
NotificationInformation(
307-
ConfirmationEmailAddress=options.notification_email or payload.recipient.email
298+
ConfirmationEmailAddress=(options.notification_email or payload.recipient.email)
308299
)
309300
if options.notification_email is None else None
310301
),
@@ -327,21 +318,16 @@ def _create_shipment(payload: ShipmentRequest, settings: Settings) -> Job:
327318
)
328319

329320

330-
def _get_shipment_label(
331-
create_response: str, payload: ShipmentRequest, settings: Settings
332-
) -> Job:
333-
errors = parse_error_response(XP.to_xml(create_response), settings)
334-
valid = len(errors) == 0
321+
def _get_shipment_label(create_response: str, payload: ShipmentRequest, settings: Settings) -> Job:
322+
response = XP.to_xml(create_response)
323+
valid = len(parse_error_response(response, settings)) == 0
335324
shipment_pin = (
336-
getattr(XP.find("ShipmentPIN", XP.to_xml(create_response), PIN, first=True), 'Value', None)
325+
getattr(XP.find("ShipmentPIN", response, PIN, first=True), 'Value', None)
337326
if valid else None
338327
)
339-
return Job(
340-
id="document",
341-
data=(
342-
get_shipping_documents_request(shipment_pin, payload, settings)
343-
if valid
344-
else None
345-
),
346-
fallback="",
328+
data = (
329+
get_shipping_documents_request(shipment_pin, payload, settings)
330+
if valid else None
347331
)
332+
333+
return Job(id="document", data=data, fallback="")

extensions/purolator/purplship/providers/purolator/shipment/documents.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ def get_shipping_documents_request(
1717
pin: str, payload: ShipmentRequest, settings: Settings
1818
) -> Serializable[Envelope]:
1919
is_international = payload.shipper.country_code != payload.recipient.country_code
20-
print_type = PrintType[payload.label_type or 'PDF'].name
20+
label_type = PrintType.map(payload.label_type or 'PDF').name
2121
document_type = SF.concat_str(
2222
("International" if is_international else "Domestic"),
2323
"BillOfLading",
24-
("Thermal" if print_type == "ZPL" else ""),
24+
("Thermal" if label_type == "ZPL" else ""),
2525
separator="", join=True
2626
)
2727

@@ -30,17 +30,19 @@ def get_shipping_documents_request(
3030
Version="1.3",
3131
Language=settings.language,
3232
GroupID="",
33-
RequestReference="",
33+
RequestReference=payload.reference,
3434
UserToken=settings.user_token,
3535
),
3636
body_content=GetDocumentsRequest(
37-
OutputType=print_type,
37+
OutputType=label_type,
3838
Synchronous=True,
3939
DocumentCriterium=ArrayOfDocumentCriteria(
4040
DocumentCriteria=[
4141
DocumentCriteria(
4242
PIN=PIN(Value=pin),
43-
DocumentTypes=DocumentTypes(DocumentType=[document_type])
43+
DocumentTypes=DocumentTypes(
44+
DocumentType=[document_type]
45+
)
4446
)
4547
]
4648
),

extensions/purolator/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "purplship.purolator"
3-
version = "2021.6.2"
3+
version = "2021.6.3"
44
homepage="https://sdk.purplship.com"
55
repository="https://github.com/Purplship/purplship"
66
description = "Purplship - Purolator Shipping Extension"

tests/purolator/shipment.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,8 @@ def test_parse_cancel_shipment_response(self):
120120
],
121121
"reference": "Reference For Shipment",
122122
"service": "purolator_express",
123-
"options": {"printing": "PDF", "shipment_date": "2021-02-04"},
123+
"label_type": "PDF",
124+
"options": {"shipment_date": "2021-02-04"},
124125
}
125126

126127
PARSED_SHIPMENT_RESPONSE = [
@@ -151,7 +152,7 @@ def test_parse_cancel_shipment_response(self):
151152
<v2:Version>2.1</v2:Version>
152153
<v2:Language>en</v2:Language>
153154
<v2:GroupID></v2:GroupID>
154-
<v2:RequestReference></v2:RequestReference>
155+
<v2:RequestReference>Reference For Shipment</v2:RequestReference>
155156
<v2:UserToken>token</v2:UserToken>
156157
</v2:RequestContext>
157158
</soap:Header>
@@ -227,7 +228,7 @@ def test_parse_cancel_shipment_response(self):
227228
<v1:Version>1.3</v1:Version>
228229
<v1:Language>en</v1:Language>
229230
<v1:GroupID></v1:GroupID>
230-
<v1:RequestReference></v1:RequestReference>
231+
<v1:RequestReference>Reference For Shipment</v1:RequestReference>
231232
<v1:UserToken>token</v1:UserToken>
232233
</v1:RequestContext>
233234
</soap:Header>

0 commit comments

Comments
 (0)