- Expanded the PedimentoDates, PedimentoPayments, PedimentoTransportMeans, and PedimentoValidation interfaces to include additional fields. - Updated the dates, payments, transport, and validation tab forms to initialize form data directly from the Pedimento object, removing unnecessary API calls for data loading. - Enhanced the payload construction in the edit page to conditionally include sub-resources only if they contain values, improving data handling during creation and update operations. - Adjusted the form bindings to reflect the new structure and ensure proper data flow between the components.
148 lines
8.5 KiB
Python
148 lines
8.5 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=2, 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[int] = Field(None, description="Pedimento type")
|
|
pedimento_code: Optional[str] = Field(
|
|
None, max_length=2, description="Pedimento key"
|
|
)
|
|
regime: Optional[str] = Field(None, 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")
|
|
|
|
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=2, 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: int = Field(..., description="Operation type")
|
|
pedimento_type: int = Field(..., description="Pedimento type")
|
|
regime: str = Field(..., max_length=3, description="Regime")
|
|
status: str = Field(..., max_length=30, description="Status")
|
|
|
|
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=2)
|
|
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[int] = None
|
|
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
|
|
|
|
# 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)
|