Issues (158)

satcfdi/create/contabilidad/PLZ13.py (6 issues)

1
"""PLZ http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/PolizasPeriodo"""
2 1
from decimal import Decimal
3 1
from datetime import datetime, date, time
4 1
from collections.abc import Sequence
5 1
from ...cfdi import CFDI
6 1
from ...xelement import XElement
7 1
from ...utils import ScalarMap
8
9
10 1 View Code Duplication
class OtrMetodoPago(ScalarMap):
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
11
    """
12
    Nodo opcional para relacionar otros métodos de pago o cobro de la transacción. Se convierte en requerido cuando la transacción involucra un método de pago o cobro diverso a cheque y/o transferencia.
13
    
14
    :param met_pago_pol: Atributo requerido 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.
15
    :param fecha: Atributo requerido, es la fecha de la transacción de otros métodos de pago.
16
    :param benef: Atributo requerido, nombre de la persona o contribuyente a la cual se realiza éstos métodos de pago.
17
    :param rfc: Atributo requerido para expresar el RFC relacionado con la transacció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.
18
    :param monto: Atributo requerido para expresar el monto del método de pago soporte de la transacción.
19
    :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.
20
    :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.
21
    """
22
    
23 1
    def __init__(
24
            self,
25
            met_pago_pol: str,
26
            fecha: date,
27
            benef: str,
28
            rfc: str,
29
            monto: Decimal | int,
30
            moneda: str = None,
31
            tip_camb: Decimal | int = None,
32
    ): 
33
        super().__init__({
34
            'MetPagoPol': met_pago_pol,
35
            'Fecha': fecha,
36
            'Benef': benef,
37
            'RFC': rfc,
38
            'Monto': monto,
39
            'Moneda': moneda,
40
            'TipCamb': tip_camb,
41
        })
42
        
43
44 1 View Code Duplication
class Transferencia(ScalarMap):
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
45
    """
46
    Nodo opcional para relacionar el detalle de las transferencias bancarias que integran la póliza. Se convierte en requerido cuando exista una salida o entrada de recursos que involucre este método de pago o cobro por parte del contribuyente que envía los datos. Además se convierte en requerido cuando se realicen transacciones, entre las cuentas propias del contribuyente.
47
    
48
    :param banco_ori_nal: Atributo requerido, para expresar el Banco de la cuenta origen de la transferencia, de acuerdo al catálogo publicado en la página de internet del SAT. Se considera banco nacional aquellos bancos de residencia nacional, indistintamente, si el tipo de moneda es nacional o extranjero.
49
    :param cta_dest: Atributo requerido para expresar el número de cuenta destino, la cual se transfieren los recursos.
50
    :param banco_dest_nal: Atributo requerido, para expresar el Banco de la cuenta destino de la transferencia, de acuerdo al catálogo publicado en la página de internet del SAT. Se considera banco nacional aquellos bancos de residencia nacional, indistintamente, si el tipo de moneda es nacional o extranjero.
51
    :param fecha: Atributo requerido, es la fecha de la transferencia
52
    :param benef: Atributo requerido, nombre del beneficiario de la transferencia.
53
    :param rfc: Atributo requerido para expresar el RFC relacionado con el movimiento. El RFC al que se hace referencia, es el distinto del contribuyente que envía los datos, es decir, el RFC del tercero vinculado.
54
    :param monto: Atributo requerido, es el monto transferido
55
    :param cta_ori: Atributo opcional para expresar el número de cuenta de origen desde la cual se transfieren los recursos. Se convierte en requerido cuando se cuente con la información.
56
    :param banco_ori_ext: Atributo opcional para expresar el nombre completo del banco origen extranjero. Se convierte en requerido cuando se cuente con la información.
57
    :param banco_dest_ext: Atributo opcional para expresar el nombre completo del banco destino extranjero. Se convierte en requerido cuando se cuente con la información.
58
    :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.
59
    :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.
60
    """
61
    
