VehiculosUsadosEnajenadoPermAlFab.__init__()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 34
Code Lines 33

Duplication

Lines 34
Ratio 100 %

Importance

Changes 0
Metric Value
cc 1
eloc 33
nop 16
dl 34
loc 34
rs 9.0879
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
"""decreto http://www.sat.gob.mx/renovacionysustitucionvehiculos"""
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
class VehiculoNuvoSemEnajenadoFabAlPerm(ScalarMap):
11
    """
12
    Datos del vehículo nuevo o seminuevo que enajena el fabricante, ensamblador o distribuidor autorizado al permisionario.
13
    
14
    :param ano: Atributo requerido para la expresión del año ó año modelo del vehículo nuevo o seminuevo que enajena el fabricante, ensamblador o distribuidor autorizado.
15
    :param num_placas: Atributo requerido para expresar el número de placa metálicas de identificación del servicio público federal o, en su caso, del servicio público de autotransporte de pasajeros urbano o suburbano del vehículo nuevo o seminuevo que enajena el fabricante, ensamblador o distribuidor autorizado.
16
    :param modelo: Atributo opcional para expresar el modelo del vehículo nuevo o seminuevo que enajena el fabricante, ensamblador o distribuidor autorizado.
17
    :param rfc: Atributo opcional para la Clave del Registro Federal de Contribuyentes del arrendatario en el caso de que el adquiriente del vehículo nuevo o seminuevo sea una arrendadora financiera.
18
    """
19
    
20
    def __init__(
21
            self,
22
            ano: int,
23
            num_placas: str,
24
            modelo: str = None,
25
            rfc: str = None,
26
    ): 
27
        super().__init__({
28
            'Año': ano,
29
            'NumPlacas': num_placas,
30
            'Modelo': modelo,
31
            'RFC': rfc,
32
        })
33
        
