# Importar modelos para Audit Log
from api.v1.modules.a76.pedmientos.models.pedimentos import Pedimentos
from api.v1.modules.a76.invoices.models import (
    InvoiceHeader,
    InvoiceSalesDetails,
    InvoiceComplianceMx,
    InvoiceFinancials,
    InvoiceLogistics,
    InvoiceCollections,
)
from api.v1.modules.a76.audit_log.events import register_audit_listeners

# Core Modules
from api.v1.modules.a76.clients_and_providers.models import ClientProvider
from api.v1.modules.a76.customs_brokers.models import (
    CustomsBroker,
    CustomsBrokerVU,
    CustomsBrokerPersonnel,
)
from api.v1.modules.a76.parts.models import Part
from api.v1.modules.a76.items.models import LineItem
from api.v1.modules.a76.items.series.models import Serie
from api.v1.modules.a76.general_catalogs.company.models import Company

# Reference Data
from api.v1.modules.public.reference_data.countries.models import Country
from api.v1.modules.public.reference_data.currency_types.models import CurrencyType
from api.v1.modules.public.reference_data.customs_sections.models import CustomsSection
from api.v1.modules.public.reference_data.customs_warehouses.models import (
    CustomsWarehouse,
)
from api.v1.modules.public.reference_data.incoterms.models import Incoterm
from api.v1.modules.public.reference_data.invoice_types.models import InvoiceType
from api.v1.modules.public.reference_data.material_types.models import MaterialType
from api.v1.modules.public.reference_data.payment_methods.models import PaymentMethod
from api.v1.modules.public.reference_data.pedimento_transport_catalog.models import (
    PedimentoTransportCatalog,
)
from api.v1.modules.public.reference_data.pedimento_codes.models import PedimentoCode
from api.v1.modules.public.reference_data.pedimento_regimens.models import (
    RegimenPedimento,
)
from api.v1.modules.public.reference_data.states.models import State
from api.v1.modules.public.reference_data.transport_modes.models import TransportMode
from api.v1.modules.public.reference_data.transport_types.models import TransportType
from api.v1.modules.public.reference_data.valuation_methods.models import (
    ValuationMethod,
)
from api.v1.modules.public.reference_data.license_exceptions.models import LicenseException
from api.v1.modules.public.reference_data.agency_tariff_codes.models import AgencyTariffCode
from api.v1.modules.public.reference_data.identifiers.models import IdentifierCatalog
from api.v1.modules.public.reference_data.carta_porte_codes.models import CartaPorte
from api.v1.modules.a76.general_catalogs.units_of_measure.models import UnitOfMeasure
from api.v1.modules.a76.general_catalogs.exchange_rate.models import ExchangeRate
from api.v1.modules.a76.general_catalogs.identifiers.models import Identifier
from api.v1.modules.a76.classes.models import Class
from api.v1.modules.a76.general_catalogs.classification_concepts.models import (
    ClassificationConcept,
)
from api.v1.modules.a76.general_catalogs.concepts.models import Concept
from api.v1.modules.a76.general_catalogs.customs_broker_concepts.models import (
    CustomsBrokerConcept,
)
from api.v1.modules.a76.general_catalogs.depreciation_catalog.models import (
    DepreciationCatalog,
)
from api.v1.modules.a76.general_catalogs.doda.models import Doda
from api.v1.modules.a76.general_catalogs.electronic_notices.models import (
    ElectronicNotice,
)
from api.v1.modules.a76.general_catalogs.equivalencies.models import Equivalency
from api.v1.modules.a76.general_catalogs.error_catalogs.models import ErrorCatalog
from api.v1.modules.a76.general_catalogs.fda_catalog.models import FDACatalog
from api.v1.modules.a76.general_catalogs.inpc.models import INPC
from api.v1.modules.a76.general_catalogs.legends.models import Legend
from api.v1.modules.a76.general_catalogs.multi_currency_types.models import (
    MultiCurrencyType,
)
from api.v1.modules.a76.general_catalogs.packages.models import Package
from api.v1.modules.a76.general_catalogs.ports.models import Port
from api.v1.modules.a76.general_catalogs.location.models import Location, FaLocationExt
from api.v1.modules.a76.general_catalogs.prevalidators.models import Prevalidator
from api.v1.modules.a76.general_catalogs.seal.models import Seal
from api.v1.modules.a76.general_catalogs.signatures.models import Signature
from api.v1.modules.a76.general_catalogs.fractions.tariff_fractions.models import (
    TariffFraction,
)
from api.v1.modules.a76.general_catalogs.unit_conversions.models import UnitConversion
from api.v1.modules.a76.general_catalogs.fractions.us_tariff_fractions.models import (
    USTariffFraction,
)
from api.v1.modules.a76.general_catalogs.sectors.models import Sector
from api.v1.modules.a76.transportation.trailers.models import Trailer
from api.v1.modules.a76.transportation.transporters.models import Transporter
from api.v1.modules.a76.transportation.vehicles.models import Vehicle


# Registrar Listeners de Auditoría
def register_audit():
    register_audit_listeners(
        [
            # Core Transactions
            Pedimentos,
            InvoiceHeader,
            InvoiceSalesDetails,
            InvoiceComplianceMx,
            InvoiceFinancials,
            InvoiceLogistics,
            InvoiceCollections,
            LineItem,
            Serie,
            # Sidebar Core Modules
            ClientProvider,
            CustomsBroker,
            CustomsBrokerVU,
            CustomsBrokerPersonnel,
            Part,
            Company,
            # Transportation Modules
            Trailer,
            Transporter,
            Vehicle,
            # Reference Data
            Country,
            CurrencyType,
            CustomsSection,
            CustomsWarehouse,
            Incoterm,
            InvoiceType,
            MaterialType,
            PaymentMethod,
            PedimentoTransportCatalog,
            PedimentoCode,
            RegimenPedimento,
            Sector,
            State,
            TransportMode,
            TransportType,
            ValuationMethod,
            LicenseException,
            AgencyTariffCode,
            IdentifierCatalog,
            CartaPorte,
            UnitOfMeasure,
            ExchangeRate,
            Identifier,
            Class,
            ClassificationConcept,
            Concept,
            CustomsBrokerConcept,
            DepreciationCatalog,
            Doda,
            ElectronicNotice,
            Equivalency,
            ErrorCatalog,
            FDACatalog,
            INPC,
            Legend,
            MultiCurrencyType,
            Package,
            Port,
            Prevalidator,
            Seal,
            Signature,
            TariffFraction,
            UnitConversion,
            USTariffFraction,
        ]
    )