62 1
    def __init__(
63
            self,
64
            banco_ori_nal: str,
65
            cta_dest: str,
66
            banco_dest_nal: str,
67
            fecha: date,
68
            benef: str,
69
            rfc: str,
70
            monto: Decimal | int,
71
            cta_ori: str = None,
72
            banco_ori_ext: str = None,
73
            banco_dest_ext: str = None,
74
            moneda: str = None,
75
            tip_camb: Decimal | int = None,
76
    ): 
77
        super().__init__({
78
            'BancoOriNal': banco_ori_nal,
79
            'CtaDest': cta_dest,
80
            'BancoDestNal': banco_dest_nal,
81
            'Fecha': fecha,
82
            'Benef': benef,
83
            'RFC': rfc,
84
            'Monto': monto,
85
            'CtaOri': cta_ori,
86
            'BancoOriExt': banco_ori_ext,
87
            'BancoDestExt': banco_dest_ext,
88
            'Moneda': moneda,
89
            'TipCamb': tip_camb,
90
        })
91
        
92
93 1 View Code Duplication
class Cheque(ScalarMap):
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
94
    """
95
    Nodo opcional para relacionar el detalle de los cheques que integran la póliza. Se convierte en requerido cuando exista una salida o entrada de recursos, que involucre este método de pago o cobro de la obligación contraída por parte del contribuyente que envía los datos.
96
    
97
    :param num: Atributo requerido para expresar el número del cheque emitido
98
    :param ban_emis_nal: Atributo requerido, para expresar el Banco nacional emisor del cheque, de acuerdo al catálogo publicado en la página de internet del SAT. Se consideran banco nacional aquellos bancos de residencia nacional, indistintamente, si el tipo de moneda es nacional o extranjero.
99
    :param cta_ori: Atributo requerido para expresar el número de cuenta bancaria del origen de los recursos.
100
    :param fecha: Atributo requerido, es la fecha del cheque
101
    :param benef: Atributo requerido, nombre del beneficiario del cheque
102
    :param rfc: Atributo requerido para expresar el RFC relacionado con el movimiento. El RFC al que se hace referencia, es el distinto del contribuyente que envía los datos, es decir, el RFC del tercero vinculado.
103
    :param monto: Atributo requerido, es el monto del cheque emitido
104
    :param ban_emis_ext: Atributo opcional para expresar el nombre completo del Banco extranjero emisor del cheque. Se convierte en requerido cuando se cuente con la información.
105
    :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.
106
    :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.
107
    """
108
    
109 1
    def __init__(
110
            self,
111
            num: str,
112
            ban_emis_nal: str,
113
            cta_ori: str,
114
            fecha: date,
115
            benef: str,
116
            rfc: str,
117
            monto: Decimal | int,
118
            ban_emis_ext: str = None,
119
            moneda: str = None,
120
            tip_camb: Decimal | int = None,
121
    ): 
122
        super().__init__({
123
            'Num': num,
124
            'BanEmisNal': ban_emis_nal,
125
            'CtaOri': cta_ori,
126
            'Fecha': fecha,
127
            'Benef': benef,
128
            'RFC': rfc,
129
            'Monto': monto,
130
            'BanEmisExt': ban_emis_ext,
131
            'Moneda': moneda,
132
            'TipCamb': tip_camb,
133
        })
134
        
135
136 1
class CompExt(ScalarMap):
137
    """
138
    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.
139
    
140
    :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
141
    :param monto_total: Atributo requerido para expresar el monto total del comprobante de origen extranjero que soporte la operación.
142
    :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
143
    :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.
144
    :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.
145
    """
146
    
147 1
    def __init__(
148
            self,
149
            num_fact_ext: str,
150
            monto_total: Decimal | int,
151
            tax_id: str = None,
152
            moneda: str = None,
153
            tip_camb: Decimal | int = None,
154
    ): 
155
        super().__init__({
156
            'NumFactExt': num_fact_ext,
157
            'MontoTotal': monto_total,
158
            'TaxID': tax_id,
159
            'Moneda': moneda,
160
            'TipCamb': tip_camb,
161
        })
162
        
