diff --git a/app/adapters/delivery_providers/cse/order_mapper.py b/app/adapters/delivery_providers/cse/order_mapper.py index 4680262..02b3ab8 100644 --- a/app/adapters/delivery_providers/cse/order_mapper.py +++ b/app/adapters/delivery_providers/cse/order_mapper.py @@ -3,7 +3,7 @@ import base64 import binascii from dataclasses import dataclass -from datetime import datetime, timedelta +from datetime import timedelta from app.adapters.delivery_providers.cse.constants import ( resolve_cse_geography, @@ -15,8 +15,7 @@ from app.schemas.payment import Address, InitPaymentRequest from app.schemas.request import DeliveryCalculationRequest _DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S" -_INTERVAL_END_HOUR = 18 -_MIN_INTERVAL_HOURS = 1 +_DELIVERY_DATE_OFFSET_DAYS = 7 @dataclass(frozen=True) @@ -121,12 +120,15 @@ def map_cse_save_order_request( params: CSEOrderRegistrationParams, ) -> dict[str, Element]: system_data = request.system_data - take_date, take_date_of = _datetime_interval(request.pickup_date) + take_date = request.pickup_date.strftime(_DATETIME_FORMAT) + delivery_date = ( + request.pickup_date + timedelta(days=_DELIVERY_DATE_OFFSET_DAYS) + ).strftime(_DATETIME_FORMAT) delivery_type, _, urgency = split_tariff_code(system_data.tariff.tariff_code) fields = [ make_field("TakeDate", take_date, "dateTime"), - make_field("TakeDateOf", take_date_of, "dateTime"), + make_field("TakeDateOf", take_date, "dateTime"), make_field("Sender", request.sender_contact.full_name), make_field( "SenderGeography", @@ -153,16 +155,7 @@ def map_cse_save_order_request( if delivery_type: fields.append(make_field("DeliveryOfCargo", delivery_type)) - if request.delivery_date is not None: - delivery_date, delivery_date_of = _datetime_interval(request.delivery_date) - fields.append( - make_field( - "DeliveryDate", - delivery_date, - "dateTime", - ) - ) - fields.append(make_field("DeliveryDateOf", delivery_date_of, "dateTime")) + fields.append(make_field("DeliveryDate", delivery_date, "dateTime")) if request.content.description: fields.append(make_field("CargoDescription", request.content.description)) fields.append(make_field("Comment", request.content.description)) @@ -191,18 +184,6 @@ def map_cse_save_order_request( } -def _datetime_interval(value: datetime) -> tuple[str, str]: - interval_end = value.replace( - hour=_INTERVAL_END_HOUR, - minute=0, - second=0, - microsecond=0, - ) - if interval_end <= value: - interval_end = value + timedelta(hours=_MIN_INTERVAL_HOURS) - return value.strftime(_DATETIME_FORMAT), interval_end.strftime(_DATETIME_FORMAT) - - def map_cse_save_order_response(root: Element) -> CSEOrderRegistrationResult: for document in root.items: number = document.property_value("Number") diff --git a/tests/adapters/delivery_providers/cse/test_cse_adapter.py b/tests/adapters/delivery_providers/cse/test_cse_adapter.py index 5dcc8d3..0129a14 100644 --- a/tests/adapters/delivery_providers/cse/test_cse_adapter.py +++ b/tests/adapters/delivery_providers/cse/test_cse_adapter.py @@ -656,8 +656,9 @@ def test_save_order_request_uses_selected_tariff_urgency() -> None: assert order.field_value("CargoCost") == "50000" -def test_save_order_request_sends_pickup_and_delivery_intervals() -> None: +def test_save_order_request_uses_pickup_date_plus_seven_days_as_delivery_date() -> None: request = make_init_payment_request( + deliveryDate="2026-05-18T18:00:00.000Z", systemData={ "tariff": { "provider": "cse", @@ -670,16 +671,14 @@ def test_save_order_request_sends_pickup_and_delivery_intervals() -> None: "parcelType": "parcel", "weight": "1.0", "dimensions": {"length": "10", "width": "10", "height": "10"}, - } + }, ) body = order_mapper.map_cse_save_order_request(request, "order-uuid-1", _params()) order = body["data"].items[0] assert order.field_value("TakeDate") == "2026-05-15T10:00:00" - assert order.field_value("TakeDateOf") == "2026-05-15T18:00:00" - assert order.field_value("DeliveryDate") == "2026-05-18T18:00:00" - assert order.field_value("DeliveryDateOf") == "2026-05-18T19:00:00" + assert order.field_value("DeliveryDate") == "2026-05-22T10:00:00" def test_application_error_in_response_raises_request_error() -> None: