@@ 10-48 (lines=39) @@ | ||
7 | from ...transform import MEXICO_TZ |
|
8 | ||
9 | ||
10 | 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 | tag = '{http://www.sat.gob.mx/TimbreFiscalDigital}TimbreFiscalDigital' |
|
20 | version = '1.1' |
|
21 | ||
22 | def __init__( |
|
23 | self, |
|
24 | proveedor: Signer, |
|
25 | uuid: str, |
|
26 | fecha_timbrado: datetime, |
|
27 | sello_cfd: str, |
|
28 | leyenda: str = None, |
|
29 | ): |
|
30 | 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 | self['SelloSAT'] = proveedor.sign_sha256( |
|
42 | self.cadena_original().encode() |
|
43 | ) |
|
44 |
@@ 9-45 (lines=37) @@ | ||
6 | from ...transform import MEXICO_TZ |
|
7 | ||
8 | ||
9 | class TimbreFiscalDigital(CFDI): |
|
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 |