satcfdi.create.contabilidad.RepAux12   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 178
Duplicated Lines 60.67 %

Importance

Changes 0
Metric Value
eloc 98
dl 108
loc 178
rs 10
c 0
b 0
f 0
wmc 5

5 Methods

Rating   Name   Duplication   Size   Complexity  
A ComprNal.__init__() 0 16 1
A RepAuxFol.__init__() 25 25 1
A ComprExt.__init__() 0 16 1
A DetAuxFol.__init__() 14 14 1
A ComprNalOtr.__init__() 18 18 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
"""RepAux www.sat.gob.mx/esquemas/ContabilidadE/1_1/AuxiliarFolios"""
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 ComprExt(ScalarMap):
11
    """
12
    Nodo opcional para relacionar el detalle de los comprobantes de origen extranjero relacionados con la transacción. Se considera que se debe identificar, el soporte documental, tanto en la provisión, como en el pago y/o cobro de cada una de las cuentas y subcuentas que se vean afectadas. Se convierte en requerido cuando se cuente con la información.
13
    
14
    :param num_fact_ext: Atributo requerido para expresar la clave numérico o alfanumérico del comprobante de origen extranjero que soporte la operación
15
    :param monto_total: Atributo requerido para expresar el monto total del comprobante de origen extranjero que soporte la operación.
16
    :param tax_id: Atributo opcional que sirve para expresar el Identificador del contribuyente extranjero. Se convierte en requerido cuando se cuente con la información
17
    :param met_pago_aux: Atributo opcional para expresar el método de pago de la operación, de acuerdo al catálogo publicado en la página de internet del SAT. Se convierte en requerido cuando se cuente con la información.
18
    :param moneda: Atributo opcional para expresar el tipo de moneda utilizado en la transacción, de acuerdo al catálogo publicado en la página de internet del SAT. Este dato sólo se utiliza en el caso de que el tipo de moneda, sea diferente a la moneda nacional (peso). Se convierte en requerido cuando se cuente con la información.
19
    :param tip_camb: Atributo opcional para expresar el tipo de cambio utilizado de acuerdo al tipo de moneda. Este dato sólo se utiliza en el caso de que el tipo de moneda, sea diferente a la moneda nacional (peso). Se convierte en requerido cuando se cuente con la información.
20
    """
21
    
22
    def __init__(
23
            self,
24
            num_fact_ext: str,
25
            monto_total: Decimal | int,
26
            tax_id: str = None,
27
            met_pago_aux: str = None,
28
            moneda: str = None,
29
            tip_camb: Decimal | int = None,
30
    ): 
31
        super().__init__({
32
            'NumFactExt': num_fact_ext,
33
            'MontoTotal': monto_total,
34
            'TaxID': tax_id,
35
            'MetPagoAux': met_pago_aux,
36
            'Moneda': moneda,
37
            'TipCamb': tip_camb,
38
        })
39
        
