Исходный код cdek.apps.payment.responses
from __future__ import annotations
from datetime import date as Date
from datetime import datetime as DateTime
from uuid import UUID
from pydantic import BaseModel, Field, field_serializer
from ..models.error import Error
from ..models.warning import WarningModel
[документация]
class PaymentOrder(BaseModel):
order_uuid: UUID = Field(
...,
description="Идентификатор заказа в ИС СДЭК. "
"Обязателен, если не указан номер заказа",
)
cdek_number: int = Field(
...,
description="Номер заказа СДЭК. Обязателен, "
"если не указан идентификатор заказа",
)
number: str = Field(..., description="Номер заказа в ИС Клиента")
[документация]
class PaymentInfoResponse(BaseModel):
orders: list[PaymentOrder] | None = Field(None, description="Список заказов")
errors: list[Error] | None = Field(None, description="Список ошибок")
warnings: list[WarningModel] | None = Field(
None, description="Список предупреждений"
)
[документация]
class RegistryOrder(BaseModel):
cdek_number: str = Field(
...,
description="Номер заказа СДЭК. Обязателен, "
"если не указан идентификатор заказа",
)
transfer_sum: float = Field(
..., description="Сумма к начислению (в валюте взаиморасчетов)"
)
payment_sum: float = Field(
...,
description="Сумма наложенного платежа, которую взяли с получателя"
" (в валюте взаиморасчетов)",
)
total_sum_without_agent: float = Field(
...,
description="Итоговая стоимость заказа без учета агентского вознаграждения"
" (в валюте взаиморасчетов)",
)
agent_commission_sum: float = Field(
...,
description="Агентское вознаграждение по переводу наложенного платежа "
" (в валюте взаиморасчетов)",
)
[документация]
class Registry(BaseModel):
registry_number: int = Field(..., description="Номер реестра наложенного платежа")
payment_date: Date | None = Field(
None, description="Фактическая дата оплаты реестра наложенного платежа"
)
sum: float = Field(..., description="Сумма по реестру (в валюте взаиморасчетов)")
payment_order_number: str | None = Field(
None,
description=(
"Номер платежного поручения, в рамках которого был осуществлен платеж. "
"Если атрибут отсутствует или пустой, свяжитесь со своим менеджером"
),
)
orders: list[RegistryOrder] = Field(..., description="Список заказов реестра")
date_created: DateTime | None = Field(
None, description="Дата создания реестра наложенного платежа"
)
[документация]
@field_serializer("date_created")
def serialize_date_created(self, date_created: DateTime) -> str:
"""Вернуть дату создания реестра в формате ISO 8601"""
return date_created.strftime("%Y-%m-%dT%H:%M:%S")
[документация]
@field_serializer("payment_date")
def serialize_payment_date(self, payment_date: Date) -> str:
"""Представить дату оплаты реестра в формате YYYY-MM-DD"""
return payment_date.strftime("%Y-%m-%d")
[документация]
class PaymentResponse(BaseModel):
registries: list[Registry] | None = Field(None, description="Список реестров")
errors: list[Error] | None = Field(None, description="Список ошибок")
warnings: list[WarningModel] | None = Field(
None, description="Список предупреждений"
)