""" Modelos ORM para gestión de empresa """ from typing import Optional from datetime import datetime from sqlalchemy import DateTime, Integer, String, Boolean, SmallInteger, ForeignKey, PrimaryKeyConstraint, ForeignKeyConstraint from sqlalchemy.sql import func from sqlalchemy.orm import Mapped, mapped_column from core.database import Base class Company(Base): """ Modelo para la tabla Company - Información de la empresa """ __tablename__ = "company" __table_args__ = ( PrimaryKeyConstraint('id', name='company_pkey'), ForeignKeyConstraint(['tenant_id'], ['a76.tenants.id'], name='fk_company_tenant'), {"schema": "a76"} ) # Primary key id: Mapped[int] = mapped_column(Integer, primary_key=True) # Información básica de la empresa name: Mapped[Optional[str]] = mapped_column(String(255)) rfc: Mapped[Optional[str]] = mapped_column(String(30)) main_activity: Mapped[Optional[str]] = mapped_column(String(255)) # Información del programa program: Mapped[Optional[str]] = mapped_column(String(10)) program_number: Mapped[Optional[str]] = mapped_column(String(40)) prosec: Mapped[Optional[int]] = mapped_column(SmallInteger) prosec_authorization: Mapped[Optional[str]] = mapped_column(String(20)) # Identificadores manufacturer_id: Mapped[Optional[str]] = mapped_column(String(25)) broker_company: Mapped[Optional[str]] = mapped_column(String(10)) # Responsable responsible: Mapped[Optional[str]] = mapped_column(String(80)) responsible_name: Mapped[Optional[str]] = mapped_column(String(20)) responsible_last_name: Mapped[Optional[str]] = mapped_column(String(20)) responsible_mother_last_name: Mapped[Optional[str]] = mapped_column(String(20)) responsible_rfc: Mapped[Optional[str]] = mapped_column(String(30)) position: Mapped[Optional[str]] = mapped_column(String(30)) # Configuración logo: Mapped[Optional[str]] = mapped_column(String(255)) has_express_line: Mapped[Optional[bool]] = mapped_column(Boolean) order_format_type: Mapped[Optional[str]] = mapped_column(String(19)) previous_code: Mapped[Optional[int]] = mapped_column(SmallInteger) is_service_company: Mapped[Optional[bool]] = mapped_column(Boolean) # Cliente y submaquila client_name: Mapped[Optional[str]] = mapped_column(String(300)) subassembly_mode: Mapped[Optional[str]] = mapped_column(String(7)) # Información adicional curp: Mapped[Optional[str]] = mapped_column(String(19)) inter_db_name: Mapped[Optional[str]] = mapped_column(String(100)) ctpat_svi: Mapped[Optional[str]] = mapped_column(String(100)) trusted_exporter_number: Mapped[Optional[str]] = mapped_column(String(50)) prevalidator_key: Mapped[Optional[str]] = mapped_column(String(20)) seventh_amendment: Mapped[Optional[bool]] = mapped_column(Boolean) # FINALCONTADORAELECTRONICO renombrado # Timestamps created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, default=func.now()) updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, default=func.now(), onupdate=func.now()) deleted_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True) tenant_id: Mapped[int] = mapped_column(Integer, nullable=False, index=True)