diff --git a/satcfdi/catalogs/catalogs.db b/satcfdi/catalogs/catalogs.db index 30f527f..e8845a5 100644 Binary files a/satcfdi/catalogs/catalogs.db and b/satcfdi/catalogs/catalogs.db differ diff --git a/satcfdi/transform/objectify.py b/satcfdi/transform/objectify.py index a19ed63..b6c9c43 100644 --- a/satcfdi/transform/objectify.py +++ b/satcfdi/transform/objectify.py @@ -10694,7 +10694,7 @@ def mercancia0(cls, node): if (a := node.attrib.get('BienesTransp')) is not None: self['BienesTransp'] = catalog_code('C592_c_ClaveProdServCP', a) if (a := node.attrib.get('ClaveSTCC')) is not None: - self['ClaveSTCC'] = catalog_code('C592_c_ClaveProdSTCC', a) + self['ClaveSTCC'] = a if (a := node.attrib.get('Descripcion')) is not None: self['Descripcion'] = a if (a := node.attrib.get('Cantidad')) is not None: @@ -10794,7 +10794,7 @@ def transporte_maritimo0(cls, node): if (a := node.attrib.get('LineaNaviera')) is not None: self['LineaNaviera'] = a self['NombreAgenteNaviero'] = node.attrib['NombreAgenteNaviero'] - self['NumAutorizacionNaviero'] = catalog_code('C592_c_NumAutorizacionNaviero', node.attrib['NumAutorizacionNaviero']) + self['NumAutorizacionNaviero'] = node.attrib['NumAutorizacionNaviero'] if (a := node.attrib.get('NumViaje')) is not None: self['NumViaje'] = a if (a := node.attrib.get('NumConocEmbarc')) is not None: @@ -11253,7 +11253,7 @@ def transporte_maritimo1(cls, node): if (a := node.attrib.get('LineaNaviera')) is not None: self['LineaNaviera'] = a self['NombreAgenteNaviero'] = node.attrib['NombreAgenteNaviero'] - self['NumAutorizacionNaviero'] = catalog_code('C592_c_NumAutorizacionNaviero', node.attrib['NumAutorizacionNaviero']) + self['NumAutorizacionNaviero'] = node.attrib['NumAutorizacionNaviero'] if (a := node.attrib.get('NumViaje')) is not None: self['NumViaje'] = a if (a := node.attrib.get('NumConocEmbarc')) is not None: @@ -11662,7 +11662,7 @@ def transporte_maritimo2(cls, node): if (a := node.attrib.get('LineaNaviera')) is not None: self['LineaNaviera'] = a self['NombreAgenteNaviero'] = node.attrib['NombreAgenteNaviero'] - self['NumAutorizacionNaviero'] = catalog_code('C592_c_NumAutorizacionNaviero', node.attrib['NumAutorizacionNaviero']) + self['NumAutorizacionNaviero'] = node.attrib['NumAutorizacionNaviero'] if (a := node.attrib.get('NumViaje')) is not None: self['NumViaje'] = a if (a := node.attrib.get('NumConocEmbarc')) is not None: @@ -12084,7 +12084,7 @@ def transporte_maritimo3(cls, node): if (a := node.attrib.get('LineaNaviera')) is not None: self['LineaNaviera'] = a self['NombreAgenteNaviero'] = node.attrib['NombreAgenteNaviero'] - self['NumAutorizacionNaviero'] = catalog_code('C592_c_NumAutorizacionNaviero', node.attrib['NumAutorizacionNaviero']) + self['NumAutorizacionNaviero'] = node.attrib['NumAutorizacionNaviero'] if (a := node.attrib.get('NumViaje')) is not None: self['NumViaje'] = a if (a := node.attrib.get('NumConocEmbarc')) is not None: diff --git a/satcfdi/transform/schemas/www.sat.gob.mx/sitio_internet/cfd/catalogos/CartaPorte/catCartaPorte.xsd b/satcfdi/transform/schemas/www.sat.gob.mx/sitio_internet/cfd/catalogos/CartaPorte/catCartaPorte.xsd index 9bde016..463f10f 100644 --- a/satcfdi/transform/schemas/www.sat.gob.mx/sitio_internet/cfd/catalogos/CartaPorte/catCartaPorte.xsd +++ b/satcfdi/transform/schemas/www.sat.gob.mx/sitio_internet/cfd/catalogos/CartaPorte/catCartaPorte.xsd @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/satcfdi/transform/xmlify.py b/satcfdi/transform/xmlify.py index 769028c..409b22e 100644 --- a/satcfdi/transform/xmlify.py +++ b/satcfdi/transform/xmlify.py @@ -11239,7 +11239,7 @@ def mercancia0(name, data): if (a := data.get('BienesTransp')) is not None: self.attrib['BienesTransp'] = strcode(a) if (a := data.get('ClaveSTCC')) is not None: - self.attrib['ClaveSTCC'] = strcode(a) + self.attrib['ClaveSTCC'] = a if (a := data.get('Descripcion')) is not None: self.attrib['Descripcion'] = a if (a := data.get('Cantidad')) is not None: @@ -11343,7 +11343,7 @@ def transporte_maritimo0(name, data): if (a := data.get('LineaNaviera')) is not None: self.attrib['LineaNaviera'] = a self.attrib['NombreAgenteNaviero'] = data['NombreAgenteNaviero'] - self.attrib['NumAutorizacionNaviero'] = strcode(data['NumAutorizacionNaviero']) + self.attrib['NumAutorizacionNaviero'] = data['NumAutorizacionNaviero'] if (a := data.get('NumViaje')) is not None: self.attrib['NumViaje'] = a if (a := data.get('NumConocEmbarc')) is not None: @@ -11828,7 +11828,7 @@ def transporte_maritimo1(name, data): if (a := data.get('LineaNaviera')) is not None: self.attrib['LineaNaviera'] = a self.attrib['NombreAgenteNaviero'] = data['NombreAgenteNaviero'] - self.attrib['NumAutorizacionNaviero'] = strcode(data['NumAutorizacionNaviero']) + self.attrib['NumAutorizacionNaviero'] = data['NumAutorizacionNaviero'] if (a := data.get('NumViaje')) is not None: self.attrib['NumViaje'] = a if (a := data.get('NumConocEmbarc')) is not None: @@ -12259,7 +12259,7 @@ def transporte_maritimo2(name, data): if (a := data.get('LineaNaviera')) is not None: self.attrib['LineaNaviera'] = a self.attrib['NombreAgenteNaviero'] = data['NombreAgenteNaviero'] - self.attrib['NumAutorizacionNaviero'] = strcode(data['NumAutorizacionNaviero']) + self.attrib['NumAutorizacionNaviero'] = data['NumAutorizacionNaviero'] if (a := data.get('NumViaje')) is not None: self.attrib['NumViaje'] = a if (a := data.get('NumConocEmbarc')) is not None: @@ -12705,7 +12705,7 @@ def transporte_maritimo3(name, data): if (a := data.get('LineaNaviera')) is not None: self.attrib['LineaNaviera'] = a self.attrib['NombreAgenteNaviero'] = data['NombreAgenteNaviero'] - self.attrib['NumAutorizacionNaviero'] = strcode(data['NumAutorizacionNaviero']) + self.attrib['NumAutorizacionNaviero'] = data['NumAutorizacionNaviero'] if (a := data.get('NumViaje')) is not None: self.attrib['NumViaje'] = a if (a := data.get('NumConocEmbarc')) is not None: diff --git a/tests/test_cfdi/comprobante40/cfdv40-cartaporte20.xml.html b/tests/test_cfdi/comprobante40/cfdv40-cartaporte20.xml.html index b79ab0f..6bd544e 100644 --- a/tests/test_cfdi/comprobante40/cfdv40-cartaporte20.xml.html +++ b/tests/test_cfdi/comprobante40/cfdv40-cartaporte20.xml.html @@ -346,7 +346,7 @@
Mercancias
-
Cantidad: 1.000001
ID Origen: OR123456
ID Destino: DE654321
Claves Transporte: 05 - Ducto
+
Cantidad: 1.000001
ID Origen: OR123456
ID Destino: DE654321
Claves Transporte: 05
Descripcion @@ -354,7 +354,7 @@
Mercancias
No -
M0005 - MUNICIONES INCENDIARIAS con o sin carga dispersora, carga expulsora o carga propulsora (Producto o material explosivo)
+
M0005
Z01 - No aplica @@ -384,10 +384,10 @@
TransporteMaritimo
Contenedor:
Matricula ContenedorTipo ContenedorNo. Precinto
ABC45678901CM009 - Contenedor flat racks123456
Permiso SCT:TPAF03 - Autotransporte Federal de Carga Especializada de materiales y residuos peligrosos
No. de Permiso SCT:567
Nombre Aseguradora:2367
No. Póliza Seguro:631
Tipo Embarcación:B15 - Extraordinaria especialización
Matricula:ABC3456
Número OMI:IMO1234567
Año Embarcación:2021
Nombre de Embarcación:789
Nacionalidad de Embarcación:ZZZ - Países no declarados
Unidades de Arqueo Bruto:23.456
Tipo Carga:PYD - Petróleo y Derivados
No. Certificación ITC:NumCertITC
Eslora:678
Manga:12
Calado:876
Línea Naviera:LineaNaviera
Nombre Agente Naviero:NombreAgenteNaviero
No. Autorización Naviero:SCT418/021/2021
No. Viaje:78
No. de Conocimiento Embarcación:789

