- Updated SealService to support tenant and company filtering with pagination and enhanced CRUD methods. - Refactored TrailerService to include tenant and company support, added filtering capabilities, and improved CRUD methods. - Introduced TenantCRUDRoutes for Trailer and Transporter routes to streamline API endpoint creation and management. - Enhanced TransporterService with tenant and company filtering, pagination, and improved CRUD operations. - Added Customs Broker module with DTOs, models, services, and routes for managing customs broker data. - Implemented CRUD operations for Customs Broker, including personnel and VU management. - Improved data validation and descriptions in DTOs for better API documentation.
224 lines
7.7 KiB
Python
224 lines
7.7 KiB
Python
"""
|
|
DTOs (Data Transfer Objects) para módulo de empresa
|
|
Reemplaza schemas.py siguiendo enfoque DDD y estilo NestJS
|
|
"""
|
|
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class CompanyCreateDTO(BaseModel):
|
|
"""DTO para crear una empresa"""
|
|
|
|
name: Optional[str] = Field(None, max_length=255, description="Company name")
|
|
rfc: Optional[str] = Field(None, max_length=30, description="Company RFC")
|
|
main_activity: Optional[str] = Field(
|
|
None, max_length=255, description="Main activity"
|
|
)
|
|
|
|
# Program information
|
|
program: Optional[str] = Field(None, max_length=10, description="Program")
|
|
program_number: Optional[str] = Field(
|
|
None, max_length=40, description="Program number"
|
|
)
|
|
prosec: Optional[int] = Field(None, description="PROSEC")
|
|
prosec_authorization: Optional[str] = Field(
|
|
None, max_length=20, description="PROSEC authorization"
|
|
)
|
|
|
|
# Identifiers
|
|
manufacturer_id: Optional[str] = Field(
|
|
None, max_length=25, description="Manufacturer ID"
|
|
)
|
|
broker_company: Optional[str] = Field(
|
|
None, max_length=10, description="Broker company"
|
|
)
|
|
|
|
# Responsible person
|
|
responsible: Optional[str] = Field(
|
|
None, max_length=80, description="Responsible person"
|
|
)
|
|
responsible_name: Optional[str] = Field(
|
|
None, max_length=20, description="Responsible first name"
|
|
)
|
|
responsible_last_name: Optional[str] = Field(
|
|
None, max_length=20, description="Responsible last name"
|
|
)
|
|
responsible_mother_last_name: Optional[str] = Field(
|
|
None, max_length=20, description="Responsible mother's last name"
|
|
)
|
|
responsible_rfc: Optional[str] = Field(
|
|
None, max_length=30, description="Responsible RFC"
|
|
)
|
|
position: Optional[str] = Field(
|
|
None, max_length=30, description="Responsible position"
|
|
)
|
|
|
|
# Configuration
|
|
logo: Optional[str] = Field(None, max_length=255, description="Company logo")
|
|
has_express_line: Optional[bool] = Field(None, description="Has express line")
|
|
order_format_type: Optional[str] = Field(
|
|
None, max_length=19, description="Order format type"
|
|
)
|
|
previous_code: Optional[int] = Field(None, description="Previous code")
|
|
is_service_company: Optional[bool] = Field(None, description="Is service company")
|
|
|
|
# Client and subassembly
|
|
client_name: Optional[str] = Field(None, max_length=300, description="Client name")
|
|
subassembly_mode: Optional[str] = Field(
|
|
None, max_length=7, description="Subassembly mode"
|
|
)
|
|
|
|
# Additional information
|
|
curp: Optional[str] = Field(None, max_length=19, description="CURP")
|
|
inter_db_name: Optional[str] = Field(
|
|
None, max_length=100, description="Inter DB name"
|
|
)
|
|
ctpat_svi: Optional[str] = Field(None, max_length=100, description="CTPAT SVI")
|
|
trusted_exporter_number: Optional[str] = Field(
|
|
None, max_length=50, description="Trusted exporter number"
|
|
)
|
|
prevalidator_key: Optional[str] = Field(
|
|
None, max_length=20, description="Prevalidator key"
|
|
)
|
|
seventh_amendment: Optional[bool] = Field(None, description="Seventh amendment")
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class CompanyUpdateDTO(BaseModel):
|
|
"""DTO para actualizar una empresa"""
|
|
|
|
name: Optional[str] = Field(None, max_length=255, description="Company name")
|
|
rfc: Optional[str] = Field(None, max_length=30, description="Company RFC")
|
|
main_activity: Optional[str] = Field(
|
|
None, max_length=255, description="Main activity"
|
|
)
|
|
|
|
# Program information
|
|
program: Optional[str] = Field(None, max_length=10, description="Program")
|
|
program_number: Optional[str] = Field(
|
|
None, max_length=40, description="Program number"
|
|
)
|
|
prosec: Optional[int] = Field(None, description="PROSEC")
|
|
prosec_authorization: Optional[str] = Field(
|
|
None, max_length=20, description="PROSEC authorization"
|
|
)
|
|
|
|
# Identifiers
|
|
manufacturer_id: Optional[str] = Field(
|
|
None, max_length=25, description="Manufacturer ID"
|
|
)
|
|
broker_company: Optional[str] = Field(
|
|
None, max_length=10, description="Broker company"
|
|
)
|
|
|
|
# Responsible person
|
|
responsible: Optional[str] = Field(
|
|
None, max_length=80, description="Responsible person"
|
|
)
|
|
responsible_name: Optional[str] = Field(
|
|
None, max_length=20, description="Responsible first name"
|
|
)
|
|
responsible_last_name: Optional[str] = Field(
|
|
None, max_length=20, description="Responsible last name"
|
|
)
|
|
responsible_mother_last_name: Optional[str] = Field(
|
|
None, max_length=20, description="Responsible mother's last name"
|
|
)
|
|
responsible_rfc: Optional[str] = Field(
|
|
None, max_length=30, description="Responsible RFC"
|
|
)
|
|
position: Optional[str] = Field(
|
|
None, max_length=30, description="Responsible position"
|
|
)
|
|
|
|
# Configuration
|
|
logo: Optional[str] = Field(None, max_length=255, description="Company logo")
|
|
has_express_line: Optional[bool] = Field(None, description="Has express line")
|
|
order_format_type: Optional[str] = Field(
|
|
None, max_length=19, description="Order format type"
|
|
)
|
|
previous_code: Optional[int] = Field(None, description="Previous code")
|
|
is_service_company: Optional[bool] = Field(None, description="Is service company")
|
|
|
|
# Client and subassembly
|
|
client_name: Optional[str] = Field(None, max_length=300, description="Client name")
|
|
subassembly_mode: Optional[str] = Field(
|
|
None, max_length=7, description="Subassembly mode"
|
|
)
|
|
|
|
# Additional information
|
|
curp: Optional[str] = Field(None, max_length=19, description="CURP")
|
|
inter_db_name: Optional[str] = Field(
|
|
None, max_length=100, description="Inter DB name"
|
|
)
|
|
ctpat_svi: Optional[str] = Field(None, max_length=100, description="CTPAT SVI")
|
|
trusted_exporter_number: Optional[str] = Field(
|
|
None, max_length=50, description="Trusted exporter number"
|
|
)
|
|
prevalidator_key: Optional[str] = Field(
|
|
None, max_length=20, description="Prevalidator key"
|
|
)
|
|
seventh_amendment: Optional[bool] = Field(None, description="Seventh amendment")
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class CompanyResponseDTO(BaseModel):
|
|
"""DTO para respuesta de empresa"""
|
|
|
|
id: int
|
|
tenant_id: int
|
|
name: Optional[str] = None
|
|
rfc: Optional[str] = None
|
|
main_activity: Optional[str] = None
|
|
|
|
# Program information
|
|
program: Optional[str] = None
|
|
program_number: Optional[str] = None
|
|
prosec: Optional[int] = None
|
|
prosec_authorization: Optional[str] = None
|
|
|
|
# Identifiers
|
|
manufacturer_id: Optional[str] = None
|
|
broker_company: Optional[str] = None
|
|
|
|
# Responsible person
|
|
responsible: Optional[str] = None
|
|
responsible_name: Optional[str] = None
|
|
responsible_last_name: Optional[str] = None
|
|
responsible_mother_last_name: Optional[str] = None
|
|
responsible_rfc: Optional[str] = None
|
|
position: Optional[str] = None
|
|
|
|
# Configuration
|
|
logo: Optional[str] = None
|
|
has_express_line: Optional[bool] = None
|
|
order_format_type: Optional[str] = None
|
|
previous_code: Optional[int] = None
|
|
is_service_company: Optional[bool] = None
|
|
|
|
# Client and subassembly
|
|
client_name: Optional[str] = None
|
|
subassembly_mode: Optional[str] = None
|
|
|
|
# Additional information
|
|
curp: Optional[str] = None
|
|
inter_db_name: Optional[str] = None
|
|
ctpat_svi: Optional[str] = None
|
|
trusted_exporter_number: Optional[str] = None
|
|
prevalidator_key: Optional[str] = None
|
|
seventh_amendment: Optional[bool] = None
|
|
|
|
# Timestamps
|
|
created_at: datetime
|
|
updated_at: Optional[datetime] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|