from typing import Optional, Any, Dict from pydantic import BaseModel, Field from decimal import Decimal # --- Legacy Table Domains (Tarea 1) --- class SSisGenSettings(BaseModel): """ Legacy Table: SSisGen General system parameters migrated from Clarion/WinDev. """ consecutivo: Optional[int] = None dta: Optional[int] = None dtaexpo: Optional[int] = None subempresa: Optional[str] = None patharch: Optional[str] = None patharchtransmision: Optional[str] = None pathtransexpo: Optional[str] = None pathrespuesta: Optional[str] = None patharchped: Optional[str] = None patharchpedconsm: Optional[str] = None pathgenimpotemp: Optional[str] = None pathgenexpo: Optional[str] = None actseguridad: Optional[int] = None controldes: Optional[int] = None diadesactual: Optional[int] = None diavencimiento: Optional[int] = None mensajevenc: Optional[int] = None fechades: Optional[int] = None factoriva: Optional[Decimal] = None validasifra: Optional[int] = None decimalespeso: Optional[int] = None decimalescant: Optional[int] = None decimalesvalor: Optional[int] = None calvalbasetcped: Optional[int] = None calvalbasetcpedexpo: Optional[int] = None filtrocantidad: Optional[Decimal] = None muestraarchcodbarras: Optional[int] = None datoshist: Optional[int] = None tipovenro: Optional[str] = None cantvenro: Optional[int] = None costoplanta: Optional[Decimal] = None firmapacking: Optional[int] = None advertenciatm: Optional[int] = None tomarsaldosvenc: Optional[int] = None costoimpofijo: Optional[int] = None valparteexiste: Optional[int] = None valmanifusado: Optional[int] = None temporalfechapago: Optional[int] = None asignadiasantdesc: Optional[int] = None diasantdesc: Optional[int] = None deshabilitardescparte: Optional[int] = None deshabilitardescparteing: Optional[int] = None asignafracameparte: Optional[int] = None validadecencant: Optional[int] = None usartranspamedocame: Optional[int] = None mostraradvertenciaro: Optional[int] = None escondaamexpacking: Optional[int] = None calcdutypacking: Optional[int] = None parammultiples: Optional[int] = None fraccnivelpais: Optional[int] = None covefechaemision: Optional[int] = None valordllstcfacturaexpo: Optional[int] = None interfaceaaconsolidada: Optional[int] = None interfaceaatcfpff: Optional[str] = None incluirobscoveobsimpo: Optional[int] = None agregarincreimpo: Optional[int] = None componentebom: Optional[int] = None limitesubensamble: Optional[int] = None actpdfreportes: Optional[int] = None patharchpdfimpo: Optional[str] = None patharchpdfexpo: Optional[str] = None noimprimircons: Optional[int] = None mostraradvertenciarovalor: Optional[int] = None partesypedimentosporcliente: Optional[str] = None mensajesvurfc: Optional[int] = None mostrarpackinglistingles: Optional[int] = None omitirempaqueencodigobarras: Optional[int] = None restringepaisimpo: Optional[int] = None bloqueoaldesactivarnumerodeparte: Optional[int] = None restringpaisexpo: Optional[int] = None geninformeanexo31: Optional[str] = None utilizarfechapagopeddeundiaanterior: Optional[int] = None utilizarequivalenciasdeumpornumerodeparte: Optional[int] = None utilizartitulosalternativosimpresionfactura: Optional[int] = None usarfactorconversionpornumerodeparte: Optional[int] = None usarvude128o256: Optional[int] = None usartcdelafechapagopedimpoendescarga: Optional[int] = None solicitarcontrasenaadministrador: Optional[int] = None agregarnumeroembarque: Optional[int] = None utilizarumdeexistenciaentransmisionvu: Optional[int] = None utilizarcodigodebrokerdeclienteenmainx30: Optional[int] = None hojacalculosepararincrementablesanexo3: Optional[int] = None hojacalculodesglosefacturaanexo3: Optional[int] = None usarvaloragregadoenfacturaamericana: Optional[int] = None ocultarinformacionfraccion: Optional[int] = None resaltarsaldostempconcolor: Optional[int] = None valoragregadoenfacturamexicana: Optional[int] = None validarsectorprosecr8: Optional[int] = None agregarsubtotalinterfazaa: Optional[int] = None utilizarnombregenericomainx30: Optional[int] = None utilizartcrespectoatipoped: Optional[int] = None tomardecimalescompletos: Optional[int] = None incluirremesaeninterfazaawinsaai: Optional[int] = None cambiarpesosporcostounitario: Optional[int] = None utilizarsolopartesnaftaenco: Optional[int] = None bloqueodeediciondefacturas: Optional[int] = None reasignafraccionclase: Optional[int] = None calcularcostounitarioenbaseavalortotal: Optional[int] = None parametroauxiliar: Optional[int] = None usarcontroldefechasdeversion: Optional[int] = None desactivaciondemodulos: Optional[int] = None imprimirfacturaalterna: Optional[int] = None activarexpedienteelectronico: Optional[int] = None activarcatalogofraccionesamericanassifra: Optional[int] = None informacionamericanasubtotal: Optional[int] = None mostrarprogramaimmexprosec: Optional[int] = None costounitarioporempaquefac: Optional[int] = None transmitirfacalterna: Optional[int] = None muestra_copias_codbarras: Optional[int] = None activar_revision_fracciones: Optional[int] = None usarcoveenarchsaaim3: Optional[int] = None downloadftp: Optional[str] = None minsdownlftp: Optional[int] = None downloadftppath: Optional[str] = None descargarftpolocal: Optional[str] = None serverftp: Optional[str] = None userftp: Optional[str] = None passwordftp: Optional[str] = None directorioftp: Optional[str] = None pathlocalparadescde: Optional[str] = None agregarremplazarautomatico: Optional[str] = None activarprocesovequipment: Optional[int] = None activarprocesodesperdiciojdedwards: Optional[int] = None usarfechaemisionfactura: Optional[int] = None campo18valsaaim3: Optional[int] = None actvaloragre: Optional[int] = None valoragregadogen: Optional[Decimal] = None validarseries: Optional[int] = None emailas: Optional[int] = None afostrofe: Optional[int] = None codigobarrasesp: Optional[int] = None asignainfoparte: Optional[int] = None pathnaftaccs: Optional[str] = None class SSisGen2Settings(BaseModel): """ Legacy Table: SSisGen2 Extended system parameters. """ consecutivo: Optional[int] = None actvaloragre: Optional[int] = None valoragregadogen: Optional[Decimal] = None class SSisGen3Settings(BaseModel): """ Legacy Table: SSisGen3 Additional name-value parameters. """ parametro: Optional[str] = None valorparametro: Optional[int] = None class SSisMexSettings(BaseModel): """Legacy Table: SSisMex (Mexican Purchases)""" consecutivo: Optional[int] = None prefijocm: Optional[str] = None consecutivocm: Optional[str] = None porparteclasemex: Optional[str] = None porparteclaseame: Optional[str] = None proveedor: Optional[str] = None vendidoconsignado: Optional[str] = None vendidoa: Optional[str] = None enviadotransferido: Optional[str] = None enviadoa: Optional[str] = None flete: Optional[Decimal] = None paisorigenmex: Optional[int] = None numpartemex: Optional[int] = None firmafmex: Optional[str] = None fraccionimp: Optional[int] = None tipofraccmex: Optional[int] = None tasafraccmex: Optional[int] = None umequivalentemex: Optional[int] = None numparteame: Optional[int] = None fraccioname: Optional[int] = None paisorigename: Optional[int] = None umequivalenteame: Optional[int] = None firmafame: Optional[str] = None impordencomp: Optional[int] = None decimalespeso: Optional[int] = None decimalescant: Optional[int] = None decimalesvalor: Optional[int] = None decimalescosto: Optional[int] = None tipomoneda: Optional[str] = None clavemoneda: Optional[str] = None umauxiliarmex: Optional[int] = None umalternamex: Optional[int] = None transportista: Optional[str] = None conductor: Optional[str] = None transporte: Optional[str] = None numtransporte: Optional[str] = None observacione: Optional[str] = None observacioni: Optional[str] = None clavebultos: Optional[str] = None packingordencompra: Optional[int] = None firmaelectronica: Optional[str] = None incluirlineadelpo: Optional[int] = None lineapersonaaa: Optional[int] = None agregarvaenprodterminados: Optional[int] = None ocultarfechahora: Optional[int] = None class SSisDefSettings(BaseModel): """Legacy Table: SSisDef (Definitive Import)""" consecutivo: Optional[int] = None prefijoimpo: Optional[str] = None consecutivoimpo: Optional[str] = None porparteclasemex: Optional[str] = None porparteclaseame: Optional[str] = None pedimento: Optional[str] = None tipo: Optional[str] = None proveedor: Optional[str] = None vendidoconsignado: Optional[str] = None vendidoa: Optional[str] = None enviadotransferido: Optional[str] = None enviadoa: Optional[str] = None aaduanal: Optional[str] = None incoterm: Optional[str] = None flete: Optional[Decimal] = None identificador: Optional[str] = None firmafmex: Optional[str] = None firmafame: Optional[str] = None codigobarras: Optional[int] = None numpartemex: Optional[int] = None numparteame: Optional[int] = None fraccionimp: Optional[int] = None tasafraccmex: Optional[int] = None tipofraccmex: Optional[int] = None paisorigenmex: Optional[int] = None umequivalentemex: Optional[int] = None umauxiliarmex: Optional[int] = None fraccioname: Optional[int] = None paisorigename: Optional[int] = None umequivalenteame: Optional[int] = None impordencomp: Optional[int] = None decimalespeso: Optional[int] = None decimalescant: Optional[int] = None decimalesvalor: Optional[int] = None decimalescosto: Optional[int] = None tipomoneda: Optional[str] = None clavemoneda: Optional[str] = None cantlimite: Optional[Decimal] = None pesolimite: Optional[Decimal] = None valorlimite: Optional[Decimal] = None umalternamex: Optional[int] = None restringeimpopt: Optional[int] = None partecomplementariamex: Optional[int] = None pagoimpuesto: Optional[str] = None formapago: Optional[str] = None metvalor: Optional[str] = None transportista: Optional[str] = None aaduanalame: Optional[str] = None conductor: Optional[str] = None transporte: Optional[str] = None numtransporte: Optional[str] = None packingpedclave: Optional[int] = None porordenporocpack: Optional[str] = None actualizarpartepartida: Optional[int] = None observacione: Optional[str] = None observacioni: Optional[str] = None clavebultos: Optional[str] = None partecomplemexpartida: Optional[int] = None cantlimitemin: Optional[Decimal] = None pesolimitemin: Optional[Decimal] = None valorlimitemin: Optional[Decimal] = None packingordencompra: Optional[int] = None firmaelectronica: Optional[str] = None solicitarcontrasenaadministrador: Optional[int] = None incluirlineadelpo: Optional[int] = None lineapersonaaa: Optional[int] = None agregarvaenprodterminados: Optional[int] = None imprimirlote: Optional[int] = None imprimirnumentrada: Optional[int] = None ocultarfechahora: Optional[int] = None class SSisExpoSettings(BaseModel): """Legacy Table: SSisExpo (Exports)""" tipofactura: Optional[str] = None porparteclasemex: Optional[str] = None porparteclaseame: Optional[str] = None prefijoexpo: Optional[str] = None consecutivoexpo: Optional[str] = None pedimento: Optional[str] = None proveedor: Optional[str] = None vendidoconsignado: Optional[str] = None vendidoa: Optional[str] = None enviadotransferido: Optional[str] = None enviadoa: Optional[str] = None vendidopor: Optional[str] = None aaduanal: Optional[str] = None tipo: Optional[str] = None incoterm: Optional[str] = None flete: Optional[Decimal] = None identificador: Optional[str] = None tipomoneda: Optional[str] = None moneda: Optional[str] = None decimalespeso: Optional[int] = None decimalescant: Optional[int] = None decimalesvalor: Optional[int] = None decimalescosto: Optional[int] = None numpartemex: Optional[int] = None paisorigenmex: Optional[int] = None fraccionexp: Optional[int] = None tasafraccmex: Optional[int] = None costounitmex: Optional[int] = None ordencompmex: Optional[int] = None consfacmex: Optional[int] = None umequivalentemex: Optional[int] = None ocultarempaquemex: Optional[int] = None costounitmpmex: Optional[int] = None codigobarras: Optional[int] = None partecomplementariamex: Optional[int] = None valordllsmexpesos: Optional[int] = None cantpncodbar: Optional[int] = None dtacerocodbar: Optional[int] = None firmafmex: Optional[str] = None numparteame: Optional[int] = None firmafame: Optional[str] = None fraccioname: Optional[int] = None paisorigename: Optional[int] = None ordencompame: Optional[int] = None umequivalenteame: Optional[int] = None fdainformacioname: Optional[int] = None paisopcame: Optional[int] = None muestrafree: Optional[int] = None fraccmexdes: Optional[int] = None tipofraccmexdes: Optional[int] = None colvalordes: Optional[int] = None colpesodes: Optional[int] = None descargaclase: Optional[int] = None descargasust: Optional[int] = None descargadef: Optional[int] = None ventqueueact: Optional[int] = None codigoscac: Optional[int] = None formadesperdicio: Optional[str] = None calvalorbasecosto: Optional[int] = None calvabasecapt: Optional[int] = None calpesobasedescarga: Optional[int] = None calempaquebasecapt: Optional[int] = None ocultcantcons: Optional[int] = None prefijofraccmult: Optional[int] = None cantlimite: Optional[Decimal] = None pesolimite: Optional[Decimal] = None valorlimite: Optional[Decimal] = None costamepaisparte: Optional[int] = None basecostompototal: Optional[str] = None umequivalentemex2: Optional[int] = None umequivalenteame2: Optional[int] = None totalequivmex: Optional[int] = None totalequivame: Optional[int] = None infoadicional: Optional[str] = None restringeexpomp: Optional[int] = None calvatotagremp: Optional[str] = None activaadvpedrtv1: Optional[int] = None asignafrac9801: Optional[int] = None valorexcfrac9801: Optional[Decimal] = None pagoimpuesto: Optional[str] = None formapago: Optional[str] = None scrapsolonoduty: Optional[int] = None descextraamepartes: Optional[int] = None incambioregdesc: Optional[int] = None escambioregimen: Optional[str] = None descnocontemcant: Optional[int] = None metvalor: Optional[str] = None ocultarempaqueame: Optional[int] = None transportista: Optional[str] = None aaduanalame: Optional[str] = None pesonetodesdiffac: Optional[Decimal] = None enviadoporvendidopor: Optional[str] = None conductor: Optional[str] = None transporte: Optional[str] = None numtransporte: Optional[str] = None observacione: Optional[str] = None observacioni: Optional[str] = None clavebultos: Optional[str] = None ocultacolva: Optional[int] = None calccostosamebasemex: Optional[int] = None proveedorexportador: Optional[str] = None tipofraccmex: Optional[int] = None partecomplemexpartida: Optional[int] = None validacantparcandes: Optional[int] = None cantlimitemin: Optional[Decimal] = None pesolimitemin: Optional[Decimal] = None valorlimitemin: Optional[Decimal] = None costosamepais: Optional[str] = None incluirfracamebil: Optional[int] = None solicitarpswdactual: Optional[int] = None solicitarpswddesactual: Optional[int] = None buscarsaldosrecientes: Optional[int] = None packingordenventa: Optional[int] = None imprimirordenventa: Optional[int] = None firmaelectronica: Optional[str] = None mpf: Optional[int] = None valormpf: Optional[Decimal] = None colcantporpeso: Optional[int] = None packingpedclave: Optional[int] = None generafacturaimd: Optional[str] = None generafacturaimdenbasea: Optional[str] = None solicitarcontrasenaadministrador: Optional[int] = None incluirlineadelpo: Optional[int] = None valorpacking1dlls: Optional[int] = None tomarvalormexenfacame: Optional[int] = None lineapersonaaa: Optional[int] = None calamebasemexmp: Optional[int] = None calamebasemexva: Optional[int] = None calamebasemexempaque: Optional[int] = None usarvaenfacturaamericana: Optional[int] = None activarfechacortesaldos: Optional[int] = None fechacortesaldos: Optional[int] = None imprimirlote: Optional[int] = None imprimirnumentrada: Optional[int] = None respaldardescargaendescargam: Optional[int] = None ocultarfechahora: Optional[int] = None calcularvaloresamericanosenbaseapartida: Optional[int] = None validarestatusped: Optional[int] = None descapais: Optional[int] = None class SSisImpoSettings(BaseModel): """Legacy Table: SSisImpo (General Import)""" consecutivo: Optional[int] = None prefijoimpo: Optional[str] = None prefijocr: Optional[str] = None consecutivoimpo: Optional[str] = None consecutivocr: Optional[int] = None porparteclasemex: Optional[str] = None porparteclaseame: Optional[str] = None pedimento: Optional[str] = None tipo: Optional[str] = None proveedor: Optional[str] = None vendidoconsignado: Optional[str] = None vendidoa: Optional[str] = None enviadotransferido: Optional[str] = None enviadoa: Optional[str] = None aaduanal: Optional[str] = None incoterm: Optional[str] = None flete: Optional[Decimal] = None identificador: Optional[str] = None numpartemex: Optional[int] = None numparteame: Optional[int] = None firmafmex: Optional[str] = None firmafame: Optional[str] = None codigobarras: Optional[int] = None fraccionimp: Optional[int] = None tasafraccmex: Optional[int] = None tipofraccmex: Optional[int] = None paisorigenmex: Optional[int] = None umequivalentemex: Optional[int] = None umauxiliarmex: Optional[int] = None perpagrenglon: Optional[int] = None fraccioname: Optional[int] = None paisorigename: Optional[int] = None umequivalenteame: Optional[int] = None impordencomp: Optional[int] = None decimalespeso: Optional[int] = None decimalescant: Optional[int] = None decimalesvalor: Optional[int] = None decimalescosto: Optional[int] = None tipomoneda: Optional[str] = None clavemoneda: Optional[str] = None cantlimite: Optional[Decimal] = None pesolimite: Optional[Decimal] = None valorlimite: Optional[Decimal] = None valorlimitepar: Optional[Decimal] = None umalternamex: Optional[int] = None restringeimpopt: Optional[int] = None controlremesa: Optional[str] = None remesainicio: Optional[int] = None remesafinal: Optional[int] = None leyendafacame: Optional[str] = None calcigibasecapt: Optional[int] = None umequivalentemex2: Optional[int] = None umequivalenteame2: Optional[int] = None partecomplementariamex: Optional[int] = None pagoimpuesto: Optional[str] = None formapago: Optional[str] = None metvalor: Optional[str] = None transportista: Optional[str] = None aaduanalame: Optional[str] = None conductor: Optional[str] = None transporte: Optional[str] = None numtransporte: Optional[str] = None packingpedclave: Optional[int] = None porordenporocpack: Optional[str] = None actualizarpartepartida: Optional[int] = None observacione: Optional[str] = None observacioni: Optional[str] = None clavebultos: Optional[str] = None partecomplemexpartida: Optional[int] = None cantlimitemin: Optional[Decimal] = None pesolimitemin: Optional[Decimal] = None valorlimitemin: Optional[Decimal] = None valorlimiteparmin: Optional[Decimal] = None packingordencompra: Optional[int] = None firmaelectronica: Optional[str] = None solicitarcontrasenaadministrador: Optional[int] = None incluirlineadelpo: Optional[int] = None lineapersonaaa: Optional[int] = None agregarvaenprodterminados: Optional[int] = None imprimirlote: Optional[int] = None imprimirnumentrada: Optional[int] = None ocultarfechahora: Optional[int] = None class QSisCMexSettings(BaseModel): """Legacy Table: QSisCMex (Fixed Asset Mexican Purchase)""" consecutivo: Optional[int] = None prefijocm: Optional[str] = None consecutivocm: Optional[str] = None proveedor: Optional[str] = None vendidoconsignado: Optional[str] = None vendidoa: Optional[str] = None enviadotransferido: Optional[str] = None enviadoa: Optional[str] = None flete: Optional[Decimal] = None paisorigenmex: Optional[int] = None firmafmex: Optional[str] = None fraccionimp: Optional[int] = None tipofraccmex: Optional[int] = None tasafraccmex: Optional[int] = None impordencomp: Optional[int] = None decimalespeso: Optional[int] = None decimalescant: Optional[int] = None decimalesvalor: Optional[int] = None decimalescosto: Optional[int] = None tipomoneda: Optional[str] = None clavemoneda: Optional[str] = None transportista: Optional[str] = None conductor: Optional[str] = None transporte: Optional[str] = None numtransporte: Optional[str] = None observacione: Optional[str] = None observacioni: Optional[str] = None packingordencompra: Optional[int] = None imprimirlote: Optional[int] = None imprimirnumentrada: Optional[int] = None class QSisDefSettings(BaseModel): """Legacy Table: QSisDef (Fixed Asset Definitive Import)""" consecutivo: Optional[int] = None prefijoimpo: Optional[str] = None consecutivoimpo: Optional[str] = None pedimento: Optional[str] = None tipo: Optional[str] = None proveedor: Optional[str] = None vendidoconsignado: Optional[str] = None vendidoa: Optional[str] = None enviadotransferido: Optional[str] = None enviadoa: Optional[str] = None aaduanal: Optional[str] = None incoterm: Optional[str] = None flete: Optional[Decimal] = None identificador: Optional[str] = None firmafmex: Optional[str] = None firmafame: Optional[str] = None generarassettag: Optional[int] = None codigobarras: Optional[int] = None fraccionimp: Optional[int] = None tasafraccmex: Optional[int] = None tipofraccmex: Optional[int] = None fraccioname: Optional[int] = None paisorigenmex: Optional[int] = None paisorigename: Optional[int] = None impordencomp: Optional[int] = None decimalespeso: Optional[int] = None decimalescant: Optional[int] = None decimalesvalor: Optional[int] = None decimalescosto: Optional[int] = None tipomoneda: Optional[str] = None tipomn: Optional[str] = None tipome: Optional[str] = None clavemoneda: Optional[str] = None controlremesa: Optional[str] = None remesainicio: Optional[int] = None remesafinal: Optional[int] = None cantlimite: Optional[Decimal] = None pesolimite: Optional[Decimal] = None valorlimite: Optional[Decimal] = None metvalor: Optional[str] = None pagoimpuesto: Optional[str] = None formapago: Optional[str] = None transportista: Optional[str] = None aaduanalame: Optional[str] = None conductor: Optional[str] = None transporte: Optional[str] = None numtransporte: Optional[str] = None observacione: Optional[str] = None observacioni: Optional[str] = None numpartemex: Optional[int] = None numparteame: Optional[int] = None cantlimitemin: Optional[Decimal] = None pesolimitemin: Optional[Decimal] = None valorlimitemin: Optional[Decimal] = None actualizarpartepartida: Optional[int] = None packingordencompra: Optional[int] = None solicitarcontrasenaadministrador: Optional[int] = None imprimirlote: Optional[int] = None imprimirnumentrada: Optional[int] = None class QSisGenSettings(BaseModel): """Legacy Table: QSisGen (Fixed Asset General)""" consecutivo: Optional[int] = None dta: Optional[int] = None dtaexpo: Optional[int] = None subempresa: Optional[str] = None patharch: Optional[str] = None patharchtransmision: Optional[str] = None pathrespuesta: Optional[str] = None patharchped: Optional[str] = None patharchpedconsm: Optional[str] = None pathgenimpotemp: Optional[str] = None pathgenexpo: Optional[str] = None aplicapermat: Optional[int] = None actseguridad: Optional[int] = None controldes: Optional[int] = None diadesactual: Optional[int] = None fechades: Optional[int] = None ubiplanta: Optional[str] = None datoshistoricos: Optional[int] = None tipovenro: Optional[str] = None cantvenro: Optional[int] = None omitirimposubpcodbarras: Optional[str] = None muestraarchcodbarras: Optional[int] = None calvalbasetcped: Optional[int] = None calvalbasetcpedexpo: Optional[int] = None decimalespeso: Optional[int] = None decimalescant: Optional[int] = None decimalesvalor: Optional[int] = None factoriva: Optional[Decimal] = None filtrocantidad: Optional[Decimal] = None firmapacking: Optional[int] = None advertenciatm: Optional[int] = None calcdepreciacion: Optional[str] = None valmanifusado: Optional[int] = None validadecencant: Optional[int] = None mostraradvertenciaro: Optional[int] = None usartranspamedocame: Optional[int] = None escondaamexpacking: Optional[int] = None cantvscantseries: Optional[int] = None covefechaemision: Optional[int] = None interfaceaaconsolidada: Optional[int] = None interfaceaatcfpff: Optional[str] = None incluirobscoveobsimpo: Optional[int] = None agregarincreimpo: Optional[int] = None repdescargolineal: Optional[int] = None identificadornodoseriecove: Optional[int] = None actpdfreportes: Optional[int] = None patharchpdfimpo: Optional[str] = None patharchpdfexpo: Optional[str] = None mensajesvurfc: Optional[int] = None mostrarpackinglistingles: Optional[int] = None enviarsubpartidascove: Optional[int] = None restringepaisimpo: Optional[int] = None restringpaisexpo: Optional[int] = None utilizarfechapagopeddeundiaanterior: Optional[int] = None utilizartitulosalternativosimpresionfactura: Optional[int] = None usartcdelafechapagopedimpoendescarga: Optional[int] = None usarvude128o256: Optional[int] = None agregarnumeroembarque: Optional[int] = None utilizarumdeexistenciaentransmisionvu: Optional[int] = None utilizarcodigodebrokerdeclienteenmainx30: Optional[int] = None hojacalculosepararincrementablesanexo3: Optional[int] = None hojacalculodesglosefacturaanexo3: Optional[int] = None utilizarnombregenericomainx30: Optional[int] = None utilizartcrespectoatipoped: Optional[int] = None utilizarsolopartesnaftaenco: Optional[int] = None cambiarpesosporcostounitario: Optional[int] = None bloqueodeediciondefacturas: Optional[int] = None calcularcostounitarioenbaseavalortotalscaf: Optional[int] = None impresionfacturaalterna: Optional[int] = None transmitirfacalterna: Optional[int] = None validarseries: Optional[int] = None emailas: Optional[int] = None afostrofe: Optional[int] = None codigobarrasesp: Optional[int] = None muestra_copias_codbarras: Optional[int] = None asignainfoparte: Optional[int] = None pathnaftaccs: Optional[str] = None class QSisExpoRepSettings(BaseModel): """Legacy Table: QSisExpoRep (Fixed Asset Export Repeat?)""" tipofactura: Optional[str] = None prefijoexpo: Optional[str] = None consecutivoexpo: Optional[str] = None pedimento: Optional[str] = None tipo: Optional[str] = None proveedor: Optional[str] = None vendidoconsignado: Optional[str] = None vendidoa: Optional[str] = None enviadotransferido: Optional[str] = None enviadoa: Optional[str] = None vendidopor: Optional[str] = None aaduanal: Optional[str] = None incoterm: Optional[str] = None flete: Optional[Decimal] = None identificador: Optional[str] = None codigobarras: Optional[int] = None cantpncodbar: Optional[int] = None dtacerocodbar: Optional[int] = None cbarrasvalor: Optional[str] = None firmafmex: Optional[str] = None fraccionexp: Optional[int] = None tasafraccmex: Optional[int] = None tipofraccmex: Optional[int] = None numpartemex: Optional[int] = None paisorigenmex: Optional[int] = None firmafame: Optional[str] = None fraccioname: Optional[int] = None paisorigename: Optional[int] = None numparteame: Optional[int] = None codigoscac: Optional[int] = None impordencomp: Optional[int] = None decimalespeso: Optional[int] = None decimalescant: Optional[int] = None decimalesvalor: Optional[int] = None decimalescosto: Optional[int] = None tipomoneda: Optional[str] = None clavemoneda: Optional[str] = None tipomn: Optional[str] = None tipome: Optional[str] = None mostrarvalact: Optional[int] = None pepsporclase: Optional[int] = None pepsporfraccion: Optional[int] = None pepspordescripcion: Optional[int] = None cantlimite: Optional[Decimal] = None pesolimite: Optional[Decimal] = None valorlimite: Optional[Decimal] = None ventqueueact: Optional[int] = None valfacttc: Optional[str] = None metvalor: Optional[str] = None pagoimpuesto: Optional[str] = None formapago: Optional[str] = None transportista: Optional[str] = None aaduanalame: Optional[str] = None enviadoporvendidopor: Optional[str] = None conductor: Optional[str] = None transporte: Optional[str] = None numtransporte: Optional[str] = None observacione: Optional[str] = None observacioni: Optional[str] = None proveedorexportador: Optional[str] = None cantlimitemin: Optional[Decimal] = None pesolimitemin: Optional[Decimal] = None valorlimitemin: Optional[Decimal] = None solicitarpswdactual: Optional[int] = None solicitarpswddesactual: Optional[int] = None packingordenventa: Optional[int] = None imprimirpo: Optional[int] = None fdainformacioname: Optional[int] = None packingpedclave: Optional[int] = None solicitarcontrasenaadministrador: Optional[int] = None imprimirlote: Optional[int] = None imprimirnumentrada: Optional[int] = None class QSisImpoSettings(BaseModel): """Legacy Table: QSisImpo (Fixed Asset Import)""" consecutivo: Optional[int] = None prefijoimpo: Optional[str] = None consecutivoimpo: Optional[str] = None pedimento: Optional[str] = None tipo: Optional[str] = None proveedor: Optional[str] = None vendidoconsignado: Optional[str] = None vendidoa: Optional[str] = None enviadotransferido: Optional[str] = None enviadoa: Optional[str] = None aaduanal: Optional[str] = None incoterm: Optional[str] = None flete: Optional[Decimal] = None identificador: Optional[str] = None firmafmex: Optional[str] = None firmafame: Optional[str] = None codigobarras: Optional[int] = None fraccionimp: Optional[int] = None tasafraccmex: Optional[int] = None tipofraccmex: Optional[int] = None fraccioname: Optional[int] = None paisorigenmex: Optional[int] = None paisorigename: Optional[int] = None impordencomp: Optional[int] = None generarassettag: Optional[int] = None decimalespeso: Optional[int] = None decimalescant: Optional[int] = None decimalesvalor: Optional[int] = None decimalescosto: Optional[int] = None tipomoneda: Optional[str] = None tipomn: Optional[str] = None tipome: Optional[str] = None clavemoneda: Optional[str] = None controlremesa: Optional[str] = None remesainicio: Optional[int] = None remesafinal: Optional[int] = None perpagrenglon: Optional[int] = None cantlimite: Optional[Decimal] = None pesolimite: Optional[Decimal] = None valorlimite: Optional[Decimal] = None metvalor: Optional[str] = None pagoimpuesto: Optional[str] = None formapago: Optional[str] = None transportista: Optional[str] = None aaduanalame: Optional[str] = None conductor: Optional[str] = None transporte: Optional[str] = None numtransporte: Optional[str] = None observacione: Optional[str] = None observacioni: Optional[str] = None numpartemex: Optional[int] = None numparteame: Optional[int] = None cantlimitemin: Optional[Decimal] = None pesolimitemin: Optional[Decimal] = None valorlimitemin: Optional[Decimal] = None actualizarpartepartida: Optional[int] = None packingordencompra: Optional[int] = None solicitarcontrasenaadministrador: Optional[int] = None imprimirlote: Optional[int] = None imprimirnumentrada: Optional[int] = None class QSisImpoRepSettings(BaseModel): """Legacy Table: QSisImpoRep (Fixed Asset Import Repeat?)""" tipofactura: Optional[str] = None consecutivo: Optional[int] = None prefijoimpo: Optional[str] = None consecutivoimpo: Optional[str] = None pedimento: Optional[str] = None tipo: Optional[str] = None proveedor: Optional[str] = None vendidoconsignado: Optional[str] = None vendidoa: Optional[str] = None enviadotransferido: Optional[str] = None enviadoa: Optional[str] = None aaduanal: Optional[str] = None incoterm: Optional[str] = None flete: Optional[Decimal] = None identificador: Optional[str] = None firmafmex: Optional[str] = None firmafame: Optional[str] = None codigobarras: Optional[int] = None fraccionimp: Optional[int] = None tasafraccmex: Optional[int] = None tipofraccmex: Optional[int] = None fraccioname: Optional[int] = None paisorigenmex: Optional[int] = None paisorigename: Optional[int] = None impordencomp: Optional[int] = None generarassettag: Optional[int] = None decimalespeso: Optional[int] = None decimalescant: Optional[int] = None decimalesvalor: Optional[int] = None decimalescosto: Optional[int] = None tipomoneda: Optional[str] = None tipomn: Optional[str] = None tipome: Optional[str] = None clavemoneda: Optional[str] = None controlremesa: Optional[str] = None remesainicio: Optional[int] = None remesafinal: Optional[int] = None perpagrenglon: Optional[int] = None cantlimite: Optional[Decimal] = None pesolimite: Optional[Decimal] = None valorlimite: Optional[Decimal] = None ventqueueact: Optional[int] = None metvalor: Optional[str] = None pagoimpuesto: Optional[str] = None formapago: Optional[str] = None transportista: Optional[str] = None aaduanalame: Optional[str] = None conductor: Optional[str] = None transporte: Optional[str] = None numtransporte: Optional[str] = None observacione: Optional[str] = None observacioni: Optional[str] = None numpartemex: Optional[int] = None numparteame: Optional[int] = None cantlimitemin: Optional[Decimal] = None pesolimitemin: Optional[Decimal] = None valorlimitemin: Optional[Decimal] = None packingordencompra: Optional[int] = None solicitarcontrasenaadministrador: Optional[int] = None class QSisExpoSettings(BaseModel): """Legacy Table: QSisExpo (Fixed Asset Export)""" tipofactura: Optional[str] = None escambioregimen: Optional[str] = None prefijoexpo: Optional[str] = None consecutivoexpo: Optional[str] = None pedimento: Optional[str] = None tipo: Optional[str] = None proveedor: Optional[str] = None vendidoconsignado: Optional[str] = None vendidoa: Optional[str] = None enviadotransferido: Optional[str] = None enviadoa: Optional[str] = None vendidopor: Optional[str] = None aaduanal: Optional[str] = None incoterm: Optional[str] = None flete: Optional[Decimal] = None identificador: Optional[str] = None codigobarras: Optional[int] = None cantpncodbar: Optional[int] = None dtacerocodbar: Optional[int] = None cbarrasvalor: Optional[str] = None firmafmex: Optional[str] = None fraccionexp: Optional[int] = None tasafraccmex: Optional[int] = None tipofraccmex: Optional[int] = None numpartemex: Optional[int] = None paisorigenmex: Optional[int] = None costounitmex: Optional[int] = None ocultarempaquemex: Optional[int] = None firmafame: Optional[str] = None fraccioname: Optional[int] = None paisorigename: Optional[int] = None fdainformacioname: Optional[int] = None numparteame: Optional[int] = None codigoscac: Optional[int] = None impordencomp: Optional[int] = None decimalespeso: Optional[int] = None decimalescant: Optional[int] = None decimalesvalor: Optional[int] = None decimalescosto: Optional[int] = None tipomoneda: Optional[str] = None clavemoneda: Optional[str] = None tipomn: Optional[str] = None tipome: Optional[str] = None mostrarvalact: Optional[int] = None pepsporclase: Optional[int] = None pepsporfraccion: Optional[int] = None pepspordescripcion: Optional[int] = None pepsporfraccalterna: Optional[int] = None cantlimite: Optional[Decimal] = None pesolimite: Optional[Decimal] = None valorlimite: Optional[Decimal] = None ventqueueact: Optional[int] = None valfacttc: Optional[str] = None metvalor: Optional[str] = None pagoimpuesto: Optional[str] = None formapago: Optional[str] = None colcantporpeso: Optional[int] = None transportista: Optional[str] = None aaduanalame: Optional[str] = None enviadoporvendidopor: Optional[str] = None conductor: Optional[str] = None transporte: Optional[str] = None numtransporte: Optional[str] = None observacione: Optional[str] = None observacioni: Optional[str] = None proveedorexportador: Optional[str] = None cantlimitemin: Optional[Decimal] = None pesolimitemin: Optional[Decimal] = None valorlimitemin: Optional[Decimal] = None solicitarpswdactual: Optional[int] = None solicitarpswddesactual: Optional[int] = None packingordenventa: Optional[int] = None imprimirpo: Optional[int] = None packingpedclave: Optional[int] = None generafacturaimd: Optional[str] = None generafacturaimdenbasea: Optional[str] = None solicitarcontrasenaadministrador: Optional[int] = None imprimirlote: Optional[int] = None imprimirnumentrada: Optional[int] = None class SettingsPayload(BaseModel): """ Master container for all possible overrides. Using Optional fields so only the delta is required in JSONB. """ # SCAII (Invoices / Inventory) ssisgen: Optional[SSisGenSettings] = None ssisgen2: Optional[SSisGen2Settings] = None ssisgen3: Optional[SSisGen3Settings] = None ssismex: Optional[SSisMexSettings] = None ssisdef: Optional[SSisDefSettings] = None ssisexpo: Optional[SSisExpoSettings] = None ssisimpo: Optional[SSisImpoSettings] = None # SCAF (Fixed Assets) qsiscmex: Optional[QSisCMexSettings] = None qsisdef: Optional[QSisDefSettings] = None qsisgen: Optional[QSisGenSettings] = None qsisexporep: Optional[QSisExpoRepSettings] = None qsisimpo: Optional[QSisImpoSettings] = None qsisimporep: Optional[QSisImpoRepSettings] = None qsisexpo: Optional[QSisExpoSettings] = None # Unified Invoice Settings invoices: Optional["InvoiceSettingsMap"] = None class InvoiceSettingsData(BaseModel): """Container for form-specific invoice settings""" InvoiceTopFieldsFormData: Optional[Dict[str, Any]] = None generalFormData: Optional[Dict[str, Any]] = None observationFormData: Optional[Dict[str, Any]] = None itemsFormData: Optional[Dict[str, Any]] = None othersFormData: Optional[Dict[str, Any]] = None continuationFormData: Optional[Dict[str, Any]] = None class InvoiceSettingsMap(BaseModel): """ Map of invoice settings indexed by operation_type (imp/exp) and then by invoice_type. Example: {"imp": {"factura_importacion": {...}}} """ types: Optional[Dict[str, Dict[str, InvoiceSettingsData]]] = None class AppSettingRequest(BaseModel): tenant_id: Optional[int] = None company_id: Optional[int] = None settings: SettingsPayload class AppSettingResponse(BaseModel): id: int tenant_id: Optional[int] company_id: Optional[int] settings: Dict[str, Any] class Config: from_attributes = True