163
164 1
class CompNalOtr(ScalarMap):
165
    """
166
    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.
167
    
168
    :param cfd_cbb_num_fol: Atributo requerido para expresar el número de folio del comprobante CFD_CBB que soporte la transacción.
169
    :param rfc: Atributo requerido para expresar el RFC relacionado con el movimiento o transacció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.
170
    :param monto_total: Atributo requerido para expresar el monto total del CFD y/o CBB que soporte la transacción. (Incluye IVA en su caso)
171
    :param cfd_cbb_serie: Atributo opcional para expresar la serie del comprobante CFD_CBB que soporte la transacción.
172
    :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.
173
    :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.
174
    """
175
    
176 1
    def __init__(
177
            self,
178
            cfd_cbb_num_fol: int,
179
            rfc: str,
180
            monto_total: Decimal | int,
181
            cfd_cbb_serie: str = None,
182
            moneda: str = None,
183
            tip_camb: Decimal | int = None,
184
    ): 
185
        super().__init__({
186
            'CFD_CBB_NumFol': cfd_cbb_num_fol,
187
            'RFC': rfc,
188
            'MontoTotal': monto_total,
189
            'CFD_CBB_Serie': cfd_cbb_serie,
190
            'Moneda': moneda,
191
            'TipCamb': tip_camb,
192
        })
193
        
194
195 1
class CompNal(ScalarMap):
196
    """
197
    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.
198
    
199
    :param uuid_cfdi: Atributo requerido para expresar la clave UUID del CFDI soporte de la operación. (36 caracteres)
200
    :param rfc: Atributo requerido para expresar el RFC relacionado con el movimiento o transacció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.
201
    :param monto_total: Atributo requerido para expresar el monto total del CFDI que soporte la transacción. (Incluye IVA en su caso)
202
    :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.
203
    :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.
204
    """
205
    
206 1
    def __init__(
207
            self,
208
            uuid_cfdi: str,
209
            rfc: str,
210
            monto_total: Decimal | int,
211
            moneda: str = None,
212
            tip_camb: Decimal | int = None,
213
    ): 
214 1
        super().__init__({
215
            'UUID_CFDI': uuid_cfdi,
216
            'RFC': rfc,
217
            'MontoTotal': monto_total,
218
            'Moneda': moneda,
219
            'TipCamb': tip_camb,
220
        })
221
        
222
223 1 View Code Duplication
class Transaccion(ScalarMap):
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
224
    """
225
    Nodo obligatorio para relacionar el detalle de cada transacción dentro de la póliza
226
    
227
    :param num_cta: Atributo requerido para expresar la clave con que se distingue la cuenta o subcuenta que se afecta por la transacción.
228
    :param des_cta: Atributo requerido para expresar el nombre de la cuenta o subcuenta que se afecta por la transacción.
229
    :param concepto: Atributo requerido para expresar el concepto de la transacción
230
    :param debe: Atributo requerido para expresar el monto del cargo a la cuenta o subcuenta que se afecta en la transacción. En caso de no existir dato, colocar cero (0)
231
    :param haber: Atributo requerido para expresar el monto del abono a la cuenta o subcuenta que se afecta en la transacción. En caso de no existir dato, colocar cero (0)
232
    :param comp_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.
233
    :param comp_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.
234
    :param comp_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.
235
    :param cheque: Nodo opcional para relacionar el detalle de los cheques que integran la póliza. Se convierte en requerido cuando exista una salida o entrada de recursos, que involucre este método de pago o cobro de la obligación contraída por parte del contribuyente que envía los datos.
236
    :param transferencia: Nodo opcional para relacionar el detalle de las transferencias bancarias que integran la póliza. Se convierte en requerido cuando exista una salida o entrada de recursos que involucre este método de pago o cobro por parte del contribuyente que envía los datos. Además se convierte en requerido cuando se realicen transacciones, entre las cuentas propias del contribuyente.
237
    :param otr_metodo_pago: Nodo opcional para relacionar otros métodos de pago o cobro de la transacción. Se convierte en requerido cuando la transacción involucra un método de pago o cobro diverso a cheque y/o transferencia.
238
    """
239
    
