This commit is contained in:
@@ -126,7 +126,9 @@ def map_cdek_order_info_response(payload: dict[str, Any]) -> CDEKOrderInfo:
|
||||
"CDEK order info response must include entity.uuid."
|
||||
)
|
||||
|
||||
status_code = _latest_status_code(entity.get("statuses"))
|
||||
status_code = _invalid_create_request_status(
|
||||
payload.get("requests")
|
||||
) or _latest_status_code(entity.get("statuses"))
|
||||
waybill_uuid, _ = _extract_waybill(payload)
|
||||
return CDEKOrderInfo(
|
||||
order_uuid=order_uuid,
|
||||
@@ -172,6 +174,20 @@ def _latest_status_code(statuses: object) -> str | None:
|
||||
return dated[-1][1]
|
||||
|
||||
|
||||
def _invalid_create_request_status(requests: object) -> str | None:
|
||||
if not isinstance(requests, list):
|
||||
return None
|
||||
for entry in requests:
|
||||
if not isinstance(entry, dict):
|
||||
continue
|
||||
if entry.get("type") != "CREATE" or entry.get("state") != "INVALID":
|
||||
continue
|
||||
errors = entry.get("errors")
|
||||
if isinstance(errors, list) and errors:
|
||||
return "INVALID"
|
||||
return None
|
||||
|
||||
|
||||
def _extract_waybill(payload: dict[str, Any]) -> tuple[str | None, str | None]:
|
||||
entity = payload.get("entity")
|
||||
related_entities = (
|
||||
@@ -306,16 +322,6 @@ def _map_package(request: InitPaymentRequest, order_uuid: str) -> dict[str, Any]
|
||||
"number": order_uuid,
|
||||
"weight": weight_grams,
|
||||
"comment": description,
|
||||
"items": [
|
||||
{
|
||||
"name": description,
|
||||
"ware_key": order_uuid,
|
||||
"payment": {"value": 0},
|
||||
"cost": request.content.declared_value,
|
||||
"amount": 1,
|
||||
"weight": weight_grams,
|
||||
}
|
||||
],
|
||||
}
|
||||
if system_data.parcel_type == "parcel" and system_data.dimensions is not None:
|
||||
package.update(_map_dimensions(system_data.dimensions))
|
||||
|
||||
Reference in New Issue
Block a user