fix pickup date
Deploy / deploy (push) Successful in 1m2s

This commit is contained in:
Раис Юсупалиев
2026-06-27 22:41:10 +03:00
parent 7287a1398e
commit c942885abe
2 changed files with 46 additions and 3 deletions
@@ -3,6 +3,7 @@
import base64
import binascii
from dataclasses import dataclass
from datetime import datetime, timedelta
from app.adapters.delivery_providers.cse.constants import (
resolve_cse_geography,
@@ -14,6 +15,8 @@ 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
@dataclass(frozen=True)
@@ -118,12 +121,12 @@ def map_cse_save_order_request(
params: CSEOrderRegistrationParams,
) -> dict[str, Element]:
system_data = request.system_data
take_date = request.pickup_date.strftime(_DATETIME_FORMAT)
take_date, take_date_of = _datetime_interval(request.pickup_date)
delivery_type, _, urgency = split_tariff_code(system_data.tariff.tariff_code)
fields = [
make_field("TakeDate", take_date, "dateTime"),
make_field("TakeDateOf", take_date, "dateTime"),
make_field("TakeDateOf", take_date_of, "dateTime"),
make_field("Sender", request.sender_contact.full_name),
make_field(
"SenderGeography",
@@ -151,13 +154,15 @@ def map_cse_save_order_request(
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",
request.delivery_date.strftime(_DATETIME_FORMAT),
delivery_date,
"dateTime",
)
)
fields.append(make_field("DeliveryDateOf", delivery_date_of, "dateTime"))
if request.content.description:
fields.append(make_field("CargoDescription", request.content.description))
fields.append(make_field("Comment", request.content.description))
@@ -186,6 +191,18 @@ 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")