TransporteAereo
-
Permiso SCT:TPTA04 - Permiso para el servicio nacional e internacional no regular de taxi aéreo
No. de Permiso SCT:NumPermisoSCT
Matricula Aeronave:A123456
Nombre Aseguradora:NombreAseg
No. Póliza Seguro:345
Número Guía:12345678901234
Lugar Contrato:LugarContrato
Código Transportista:CA156 - Mexicanas; Volaris (Concesionaria Vuela Cia De Aviación)
RFC Embarcador:AAA010101AAA
No. Reg Id Tributaria Embarcación:NumRegIdTribEmbarc
Residencia Fiscal Embarcación:ZZZ - Países no declarados
Nombre Embarcador:NombreEmbarcador
+
Permiso SCT:TPTA04 - Permiso para el servicio nacional e internacional no regular de taxi aéreo
No. de Permiso SCT:NumPermisoSCT
Matricula Aeronave:A123456
Nombre Aseguradora:NombreAseg
No. Póliza Seguro:345
Número Guía:12345678901234
Lugar Contrato:LugarContrato
Código Transportista:CA156 - Volaris (Concesionaria Vuela Cia De Aviación)
RFC Embarcador:AAA010101AAA
No. Reg Id Tributaria Embarcación:NumRegIdTribEmbarc
Residencia Fiscal Embarcación:ZZZ - Países no declarados
Nombre Embarcador:NombreEmbarcador

