Total Complexity | 1 |
Total Lines | 43 |
Duplicated Lines | 76.74 % |
Coverage | 100% |
Changes | 0 |
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): |
|
|||
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 |