Balanza.__init__()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 23
Code Lines 22

Duplication

Lines 23
Ratio 100 %

Importance

Changes 0
Metric Value
cc 1
eloc 22
nop 10
dl 23
loc 23
rs 9.352
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
"""BCE www.sat.gob.mx/esquemas/ContabilidadE/1_1/BalanzaComprobacion"""
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 Ctas(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
11
    """
12
    Nodo obligatorio para expresar el detalle de cada cuenta o subcuenta de la balanza de comprobación.
13
    
14
    :param num_cta: Atributo requerido para expresar la clave asignada con que se distingue la cuenta o subcuenta en el catálogo de cuentas del contribuyente.
15
    :param saldo_ini: Atributo requerido para expresar el monto del saldo inicial de la cuenta o subcuenta en el periodo. De acuerdo a la naturaleza de la cuenta o subcuenta, deberá de corresponder el saldo inicial, de lo contrario se entenderá que es un saldo inicial de naturaleza inversa. En caso de no existir dato, colocar cero (0)
16
    :param debe: Atributo requerido para expresar el monto de los movimientos deudores de la cuenta o subcuenta. En caso de no existir dato, colocar cero (0)
17
    :param haber: Atributo requerido para expresar el monto de los movimientos acreedores de la cuenta o subcuenta. En caso de no existir dato, colocar cero (0)
18
    :param saldo_fin: Atributo requerido para expresar el monto del saldo final de la cuenta o subcuenta en el periodo. De acuerdo a la naturaleza de la cuenta o subcuenta, deberá de corresponder el saldo final, de lo contrario se entenderá que es un saldo final de naturaleza inversa. En caso de no existir dato, colocar cero (0)
19
    """
20
    
21
    def __init__(
22
            self,
23
            num_cta: str,
24
            saldo_ini: Decimal | int,
25
            debe: Decimal | int,
26
            haber: Decimal | int,
27
            saldo_fin: Decimal | int,
28
    ): 
29
        super().__init__({
30
            'NumCta': num_cta,
31
            'SaldoIni': saldo_ini,
32
            'Debe': debe,
33
            'Haber': haber,
34
            'SaldoFin': saldo_fin,
35
        })
36
        
37
38 View Code Duplication
class Balanza(CFDI):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
39
    """
40
    Estándar de balanza de comprobación que se entrega como parte de la contabilidad electrónica.
41
    
42
    :param rfc: Atributo requerido para expresar el RFC del contribuyente que envía los datos
43
    :param mes: Atributo requerido para expresar el mes al que corresponde la balanza de comprobación
44
    :param anio: Atributo requerido para expresar el año al que corresponde la balanza
45
    :param tipo_envio: Atributo requerido para expresar el tipo de envío de la balanza (N - Normal; C - Complementaria)
46
    :param ctas: Nodo obligatorio para expresar el detalle de cada cuenta o subcuenta de la balanza de comprobación.
47
    :param fecha_mod_bal: Atributo opcional para expresar la fecha de la última modificación contable de la balanza de comprobación. Es requerido cuando el atributo TipoEnvio = C. Se convierte en requerido cuando se cuente con la información.
48
    :param sello: Atributo opcional para contener el sello digital del archivo de contabilidad electrónica. El sello deberá ser expresado cómo una cadena de texto en formato Base 64
49
    :param no_certificado: Atributo opcional para expresar el número de serie del certificado de sello digital que ampara el archivo de contabilidad electrónica, de acuerdo al acuse correspondiente a 20 posiciones otorgado por el sistema del SAT.
50
    :param certificado: Atributo opcional que sirve para expresar el certificado de sello digital que ampara al archivo de contabilidad electrónica como texto, en formato base 64.
51
    """
52
    
53
    tag = '{www.sat.gob.mx/esquemas/ContabilidadE/1_1/BalanzaComprobacion}Balanza'
54
    version = '1.1'
55
    
56
    def __init__(
57
            self,
58
            rfc: str,
59
            mes: str,
60
            anio: int,
61
            tipo_envio: str,
62
            ctas: Ctas | dict | Sequence[Ctas | dict],
63
            fecha_mod_bal: date = None,
64
            sello: str = None,
65
            no_certificado: str = None,
66
            certificado: str = None,
67
    ): 
68
        super().__init__({
69
            'Version': self.version,
70
            'RFC': rfc,
71
            'Mes': mes,
72
            'Anio': anio,
73
            'TipoEnvio': tipo_envio,
74
            'Ctas': ctas,
75
            'FechaModBal': fecha_mod_bal,
76
            'Sello': sello,
77
            'NoCertificado': no_certificado,
78
            'Certificado': certificado,
79
        })
80
        
81
82