34
35 View Code Duplication
class VehiculoUsadoEnajenadoPermAlFab(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
36
    """
37
    Datos del vehículo usado que enajena el permisionario a cuenta del precio del vehículo nuevo o seminuevo.
38
    
39
    :param precio_veh_usado: Atributo requerido que expresa el precio del vehículo usado que el permisionario enajena al fabricante, ensamblador o distribuidor autorizado a cuenta del precio del vehículo nuevo o seminuevo.
40
    :param tipo_veh: Atributo requerido que expresar, según el Decreto, las características del vehículo usado que el permisionario enajena al fabricante, ensamblador o distribuidor autorizado a cuenta del precio del vehículo nuevo o seminuevo, de acuerdo con el catálogo “4. Tipo de vehículo conforme al Decreto por el que se otorgan medidas para la sustitución de vehículos de autotransporte de pasaje y carga”.
41
    :param marca: Atributo requerido para expresar la marca del vehículo usado que se enajena.
42
    :param tipo_o_clase: Atributo requerido para expresar el tipo o clase del vehículo usado que se enajena.
43
    :param ano: Atributo requerido para la expresión del año ó año modelo del vehículo usado que se enajena.
44
    :param num_placas: Atributo requerido para expresar el número de placas metálicas de identificación del servicio público federal o, en su caso, del servicio público de autotransporte de pasajeros urbano o suburbano del vehículo usado que se enajena.
45
    :param num_fol_tarj_cir: Atributo requerido para expresar el número de folio de la tarjeta de circulación del vehículo usado que se enajena.
46
    :param num_fol_aviso_int: Atributo requerido para expresar el número de folio del acuse de recibo del Aviso de Intención para acceder al programa de destrucción.
47
    :param num_ped_im: Atributo requerido para expresar el número de documento aduanero con el cual se importó en definitiva el vehículo usado.
48
    :param aduana: Atributo requerido para precisar la aduana por la que se efectuó la importación del vehículo usado.
49
    :param fecha_regul_veh: Atributo requerido para expresar la fecha del pedimento en el que se regularizó la legal importación definitiva del vehículo usado. Se expresa en la forma aaaa-mm-dd de acuerdo a a especificación ISO 8601
50
    :param foliofiscal: Atributo requerido para expresar el número de folio fiscal del CFDI expedido por el Centro de Destrucción Autorizado al que se ha incorporado el Complemento Certificado de Destrucción del vehículo usado que enajena el permisionario.
51
    :param modelo: Atributo opcional para la expresión del modelo del vehículo usado que se enajena.
52
    :param niv: Atributo opcional para expresar el número de identificación vehicular del vehículo usado que se enajena. (Cuando exista el NIV deberá incluirse este invariablemente).
53
    :param num_serie: Atributo opcional para expresar el número de serie de la carrocería del vehículo usado que se enajena. (En caso de contar con dicho número se deberá ingresar convirtiéndose en requerido).
54
    :param num_motor: Atributo opcional para expresar el número de motor del vehículo usado que se enajena (En caso de contar con dicho número se deberá ingresar volviéndose requerido).
55
    """
56
    
57
    def __init__(
58
            self,
59
            precio_veh_usado: Decimal | int,
60
            tipo_veh: str,
61
            marca: str,
62
            tipo_o_clase: str,
63
            ano: int,
64
            num_placas: str,
65
            num_fol_tarj_cir: str,
66
            num_fol_aviso_int: str,
67
            num_ped_im: str,
68
            aduana: str,
69
            fecha_regul_veh: date,
70
            foliofiscal: str,
71
            modelo: str = None,
72
            niv: str = None,
73
            num_serie: str = None,
74
            num_motor: str = None,
75
    ): 
76
        super().__init__({
77
            'PrecioVehUsado': precio_veh_usado,
78
            'TipoVeh': tipo_veh,
79
            'Marca': marca,
80
            'TipooClase': tipo_o_clase,
81
            'Año': ano,
82
            'NumPlacas': num_placas,
83
            'NumFolTarjCir': num_fol_tarj_cir,
84
            'NumFolAvisoint': num_fol_aviso_int,
85
            'NumPedIm': num_ped_im,
86
            'Aduana': aduana,
87
            'FechaRegulVeh': fecha_regul_veh,
88
            'Foliofiscal': foliofiscal,
89
            'Modelo': modelo,
90
            'NIV': niv,
91
            'NumSerie': num_serie,
92
            'NumMotor': num_motor,
93
        })
94
        
95
96
class DecretoSustitVehicular(ScalarMap):
97
    """
98
    Nodo opcional para expresar los datos aplicables al estimulo por la aplicación del Decreto por el que se otorgan medidas para la sustitución de vehículos de autotransporte de pasaje y carga.
99
    
100
    :param veh_enaj: Atributo requerido para expresar si el vehículo que el fabricante, ensamblador o distribuidor autorizado enajena al permisionario es nuevo o seminuevo, de acuerdo con el catálogo “2. Vehículo enajenado”.
101
    :param vehiculo_usado_enajenado_perm_al_fab: Datos del vehículo usado que enajena el permisionario a cuenta del precio del vehículo nuevo o seminuevo.
102
    :param vehiculo_nuvo_sem_enajenado_fab_al_perm: Datos del vehículo nuevo o seminuevo que enajena el fabricante, ensamblador o distribuidor autorizado al permisionario.
103
    """
104
    
105
    def __init__(
106
            self,
107
            veh_enaj: str,
108
            vehiculo_usado_enajenado_perm_al_fab: VehiculoUsadoEnajenadoPermAlFab | dict,
109
            vehiculo_nuvo_sem_enajenado_fab_al_perm: VehiculoNuvoSemEnajenadoFabAlPerm | dict,
110
    ): 
111
        super().__init__({
112
            'VehEnaj': veh_enaj,
113
            'VehiculoUsadoEnajenadoPermAlFab': vehiculo_usado_enajenado_perm_al_fab,
114
            'VehiculoNuvoSemEnajenadoFabAlPerm': vehiculo_nuvo_sem_enajenado_fab_al_perm,
115
        })
116
        
117
118 View Code Duplication
class VehiculosUsadosEnajenadoPermAlFab(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
119
    """
120
    Datos del vehículo o vehículos usados que enajena el permisionario a cuenta del precio del vehículo nuevo o seminuevo (pueden enajenarse 1 o más vehículos, por lo que de ser 2 o más se deberán llenar tantos elementos como vehículos usados se enajenen).
121
    
122
    :param precio_veh_usado: Atributo requerido que expresa el precio del vehículo usado que el permisionario enajena al fabricante, ensamblador o distribuidor autorizado a cuenta del precio del vehículo nuevo o seminuevo.
123
    :param tipo_veh: Atributo requerido para expresar, según el Decreto, el tipo de vehículo usado que enajena el permisionario, de acuerdo con el catálogo “3. Tipo de Vehículo conforme al Decreto por el que se fomenta la renovación del parque vehicular del autotransporte”.
124
    :param marca: Atributo requerido para expresar la marca del vehículo usado que se enajena.
125
    :param tipo_o_clase: Atributo requerido para expresar el tipo o clase del vehículo usado que se enajena.
126
    :param ano: Atributo requerido para la expresión del año ó año modelo del vehículo usado que se enajena.
127
    :param num_placas: Atributo requerido para expresar el número de placas metálicas de identificación del servicio público federal o, en su caso, del servicio público de autotransporte de pasajeros urbano o suburbano del vehículo usado que se enajena.
128
    :param num_fol_tarj_cir: Atributo requerido para expresar el número de folio de la tarjeta de circulación del vehículo usado que se enajena.
129
    :param foliofiscal: Atributo requerido para expresar el número de folio fiscal del CFDI expedido por el Centro de Destrucción Autorizado al que se ha incorporado el Complemento Certificado de Destrucción del vehículo usado que enajena el permisionario.
130
    :param modelo: Atributo opcional para la expresión del modelo del vehículo usado que se enajena.
131
    :param niv: Atributo opcional para expresar el número de identificación vehicular del vehículo usado que se enajena. (Cuando exista el NIV deberá incluirse este invariablemente).
132
    :param num_serie: Atributo opcional para expresar el número de serie de la carrocería del vehículo usado que se enajena. (En caso de contar con dicho número se deberá ingresar convirtiéndose en requerido).
133
    :param num_motor: Atributo opcional para expresar el número de motor del vehículo usado que se enajena (En caso de contar con dicho número se deberá ingresar volviéndose requerido).
134
    :param num_ped_im: Atributo opcional para expresar el número de documento aduanero con el cual se importó en definitiva el vehículo usado, en su caso.
135
    :param aduana: Atributo opcional para precisar la aduana por la que se efectuó la importación del vehículo usado, en su caso.
136
    :param fecha_regul_veh: Atributo opcional para expresar la fecha del pedimento en el que se regularizó la legal importación definitiva del vehículo usado, en su caso. Se expresa en la forma aaaa-mm-dd de acuerdo a especificación ISO 8601.
137
    """
138
    
139
    def __init__(
140
            self,
141
            precio_veh_usado: Decimal | int,
142
            tipo_veh: str,
143
            marca: str,
144
            tipo_o_clase: str,
145
            ano: int,
146
            num_placas: str,
147
            num_fol_tarj_cir: str,
148
            foliofiscal: str,
149
            modelo: str = None,
150
            niv: str = None,
151
            num_serie: str = None,
152
            num_motor: str = None,
153
            num_ped_im: str = None,
154
            aduana: str = None,
155
            fecha_regul_veh: date = None,
156
    ): 
157
        super().__init__({
158
            'PrecioVehUsado': precio_veh_usado,
159
            'TipoVeh': tipo_veh,
160
            'Marca': marca,
161
            'TipooClase': tipo_o_clase,
162
            'Año': ano,
163
            'NumPlacas': num_placas,
164
            'NumFolTarjCir': num_fol_tarj_cir,
165
            'Foliofiscal': foliofiscal,
166
            'Modelo': modelo,
167
            'NIV': niv,
168
            'NumSerie': num_serie,
169
            'NumMotor': num_motor,
170
            'NumPedIm': num_ped_im,
171
            'Aduana': aduana,
172
            'FechaRegulVeh': fecha_regul_veh,
173
        })
174
        
175
176
class DecretoRenovVehicular(ScalarMap):
177
    """
178
    Nodo opcional para expresar los datos aplicables al estimulo por la aplicación del Decreto por el que se fomenta la renovación del parque vehicular del autotransporte.
179
    
180
    :param veh_enaj: Atributo requerido para expresar si el vehículo que el fabricante, ensamblador o distribuidor autorizado enajena al permisionario es nuevo o seminuevo, de acuerdo con el catálogo “2. Vehículo enajenado”.
181
    :param vehiculos_usados_enajenado_perm_al_fab: Datos del vehículo o vehículos usados que enajena el permisionario a cuenta del precio del vehículo nuevo o seminuevo (pueden enajenarse 1 o más vehículos, por lo que de ser 2 o más se deberán llenar tantos elementos como vehículos usados se enajenen).
182
    :param vehiculo_nuvo_sem_enajenado_fab_al_perm: Datos del vehículo nuevo o seminuevo que enajena el fabricante, ensamblador o distribuidor autorizado al permisionario.
183
    """
184
    
185
    def __init__(
186
            self,
187
            veh_enaj: str,
188
            vehiculos_usados_enajenado_perm_al_fab: VehiculosUsadosEnajenadoPermAlFab | dict | Sequence[VehiculosUsadosEnajenadoPermAlFab | dict],
189
            vehiculo_nuvo_sem_enajenado_fab_al_perm: VehiculoNuvoSemEnajenadoFabAlPerm | dict,
190
    ): 
191
        super().__init__({
192
            'VehEnaj': veh_enaj,
193
            'VehiculosUsadosEnajenadoPermAlFab': vehiculos_usados_enajenado_perm_al_fab,
194
            'VehiculoNuvoSemEnajenadoFabAlPerm': vehiculo_nuvo_sem_enajenado_fab_al_perm,
195
        })
196
        
197
198
class Renovacionysustitucionvehiculos(CFDI):
199
    """
200
    Complemento para incorporar la información relativa a los estímulos por la renovación del parque vehicular del autotransporte y por el que se otorgan medidas para la sustitución de vehículos de autotransporte de pasaje y carga.
201
    
202
    :param tipo_de_decreto: Atributo requerido que indica el Decreto de cuya aplicación se trate, de acuerdo con el catálogo “1. Tipo de Decreto”.
203
    :param decreto_renov_vehicular: Nodo opcional para expresar los datos aplicables al estimulo por la aplicación del Decreto por el que se fomenta la renovación del parque vehicular del autotransporte.
204
    :param decreto_sustit_vehicular: Nodo opcional para expresar los datos aplicables al estimulo por la aplicación del Decreto por el que se otorgan medidas para la sustitución de vehículos de autotransporte de pasaje y carga.
205
    """
206
    
207
    tag = '{http://www.sat.gob.mx/renovacionysustitucionvehiculos}renovacionysustitucionvehiculos'
208
    version = '1.0'
209
    
210
    def __init__(
211
            self,
212
            tipo_de_decreto: str,
213
            decreto_renov_vehicular: DecretoRenovVehicular | dict = None,
214
            decreto_sustit_vehicular: DecretoSustitVehicular | dict = None,
215
    ): 
216
        super().__init__({
217
            'Version': self.version,
218
            'TipoDeDecreto': tipo_de_decreto,
219
            'DecretoRenovVehicular': decreto_renov_vehicular,
220
            'DecretoSustitVehicular': decreto_sustit_vehicular,
221
        })
222
        
223
224