TransporteFerroviario
-
Derechos de Paso:
Tipo de Derecho de PasoKilometraje Pagado
CDP119 - TEMP-2; Santa Fé (Km. V454+600); Jalapa (V-338+600); Recibe; Vía férrea del Noreste (actualmente Kansas City Southern de México, S.A. de C.V.)12.3
Carro:
ContenedorTipo de CarroMatricula CarroGuia de CarroToneladas Netas Carro
Tipo ContenedorPeso Contenedor VacíoPeso Neto Mercancía
TC05 - 53'; Contenedor de 16.1 Mts de longitud9.99810.001
TC05 - Plataforma IntermodalMatriculaCarroGuiaCarro12.001
Tipo De Servicio:TS04 - Tren unitario Intermodal
Tipo De Trafico:TT04 - Tráfico interlineal en tránsito
Nombre Aseguradora:NombreAseg
No. Póliza Seguro:NumPolizaSeguro
+
Derechos de Paso:
Tipo de Derecho de PasoKilometraje Pagado
CDP119 - TEMP-212.3
Carro:
ContenedorTipo de CarroMatricula CarroGuia de CarroToneladas Netas Carro
Tipo ContenedorPeso Contenedor VacíoPeso Neto Mercancía
TC05 - Contenedor de 16.1 Mts de longitud9.99810.001
TC05 - Plataforma IntermodalMatriculaCarroGuiaCarro12.001
Tipo De Servicio:TS04 - Tren unitario Intermodal
Tipo De Trafico:TT04 - Tráfico interlineal en tránsito
Nombre Aseguradora:NombreAseg
No. Póliza Seguro:NumPolizaSeguro

