151 lines
8.7 KiB
Python
151 lines
8.7 KiB
Python
from datetime import datetime
|
|
from decimal import Decimal
|
|
from enum import IntEnum
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
from .pedimento_config_additional import PedimentoConfigAdditionalCreate, PedimentoConfigAdditionalResponse
|
|
from .pedimento_config_calculations import PedimentoConfigCalculationsCreate, PedimentoConfigCalculationsResponse
|
|
from .pedimento_config_parameters import PedimentoConfigParametersCreate, PedimentoConfigParametersResponse
|
|
from .pedimento_config_surcharges import PedimentoConfigSurchargesCreate, PedimentoConfigSurchargesResponse
|
|
from .pedimento_config_update_rectification import PedimentoConfigUpdateRectificationCreate, PedimentoConfigUpdateRectificationResponse
|
|
from .pedimento_config_updates import PedimentoConfigUpdatesCreate, PedimentoConfigUpdatesResponse
|
|
from .pedimento_customs_offices import PedimentoCustomsOfficesCreate, PedimentoCustomsOfficesResponse
|
|
from .pedimento_dates import PedimentoDatesCreate, PedimentoDatesResponse
|
|
from .pedimento_decrementables import PedimentoDecrementablesCreate, PedimentoDecrementablesResponse
|
|
from .pedimento_incrementables import PedimentoIncrementablesCreate, PedimentoIncrementablesResponse
|
|
from .pedimento_indexes import PedimentoIndexesCreate, PedimentoIndexesResponse
|
|
from .pedimento_payments import PedimentoPaymentsCreate, PedimentoPaymentsResponse
|
|
from .pedimento_rectification_destination import PedimentoRectificationDestinationCreate, PedimentoRectificationDestinationResponse
|
|
from .pedimento_rectification_origin import PedimentoRectificationOriginCreate, PedimentoRectificationOriginResponse
|
|
from .pedimento_transport_means import PedimentoTransportMeansCreate, PedimentoTransportMeansResponse
|
|
from .pedimento_validation import PedimentoValidationCreate, PedimentoValidationResponse
|
|
|
|
|
|
class OperationType(IntEnum):
|
|
EXPORTACION = 1
|
|
IMPORTACION = 2
|
|
|
|
|
|
class PedimentosBase(BaseModel):
|
|
"""Base schema for Pedimentos"""
|
|
|
|
year: Optional[str] = Field(None, max_length=2, description="Year")
|
|
customs_office: Optional[str] = Field(
|
|
None, max_length=3, description="Customs office"
|
|
)
|
|
license: Optional[str] = Field(None, max_length=4, description="License")
|
|
pedimento_number: Optional[str] = Field(
|
|
None, max_length=7, description="Pedimento number"
|
|
)
|
|
client_id: Optional[int] = Field(None, description="Client ID")
|
|
operation_type: Optional[int] = Field(None, description="Operation type")
|
|
pedimento_type: Optional[str] = Field(None, max_length=20, description="Pedimento type")
|
|
pedimento_code: str = Field(
|
|
..., max_length=2, description="Pedimento key"
|
|
)
|
|
regime: str = Field(..., max_length=3, description="Regime")
|
|
status: Optional[str] = Field(None, max_length=30, description="Status")
|
|
usd_value: Optional[Decimal] = Field(None, description="USD value")
|
|
paid_price: Optional[Decimal] = Field(None, description="Paid price")
|
|
gross_weight: Optional[Decimal] = Field(None, description="Gross weight")
|
|
exchange_rate: Optional[Decimal] = Field(None, description="Exchange rate")
|
|
observations: Optional[str] = Field(None, description="Observations")
|
|
|
|
class PedimentosCreate(PedimentosBase):
|
|
"""Schema for creating a new Pedimento"""
|
|
|
|
# Override to make required fields non-optional
|
|
year: str = Field(..., max_length=2, description="Year")
|
|
customs_office: str = Field(..., max_length=3, description="Customs office")
|
|
license: str = Field(..., max_length=4, description="License")
|
|
pedimento_number: str = Field(..., max_length=7, description="Pedimento number")
|
|
client_id: int = Field(..., description="Client ID")
|
|
# operation_type, pedimento_type, status son opcionales - se pueden llenar después
|
|
pedimento_code: str = Field(
|
|
..., max_length=2, description="Pedimento key"
|
|
)
|
|
regime: str = Field(..., max_length=3, description="Regime")
|
|
|
|
pedimento_dates: Optional[PedimentoDatesCreate] = None
|
|
pedimento_decrementables: Optional[PedimentoDecrementablesCreate] = None
|
|
pedimento_incrementables: Optional[PedimentoIncrementablesCreate] = None
|
|
pedimento_indexes: Optional[PedimentoIndexesCreate] = None
|
|
pedimento_validation: Optional[PedimentoValidationCreate] = None
|
|
pedimento_customs_offices: Optional[PedimentoCustomsOfficesCreate] = None
|
|
pedimento_payments: Optional[PedimentoPaymentsCreate] = None
|
|
pedimento_rectification_destination: Optional[PedimentoRectificationDestinationCreate] = None
|
|
pedimento_rectification_origin: Optional[PedimentoRectificationOriginCreate] = None
|
|
pedimento_transport_means: Optional[PedimentoTransportMeansCreate] = None
|
|
pedimento_config_additional: Optional[PedimentoConfigAdditionalCreate] = None
|
|
pedimento_config_calculations: Optional[PedimentoConfigCalculationsCreate] = None
|
|
pedimento_config_parameters: Optional[PedimentoConfigParametersCreate] = None
|
|
pedimento_config_surcharges: Optional[PedimentoConfigSurchargesCreate] = None
|
|
pedimento_config_update_rectification: Optional[PedimentoConfigUpdateRectificationCreate] = None
|
|
pedimento_config_updates: Optional[PedimentoConfigUpdatesCreate] = None
|
|
|
|
class PedimentosUpdate(BaseModel):
|
|
"""Schema for updating a Pedimento"""
|
|
|
|
year: Optional[str] = Field(None, max_length=2)
|
|
customs_office: Optional[str] = Field(None, max_length=3)
|
|
license: Optional[str] = Field(None, max_length=4)
|
|
pedimento_number: Optional[str] = Field(None, max_length=7)
|
|
client_id: Optional[int] = None
|
|
operation_type: Optional[int] = None
|
|
pedimento_type: Optional[str] = Field(None, max_length=20)
|
|
pedimento_code: Optional[str] = Field(None, max_length=2)
|
|
regime: Optional[str] = Field(None, max_length=3)
|
|
status: Optional[str] = Field(None, max_length=30)
|
|
usd_value: Optional[Decimal] = None
|
|
paid_price: Optional[Decimal] = None
|
|
gross_weight: Optional[Decimal] = None
|
|
exchange_rate: Optional[Decimal] = None
|
|
observations: Optional[str] = None
|
|
|
|
# Sub-resources
|
|
pedimento_dates: Optional[PedimentoDatesCreate] = None
|
|
pedimento_decrementables: Optional[PedimentoDecrementablesCreate] = None
|
|
pedimento_incrementables: Optional[PedimentoIncrementablesCreate] = None
|
|
pedimento_indexes: Optional[PedimentoIndexesCreate] = None
|
|
pedimento_validation: Optional[PedimentoValidationCreate] = None
|
|
pedimento_customs_offices: Optional[PedimentoCustomsOfficesCreate] = None
|
|
pedimento_payments: Optional[PedimentoPaymentsCreate] = None
|
|
pedimento_rectification_destination: Optional[PedimentoRectificationDestinationCreate] = None
|
|
pedimento_rectification_origin: Optional[PedimentoRectificationOriginCreate] = None
|
|
pedimento_transport_means: Optional[PedimentoTransportMeansCreate] = None
|
|
pedimento_config_additional: Optional[PedimentoConfigAdditionalCreate] = None
|
|
pedimento_config_calculations: Optional[PedimentoConfigCalculationsCreate] = None
|
|
pedimento_config_parameters: Optional[PedimentoConfigParametersCreate] = None
|
|
pedimento_config_surcharges: Optional[PedimentoConfigSurchargesCreate] = None
|
|
pedimento_config_update_rectification: Optional[PedimentoConfigUpdateRectificationCreate] = None
|
|
pedimento_config_updates: Optional[PedimentoConfigUpdatesCreate] = None
|
|
|
|
|
|
class PedimentosResponse(PedimentosBase):
|
|
"""Schema for Pedimento response"""
|
|
|
|
id: int
|
|
tenant_id: int
|
|
created_at: datetime
|
|
|
|
pedimento_dates: Optional[PedimentoDatesResponse] = None
|
|
pedimento_decrementables: Optional[PedimentoDecrementablesResponse] = None
|
|
pedimento_incrementables: Optional[PedimentoIncrementablesResponse] = None
|
|
pedimento_indexes: Optional[PedimentoIndexesResponse] = None
|
|
pedimento_validation: Optional[PedimentoValidationResponse] = None
|
|
pedimento_customs_offices: Optional[PedimentoCustomsOfficesResponse] = None
|
|
pedimento_payments: Optional[PedimentoPaymentsResponse] = None
|
|
pedimento_rectification_destination: Optional[PedimentoRectificationDestinationResponse] = None
|
|
pedimento_rectification_origin: Optional[PedimentoRectificationOriginResponse] = None
|
|
pedimento_transport_means: Optional[PedimentoTransportMeansResponse] = None
|
|
pedimento_config_additional: Optional[PedimentoConfigAdditionalResponse] = None
|
|
pedimento_config_calculations: Optional[PedimentoConfigCalculationsResponse] = None
|
|
pedimento_config_parameters: Optional[PedimentoConfigParametersResponse] = None
|
|
pedimento_config_surcharges: Optional[PedimentoConfigSurchargesResponse] = None
|
|
pedimento_config_update_rectification: Optional[PedimentoConfigUpdateRectificationResponse] = None
|
|
pedimento_config_updates: Optional[PedimentoConfigUpdatesResponse] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|