Parte.__init__()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 18
Code Lines 17

Duplication

Lines 18
Ratio 100 %

Importance

Changes 0
Metric Value
cc 1
eloc 17
nop 8
dl 18
loc 18
rs 9.55
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
"""ventavehiculos http://www.sat.gob.mx/ventavehiculos"""
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 TInformacionAduanera(ScalarMap):
11
    """
12
    Tipo definido para expresar información aduanera
13
    
14
    :param numero: Atributo requerido para expresar el número del documento aduanero que ampara la importación del bien.
15
    :param fecha: Atributo requerido para expresar la fecha de expedición del documento aduanero que ampara la importación del bien.
16
    :param aduana: Atributo opcional para precisar la aduana por la que se efectuó la importación del bien.
17
    """
18
    
19
    def __init__(
20
            self,
21
            numero: str,
22
            fecha: date,
23
            aduana: str = None,
24
    ): 
25
        super().__init__({
26
            'Numero': numero,
27
            'Fecha': fecha,
28
            'Aduana': aduana,
29
        })
30
        
31
32 View Code Duplication
class Parte(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
33
    """
34
    Nodo opcional para expresar las partes o componentes que integran la totalidad del concepto expresado en el CFDI.
35
    
36
    :param cantidad: Atributo requerido para precisar la cantidad de bienes o servicios del tipo particular definido por la presente parte.
37
    :param descripcion: Atributo requerido para precisar la descripción del bien o servicio cubierto por la presente parte.
38
    :param unidad: Atributo opcional para precisar la unidad de medida aplicable para la cantidad expresada en la parte.
39
    :param no_identificacion: Atributo opcional para expresar el número de serie del bien o identificador del servicio amparado por la presente parte.
40
    :param valor_unitario: Atributo opcional para precisar el valor o precio unitario del bien o servicio cubierto por la presente parte.
41
    :param importe: Atributo opcional para precisar el importe total de los bienes o servicios de la presente parte. Debe ser equivalente al resultado de multiplicar la cantidad por el valor unitario expresado en la parte.
42
    :param informacion_aduanera: Nodo opcional para introducir la información aduanera aplicable cuando se trate de partes o componentes importados vendidos de primera mano.
43
    """
44
    
45
    def __init__(
46
            self,
47
            cantidad: Decimal | int,
48
            descripcion: str,
49
            unidad: str = None,
50
            no_identificacion: str = None,
51
            valor_unitario: Decimal | int = None,
52
            importe: Decimal | int = None,
53
            informacion_aduanera: TInformacionAduanera | dict | Sequence[TInformacionAduanera | dict] = None,
54
    ): 
55
        super().__init__({
56
            'Cantidad': cantidad,
57
            'Descripcion': descripcion,
58
            'Unidad': unidad,
59
            'NoIdentificacion': no_identificacion,
60
            'ValorUnitario': valor_unitario,
61
            'Importe': importe,
62
            'InformacionAduanera': informacion_aduanera,
63
        })
64
        
65
66
class VentaVehiculos(CFDI):
67
    """
68
    Complemento concepto que permite incorporar a los fabricantes, ensambladores o distribuidores autorizados de automóviles nuevos, así como aquéllos que importen automóviles para permanecer en forma definitiva en la franja fronteriza norte del país y en los Estados de Baja California, Baja California Sur y la región parcial del Estado de Sonora, a un Comprobante Fiscal Digital a través de Internet (CFDI) la clave vehicular que corresponda a la versión enajenada y el número de identificación vehicular que corresponda al vehículo enajenado.
69
    
70
    :param clave_vehicular: Atributo requerido para precisar Clave vehicular que corresponda a la versión del vehículo enajenado.
71
    :param niv: Atributo requerido para precisar el número de identificación vehicular que corresponda al vehículo enajenado.
72
    :param informacion_aduanera: Nodo opcional para introducir la información aduanera aplicable cuando se trate de ventas de primera mano de mercancías importadas.
73
    :param parte: Nodo opcional para expresar las partes o componentes que integran la totalidad del concepto expresado en el CFDI.
74
    """
75
    
76
    tag = '{http://www.sat.gob.mx/ventavehiculos}VentaVehiculos'
77
    version = '1.1'
78
    
79
    def __init__(
80
            self,
81
            clave_vehicular: str,
82
            niv: str,
83
            informacion_aduanera: TInformacionAduanera | dict | Sequence[TInformacionAduanera | dict] = None,
84
            parte: Parte | dict | Sequence[Parte | dict] = None,
85
    ): 
86
        super().__init__({
87
            'Version': self.version,
88
            'ClaveVehicular': clave_vehicular,
89
            'Niv': niv,
90
            'InformacionAduanera': informacion_aduanera,
91
            'Parte': parte,
92
        })
93
        
94
95