Skip to content

Commit 58f37b1

Browse files
committed
fix: eshipper carrier data parsing for both rating and shipping response data
1 parent 3ef15ca commit 58f37b1

7 files changed

Lines changed: 69 additions & 125 deletions

File tree

modules/connectors/eshipper/karrio/providers/eshipper/rate.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def _extract_details(
2828
rate = lib.to_object(rating.QuoteType, data)
2929
service = provider_units.ShippingService.map(str(rate.serviceId))
3030
carrierId = provider_units.ShippingService.carrier_id(service.value_or_key)
31-
rate_provider = provider_units.ShippingService.carrier(service.value_or_key)
31+
rate_provider = provider_units.ShippingService.carrier(service.value_or_key).lower()
3232
charges = [
3333
("baseCharge", rate.baseCharge),
3434
("fuelSurcharge", rate.fuelSurcharge),
@@ -56,11 +56,11 @@ def _extract_details(
5656
if amount
5757
],
5858
meta=dict(
59+
rate_provider=rate_provider,
5960
service_name=rate.serviceName or service.name,
61+
carrierId=carrierId,
6062
serviceName=rate.serviceName,
6163
carrierName=rate.carrierName,
62-
carrierId=carrierId,
63-
rate_provider=rate_provider,
6464
),
6565
)
6666

modules/connectors/eshipper/karrio/providers/eshipper/shipment/create.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,24 +29,28 @@ def _extract_details(
2929
shipment = lib.to_object(shipping.ShippingResponseType, data)
3030
label_type = next((_.type for _ in shipment.labelData.label), "PDF").upper()
3131
label = lib.bundle_base64([_.data for _ in shipment.labelData.label], label_type)
32+
invoice = lib.failsafe(lambda: shipment.customsInvoice.data)
3233
trackingNumbers = [_.trackingNumber for _ in shipment.packages]
34+
rate_provider = provider_units.ShippingService.carrier(shipment.quote.serviceId)
3335

3436
return models.ShipmentDetails(
3537
carrier_id=settings.carrier_id,
3638
carrier_name=settings.carrier_name,
3739
tracking_number=shipment.trackingNumber,
38-
shipment_identifier=shipment.order.orderId,
40+
shipment_identifier=shipment.order.id,
3941
label_type=label_type,
40-
docs=models.Documents(label=label),
41-
meta=dict(
42-
carrier_tracking_link=shipment.trackingUrl,
43-
service_name=shipment.carrier.serviceName,
44-
tracking_numbers=trackingNumbers,
45-
trackingId=shipment.order.trackingId,
46-
orderId=shipment.order.orderId,
47-
carrierName=shipment.carrier.carrierName,
48-
transactionId=shipment.transactionId,
49-
billingReference=shipment.billingReference,
42+
docs=models.Documents(label=label, invoice=invoice),
43+
meta=lib.to_dict(
44+
dict(
45+
rate_provider=rate_provider,
46+
carrier_tracking_link=shipment.trackingUrl,
47+
service_name=shipment.carrier.serviceName,
48+
tracking_numbers=trackingNumbers,
49+
orderId=shipment.order.id,
50+
carrierName=shipment.carrier.carrierName,
51+
transactionId=shipment.transactionId,
52+
billingReference=shipment.billingReference,
53+
)
5054
),
5155
)
5256

modules/connectors/eshipper/karrio/providers/eshipper/units.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -168,13 +168,13 @@ class ShippingService(lib.StrEnum):
168168
eshipper_project44_xpo_logistics = "5000110"
169169
eshipper_project44_xpress_global_systems = "5000109"
170170
eshipper_project44_yrc = "5000053"
171-
eshipper_purolator_purolator_express = "5000001"
172-
eshipper_purolator_purolator_express_1030 = "5000003"
173-
eshipper_purolator_purolator_express_9am = "5000002"
174-
eshipper_purolator_purolator_expresscheque = "5000011"
175-
eshipper_purolator_purolator_ground = "5000010"
176-
eshipper_purolator_purolator_ground_1030 = "5000013"
177-
eshipper_purolator_purolator_ground_9am = "5000012"
171+
eshipper_purolator_express = "5000001"
172+
eshipper_purolator_express_1030 = "5000003"
173+
eshipper_purolator_express_9am = "5000002"
174+
eshipper_purolator_expresscheque = "5000011"
175+
eshipper_purolator_ground = "5000010"
176+
eshipper_purolator_ground_1030 = "5000013"
177+
eshipper_purolator_ground_9am = "5000012"
178178
eshipper_purolator_puroletter = "5000004"
179179
eshipper_purolator_puroletter_1030 = "5000006"
180180
eshipper_purolator_puroletter_9am = "5000005"
@@ -233,15 +233,15 @@ class ShippingService(lib.StrEnum):
233233
# fmt: on
234234

235235
@staticmethod
236-
def carrier_id(service: str) -> str:
236+
def carrier_id(service_id: str) -> str:
237237
return next(
238-
(_ for _, __ in CARRIER_SERVICES.items() if service in __),
238+
(_ for _, __ in CARRIER_SERVICES.items() if str(service_id) in __),
239239
"5000011",
240240
)
241241

242242
@staticmethod
243-
def carrier(service: str) -> str:
244-
return CARRIER_IDS.get(ShippingService.carrier_id(service))
243+
def carrier(service_id: str) -> str:
244+
return CARRIER_IDS.get(ShippingService.carrier_id(service_id))
245245

246246

247247
class ShippingOption(lib.Enum):

modules/connectors/eshipper/karrio/schemas/eshipper/shipping_response.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class LabelDataType:
4343
@s(auto_attribs=True)
4444
class OrderType:
4545
trackingId: Optional[str] = None
46-
orderId: Optional[str] = None
46+
id: Optional[str] = None
4747
message: Optional[str] = None
4848

4949

modules/connectors/eshipper/schemas/shipping_response.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"order": {
33
"trackingId": "string",
4-
"orderId": "string",
4+
"id": "string",
55
"message": "string"
66
},
77
"carrier": {

modules/connectors/eshipper/tests/eshipper/test_rate.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def test_parse_rate_response(self):
102102
"serviceName": "Purolator Ground",
103103
"service_name": "Purolator Ground",
104104
},
105-
"service": "eshipper_purolator_purolator_ground",
105+
"service": "eshipper_purolator_ground",
106106
"total_charge": 37.75,
107107
"transit_days": 1,
108108
},
@@ -123,7 +123,7 @@ def test_parse_rate_response(self):
123123
"serviceName": "Purolator Express",
124124
"service_name": "Purolator Express",
125125
},
126-
"service": "eshipper_purolator_purolator_express",
126+
"service": "eshipper_purolator_express",
127127
"total_charge": 38.44,
128128
"transit_days": 1,
129129
},
@@ -207,7 +207,7 @@ def test_parse_rate_response(self):
207207
"serviceName": "Purolator Express 1030",
208208
"service_name": "Purolator Express 1030",
209209
},
210-
"service": "eshipper_purolator_purolator_express_1030",
210+
"service": "eshipper_purolator_express_1030",
211211
"total_charge": 59.45,
212212
"transit_days": 1,
213213
},
@@ -228,7 +228,7 @@ def test_parse_rate_response(self):
228228
"serviceName": "Purolator Express 9AM",
229229
"service_name": "Purolator Express 9AM",
230230
},
231-
"service": "eshipper_purolator_purolator_express_9am",
231+
"service": "eshipper_purolator_express_9am",
232232
"total_charge": 91.52,
233233
"transit_days": 1,
234234
},

modules/connectors/eshipper/tests/eshipper/test_shipment.py

Lines changed: 34 additions & 94 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)