ConceptoConsumoDeCombustibles.__init__()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 24
Code Lines 23

Duplication

Lines 24
Ratio 100 %

Importance

Changes 0
Metric Value
cc 1
eloc 23
nop 11
dl 24
loc 24
rs 9.328
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
"""consumodecombustibles http://www.sat.gob.mx/consumodecombustibles"""
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 Determinado(ScalarMap):
11
    """
12
    Nodo para la definición de información detallada de un impuesto específico
13
    
14
    :param impuesto: Atributo requerido para definir el tipo de impuesto
15
    :param tasa: Atributo requerido para señalar la tasa del impuesto por cada concepto amparado en el comprobante
16
    :param importe: Atributo requerido para definir el importe o monto del impuesto
17
    """
18
    
19
    def __init__(
20
            self,
21
            impuesto: str,
22
            tasa: Decimal | int,
23
            importe: Decimal | int,
24
    ): 
25
        super().__init__({
26
            'Impuesto': impuesto,
27
            'Tasa': tasa,
28
            'Importe': importe,
29
        })
30
        
31
32 View Code Duplication
class ConceptoConsumoDeCombustibles(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
33
    """
34
    Nodo requerido para la expresión de una transacción para operaciones de compra de combustibles.
35
    
36
    :param identificador: Atributo requerido para la expresión del identificador o número del monedero electrónico
37
    :param fecha: Atributo requerido para la expresión de la Fecha y hora de expedición de la operación reportada. Se expresa en la forma aaaa-mm-ddThh:mm:ss, de acuerdo con la especificación ISO 8601.
38
    :param rfc: Atributo requerido del RFC del enajenante del combustible
39
    :param clave_estacion: Atributo requerido para expresar la clave de cliente de la estación de servicio, a 10 caracteres, cuando sea requerido.
40
    :param cantidad: Atributo requerido para definir el volumen de combustible adquirido.
41
    :param nombre_combustible: Atributo requerido para expresar el nombre del combustible adquirido.
42
    :param folio_operacion: Atributo requerido para referir el número de folio de cada operación realizada por cada monedero electrónico.
43
    :param valor_unitario: Atributo requerido para definir el precio unitario del combustible adquirido.
44
    :param importe: Atributo requerido para definir el monto total de consumo de combustible. Debe ser equivalente al resultado de multiplicar la cantidad por el valor unitario.
45
    :param determinados: Nodo requerido para enlistar los impuestos determinados aplicables de combustibles.
46
    """
47
    
48
    def __init__(
49
            self,
50
            identificador: str,
51
            fecha: datetime,
52
            rfc: str,
53
            clave_estacion: str,
54
            cantidad: Decimal | int,
55
            nombre_combustible: str,
56
            folio_operacion: str,
57
            valor_unitario: Decimal | int,
58
            importe: Decimal | int,
59
            determinados: Determinado | dict | Sequence[Determinado | dict],
60
    ): 
61
        super().__init__({
62
            'Identificador': identificador,
63
            'Fecha': fecha,
64
            'Rfc': rfc,
65
            'ClaveEstacion': clave_estacion,
66
            'Cantidad': cantidad,
67
            'NombreCombustible': nombre_combustible,
68
            'FolioOperacion': folio_operacion,
69
            'ValorUnitario': valor_unitario,
70
            'Importe': importe,
71
            'Determinados': determinados,
72
        })
73
        
74
75 View Code Duplication
class ConsumoDeCombustibles(CFDI):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
76
    """
77
    Complemento al Comprobante Fiscal Digital por Internet (CFDI) para integrar la información de consumo de combustibles por monedero electrónico.
78
    
79
    :param numero_de_cuenta: Nodo requerido para expresar el número de cuenta del adquirente del monedero electrónico
80
    :param total: Atributo requerido para expresar el monto total de consumo de combustibles.
81
    :param conceptos: Nodo requerido para enlistar los conceptos cubiertos por Consumo de Combustibles.
82
    :param sub_total: Atributo opcional para representar la suma de todos los importes tipo ConceptoConsumoDeCombustibles.
83
    """
84
    
85
    tag = '{http://www.sat.gob.mx/consumodecombustibles}ConsumoDeCombustibles'
86
    version = '1.0'
87
    tipo_operacion = 'monedero electrónico'
88
    
89
    def __init__(
90
            self,
91
            numero_de_cuenta: str,
92
            total: Decimal | int,
93
            conceptos: ConceptoConsumoDeCombustibles | dict | Sequence[ConceptoConsumoDeCombustibles | dict],
94
            sub_total: Decimal | int = None,
95
    ): 
96
        super().__init__({
97
            'Version': self.version,
98
            'TipoOperacion': self.tipo_operacion,
99
            'NumeroDeCuenta': numero_de_cuenta,
100
            'Total': total,
101
            'Conceptos': conceptos,
102
            'SubTotal': sub_total,
103
        })
104
        
105
106