ConceptoEstadoDeCuentaCombustible.__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
"""ecc http://www.sat.gob.mx/ecc"""
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 Traslado(ScalarMap):
11
    """
12
    Nodo para la definición de información detallada de un traslado de impuesto específico
13
    
14
    :param impuesto: Atributo requerido para definir el tipo de impuesto trasladado
15
    :param tasa: Atributo requerido para señalar la tasa del impuesto que se traslada por cada concepto amparado en el comprobante
16
    :param importe: Atributo requerido para definir el importe o monto del impuesto trasladado
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 ConceptoEstadoDeCuentaCombustible(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 a ser reportada en el estado de cuenta del proveedor de monedero electrónico 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 traslados: Nodo requerido para enlistar los impuestos trasladados 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
            traslados: Traslado | dict | Sequence[Traslado | 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
            'Traslados': traslados,
72
        })
73
        
74
75
class EstadoDeCuentaCombustible(CFDI):
76
    """
77
    Complemento al Comprobante Fiscal Digital (CFD) y Comprobante Fiscal Digital por Internet (CFDI) para integrar la información aplicable al estado de cuenta emitido por un prestador de servicios de 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 combustible.
81
    :param conceptos: Nodo requerido para enlistar los conceptos cubiertos por Estado de Cuenta de Combustible.
82
    :param sub_total: Atributo opcional para representar la suma de todos los importes tipo ConceptoEstadoDeCuentaCombustible.
83
    """
84
    
85
    tag = '{http://www.sat.gob.mx/ecc}EstadoDeCuentaCombustible'
86
    tipo_operacion = 'Tarjeta'
87
    
88
    def __init__(
89
            self,
90
            numero_de_cuenta: str,
91
            total: Decimal | int,
92
            conceptos: ConceptoEstadoDeCuentaCombustible | dict | Sequence[ConceptoEstadoDeCuentaCombustible | dict],
93
            sub_total: Decimal | int = None,
94
    ): 
95
        super().__init__({
96
            'TipoOperacion': self.tipo_operacion,
97
            'NumeroDeCuenta': numero_de_cuenta,
98
            'Total': total,
99
            'Conceptos': conceptos,
100
            'SubTotal': sub_total,
101
        })
102
        
103
104