оценочная стоимость отправляется в cdek
Deploy / deploy (push) Successful in 1m1s

This commit is contained in:
Раис Юсупалиев
2026-06-26 20:59:27 +03:00
parent 6906db7739
commit 2d8f31d3d9
2 changed files with 33 additions and 0 deletions
@@ -20,6 +20,7 @@ class CDEKOrderMappingError(ValueError):
_CDEK_WAYBILL_PRINT_TYPE = "WAYBILL"
_CDEK_WAYBILL_RELATED_ENTITY_TYPE = "waybill"
_CDEK_INSURANCE_SERVICE_CODE = "INSURANCE"
@dataclass(frozen=True)
@@ -56,6 +57,9 @@ def map_cdek_order_request(
"to_location": _map_location(request.receiver_address),
"packages": [_map_package(request, order_uuid)],
}
services = _map_services(request)
if services:
payload["services"] = services
if request.content.description:
payload["comment"] = request.content.description
return payload
@@ -328,6 +332,18 @@ def _map_package(request: InitPaymentRequest, order_uuid: str) -> dict[str, Any]
return package
def _map_services(request: InitPaymentRequest) -> list[dict[str, Any]]:
declared_value = request.content.declared_value
if declared_value <= 0:
return []
return [
{
"code": _CDEK_INSURANCE_SERVICE_CODE,
"parameter": declared_value,
}
]
def _map_dimensions(dimensions: Dimensions) -> dict[str, int]:
return {
"length": centimeters_string_to_int(dimensions.length, "length"),
@@ -29,6 +29,23 @@ def test_order_payload_requests_waybill_print() -> None:
assert payload["print"] == "WAYBILL"
def test_order_payload_maps_declared_value_to_insurance_service() -> None:
payload = map_cdek_order_request(make_init_payment_request(), "order-uuid-1")
assert payload["services"] == [{"code": "INSURANCE", "parameter": 50000}]
def test_order_payload_omits_insurance_service_for_zero_declared_value() -> None:
payload = map_cdek_order_request(
make_init_payment_request(
content={"description": "Docs", "declared_value": 0}
),
"order-uuid-1",
)
assert "services" not in payload
def test_map_cdek_order_response_extracts_order_uuid_without_waybill() -> None:
result = map_cdek_order_response({"entity": {"uuid": "cdek-order-uuid"}})