satcfdi.create.cfd.tfd11   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 43
Duplicated Lines 76.74 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 28
dl 33
loc 43
ccs 12
cts 12
cp 1
rs 10
c 0
b 0
f 0
wmc 1

1 Method

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