240 1
    def __init__(
241
            self,
242
            num_cta: str,
243
            des_cta: str,
244
            concepto: str,
245
            debe: Decimal | int,
246
            haber: Decimal | int,
247
            comp_nal: CompNal | dict | Sequence[CompNal | dict] = None,
248
            comp_nal_otr: CompNalOtr | dict | Sequence[CompNalOtr | dict] = None,
249
            comp_ext: CompExt | dict | Sequence[CompExt | dict] = None,
250
            cheque: Cheque | dict | Sequence[Cheque | dict] = None,
251
            transferencia: Transferencia | dict | Sequence[Transferencia | dict] = None,
252
            otr_metodo_pago: OtrMetodoPago | dict | Sequence[OtrMetodoPago | dict] = None,
253
    ): 
254 1
        super().__init__({
255
            'NumCta': num_cta,
256
            'DesCta': des_cta,
257
            'Concepto': concepto,
258
            'Debe': debe,
259
            'Haber': haber,
260
            'CompNal': comp_nal,
261
            'CompNalOtr': comp_nal_otr,
262
            'CompExt': comp_ext,
263
            'Cheque': cheque,
264
            'Transferencia': transferencia,
265
            'OtrMetodoPago': otr_metodo_pago,
266
        })
267
        
268
269 1 View Code Duplication
class Poliza(ScalarMap):
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
270
    """
271
    Nodo obligatorio para relacionar el detalle de cada transacción dentro de la póliza.
272
    
273
    :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.
274
    :param fecha: Atributo requerido para expresar la fecha de registro de la póliza
275
    :param concepto: Atributo requerido para expresar el concepto de la operación
276
    :param transaccion: Nodo obligatorio para relacionar el detalle de cada transacción dentro de la póliza
277
    """
278
    
279 1
    def __init__(
280
            self,
281
            num_un_iden_pol: str,
282
            fecha: date,
283
            concepto: str,
284
            transaccion: Transaccion | dict | Sequence[Transaccion | dict],
285
    ): 
286 1
        super().__init__({
287
            'NumUnIdenPol': num_un_iden_pol,
288
            'Fecha': fecha,
289
            'Concepto': concepto,
290
            'Transaccion': transaccion,
291
        })
292
        
293
294 1 View Code Duplication
class Polizas(CFDI):
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
295
    """
296
    Estándar de pólizas del periodo que se entrega como parte de la contabilidad electrónica.
297
    
298
    :param rfc: Atributo requerido para expresar el RFC del contribuyente que envía los datos
299
    :param mes: Atributo requerido para expresar el mes al que corresponde la póliza
300
    :param anio: Atributo requerido para expresar el año al que corresponde la póliza
301
    :param tipo_solicitud: Atributo requerido para expresar el tipo de solicitud de la póliza ( AF - Acto de Fiscalización; FC - Fiscalización Compulsa; DE - Devolución; CO - Compensación )
302
    :param poliza: Nodo obligatorio para relacionar el detalle de cada transacción dentro de la póliza.
303
    :param num_orden: Atributo opcional para expresar el número de orden asignado al acto de fiscalización al que hace referencia la solicitud de la póliza. Requerido para tipo de solicitud = AF y FC. Se convierte en requerido cuando se cuente con la información.
304
    :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 la solicitud de la póliza. Requerido para tipo de solicitud = DE o CO. Se convierte en requerido cuando se cuente con la información.
305
    :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
306
    :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.
307
    :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.
308
    """
309
    
310 1
    tag = '{http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/PolizasPeriodo}Polizas'
311 1
    version = '1.3'
312
    
313 1
    def __init__(
314
            self,
315
            rfc: str,
316
            mes: str,
317
            anio: int,
318
            tipo_solicitud: str,
319
            poliza: Poliza | dict | Sequence[Poliza | dict],
320
            num_orden: str = None,
321
            num_tramite: str = None,
322
            sello: str = None,
323
            no_certificado: str = None,
324
            certificado: str = None,
325
    ): 
326 1
        super().__init__({
327
            'Version': self.version,
328
            'RFC': rfc,
329
            'Mes': mes,
330
            'Anio': anio,
331
            'TipoSolicitud': tipo_solicitud,
332
            'Poliza': poliza,
333
            'NumOrden': num_orden,
334
            'NumTramite': num_tramite,
335
            'Sello': sello,
336
            'NoCertificado': no_certificado,
337
            'Certificado': certificado,
338
        })
339
        
340
341