40
41 View Code Duplication
class ComprNalOtr(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
42
    """
43
    Nodo opcional para relacionar el detalle de los comprobantes de origen nacional relacionados con la transacción, diferente a CFDI, es decir, CFD y/o CBB. Se considera que se debe identificar, el soporte documental, tanto en la provisión, como en el pago y/o cobro de cada una de las cuentas y subcuentas que se vean afectadas. Se convierte en requerido cuando se cuente con la información.
44
    
45
    :param cfd_cbb_num_fol: Atributo requerido para expresar el número de folio del comprobante CFD_CBB que soporte la operación.
46
    :param monto_total: Atributo requerido para expresar el monto total del CFD y/o CBB que soporte la operación. (Incluye IVA en su caso)
47
    :param rfc: Atributo requerido para expresar el RFC relacionado con la operación. El RFC al que se hace referencia, es el distinto del contribuyente que envía los datos, es decir, el RFC del tercero vinculado.
48
    :param cfd_cbb_serie: Atributo opcional para expresar la serie del comprobante CFD_CBB que soporte la operación.
49
    :param met_pago_aux: Atributo opcional para expresar el método de pago de la operación, de acuerdo al catálogo publicado en la página de internet del SAT. Se convierte en requerido cuando se cuente con la información.
50
    :param moneda: Atributo opcional para expresar el tipo de moneda utilizado en la transacción, de acuerdo al catálogo publicado en la página de internet del SAT. Este dato sólo se utiliza en el caso de que el tipo de moneda, sea diferente a la moneda nacional (peso). Se convierte en requerido cuando se cuente con la información.
51
    :param tip_camb: Atributo opcional para expresar el tipo de cambio utilizado de acuerdo al tipo de moneda. Este dato sólo se utiliza en el caso de que el tipo de moneda, sea diferente a la moneda nacional (peso). Se convierte en requerido cuando se cuente con la información.
52
    """
53
    
54
    def __init__(
55
            self,
56
            cfd_cbb_num_fol: int,
57
            monto_total: Decimal | int,
58
            rfc: str,
59
            cfd_cbb_serie: str = None,
60
            met_pago_aux: str = None,
61
            moneda: str = None,
62
            tip_camb: Decimal | int = None,
63
    ): 
64
        super().__init__({
65
            'CFD_CBB_NumFol': cfd_cbb_num_fol,
66
            'MontoTotal': monto_total,
67
            'RFC': rfc,
68
            'CFD_CBB_Serie': cfd_cbb_serie,
69
            'MetPagoAux': met_pago_aux,
70
            'Moneda': moneda,
71
            'TipCamb': tip_camb,
72
        })
73
        
74
75
class ComprNal(ScalarMap):
76
    """
77
    Nodo opcional para relacionar el detalle de los comprobantes de origen nacional relacionados con la transacción. Se considera que se debe identificar, el soporte documental, tanto en la provisión, como en el pago y/o cobro de cada una de las cuentas y subcuentas que se vean afectadas. Se convierte en requerido cuando se cuente con la información.
78
    
79
    :param uuid_cfdi: Atributo requerido para expresar la clave UUID del CFDI soporte de la operación. (36 caracteres)
80
    :param monto_total: Atributo requerido para expresar el monto total del CFDI que soporte la operación (Incluye IVA en su caso)
81
    :param rfc: Atributo requerido para expresar el RFC relacionado con la operación. El RFC al que se hace referencia, es el distinto del contribuyente que envía los datos, es decir, el RFC del tercero vinculado.
82
    :param met_pago_aux: Atributo opcional para expresar el método de pago de la operación, de acuerdo al catálogo publicado en la página de internet del SAT. Se convierte en requerido cuando se cuente con la información.
83
    :param moneda: Atributo opcional para expresar el tipo de moneda utilizado en la transacción, de acuerdo al catálogo publicado en la página de internet del SAT. Este dato sólo se utiliza en el caso de que el tipo de moneda, sea diferente a la moneda nacional (peso). Se convierte en requerido cuando se cuente con la información.
84
    :param tip_camb: Atributo opcional para expresar el tipo de cambio utilizado de acuerdo al tipo de moneda. Este dato sólo se utiliza en el caso de que el tipo de moneda, sea diferente a la moneda nacional (peso). Se convierte en requerido cuando se cuente con la información.
85
    """
86
    
87
    def __init__(
88
            self,
89
            uuid_cfdi: str,
90
            monto_total: Decimal | int,
91
            rfc: str,
92
            met_pago_aux: str = None,
93
            moneda: str = None,
94
            tip_camb: Decimal | int = None,
95
    ): 
96
        super().__init__({
97
            'UUID_CFDI': uuid_cfdi,
98
            'MontoTotal': monto_total,
99
            'RFC': rfc,
100
            'MetPagoAux': met_pago_aux,
101
            'Moneda': moneda,
102
            'TipCamb': tip_camb,
103
        })
104
        
105
106 View Code Duplication
class DetAuxFol(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
107
    """
108
    Nodo opcional para expresar el detalle de los folios de los comprobantes fiscales que integran la póliza.
109
    
110
    :param num_un_iden_pol: Atributo requerido para expresar el número único de identificación de la póliza. El campo deberá contener la clave o nombre utilizado por el contribuyente para diferenciar, el tipo de póliza y el número correspondiente. En un mes ordinario no debe repetirse un mismo número de póliza con la clave o nombre asignado por el contribuyente.
111
    :param fecha: Atributo requerido para expresar la fecha de registro de la póliza.
112
    :param compr_nal: Nodo opcional para relacionar el detalle de los comprobantes de origen nacional relacionados con la transacción. Se considera que se debe identificar, el soporte documental, tanto en la provisión, como en el pago y/o cobro de cada una de las cuentas y subcuentas que se vean afectadas. Se convierte en requerido cuando se cuente con la información.
113
    :param compr_nal_otr: Nodo opcional para relacionar el detalle de los comprobantes de origen nacional relacionados con la transacción, diferente a CFDI, es decir, CFD y/o CBB. Se considera que se debe identificar, el soporte documental, tanto en la provisión, como en el pago y/o cobro de cada una de las cuentas y subcuentas que se vean afectadas. Se convierte en requerido cuando se cuente con la información.
114
    :param compr_ext: Nodo opcional para relacionar el detalle de los comprobantes de origen extranjero relacionados con la transacción. Se considera que se debe identificar, el soporte documental, tanto en la provisión, como en el pago y/o cobro de cada una de las cuentas y subcuentas que se vean afectadas. Se convierte en requerido cuando se cuente con la información.
115
    """
116
    
117
    def __init__(
118
            self,
119
            num_un_iden_pol: str,
120
            fecha: date,
121
            compr_nal: ComprNal | dict | Sequence[ComprNal | dict] = None,
122
            compr_nal_otr: ComprNalOtr | dict | Sequence[ComprNalOtr | dict] = None,
123
            compr_ext: ComprExt | dict | Sequence[ComprExt | dict] = None,
124
    ): 
125
        super().__init__({
126
            'NumUnIdenPol': num_un_iden_pol,
127
            'Fecha': fecha,
128
            'ComprNal': compr_nal,
129
            'ComprNalOtr': compr_nal_otr,
130
            'ComprExt': compr_ext,
131
        })
132
        
133
134 View Code Duplication
class RepAuxFol(CFDI):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
135
    """
136
    Estándar de reporte auxiliar de folios de los comprobantes fiscales de las pólizas que se entrega como parte de las pólizas de la contabilidad electrónica.
137
    
138
    :param rfc: Atributo requerido para expresar el RFC del contribuyente que envía los datos
139
    :param mes: Atributo requerido para expresar el mes en que inicia la vigencia del reporte auxiliar de los folios de los comprobantes fiscales de las pólizas.
140
    :param anio: Atributo requerido para expresar el año al que inicia la vigencia del reporte auxiliar de los folios de los comprobantes fiscales de las pólizas.
141
    :param tipo_solicitud: Atributo requerido para expresar el tipo de solicitud del reporte auxiliar de los folios de los comprobantes fiscales de las pólizas. ( AF - Acto de Fiscalización; FC - Fiscalización Compulsa; DE - Devolución; CO - Compensación )
142
    :param num_orden: Atributo opcional para expresar el número de orden asignado al acto de fiscalización al que hace referencia el reporte auxiliar de los folios de los comprobantes fiscales de las pólizas. Requerido para tipo de solicitud = AF y FC. Se convierte en requerido cuando se cuente con la información.
143
    :param num_tramite: Atributo opcional para expresar el número de trámite asignado a la solicitud de devolución o compensación al que hace referencia el reporte auxiliar de los folios de los comprobantes fiscales de las pólizas. Requerido para tipo de solicitud = DE o CO. Se convierte en requerido cuando se cuente con la información.
144
    :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
145
    :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.
146
    :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.
147
    :param det_aux_fol: Nodo opcional para expresar el detalle de los folios de los comprobantes fiscales que integran la póliza.
148
    """
149
    
150
    tag = '{www.sat.gob.mx/esquemas/ContabilidadE/1_1/AuxiliarFolios}RepAuxFol'
151
    version = '1.2'
152
    
153
    def __init__(
154
            self,
155
            rfc: str,
156
            mes: str,
157
            anio: int,
158
            tipo_solicitud: str,
159
            num_orden: str = None,
160
            num_tramite: str = None,
161
            sello: str = None,
162
            no_certificado: str = None,
163
            certificado: str = None,
164
            det_aux_fol: DetAuxFol | dict | Sequence[DetAuxFol | dict] = None,
165
    ): 
166
        super().__init__({
167
            'Version': self.version,
168
            'RFC': rfc,
169
            'Mes': mes,
170
            'Anio': anio,
171
            'TipoSolicitud': tipo_solicitud,
172
            'NumOrden': num_orden,
173
            'NumTramite': num_tramite,
174
            'Sello': sello,
175
            'NoCertificado': no_certificado,
176
            'Certificado': certificado,
177
            'DetAuxFol': det_aux_fol,
178
        })
179
        
180
181