Figura de Transporte
diff --git a/tests/test_cfdi/comprobante40/cfdv40-cartaporte20.xml.pretty.py b/tests/test_cfdi/comprobante40/cfdv40-cartaporte20.xml.pretty.py index cd426f7..941f2b0 100644 --- a/tests/test_cfdi/comprobante40/cfdv40-cartaporte20.xml.pretty.py +++ b/tests/test_cfdi/comprobante40/cfdv40-cartaporte20.xml.pretty.py @@ -37,12 +37,12 @@ 'Mercancia': [{'BienesTransp': Code('60141405', 'Kits o materiales para juegos de simulación'), 'Cantidad': Decimal('1.000001'), 'CantidadTransporta': [{'Cantidad': Decimal('1.000001'), - 'CvesTransporte': Code('05', 'Ducto'), + 'CvesTransporte': Code('05', None), 'IDDestino': 'DE654321', 'IDOrigen': 'OR123456'}], 'ClaveSTCC': '1234567', 'ClaveUnidad': Code('ZZ', 'Mutuamente definido'), - 'CveMaterialPeligroso': Code('M0005', 'MUNICIONES INCENDIARIAS con o sin carga dispersora, carga expulsora o carga propulsora (Producto o material explosivo)'), + 'CveMaterialPeligroso': Code('M0005', None), 'DescripEmbalaje': 'DescripEmbalaje', 'Descripcion': 'Descripcion', 'DetalleMercancia': {'NumPiezas': 42, @@ -69,7 +69,7 @@ 'NumTotalMercancias': 1, 'PesoBrutoTotal': Decimal('100.123'), 'PesoNetoTotal': Decimal('101.234'), - 'TransporteAereo': {'CodigoTransportista': Code('CA156', ['Mexicanas', 'Volaris (Concesionaria Vuela Cia De Aviación)']), + 'TransporteAereo': {'CodigoTransportista': Code('CA156', 'Volaris (Concesionaria Vuela Cia De Aviación)'), 'LugarContrato': 'LugarContrato', 'MatriculaAeronave': 'A123456', 'NombreAseg': 'NombreAseg', @@ -83,13 +83,13 @@ 'ResidenciaFiscalEmbarc': Code('ZZZ', 'Países no declarados')}, 'TransporteFerroviario': {'Carro': [{'Contenedor': [{'PesoContenedorVacio': Decimal('9.998'), 'PesoNetoMercancia': Decimal('10.001'), - 'TipoContenedor': Code('TC05', ["53'", 'Contenedor de 16.1 Mts de longitud'])}], + 'TipoContenedor': Code('TC05', 'Contenedor de 16.1 Mts de longitud')}], 'GuiaCarro': 'GuiaCarro', 'MatriculaCarro': 'MatriculaCarro', 'TipoCarro': Code('TC05', 'Plataforma Intermodal'), 'ToneladasNetasCarro': Decimal('12.001')}], 'DerechosDePaso': [{'KilometrajePagado': Decimal('12.3'), - 'TipoDerechoDePaso': Code('CDP119', ['TEMP-2', 'Santa Fé (Km. V454+600)', 'Jalapa (V-338+600)', 'Recibe', 'Vía férrea del Noreste (actualmente Kansas City Southern de México, S.A. de C.V.)'])}], + 'TipoDerechoDePaso': Code('CDP119', 'TEMP-2')}], 'NombreAseg': 'NombreAseg', 'NumPolizaSeguro': 'NumPolizaSeguro', 'TipoDeServicio': Code('TS04', 'Tren unitario Intermodal'), @@ -107,7 +107,7 @@ 'NombreAgenteNaviero': 'NombreAgenteNaviero', 'NombreAseg': '2367', 'NombreEmbarc': '789', - 'NumAutorizacionNaviero': Code('SCT418/021/2021', None), + 'NumAutorizacionNaviero': 'SCT418/021/2021', 'NumCertITC': 'NumCertITC', 'NumConocEmbarc': '789', 'NumPermisoSCT': '567', @@ -139,7 +139,7 @@ 'NavegacionTrafico': 'Cabotaje', 'NombreEstacion': 'NombreEstacion', 'NombreRemitenteDestinatario': 'NombreRemitenteDestinatario', - 'NumEstacion': Code('EF001', 'Pantaco'), + 'NumEstacion': Code('EF001', None), 'NumRegIdTrib': '123456', 'RFCRemitenteDestinatario': 'AAA010101AAA', 'ResidenciaFiscal': Code('ZZZ', 'Países no declarados'), @@ -161,14 +161,14 @@ 'NavegacionTrafico': 'Cabotaje', 'NombreEstacion': 'NombreEstacion', 'NombreRemitenteDestinatario': 'NombreRemitenteDestinatario', - 'NumEstacion': Code('EF001', 'Pantaco'), + 'NumEstacion': Code('EF001', None), 'NumRegIdTrib': '012345', 'RFCRemitenteDestinatario': 'BASJ600902KL9', 'ResidenciaFiscal': Code('ZZZ', 'Países no declarados'), 'TipoEstacion': Code('03', 'Destino Final Nacional'), 'TipoUbicacion': 'Destino'}], 'Version': '2.0', - 'ViaEntradaSalida': Code('05', 'Ducto')}}, + 'ViaEntradaSalida': Code('05', None)}}, 'Conceptos': [{'Cantidad': Decimal('1'), 'ClaveProdServ': Code('84111506', 'Servicios de facturación'), 'ClaveUnidad': Code('ACT', 'Actividad'), diff --git a/tests/test_cfdi/comprobante40/cfdv40-ine11.xml.pretty.py b/tests/test_cfdi/comprobante40/cfdv40-ine11.xml.pretty.py index 4fb9478..efaba0f 100644 --- a/tests/test_cfdi/comprobante40/cfdv40-ine11.xml.pretty.py +++ b/tests/test_cfdi/comprobante40/cfdv40-ine11.xml.pretty.py @@ -1,12 +1,12 @@ {'Certificado': '', 'CfdiRelacionados': [{'CfdiRelacionado': ['F4F09AEF-57F2-4BE0-A828-87D1A80ED61C'], 'TipoRelacion': Code('09', 'Factura generada por pagos diferidos')}], - 'Complemento': {'INE': {'Entidad': [{'Ambito': Code('Federal', None), + 'Complemento': {'INE': {'Entidad': [{'Ambito': 'Federal', 'ClaveEntidad': Code('ZAC', ['MEX', 'Zacatecas']), 'Contabilidad': [123456]}], 'IdContabilidad': 123456, - 'TipoComite': Code('Directivo Estatal', None), - 'TipoProceso': Code('Campaña', None), + 'TipoComite': 'Directivo Estatal', + 'TipoProceso': 'Campaña', 'Version': '1.1'}}, 'Conceptos': [{'Cantidad': Decimal('1'), 'ClaveProdServ': Code('84111506', 'Servicios de facturación'), diff --git a/tests/test_cfdi/retenciones20/retenciones20-ejemplo.xml.pretty.py b/tests/test_cfdi/retenciones20/retenciones20-ejemplo.xml.pretty.py index b9c76ff..a1cf1eb 100644 --- a/tests/test_cfdi/retenciones20/retenciones20-ejemplo.xml.pretty.py +++ b/tests/test_cfdi/retenciones20/retenciones20-ejemplo.xml.pretty.py @@ -116,7 +116,7 @@ 'FolioInt': '1RETENCION', 'LugarExpRetenc': '99999', 'NoCertificado': '30001000000300023708', - 'Periodo': {'Ejercicio': Code('2027', None), + 'Periodo': {'Ejercicio': '2027', 'MesFin': Code('12', 'Diciembre'), 'MesIni': Code('01', 'Enero')}, 'Receptor': {'Nacional': {'CurpR': 'XAXX010101HNTXXX00', diff --git a/tests/test_cfdi/retenciones20/retenciones20-min-comps.xml.pretty.py b/tests/test_cfdi/retenciones20/retenciones20-min-comps.xml.pretty.py index 6227770..56b7808 100644 --- a/tests/test_cfdi/retenciones20/retenciones20-min-comps.xml.pretty.py +++ b/tests/test_cfdi/retenciones20/retenciones20-min-comps.xml.pretty.py @@ -90,7 +90,7 @@ 'FechaExp': datetime.datetime(2021, 12, 12, 12, 45, 29), 'LugarExpRetenc': '99999', 'NoCertificado': '30001000000300023708', - 'Periodo': {'Ejercicio': Code('2027', None), + 'Periodo': {'Ejercicio': '2027', 'MesFin': Code('12', 'Diciembre'), 'MesIni': Code('01', 'Enero')}, 'Receptor': {'Extranjero': {'NomDenRazSocR': 'PERSONA FISICA NACIONAL DE ' diff --git a/tests/test_cfdi/retenciones20/retenciones20-min.xml.pretty.py b/tests/test_cfdi/retenciones20/retenciones20-min.xml.pretty.py index 746426a..402def6 100644 --- a/tests/test_cfdi/retenciones20/retenciones20-min.xml.pretty.py +++ b/tests/test_cfdi/retenciones20/retenciones20-min.xml.pretty.py @@ -7,7 +7,7 @@ 'FechaExp': datetime.datetime(2021, 12, 12, 12, 45, 29), 'LugarExpRetenc': '99999', 'NoCertificado': '30001000000300023708', - 'Periodo': {'Ejercicio': Code('2027', None), + 'Periodo': {'Ejercicio': '2027', 'MesFin': Code('12', 'Diciembre'), 'MesIni': Code('01', 'Enero')}, 'Receptor': {'Extranjero': {'NomDenRazSocR': 'PERSONA FISICA NACIONAL DE '