КОСТЫЛЬ перетираем дату доставки
Deploy / deploy (push) Successful in 53s

This commit is contained in:
Раис Юсупалиев
2026-06-27 22:52:19 +03:00
parent c942885abe
commit c2728ae268
2 changed files with 12 additions and 32 deletions
@@ -3,7 +3,7 @@
import base64 import base64
import binascii import binascii
from dataclasses import dataclass from dataclasses import dataclass
from datetime import datetime, timedelta from datetime import timedelta
from app.adapters.delivery_providers.cse.constants import ( from app.adapters.delivery_providers.cse.constants import (
resolve_cse_geography, resolve_cse_geography,
@@ -15,8 +15,7 @@ from app.schemas.payment import Address, InitPaymentRequest
from app.schemas.request import DeliveryCalculationRequest from app.schemas.request import DeliveryCalculationRequest
_DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S" _DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S"
_INTERVAL_END_HOUR = 18 _DELIVERY_DATE_OFFSET_DAYS = 7
_MIN_INTERVAL_HOURS = 1
@dataclass(frozen=True) @dataclass(frozen=True)
@@ -121,12 +120,15 @@ def map_cse_save_order_request(
params: CSEOrderRegistrationParams, params: CSEOrderRegistrationParams,
) -> dict[str, Element]: ) -> dict[str, Element]:
system_data = request.system_data 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) delivery_type, _, urgency = split_tariff_code(system_data.tariff.tariff_code)
fields = [ fields = [
make_field("TakeDate", take_date, "dateTime"), 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("Sender", request.sender_contact.full_name),
make_field( make_field(
"SenderGeography", "SenderGeography",
@@ -153,16 +155,7 @@ def map_cse_save_order_request(
if delivery_type: if delivery_type:
fields.append(make_field("DeliveryOfCargo", delivery_type)) fields.append(make_field("DeliveryOfCargo", delivery_type))
if request.delivery_date is not None: fields.append(make_field("DeliveryDate", delivery_date, "dateTime"))
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"))
if request.content.description: if request.content.description:
fields.append(make_field("CargoDescription", request.content.description)) fields.append(make_field("CargoDescription", request.content.description))
fields.append(make_field("Comment", 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: def map_cse_save_order_response(root: Element) -> CSEOrderRegistrationResult:
for document in root.items: for document in root.items:
number = document.property_value("Number") number = document.property_value("Number")
@@ -656,8 +656,9 @@ def test_save_order_request_uses_selected_tariff_urgency() -> None:
assert order.field_value("CargoCost") == "50000" 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( request = make_init_payment_request(
deliveryDate="2026-05-18T18:00:00.000Z",
systemData={ systemData={
"tariff": { "tariff": {
"provider": "cse", "provider": "cse",
@@ -670,16 +671,14 @@ def test_save_order_request_sends_pickup_and_delivery_intervals() -> None:
"parcelType": "parcel", "parcelType": "parcel",
"weight": "1.0", "weight": "1.0",
"dimensions": {"length": "10", "width": "10", "height": "10"}, "dimensions": {"length": "10", "width": "10", "height": "10"},
} },
) )
body = order_mapper.map_cse_save_order_request(request, "order-uuid-1", _params()) body = order_mapper.map_cse_save_order_request(request, "order-uuid-1", _params())
order = body["data"].items[0] order = body["data"].items[0]
assert order.field_value("TakeDate") == "2026-05-15T10:00:00" 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-22T10:00:00"
assert order.field_value("DeliveryDate") == "2026-05-18T18:00:00"
assert order.field_value("DeliveryDateOf") == "2026-05-18T19:00:00"
def test_application_error_in_response_raises_request_error() -> None: def test_application_error_in_response_raises_request_error() -> None: