Passed
Push — main ( 14f49d...ad1d0d )
by Sat CFDI
06:20 queued 01:04
created

CartaPorte.__init__()   A

Complexity

Conditions 1

Size

Total Lines 31
Code Lines 30

Duplication

Lines 31
Ratio 100 %

Importance

Changes 0
Metric Value
cc 1
eloc 30
nop 14
dl 31
loc 31
rs 9.16
c 0
b 0
f 0

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
"""cartaporte31 http://www.sat.gob.mx/CartaPorte31"""
2
from decimal import Decimal
3
from datetime import datetime, date, time
4
from collections.abc import Sequence
5
from ...cfdi import CFDI
6
from ...xelement import XElement
7
from ...utils import ScalarMap
8
9
10 View Code Duplication
class Domicilio(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
11
    """
12
    Nodo opcional para registrar información del domicilio del(los) tipo(s) de figura transporte que intervenga(n) en el traslado de los bienes y/o mercancías.
13
    
14
    :param estado: Atributo requerido para registrar el estado, entidad, región, comunidad, o dato análogo en donde se encuentra ubicado el domicilio del(los) tipo(s) de figura transporte.
15
    :param pais: Atributo requerido que sirve para registrar la clave del país en donde se encuentra ubicado el domicilio del(los) tipo(s) de figura transporte, conforme al catálogo c_Pais del CFDI publicado en el portal del SAT en Internet de acuerdo a la especificación ISO 3166-1.
16
    :param codigo_postal: Atributo requerido para registrar el código postal en donde se encuentra ubicado el domicilio del(los) tipo(s) de figura transporte.
17
    :param calle: Atributo opcional que sirve para registrar la calle en la que está ubicado el domicilio del(los) tipo(s) de figura transporte.
18
    :param numero_exterior: Atributo opcional que sirve para registrar el número exterior en donde se ubica el domicilio del(los) tipo(s) de figura transporte.
19
    :param numero_interior: Atributo opcional que sirve para registrar el número interior, en caso de existir, en donde se ubica el domicilio del(los) tipo(s) de figura transporte.
20
    :param colonia: Atributo opcional que sirve para expresar la clave de la colonia o dato análogo en donde se ubica el domicilio del(los) tipo(s) de figura transporte.
21
    :param localidad: Atributo opcional para registrar la clave de la ciudad, población, distrito o dato análogo de donde se encuentra ubicado el domicilio del(los) tipo(s) de figura transporte.
22
    :param referencia: Atributo opcional para registrar una referencia geográfica adicional que permita una fácil o precisa ubicación del domicilio del(los) tipo(s) de figura transporte; por ejemplo, las coordenadas del GPS.
23
    :param municipio: Atributo opcional para registrar la clave del municipio, delegación o alcaldía, condado o dato análogo en donde se encuentra ubicado el domicilio del(los) tipo(s) de figura transporte.
24
    """
25
    
26
    def __init__(
27
            self,
28
            estado: str,
29
            pais: str,
30
            codigo_postal: str,
31
            calle: str = None,
32
            numero_exterior: str = None,
33
            numero_interior: str = None,
34
            colonia: str = None,
35
            localidad: str = None,
36
            referencia: str = None,
37
            municipio: str = None,
38
    ): 
39
        super().__init__({
40
            'Estado': estado,
41
            'Pais': pais,
42
            'CodigoPostal': codigo_postal,
43
            'Calle': calle,
44
            'NumeroExterior': numero_exterior,
45
            'NumeroInterior': numero_interior,
46
            'Colonia': colonia,
47
            'Localidad': localidad,
48
            'Referencia': referencia,
49
            'Municipio': municipio,
50
        })
51
        
52
53 View Code Duplication
class TiposFigura(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
54
    """
55
    Nodo condicional para indicar los datos del(los) tipo(s) de figura(s) que participan en el traslado de los bienes y/o mercancías en los distintos medios de transporte.
56
    
57
    :param tipo_figura: Atributo requerido para registrar la clave de la figura de transporte que interviene en el traslado de los bienes y/o mercancías.
58
    :param nombre_figura: Atributo requerido para registrar el nombre de la figura de transporte que interviene en el traslado de los bienes y/o mercancías.
59
    :param rfc_figura: Atributo condicional para registrar el RFC de la figura de transporte que interviene en el traslado de los bienes y/o mercancías.
60
    :param num_licencia: Atributo condicional para expresar el número de la licencia o el permiso otorgado al operador del autotransporte de carga en el que realiza el traslado de los bienes y/o mercancías.
61
    :param num_reg_id_trib_figura: Atributo condicional para registrar el número de identificación o registro fiscal del país de residencia de la figura de transporte que interviene en el traslado de los bienes y/o mercancías, cuando se trate de residentes en el extranjero para los efectos fiscales correspondientes.
62
    :param residencia_fiscal_figura: Atributo condicional para registrar la clave del país de residencia de la figura de transporte que interviene en el traslado de los bienes y/o mercancías para los efectos fiscales correspondientes.
63
    :param partes_transporte: Nodo condicional para indicar los datos de las partes del transporte de las cuales el emisor del comprobante es distinto al dueño de las mismas, por ejemplo: vehículos, máquinas, contenedores, plataformas, entre otros, etc; mismos que son utilizados para el traslado de los bienes y/o mercancías.
64
    :param domicilio: Nodo opcional para registrar información del domicilio del(los) tipo(s) de figura transporte que intervenga(n) en el traslado de los bienes y/o mercancías.
65
    """
66
    
67
    def __init__(
68
            self,
69
            tipo_figura: str,
70
            nombre_figura: str,
71
            rfc_figura: str = None,
72
            num_licencia: str = None,
73
            num_reg_id_trib_figura: str = None,
74
            residencia_fiscal_figura: str = None,
75
            partes_transporte: str | Sequence[str] = None,
76
            domicilio: Domicilio | dict = None,
77
    ): 
78
        super().__init__({
79
            'TipoFigura': tipo_figura,
80
            'NombreFigura': nombre_figura,
81
            'RFCFigura': rfc_figura,
82
            'NumLicencia': num_licencia,
83
            'NumRegIdTribFigura': num_reg_id_trib_figura,
84
            'ResidenciaFiscalFigura': residencia_fiscal_figura,
85
            'PartesTransporte': partes_transporte,
86
            'Domicilio': domicilio,
87
        })
88
        
89
90
class DerechosDePaso(ScalarMap):
91
    """
92
    Nodo opcional para registrar los tipos de derechos de paso cubiertos por el transportista en las vías férreas de las cuales no es concesionario o asignatario, así como la distancia establecida en kilómetros.
93
    
94
    :param tipo_derecho_de_paso: Atributo requerido para registrar la clave del derecho de paso pagado por el transportista en las vías férreas de las cuales no es concesionario o asignatario.
95
    :param kilometraje_pagado: Atributo requerido para registrar el total de kilómetros pagados por el transportista en las vías férreas de las cuales no es concesionario o asignatario con el derecho de paso.
96
    """
97
    
98
    def __init__(
99
            self,
100
            tipo_derecho_de_paso: str,
101
            kilometraje_pagado: Decimal | int,
102
    ): 
103
        super().__init__({
104
            'TipoDerechoDePaso': tipo_derecho_de_paso,
105
            'KilometrajePagado': kilometraje_pagado,
106
        })
107
        
108
109
class Contenedor(ScalarMap):
110
    """
111
    Nodo condicional para especificar el tipo de contenedor o vagón en el que se trasladan los bienes y/o mercancías por vía férrea.
112
    
113
    :param tipo_contenedor: Atributo requerido para registrar la clave con la que se identifica al tipo de contenedor o el vagón en el que se realiza el traslado de los bienes y/o mercancías.
114
    :param peso_contenedor_vacio: Atributo requerido para registrar en kilogramos, el peso del contenedor vacío en el que se trasladan los bienes y/o mercancías.
115
    :param peso_neto_mercancia: Atributo requerido para registrar en kilogramos el peso neto de los bienes y/o mercancías que son trasladados en el contenedor.
116
    """
117
    
118
    def __init__(
119
            self,
120
            tipo_contenedor: str,
121
            peso_contenedor_vacio: Decimal | int,
122
            peso_neto_mercancia: Decimal | int,
123
    ): 
124
        super().__init__({
125
            'TipoContenedor': tipo_contenedor,
126
            'PesoContenedorVacio': peso_contenedor_vacio,
127
            'PesoNetoMercancia': peso_neto_mercancia,
128
        })
129
        
130
131 View Code Duplication
class Carro(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
132
    """
133
    Nodo requerido para registrar la información que permite identificar el (los) carro(s) en el (los) que se trasladan los bienes y/o mercancías por vía férrea.
134
    
135
    :param tipo_carro: Atributo requerido para registrar la clave del tipo de carro utilizado para el traslado de los bienes y/o mercancías por vía férrea.
136
    :param matricula_carro: Atributo requerido para registrar el número de contenedor, carro de ferrocarril o número económico del vehículo en el que se trasladan los bienes y/o mercancías por vía férrea.
137
    :param guia_carro: Atributo requerido para registrar el número de guía asignado al contenedor, carro de ferrocarril o vehículo, en el que se trasladan los bienes y/o mercancías por vía férrea.
138
    :param toneladas_netas_carro: Atributo requerido para registrar la cantidad de las toneladas netas depositadas en el contenedor, carro de ferrocarril o vehículo en el que se trasladan los bienes y/o mercancías por vía férrea.
139
    :param contenedor: Nodo condicional para especificar el tipo de contenedor o vagón en el que se trasladan los bienes y/o mercancías por vía férrea.
140
    """
141
    
142
    def __init__(
143
            self,
144
            tipo_carro: str,
145
            matricula_carro: str,
146
            guia_carro: str,
147
            toneladas_netas_carro: Decimal | int,
148
            contenedor: Contenedor | dict | Sequence[Contenedor | dict] = None,
149
    ): 
150
        super().__init__({
151
            'TipoCarro': tipo_carro,
152
            'MatriculaCarro': matricula_carro,
153
            'GuiaCarro': guia_carro,
154
            'ToneladasNetasCarro': toneladas_netas_carro,
155
            'Contenedor': contenedor,
156
        })
157
        
158
159 View Code Duplication
class TransporteFerroviario(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
160
    """
161
    Nodo condicional para registrar la información que permita la identificación del carro o contenedor en el que se trasladan los bienes y/o mercancías por vía férrea.
162
    
163
    :param tipo_de_servicio: Atributo requerido para registrar la clave del tipo de servicio utilizado para el traslado de los bienes y/o mercancías por vía férrea.
164
    :param tipo_de_trafico: Atributo requerido para registrar la clave del tipo de tráfico (interrelación entre concesionarios) para realizar el traslado de los bienes y/o mercancías por vía férrea dentro del territorio nacional.
165
    :param carro: Nodo requerido para registrar la información que permite identificar el (los) carro(s) en el (los) que se trasladan los bienes y/o mercancías por vía férrea.
166
    :param nombre_aseg: Atributo opcional para registrar el nombre de la aseguradora que cubre los riesgos para el traslado de los bienes y/o mercancías por vía férrea.
167
    :param num_poliza_seguro: Atributo opcional para registrar el número de póliza asignada por la aseguradora para la protección e indemnización por responsabilidad civil en el traslado de los bienes y/o mercancías que se realiza por vía férrea.
168
    :param derechos_de_paso: Nodo opcional para registrar los tipos de derechos de paso cubiertos por el transportista en las vías férreas de las cuales no es concesionario o asignatario, así como la distancia establecida en kilómetros.
169
    """
170
    
171
    def __init__(
172
            self,
173
            tipo_de_servicio: str,
174
            tipo_de_trafico: str,
175
            carro: Carro | dict | Sequence[Carro | dict],
176
            nombre_aseg: str = None,
177
            num_poliza_seguro: str = None,
178
            derechos_de_paso: DerechosDePaso | dict | Sequence[DerechosDePaso | dict] = None,
179
    ): 
180
        super().__init__({
181
            'TipoDeServicio': tipo_de_servicio,
182
            'TipoDeTrafico': tipo_de_trafico,
183
            'Carro': carro,
184
            'NombreAseg': nombre_aseg,
185
            'NumPolizaSeguro': num_poliza_seguro,
186
            'DerechosDePaso': derechos_de_paso,
187
        })
188
        
189
190 View Code Duplication
class TransporteAereo(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
191
    """
192
    Nodo condicional para registrar la información que permita la identificación del transporte aéreo por medio del cual se trasladan los bienes y/o mercancías.
193
    
194
    :param perm_sct: Atributo requerido para registrar la clave del permiso proporcionado por la Secretaría de Infraestructura, Comunicaciones y Transportes (SICT), o la autoridad análoga, la cual debe corresponder con la aeronave que se está utilizando para realizar el traslado de los bienes y/o mercancías por vía aérea.
195
    :param num_permiso_sct: Atributo requerido para registrar el número de permiso o valor análogo proporcionado por la Secretaría de Infraestructura, Comunicaciones y Transportes (SICT), o la autoridad análoga, según corresponda, para el transporte de bienes y/o mercancías por vía aérea.
196
    :param numero_guia: Atributo requerido para registrar el número de guía aérea con el que se trasladan los bienes y/o mercancías.
197
    :param codigo_transportista: Atributo requerido para registrar el valor del código que tiene asignado el transportista el cual debe contener alguna de las claves contenidas en el catálogo correspondiente.
198
    :param matricula_aeronave: Atributo opcional para registrar el número de la matrícula de la aeronave con la que se realiza el traslado de los bienes y/o mercancías en territorio nacional el cual tiene una longitud de 10 posiciones y se compone de valores alfanuméricos, más el carácter especial denominado guion medio “-“.
199
    :param nombre_aseg: Atributo opcional para registrar el nombre de la aseguradora que cubre los riesgos de la aeronave con la que transportan los bienes y/o mercancías.
200
    :param num_poliza_seguro: Atributo opcional para registrar el número de póliza asignado por la aseguradora que cubre la protección e indemnización por responsabilidad civil de la aeronave que transporta los bienes y/o mercancías.
201
    :param lugar_contrato: Atributo opcional para registrar el lugar, entidad, región, localidad o análogo, donde se celebró el contrato para realizar el traslado de los bienes y/o mercancías.
202
    :param rfc_embarcador: Atributo opcional para registrar el RFC del embarcador de los bienes y/o mercancías que se trasladan.
203
    :param num_reg_id_trib_embarc: Atributo condicional para incorporar el número de identificación o registro fiscal del país de residencia cuando el embarcador sea residente en el extranjero para los efectos fiscales correspondientes de los bienes y/o mercancías que se trasladan.
204
    :param residencia_fiscal_embarc: Atributo condicional para registrar la clave del país de residencia para efectos fiscales del embarcador de los bienes y/o mercancías.
205
    :param nombre_embarcador: Atributo opcional para registrar el nombre del embarcador de los bienes y/o mercancías que se trasladan, ya sea nacional o extranjero.
206
    """
207
    
208
    def __init__(
209
            self,
210
            perm_sct: str,
211
            num_permiso_sct: str,
212
            numero_guia: str,
213
            codigo_transportista: str,
214
            matricula_aeronave: str = None,
215
            nombre_aseg: str = None,
216
            num_poliza_seguro: str = None,
217
            lugar_contrato: str = None,
218
            rfc_embarcador: str = None,
219
            num_reg_id_trib_embarc: str = None,
220
            residencia_fiscal_embarc: str = None,
221
            nombre_embarcador: str = None,
222
    ): 
223
        super().__init__({
224
            'PermSCT': perm_sct,
225
            'NumPermisoSCT': num_permiso_sct,
226
            'NumeroGuia': numero_guia,
227
            'CodigoTransportista': codigo_transportista,
228
            'MatriculaAeronave': matricula_aeronave,
229
            'NombreAseg': nombre_aseg,
230
            'NumPolizaSeguro': num_poliza_seguro,
231
            'LugarContrato': lugar_contrato,
232
            'RFCEmbarcador': rfc_embarcador,
233
            'NumRegIdTribEmbarc': num_reg_id_trib_embarc,
234
            'ResidenciaFiscalEmbarc': residencia_fiscal_embarc,
235
            'NombreEmbarcador': nombre_embarcador,
236
        })
237
        
238
239
class RemolqueCCP(ScalarMap):
240
    """
241
    Nodo requerido para expresar la información del(los) remolque(s) o semirremolque(s) que se adapta(n) al autotransporte que realizó el traslado de los bienes y/o mercancías registrado en el CFDI con complemento Carta Porte, únicamente aplica para traslado mediante ferri.
242
    
243
    :param sub_tipo_rem_ccp: Atributo requerido para expresar la clave del subtipo de remolque o semirremolques que se emplean con el autotransporte que realizó el traslado de los bienes y/o mercancías registrado en el CFDI con complemento Carta Porte, únicamente aplica para traslado mediante ferri.
244
    :param placa_ccp: Atributo requerido para registrar los caracteres alfanuméricos, sin guiones ni espacios de la placa del remolque o semirremolque registrado en el CFDI con complemento Carta Porte, únicamente aplica para traslado mediante ferri.
245
    """
246
    
247
    def __init__(
248
            self,
249
            sub_tipo_rem_ccp: str,
250
            placa_ccp: str,
251
    ): 
252
        super().__init__({
253
            'SubTipoRemCCP': sub_tipo_rem_ccp,
254
            'PlacaCCP': placa_ccp,
255
        })
256
        
257
258 View Code Duplication
class TransporteMaritimo(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
259
    """
260
    Nodo condicional para registrar la información que permita la identificación de la embarcación a través de la cual se trasladan los bienes y/o mercancías por vía marítima.
261
    
262
    :param tipo_embarcacion: Atributo requerido para registrar la clave de identificación del tipo de embarcación que es utilizado para trasladar los bienes y/o mercancías.
263
    :param matricula: Atributo requerido para registrar el número de la matrícula o registro de la embarcación que es utilizada para transportar los bienes y/o mercancías.
264
    :param numero_omi: Atributo requerido para registrar el número de identificación asignado por la Organización Marítima Internacional, a la embarcación encargada de transportar los bienes y/o mercancías.
265
    :param nacionalidad_embarc: Atributo requerido para registrar la clave del país correspondiente a la nacionalidad de la embarcación que transporta los bienes y/o mercancías.
266
    :param unidades_de_arq_bruto: Atributo requerido para registrar el valor de las unidades de arqueo bruto conforme a las medidas internacionales definidas por el ITC para cada tipo de buque o embarcación en la que se transportan los bienes y/o mercancías.
267
    :param tipo_carga: Atributo requerido para especificar el tipo de carga en el cual se clasifican los bienes y/o mercancías que se transportan en la embarcación.
268
    :param nombre_agente_naviero: Atributo requerido para registrar el nombre del agente naviero consignatario autorizado para gestionar el traslado de los bienes y/o mercancías por vía marítima.
269
    :param num_autorizacion_naviero: Atributo requerido para expresar el número de la autorización como agente naviero consignatario emitida por la autoridad correspondiente.
270
    :param perm_sct: Atributo opcional para registrar la clave del permiso proporcionado por la Secretaría de Infraestructura, Comunicaciones y Transportes (SICT), la cual debe corresponder con la embarcación que se está utilizando para el traslado de los bienes y/o mercancías, de acuerdo al catálogo correspondiente.
271
    :param num_permiso_sct: Atributo opcional para registrar el número del permiso otorgado por la Secretaría de Infraestructura, Comunicaciones y Transportes (SICT), a la embarcación utilizada para el traslado de los bienes y/o mercancías.
272
    :param nombre_aseg: Atributo opcional para registrar el nombre de la aseguradora que cubre la protección e indemnización por responsabilidad civil de la embarcación en el traslado de los bienes y/o mercancías.
273
    :param num_poliza_seguro: Atributo opcional para registrar el número de póliza asignada por la aseguradora que cubre la protección e indemnización por responsabilidad civil de la embarcación en el traslado de los bienes y/o mercancías.
274
    :param anio_embarcacion: Atributo opcional para registrar el año de la embarcación en la que se transportan los bienes y/o mercancías.
275
    :param nombre_embarc: Atributo opcional para registrar el nombre de la embarcación en la que se realiza el traslado de los bienes y/o mercancías.
276
    :param eslora: Atributo opcional para registrar la longitud de eslora, definida en pies, con la que cuenta la embarcación o el buque en el que se transportan los bienes y/o mercancías.
277
    :param manga: Atributo opcional para registrar la longitud de manga, definida en pies, con la que cuenta la embarcación o el buque en el que se transportan los bienes y/o mercancías.
278
    :param calado: Atributo opcional para registrar la longitud del calado, definida en pies, con la que cuenta la embarcación o el buque en el que se transportan los bienes y/o mercancías.
279
    :param puntal: Atributo opcional para registrar la longitud del puntal, definida en pies, con la que cuenta la embarcación o el buque en el que se transportan los bienes y/o mercancías.
280
    :param linea_naviera: Atributo opcional para registrar el nombre de la línea naviera autorizada de gestionar el traslado de los bienes y/o mercancías por vía marítima.
281
    :param num_viaje: Atributo opcional para registrar el número del viaje con el que se identifica el traslado de los bienes y/o mercancías en el buque o la embarcación.
282
    :param num_conoc_embarc: Atributo opcional para registrar el número de conocimiento de embarque con el que se identifica el traslado de los bienes y/o mercancías.
283
    :param permiso_temp_navegacion: Atributo condicional para registrar el permiso temporal de navegación de la embarcación o buque que transporta los bienes y/o mercancías.
284
    :param contenedor: Nodo opcional para registrar los datos del contenedor en el que se transportan los bienes y/o mercancías.
285
    """
286
    
287
    def __init__(
288
            self,
289
            tipo_embarcacion: str,
290
            matricula: str,
291
            numero_omi: str,
292
            nacionalidad_embarc: str,
293
            unidades_de_arq_bruto: Decimal | int,
294
            tipo_carga: str,
295
            nombre_agente_naviero: str,
296
            num_autorizacion_naviero: str,
297
            perm_sct: str = None,
298
            num_permiso_sct: str = None,
299
            nombre_aseg: str = None,
300
            num_poliza_seguro: str = None,
301
            anio_embarcacion: int = None,
302
            nombre_embarc: str = None,
303
            eslora: Decimal | int = None,
304
            manga: Decimal | int = None,
305
            calado: Decimal | int = None,
306
            puntal: Decimal | int = None,
307
            linea_naviera: str = None,
308
            num_viaje: str = None,
309
            num_conoc_embarc: str = None,
310
            permiso_temp_navegacion: str = None,
311
            contenedor: Contenedor | dict | Sequence[Contenedor | dict] = None,
312
    ): 
313
        super().__init__({
314
            'TipoEmbarcacion': tipo_embarcacion,
315
            'Matricula': matricula,
316
            'NumeroOMI': numero_omi,
317
            'NacionalidadEmbarc': nacionalidad_embarc,
318
            'UnidadesDeArqBruto': unidades_de_arq_bruto,
319
            'TipoCarga': tipo_carga,
320
            'NombreAgenteNaviero': nombre_agente_naviero,
321
            'NumAutorizacionNaviero': num_autorizacion_naviero,
322
            'PermSCT': perm_sct,
323
            'NumPermisoSCT': num_permiso_sct,
324
            'NombreAseg': nombre_aseg,
325
            'NumPolizaSeguro': num_poliza_seguro,
326
            'AnioEmbarcacion': anio_embarcacion,
327
            'NombreEmbarc': nombre_embarc,
328
            'Eslora': eslora,
329
            'Manga': manga,
330
            'Calado': calado,
331
            'Puntal': puntal,
332
            'LineaNaviera': linea_naviera,
333
            'NumViaje': num_viaje,
334
            'NumConocEmbarc': num_conoc_embarc,
335
            'PermisoTempNavegacion': permiso_temp_navegacion,
336
            'Contenedor': contenedor,
337
        })
338
        
339
340
class Remolque(ScalarMap):
341
    """
342
    Nodo requerido para expresar la información del(los) remolque(s) o semirremolque(s) que se adapta(n) al autotransporte para realizar el traslado de los bienes y/o mercancías.
343
    
344
    :param sub_tipo_rem: Atributo requerido para expresar la clave del subtipo de remolque o semirremolques que se emplean con el autotransporte para el traslado de los bienes y/o mercancías.
345
    :param placa: Atributo requerido para registrar los caracteres alfanuméricos, sin guiones ni espacios de la placa vehicular del remolque o semirremolque que es utilizado para transportar los bienes y/o mercancías.
346
    """
347
    
348
    def __init__(
349
            self,
350
            sub_tipo_rem: str,
351
            placa: str,
352
    ): 
353
        super().__init__({
354
            'SubTipoRem': sub_tipo_rem,
355
            'Placa': placa,
356
        })
357
        
358
359
class Seguros(ScalarMap):
360
    """
361
    Nodo requerido para registrar los datos de las pólizas de seguro que cubren los riesgos en el traslado de los bienes y/o mercancías.
362
    
363
    :param asegura_resp_civil: Atributo requerido para registrar el nombre de la aseguradora que cubre los riesgos por responsabilidad civil del autotransporte utilizado para el traslado de los bienes y/o mercancías.
364
    :param poliza_resp_civil: Atributo requerido para registrar el número de póliza asignado por la aseguradora, que cubre los riesgos por responsabilidad civil del autotransporte utilizado para el traslado de los bienes y/o mercancías.
365
    :param asegura_med_ambiente: Atributo condicional para registrar el nombre de la aseguradora, que cubre los posibles daños al medio ambiente cuando exista al menos una mercancía tipificada como material peligroso se debe registrar la información del atributo “AseguraMedAmbiente” (aplicable para los transportistas de materiales, residuos o remanentes y desechos peligrosos.
366
    :param poliza_med_ambiente: Atributo condicional para registrar el número de póliza asignado por la aseguradora, que cubre los posibles daños al medio ambiente cuando exista al menos una mercancía tipificada como material peligroso se debe registrar la información del atributo “AseguraMedAmbiente” (aplicable para los transportistas de materiales, residuos o remanentes y desechos peligrosos).
367
    :param asegura_carga: Atributo opcional para registrar el nombre de la aseguradora que cubre los riesgos de la carga (bienes y/o mercancías) del autotransporte utilizado para el traslado.
368
    :param poliza_carga: Atributo opcional para expresar el número de póliza asignado por la aseguradora que cubre los riesgos de la carga (bienes y/o mercancías) del autotransporte utilizado para el traslado.
369
    :param prima_seguro: Atributo opcional para registrar el valor del importe por el cargo adicional convenido entre el transportista y el cliente, el cual será igual al valor de la prima del seguro contratado, conforme a lo establecido en la cláusula novena del Acuerdo por el que se homologa la Carta de Porte regulada por la Ley de Caminos, Puentes y Autotransporte Federal, con el complemento Carta Porte que debe acompañar al Comprobante Fiscal Digital por Internet (CFDI).
370
    """
371
    
372
    def __init__(
373
            self,
374
            asegura_resp_civil: str,
375
            poliza_resp_civil: str,
376
            asegura_med_ambiente: str = None,
377
            poliza_med_ambiente: str = None,
378
            asegura_carga: str = None,
379
            poliza_carga: str = None,
380
            prima_seguro: Decimal | int = None,
381
    ): 
382
        super().__init__({
383
            'AseguraRespCivil': asegura_resp_civil,
384
            'PolizaRespCivil': poliza_resp_civil,
385
            'AseguraMedAmbiente': asegura_med_ambiente,
386
            'PolizaMedAmbiente': poliza_med_ambiente,
387
            'AseguraCarga': asegura_carga,
388
            'PolizaCarga': poliza_carga,
389
            'PrimaSeguro': prima_seguro,
390
        })
391
        
392
393
class IdentificacionVehicular(ScalarMap):
394
    """
395
    Nodo requerido para registrar los datos de identificación del autotransporte en el que se trasladan los bienes y/o mercancías.
396
    
397
    :param config_vehicular: Atributo requerido para expresar la clave de nomenclatura del autotransporte que es utilizado para transportar los bienes y/o mercancías.
398
    :param peso_bruto_vehicular: Atributo requerido para indicar en toneladas el peso bruto vehicular permitido del autotransporte de acuerdo a la NOM-SCT-012-2017 que es utilizado para realizar el traslado de los bienes y/o mercancías.
399
    :param placa_vm: Atributo requerido para registrar solo los caracteres alfanuméricos, sin guiones ni espacios de la placa vehicular del autotransporte que es utilizado para transportar los bienes y/o mercancías.
400
    :param anio_modelo_vm: Atributo requerido para registrar el año del autotransporte que es utilizado para transportar los bienes y/o mercancías.
401
    """
402
    
403
    def __init__(
404
            self,
405
            config_vehicular: str,
406
            peso_bruto_vehicular: Decimal | int,
407
            placa_vm: str,
408
            anio_modelo_vm: int,
409
    ): 
410
        super().__init__({
411
            'ConfigVehicular': config_vehicular,
412
            'PesoBrutoVehicular': peso_bruto_vehicular,
413
            'PlacaVM': placa_vm,
414
            'AnioModeloVM': anio_modelo_vm,
415
        })
416
        
417
418 View Code Duplication
class Autotransporte(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
419
    """
420
    Nodo condicional para registrar la información que permita la identificación del autotransporte de carga, por medio del cual se trasladan los bienes y/o mercancías, que transitan a través de las carreteras del territorio nacional.
421
    
422
    :param perm_sct: Atributo requerido para registrar la clave del tipo de permiso proporcionado por la Secretaría de Infraestructura, Comunicaciones y Transportes (SICT) o la autoridad análoga, el cual debe corresponder con el tipo de autotransporte utilizado para el traslado de los bienes y/o mercancías de acuerdo al catálogo correspondiente.
423
    :param num_permiso_sct: Atributo requerido para registrar el número del permiso otorgado por la Secretaría de Infraestructura, Comunicaciones y Transportes (SICT) o la autoridad correspondiente, al autotransporte utilizado para el traslado de los bienes y/o mercancías.
424
    :param identificacion_vehicular: Nodo requerido para registrar los datos de identificación del autotransporte en el que se trasladan los bienes y/o mercancías.
425
    :param seguros: Nodo requerido para registrar los datos de las pólizas de seguro que cubren los riesgos en el traslado de los bienes y/o mercancías.
426
    :param remolques: Nodo condicional para registrar los datos del(los) remolque(s) o semirremolque(s) que se adaptan al autotransporte para realizar el traslado de los bienes y/o mercancías.
427
    """
428
    
429
    def __init__(
430
            self,
431
            perm_sct: str,
432
            num_permiso_sct: str,
433
            identificacion_vehicular: IdentificacionVehicular | dict,
434
            seguros: Seguros | dict,
435
            remolques: Remolque | dict | Sequence[Remolque | dict] = None,
436
    ): 
437
        super().__init__({
438
            'PermSCT': perm_sct,
439
            'NumPermisoSCT': num_permiso_sct,
440
            'IdentificacionVehicular': identificacion_vehicular,
441
            'Seguros': seguros,
442
            'Remolques': remolques,
443
        })
444
        
445
446
class DetalleMercancia(ScalarMap):
447
    """
448
    Nodo condicional para registrar especificaciones de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte.
449
    
450
    :param unidad_peso_merc: Atributo requerido para registrar la clave de la unidad de medida estandarizada del peso de los bienes y/o mercancías que se trasladan en los distintos medios de transporte.
451
    :param peso_bruto: Atributo requerido para registrar el peso bruto total de los bienes y/o mercancías que se trasladan a través de los diferentes medios de transporte.
452
    :param peso_neto: Atributo requerido para registrar el peso neto total de los bienes y/o mercancías que se trasladan en los distintos medios de transporte.
453
    :param peso_tara: Atributo requerido para registrar el peso bruto, menos el peso neto de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte.
454
    :param num_piezas: Atributo opcional para registrar el número de piezas de los bienes y/o mercancías que se trasladan en los distintos medios de transporte.
455
    """
456
    
457
    def __init__(
458
            self,
459
            unidad_peso_merc: str,
460
            peso_bruto: Decimal | int,
461
            peso_neto: Decimal | int,
462
            peso_tara: Decimal | int,
463
            num_piezas: int = None,
464
    ): 
465
        super().__init__({
466
            'UnidadPesoMerc': unidad_peso_merc,
467
            'PesoBruto': peso_bruto,
468
            'PesoNeto': peso_neto,
469
            'PesoTara': peso_tara,
470
            'NumPiezas': num_piezas,
471
        })
472
        
473
474
class CantidadTransporta(ScalarMap):
475
    """
476
    Nodo opcional para registrar la cantidad de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte, que será captada o distribuida en distintos puntos, a fin de identificar el punto de origen y destino correspondiente.
477
    
478
    :param cantidad: Atributo requerido para expresar el número de bienes y/o mercancías que se trasladan en los distintos medios de transporte.
479
    :param id_origen: Atributo requerido para expresar la clave del identificador del origen de los bienes y/o mercancías que se trasladan por los distintos medios de transporte, de acuerdo al valor registrado en el atributo “IDUbicacion”, del nodo “Ubicacion”.
480
    :param id_destino: Atributo requerido para registrar la clave del identificador del destino de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte, de acuerdo al valor registrado en el atributo “IDUbicacion”, del nodo “Ubicacion”.
481
    :param cves_transporte: Atributo condicional para indicar la clave a través de la cual se identifica el medio por el que se transportan los bienes y/o mercancías.
482
    """
483
    
484
    def __init__(
485
            self,
486
            cantidad: Decimal | int,
487
            id_origen: str,
488
            id_destino: str,
489
            cves_transporte: str = None,
490
    ): 
491
        super().__init__({
492
            'Cantidad': cantidad,
493
            'IDOrigen': id_origen,
494
            'IDDestino': id_destino,
495
            'CvesTransporte': cves_transporte,
496
        })
497
        
498
499
class GuiasIdentificacion(ScalarMap):
500
    """
501
    Nodo condicional para registrar la información del(los) número(s) de guía(s) que se encuentre(n) asociado(s) al(los) paquete(s) que se traslada(n) dentro del territorio nacional.
502
    
503
    :param numero_guia_identificacion: Atributo requerido para expresar el número de guía de cada paquete que se encuentra asociado con el traslado de los bienes y/o mercancías en territorio nacional.
504
    :param descrip_guia_identificacion: Atributo requerido para expresar la descripción del contenido del paquete o carga registrada en la guía, o en el número de identificación, que se encuentra asociado con el traslado de los bienes y/o mercancías dentro del territorio nacional.
505
    :param peso_guia_identificacion: Atributo requerido para indicar en kilogramos, el peso del paquete o carga que se está trasladando en territorio nacional y que se encuentra registrado en la guía o el número de identificación correspondiente.
506
    """
507
    
508
    def __init__(
509
            self,
510
            numero_guia_identificacion: str,
511
            descrip_guia_identificacion: str,
512
            peso_guia_identificacion: Decimal | int,
513
    ): 
514
        super().__init__({
515
            'NumeroGuiaIdentificacion': numero_guia_identificacion,
516
            'DescripGuiaIdentificacion': descrip_guia_identificacion,
517
            'PesoGuiaIdentificacion': peso_guia_identificacion,
518
        })
519
        
520
521
class DocumentacionAduanera(ScalarMap):
522
    """
523
    Nodo condicional para registrar la información del(los) documento(s) aduanero(s) que se encuentra(n) asociado(s) al traslado de los bienes y/o mercancías por los distintos medios de transporte de procedencia extranjera para acreditar la legal estancia o tenencia durante su traslado en territorio nacional.
524
    
525
    :param tipo_documento: Atributo requerido para expresar el tipo de documento aduanero que se encuentra asociado al traslado de los bienes y/o mercancías de procedencia extranjera durante su traslado en territorio nacional.
526
    :param num_pedimento: Atributo condicional para expresar el número de pedimento de importación que se encuentra asociado con el traslado de los bienes y/o mercancías de procedencia extranjera para acreditar la legal estancia y tenencia durante su traslado en territorio nacional, el cual se expresa en el siguiente formato: últimos 2 dígitos del año de validación seguidos por dos espacios, 2 dígitos de la aduana de despacho seguidos por dos espacios, 4 dígitos del número de la patente seguidos por dos espacios, 1 dígito que corresponde al último dígito del año en curso, salvo que se trate de un pedimento consolidado iniciado en el año inmediato anterior o del pedimento original de una rectificación, seguido de 6 dígitos de la numeración progresiva por aduana.
527
    :param ident_doc_aduanero: Atributo condicional para expresar el identificador o folio del documento aduanero que se encuentra asociado al traslado de los bienes y/o mercancías de procedencia extranjera para acreditar la legal estancia o tenencia durante su traslado en territorio nacional.
528
    :param rfc_impo: Atributo condicional para expresar el RFC del importador de los bienes y/o mercancías que fue registrado en la documentación aduanera correspondiente y este se encuentre en la lista de RFC inscritos no cancelados del SAT (l_RFC).
529
    """
530
    
531
    def __init__(
532
            self,
533
            tipo_documento: str,
534
            num_pedimento: str = None,
535
            ident_doc_aduanero: str = None,
536
            rfc_impo: str = None,
537
    ): 
538
        super().__init__({
539
            'TipoDocumento': tipo_documento,
540
            'NumPedimento': num_pedimento,
541
            'IdentDocAduanero': ident_doc_aduanero,
542
            'RFCImpo': rfc_impo,
543
        })
544
        
545
546 View Code Duplication
class Mercancia(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
547
    """
548
    Nodo requerido para registrar detalladamente la información de los bienes y/o mercancías que se trasladan en los distintos medios de transporte.
549
    
550
    :param bienes_transp: Atributo requerido para registrar la clave de producto de los bienes y/o mercancías que se trasladan en los distintos medios de transporte.
551
    :param descripcion: Atributo requerido para detallar las características de los bienes y/o mercancías que se trasladan en los distintos medios de transporte.
552
    :param cantidad: Atributo requerido para expresar la cantidad total de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte.
553
    :param clave_unidad: Atributo requerido para registrar la clave de la unidad de medida estandarizada aplicable para la cantidad de los bienes y/o mercancías que se trasladan en los distintos medios de transporte. La unidad debe corresponder con la descripción de los bienes y/o mercancías registrados.
554
    :param peso_en_kg: Atributo requerido para indicar en kilogramos el peso estimado de los bienes y/o mercancías que se trasladan en los distintos medios de transporte.
555
    :param clave_stcc: Atributo opcional para expresar la clave de producto de la STCC (por sus siglas en inglés, Standard Transportation Commodity Code), cuando el medio de transporte utilizado para el traslado de los bienes y/o mercancías sea ferroviario.
556
    :param unidad: Atributo opcional para registrar la unidad de medida propia para la cantidad de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte. La unidad debe corresponder con la descripción de los bienes y/o mercancías.
557
    :param dimensiones: Atributo opcional para expresar las medidas del empaque de los bienes y/o mercancías que se trasladan en los distintos medios de transporte. Se debe registrar la longitud, la altura y la anchura en centímetros o en pulgadas, separados dichos valores con una diagonal, i.e. 30/40/30cm.
558
    :param material_peligroso: Atributo condicional para precisar que los bienes y/o mercancías que se trasladan son considerados o clasificados como material peligroso.
559
    :param cve_material_peligroso: Atributo condicional para indicar la clave del tipo de material peligroso que se transporta de acuerdo a la NOM-002-SCT/2011.
560
    :param embalaje: Atributo condicional para precisar la clave del tipo de embalaje que se requiere para transportar el material o residuo peligroso.
561
    :param descrip_embalaje: Atributo opcional para expresar la descripción del embalaje de los bienes y/o mercancías que se trasladan y que se consideran material o residuo peligroso.
562
    :param sector_cofepris: Atributo opcional para expresar la clasificación del producto que se traslada a través de los distintos medios de transporte y que debe contar con autorización por la autoridad correspondiente.
563
    :param nombre_ingrediente_activo: Atributo condicional para expresar el nombre común del ingrediente activo de los precursores, químicos de uso dual, plaguicidas o fertilizantes que se trasladan a través de los distintos medios de transporte.
564
    :param nom_quimico: Atributo condicional para expresar el nombre de la sustancia activa de los precursores, químicos de uso dual o sustancias tóxicas que se traslada a través de los distintos medios de transporte.
565
    :param denominacion_generica_prod: Atributo condicional para expresar el fármaco o la sustancia activa del medicamento, psicotrópico o estupefaciente que se traslada a través de los distintos medios de transporte.
566
    :param denominacion_distintiva_prod: Atributo condicional para expresar la marca con la que se comercializa el producto o nombre que le asigna el laboratorio o fabricante a sus especialidades farmacéuticas con el fin de distinguirlas de otras similares del medicamento, psicotrópico o estupefaciente que se traslada a través de los distintos medios de transporte.
567
    :param fabricante: Atributo condicional para expresar el nombre o razón social del establecimiento que realiza la fabricación o manufactura del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente que se traslada a través de los distintos medios de transporte.
568
    :param fecha_caducidad: Atributo condicional para registrar la fecha de caducidad del medicamento, psicotrópico o estupefaciente; o para expresar la fecha de reanálisis del precursor o químico de uso dual que se traslada a través de los distintos medios de transporte. Se expresa en la forma AAAA-MM-DD.
569
    :param lote_medicamento: Atributo condicional para expresar la denominación que identifica y confiere trazabilidad del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente elaborado en un ciclo de producción, bajo condiciones equivalentes de operación y durante un periodo.
570
    :param forma_farmaceutica: Atributo condicional para expresar la forma farmacéutica o mezcla del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente que presenta ciertas características físicas para su adecuada dosificación, conservación y administración.
571
    :param condiciones_esp_transp: Atributo condicional para expresar la condición en la cual es necesario mantener el medicamento, precursor, químico de uso dual, psicotrópicos o estupefacientes durante el traslado y almacenamiento.
572
    :param registro_sanitario_folio_autorizacion: Atributo condicional para expresar el registro sanitario o folio de autorización con el que cuenta la empresa para el traslado del medicamento, psicotrópico o estupefaciente.
573
    :param permiso_importacion: Atributo condicional para registrar el folio del permiso de importación con el que cuenta el medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente.
574
    :param folio_impo_vucem: Atributo condicional para registrar el número de folio de importación VUCEM para la identificación del documento, para el traslado de medicamentos, precursores o químicos de uso dual, sustancias tóxicas, plaguicidas o fertilizantes.
575
    :param num_cas: Atributo condicional para expresar el número Chemical Abstracts Service (CAS) con el que se identifica el compuesto químico de la sustancia tóxica.
576
    :param razon_social_emp_imp: Atributo condicional para expresar el nombre o razón social de la empresa importadora de las sustancias tóxicas.
577
    :param num_reg_san_plag_cofepris: Atributo condicional para expresar el número de registro sanitario para plaguicidas o fertilizantes cuya importación, comercialización y uso están permitidos en México, mismo que emite la Comisión Intersecretarial para el Control del Proceso y Uso de Plaguicidas, Fertilizantes y Sustancias Tóxicas (CICLOPLAFEST).
578
    :param datos_fabricante: Atributo condicional para registrar el país y nombre o razón social de quien produce o fabrica el ingrediente activo del plaguicida o fertilizante.
579
    :param datos_formulador: Atributo condicional para registrar el país y nombre o razón social de quien formula el ingrediente activo del plaguicida o fertilizante.
580
    :param datos_maquilador: Atributo condicional para registrar el país y nombre o razón social de quien maquila el ingrediente activo del plaguicida o fertilizante.
581
    :param uso_autorizado: Atributo condicional para registrar el uso autorizado del plaguicida o fertilizante de acuerdo a la regulación del país.
582
    :param valor_mercancia: Atributo condicional para expresar el monto del valor de los bienes y/o mercancías que se trasladan en los distintos medios de transporte, de acuerdo al valor mercado, al valor pactado en la contraprestación o bien al valor estimado que determine el contribuyente.
583
    :param moneda: Atributo condicional para identificar la clave de la moneda utilizada para expresar el valor de los bienes y/o mercancías que se trasladan en los distintos medios de transporte. Cuando se usa moneda nacional se registra MXN, de acuerdo a la especificación ISO 4217.
584
    :param fraccion_arancelaria: Atributo opcional que sirve para expresar la clave de la fracción arancelaria que corresponde con la descripción de los bienes y/o mercancías que se trasladan en los distintos medios de transporte.
585
    :param uuid_comercio_ext: Atributo opcional para expresar el folio fiscal (UUID) del comprobante de comercio exterior que se relaciona.
586
    :param tipo_materia: Atributo condicional para expresar el estado de la materia o producto al realizar una operación de comercio exterior a través de los distintos medios de transporte.
587
    :param descripcion_materia: Atributo condicional para expresar la descripción del estado de la materia o producto al realizar una operación de comercio exterior a través de los distintos medios de transporte.
588
    :param documentacion_aduanera: Nodo condicional para registrar la información del(los) documento(s) aduanero(s) que se encuentra(n) asociado(s) al traslado de los bienes y/o mercancías por los distintos medios de transporte de procedencia extranjera para acreditar la legal estancia o tenencia durante su traslado en territorio nacional.
589
    :param guias_identificacion: Nodo condicional para registrar la información del(los) número(s) de guía(s) que se encuentre(n) asociado(s) al(los) paquete(s) que se traslada(n) dentro del territorio nacional.
590
    :param cantidad_transporta: Nodo opcional para registrar la cantidad de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte, que será captada o distribuida en distintos puntos, a fin de identificar el punto de origen y destino correspondiente.
591
    :param detalle_mercancia: Nodo condicional para registrar especificaciones de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte.
592
    """
593
    
594
    def __init__(
595
            self,
596
            bienes_transp: str,
597
            descripcion: str,
598
            cantidad: Decimal | int,
599
            clave_unidad: str,
600
            peso_en_kg: Decimal | int,
601
            clave_stcc: str = None,
602
            unidad: str = None,
603
            dimensiones: str = None,
604
            material_peligroso: str = None,
605
            cve_material_peligroso: str = None,
606
            embalaje: str = None,
607
            descrip_embalaje: str = None,
608
            sector_cofepris: str = None,
609
            nombre_ingrediente_activo: str = None,
610
            nom_quimico: str = None,
611
            denominacion_generica_prod: str = None,
612
            denominacion_distintiva_prod: str = None,
613
            fabricante: str = None,
614
            fecha_caducidad: date = None,
615
            lote_medicamento: str = None,
616
            forma_farmaceutica: str = None,
617
            condiciones_esp_transp: str = None,
618
            registro_sanitario_folio_autorizacion: str = None,
619
            permiso_importacion: str = None,
620
            folio_impo_vucem: str = None,
621
            num_cas: str = None,
622
            razon_social_emp_imp: str = None,
623
            num_reg_san_plag_cofepris: str = None,
624
            datos_fabricante: str = None,
625
            datos_formulador: str = None,
626
            datos_maquilador: str = None,
627
            uso_autorizado: str = None,
628
            valor_mercancia: Decimal | int = None,
629
            moneda: str = None,
630
            fraccion_arancelaria: str = None,
631
            uuid_comercio_ext: str = None,
632
            tipo_materia: str = None,
633
            descripcion_materia: str = None,
634
            documentacion_aduanera: DocumentacionAduanera | dict | Sequence[DocumentacionAduanera | dict] = None,
635
            guias_identificacion: GuiasIdentificacion | dict | Sequence[GuiasIdentificacion | dict] = None,
636
            cantidad_transporta: CantidadTransporta | dict | Sequence[CantidadTransporta | dict] = None,
637
            detalle_mercancia: DetalleMercancia | dict = None,
638
    ): 
639
        super().__init__({
640
            'BienesTransp': bienes_transp,
641
            'Descripcion': descripcion,
642
            'Cantidad': cantidad,
643
            'ClaveUnidad': clave_unidad,
644
            'PesoEnKg': peso_en_kg,
645
            'ClaveSTCC': clave_stcc,
646
            'Unidad': unidad,
647
            'Dimensiones': dimensiones,
648
            'MaterialPeligroso': material_peligroso,
649
            'CveMaterialPeligroso': cve_material_peligroso,
650
            'Embalaje': embalaje,
651
            'DescripEmbalaje': descrip_embalaje,
652
            'SectorCOFEPRIS': sector_cofepris,
653
            'NombreIngredienteActivo': nombre_ingrediente_activo,
654
            'NomQuimico': nom_quimico,
655
            'DenominacionGenericaProd': denominacion_generica_prod,
656
            'DenominacionDistintivaProd': denominacion_distintiva_prod,
657
            'Fabricante': fabricante,
658
            'FechaCaducidad': fecha_caducidad,
659
            'LoteMedicamento': lote_medicamento,
660
            'FormaFarmaceutica': forma_farmaceutica,
661
            'CondicionesEspTransp': condiciones_esp_transp,
662
            'RegistroSanitarioFolioAutorizacion': registro_sanitario_folio_autorizacion,
663
            'PermisoImportacion': permiso_importacion,
664
            'FolioImpoVUCEM': folio_impo_vucem,
665
            'NumCAS': num_cas,
666
            'RazonSocialEmpImp': razon_social_emp_imp,
667
            'NumRegSanPlagCOFEPRIS': num_reg_san_plag_cofepris,
668
            'DatosFabricante': datos_fabricante,
669
            'DatosFormulador': datos_formulador,
670
            'DatosMaquilador': datos_maquilador,
671
            'UsoAutorizado': uso_autorizado,
672
            'ValorMercancia': valor_mercancia,
673
            'Moneda': moneda,
674
            'FraccionArancelaria': fraccion_arancelaria,
675
            'UUIDComercioExt': uuid_comercio_ext,
676
            'TipoMateria': tipo_materia,
677
            'DescripcionMateria': descripcion_materia,
678
            'DocumentacionAduanera': documentacion_aduanera,
679
            'GuiasIdentificacion': guias_identificacion,
680
            'CantidadTransporta': cantidad_transporta,
681
            'DetalleMercancia': detalle_mercancia,
682
        })
683
        
684
685 View Code Duplication
class Mercancias(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
686
    """
687
    Nodo requerido para registrar la información de los bienes y/o mercancías que se trasladan en los distintos medios de transporte.
688
    
689
    :param peso_bruto_total: Atributo requerido para registrar la suma del peso bruto total estimado de los bienes y/o mercancías que se trasladan en los distintos medios de transporte.
690
    :param unidad_peso: Atributo requerido para registrar la clave de la unidad de medida estandarizada del peso de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte.
691
    :param num_total_mercancias: Atributo requerido para registrar el número total de los bienes y/o mercancías que se trasladan en los distintos medios de transporte, identificándose por cada nodo "Mercancia" registrado en el complemento.
692
    :param mercancia: Nodo requerido para registrar detalladamente la información de los bienes y/o mercancías que se trasladan en los distintos medios de transporte.
693
    :param peso_neto_total: Atributo condicional para registrar la suma de los valores indicados en el atributo “PesoNeto” del nodo “DetalleMercancia”.
694
    :param cargo_por_tasacion: Atributo opcional para expresar el monto del importe pagado por la tasación de los bienes y/o mercancías que se trasladan vía aérea.
695
    :param logistica_inversa_recoleccion_devolucion: Atributo condicional para expresar si se hace uso de alguno de los servicios de logística inversa, recolección o devolución para el traslado de los bienes y/o mercancías.
696
    :param autotransporte: Nodo condicional para registrar la información que permita la identificación del autotransporte de carga, por medio del cual se trasladan los bienes y/o mercancías, que transitan a través de las carreteras del territorio nacional.
697
    :param transporte_maritimo: Nodo condicional para registrar la información que permita la identificación de la embarcación a través de la cual se trasladan los bienes y/o mercancías por vía marítima.
698
    :param transporte_aereo: Nodo condicional para registrar la información que permita la identificación del transporte aéreo por medio del cual se trasladan los bienes y/o mercancías.
699
    :param transporte_ferroviario: Nodo condicional para registrar la información que permita la identificación del carro o contenedor en el que se trasladan los bienes y/o mercancías por vía férrea.
700
    """
701
    
702
    def __init__(
703
            self,
704
            peso_bruto_total: Decimal | int,
705
            unidad_peso: str,
706
            num_total_mercancias: int,
707
            mercancia: Mercancia | dict | Sequence[Mercancia | dict],
708
            peso_neto_total: Decimal | int = None,
709
            cargo_por_tasacion: Decimal | int = None,
710
            logistica_inversa_recoleccion_devolucion: str = None,
711
            autotransporte: Autotransporte | dict = None,
712
            transporte_maritimo: TransporteMaritimo | dict = None,
713
            transporte_aereo: TransporteAereo | dict = None,
714
            transporte_ferroviario: TransporteFerroviario | dict = None,
715
    ): 
716
        super().__init__({
717
            'PesoBrutoTotal': peso_bruto_total,
718
            'UnidadPeso': unidad_peso,
719
            'NumTotalMercancias': num_total_mercancias,
720
            'Mercancia': mercancia,
721
            'PesoNetoTotal': peso_neto_total,
722
            'CargoPorTasacion': cargo_por_tasacion,
723
            'LogisticaInversaRecoleccionDevolucion': logistica_inversa_recoleccion_devolucion,
724
            'Autotransporte': autotransporte,
725
            'TransporteMaritimo': transporte_maritimo,
726
            'TransporteAereo': transporte_aereo,
727
            'TransporteFerroviario': transporte_ferroviario,
728
        })
729
        
730
731 View Code Duplication
class Ubicacion(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
732
    """
733
    Nodo requerido para registrar la ubicación que sirve para indicar el domicilio del origen y/o destino parcial o final, que tienen los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte.
734
    
735
    :param tipo_ubicacion: Atributo requerido para precisar si el tipo de ubicación corresponde al origen o destino de las ubicaciones para el traslado de los bienes y/o mercancías en los distintos medios de transporte.
736
    :param rfc_remitente_destinatario: Atributo requerido para registrar el RFC del remitente o destinatario de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte.
737
    :param fecha_hora_salida_llegada: Atributo requerido para registrar la fecha y hora estimada en la que salen o llegan los bienes y/o mercancías de origen o al destino, respectivamente. Se expresa en la forma AAAA-MM-DDThh:mm:ss.
738
    :param id_ubicacion: Atributo condicional para registrar una clave que sirva para identificar el punto de salida o entrada de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte, la cual estará integrada de la siguiente forma: para origen el acrónimo “OR” o para destino el acrónimo “DE” seguido de 6 dígitos numéricos asignados por el contribuyente que emite el comprobante para su identificación.
739
    :param nombre_remitente_destinatario: Atributo opcional para registrar el nombre del remitente o destinatario de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte.
740
    :param num_reg_id_trib: Atributo condicional para registrar el número de identificación o registro fiscal del país de residencia, para los efectos fiscales del remitente o destinatario de los bienes y/o mercancías que se trasladan cuando se trate de residentes en el extranjero.
741
    :param residencia_fiscal: Atributo condicional para registrar la clave del país de residencia para efectos fiscales del remitente o destinatario de los bienes y/o mercancías, conforme el catálogo de CFDI c_Pais publicado en el portal del SAT en Internet de acuerdo a la especificación ISO 3166-1.
742
    :param num_estacion: Atributo condicional para registrar la clave de la estación de origen o destino para el traslado de los bienes y/o mercancías que se realiza a través de los distintos medios de transporte, esto de acuerdo al valor de la columna “Clave identificación” del catálogo c_Estaciones del complemento Carta Porte que permita asociarla al tipo de transporte.
743
    :param nombre_estacion: Atributo condicional para registrar el nombre de la estación de origen o destino por la que se pasa para efectuar el traslado de los bienes y/o mercancías a través de los distintos medios de transporte, conforme al catálogo c_Estaciones del complemento Carta Porte.
744
    :param navegacion_trafico: Atributo condicional para registrar el tipo de puerto de origen o destino en el cual se documentan los bienes y/o mercancías que se trasladan vía marítima.
745
    :param tipo_estacion: Atributo condicional para registrar el tipo de estación por el que pasan los bienes y/o mercancías durante su traslado a través de los distintos medios de transporte.
746
    :param distancia_recorrida: Atributo condicional para registrar en kilómetros la distancia recorrida entre la ubicación de origen y la de destino parcial o final, por los distintos medios de transporte que trasladan los bienes y/o mercancías.
747
    :param domicilio: Nodo condicional para registrar información del domicilio de origen y/o destino de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte.
748
    """
749
    
750
    def __init__(
751
            self,
752
            tipo_ubicacion: str,
753
            rfc_remitente_destinatario: str,
754
            fecha_hora_salida_llegada: datetime,
755
            id_ubicacion: str = None,
756
            nombre_remitente_destinatario: str = None,
757
            num_reg_id_trib: str = None,
758
            residencia_fiscal: str = None,
759
            num_estacion: str = None,
760
            nombre_estacion: str = None,
761
            navegacion_trafico: str = None,
762
            tipo_estacion: str = None,
763
            distancia_recorrida: Decimal | int = None,
764
            domicilio: Domicilio | dict = None,
765
    ): 
766
        super().__init__({
767
            'TipoUbicacion': tipo_ubicacion,
768
            'RFCRemitenteDestinatario': rfc_remitente_destinatario,
769
            'FechaHoraSalidaLlegada': fecha_hora_salida_llegada,
770
            'IDUbicacion': id_ubicacion,
771
            'NombreRemitenteDestinatario': nombre_remitente_destinatario,
772
            'NumRegIdTrib': num_reg_id_trib,
773
            'ResidenciaFiscal': residencia_fiscal,
774
            'NumEstacion': num_estacion,
775
            'NombreEstacion': nombre_estacion,
776
            'NavegacionTrafico': navegacion_trafico,
777
            'TipoEstacion': tipo_estacion,
778
            'DistanciaRecorrida': distancia_recorrida,
779
            'Domicilio': domicilio,
780
        })
781
        
782
783 View Code Duplication
class CartaPorte(CFDI):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
784
    """
785
    Complemento para incorporar al Comprobante Fiscal Digital por Internet (CFDI), la información relacionada a los bienes y/o mercancías, ubicaciones de origen, puntos intermedios y destinos, así como lo referente al medio por el que se transportan; que circulen por vía terrestre, férrea, aérea o naveguen por vía marítima; además de incluir el traslado de hidrocarburos y petrolíferos.
786
    
787
    :param id_ccp: Atributo requerido para expresar los 36 caracteres del folio del complemento Carta Porte (IdCCP) de la transacción de timbrado conforme al estándar RFC 4122, para la identificación del CFDI con complemento Carta Porte.
788
    :param transp_internac: Atributo requerido para expresar si los bienes y/o mercancías que son transportadas ingresan o salen del territorio nacional.
789
    :param ubicaciones: Nodo requerido para registrar las distintas ubicaciones que sirven para indicar el domicilio del origen y/o destino que tienen los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte.
790
    :param mercancias: Nodo requerido para registrar la información de los bienes y/o mercancías que se trasladan en los distintos medios de transporte.
791
    :param entrada_salida_merc: Atributo condicional para precisar si los bienes y/o mercancías ingresan o salen del territorio nacional.
792
    :param pais_origen_destino: Atributo condicional para registrar la clave del país de origen o destino de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte.
793
    :param via_entrada_salida: Atributo condicional para registrar la vía de ingreso o salida de los bienes y/o mercancías en territorio nacional.
794
    :param total_dist_rec: Atributo condicional para indicar en kilómetros, la suma de las distancias recorridas, registradas en el atributo “DistanciaRecorrida”, para el traslado de los bienes y/o mercancías.
795
    :param registro_istmo: Atributo opcional para registrar las regiones, sí el traslado de los bienes y/o mercancías se realiza al interior de los Polos de Desarrollo para el Bienestar del istmo de Tehuantepec.
796
    :param ubicacion_polo_origen: Atributo condicional para registrar la región en donde inicia el traslado de los bienes y/o mercancias al interior de los Polos de Desarrollo para el Bienestar del istmo de Tehuantepec.
797
    :param ubicacion_polo_destino: Atributo condicional para registrar la región en donde termina el traslado de los bienes y/o mercancias al interior de los Polos de Desarrollo para el Bienestar del istmo de Tehuantepec.
798
    :param regimenes_aduaneros: Nodo condicional para registrar los distintos tipos de regímenes aduaneros a los cuales se destinan los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte.
799
    :param figura_transporte: Nodo condicional para indicar los datos de la(s) figura(s) del transporte que interviene(n) en el traslado de los bienes y/o mercancías realizado a través de los distintos medios de transporte dentro del territorio nacional, cuando el dueño de dicho medio sea diferente del emisor del comprobante con el complemento Carta Porte.
800
    """
801
    
802
    tag = '{http://www.sat.gob.mx/CartaPorte31}CartaPorte'
803
    version = '3.1'
804
    
805
    def __init__(
806
            self,
807
            id_ccp: str,
808
            transp_internac: str,
809
            ubicaciones: Ubicacion | dict | Sequence[Ubicacion | dict],
810
            mercancias: Mercancias | dict,
811
            entrada_salida_merc: str = None,
812
            pais_origen_destino: str = None,
813
            via_entrada_salida: str = None,
814
            total_dist_rec: Decimal | int = None,
815
            registro_istmo: str = None,
816
            ubicacion_polo_origen: str = None,
817
            ubicacion_polo_destino: str = None,
818
            regimenes_aduaneros: str | Sequence[str] = None,
819
            figura_transporte: TiposFigura | dict | Sequence[TiposFigura | dict] = None,
820
    ): 
821
        super().__init__({
822
            'Version': self.version,
823
            'IdCCP': id_ccp,
824
            'TranspInternac': transp_internac,
825
            'Ubicaciones': ubicaciones,
826
            'Mercancias': mercancias,
827
            'EntradaSalidaMerc': entrada_salida_merc,
828
            'PaisOrigenDestino': pais_origen_destino,
829
            'ViaEntradaSalida': via_entrada_salida,
830
            'TotalDistRec': total_dist_rec,
831
            'RegistroISTMO': registro_istmo,
832
            'UbicacionPoloOrigen': ubicacion_polo_origen,
833
            'UbicacionPoloDestino': ubicacion_polo_destino,
834
            'RegimenesAduaneros': regimenes_aduaneros,
835
            'FiguraTransporte': figura_transporte,
836
        })
837
        
838
839