satcfdi.create.cfd.tfd10   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 40
Duplicated Lines 77.5 %

Importance

Changes 0
Metric Value
eloc 24
dl 31
loc 40
rs 10
c 0
b 0
f 0
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A TimbreFiscalDigital.__init__() 19 19 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
"""tfd http://www.sat.gob.mx/TimbreFiscalDigital"""
2
from datetime import datetime
3
4
from ...cfdi import CFDI
5
from ...models import Signer
6
from ...transform import MEXICO_TZ
7
8
9 View Code Duplication
class TimbreFiscalDigital(CFDI):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
10
    """
11
    Complemento requerido para el Timbrado Fiscal Digital que da valides a un Comprobante Fiscal Digital.
12
13
    :param uuid: Atributo requerido para expresar los 36 caracteres del UUID de la transacción de timbrado
14
    :param fecha_timbrado: Atributo requerido para expresar la fecha y hora de la generación del timbre
15
    :param sello_cfd: Atributo requerido para contener el sello digital del comprobante fiscal, que será timbrado. El sello deberá ser expresado cómo una cadena de texto en formato Base 64.
16
    """
17
18
    tag = '{http://www.sat.gob.mx/TimbreFiscalDigital}TimbreFiscalDigital'
19
    version = '1.0'
20
    
21
    def __init__(
22
            self,
23
            proveedor: Signer,
24
            uuid: str,
25
            fecha_timbrado: datetime,
26
            sello_cfd: str
27
    ):
28
        super().__init__({
29
            'Version': self.version,
30
            'UUID': uuid,
31
            'FechaTimbrado': fecha_timbrado or datetime.now(tz=MEXICO_TZ).replace(tzinfo=None),
32
            'RfcProvCertif': proveedor.rfc_pac,
33
            'SelloCFD': sello_cfd,
34
            'NoCertificadoSAT': proveedor.certificate_number,
35
            'SelloSAT': '',
36
        })
37
38
        self['SelloSAT'] = proveedor.sign_sha1(
39
            self.cadena_original().encode()
40
        )
41