Issues (158)

satcfdi/create/cancela/cancelacionretencion.py (1 issue)

1 1
from collections.abc import Sequence
2 1
from datetime import datetime
3
4 1
from ..w3.signature import signature_c14n_sha1
5 1
from ...models import Signer
6 1
from ...utils import ScalarMap
7 1
from ...xelement import XElement
8
9
10 1
class Folio(ScalarMap):
11
    """
12
    http://www.sat.gob.mx/esquemas/retencionpago/1
13
    Folio fiscal (UUID) a ser cancelado.
14
    """
15 1
    def __init__(
16
            self,
17
            uuid: str,
18
            motivo: str,
19
            folio_sustitucion: str = None,
20
    ): 
21
        """
22
        Folio fiscal (UUID) a ser cancelado.
23
        
24
        :param uuid: UUID generado en la operación de timbrado del comprobante solicitado.
25
        :param motivo: Clave del motivo de cancelación del comprobante.
26
        :param folio_sustitucion: Atributo condicional que representa al UUID que sustituye al folio fiscal cancelado. Es requerido cuando la clave del motivo de cancelación es 01.
27
        """
28
        
29 1
        super().__init__({
30
            'UUID': uuid,
31
            'Motivo': motivo,
32
            'FolioSustitucion': folio_sustitucion,
33
        })
34
        
35
36 1 View Code Duplication
class Cancelacion(XElement):
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
37
    """
38
    Elemento raíz para realizar una solicitud de cancelación de CFDI.
39
    """
40 1
    tag = '{http://www.sat.gob.mx/esquemas/retencionpago/1}Cancelacion'
41
42 1
    def __init__(
43
            self,
44
            emisor: Signer,
45
            folios: Folio | Sequence[Folio | dict],
46
            fecha: datetime = None
47
    ):
48
        """
49
        Elemento raíz para realizar una solicitud de cancelación de CFDI.
50
51
        :param emisor: Atributo requerido para expresar el RFC del emisor del (os) CFDI a cancelar.
52
        :param fecha: Atributo requerido para expresar la fecha de la operación.
53
        :param folios: Colección de folios fiscales (UUID) a ser cancelados.
54
        """
55 1
        super().__init__({
56
            'RfcEmisor': emisor.rfc,
57
            'Fecha': fecha or datetime.now(),
58
            'Folios': folios,
59
        })
60 1
        self["_nsmap"] = {
61
            None: "http://www.sat.gob.mx/esquemas/retencionpago/1",
62
            "xsd": "http://www.w3.org/2001/XMLSchema",
63
            "xsi": "http://www.w3.org/2001/XMLSchema-instance"
64
        }
65
66 1
        sig = signature_c14n_sha1(
67
            signer=emisor,
68
            element=self.to_xml(),
69
            nsmap={
70
                None: 'http://www.w3.org/2000/09/xmldsig#',
71
                "xsd": "http://www.w3.org/2001/XMLSchema",
72
                "xsi": "http://www.w3.org/2001/XMLSchema-instance",
73
            }
74
        )
75 1
        self['Signature'] = sig
76
77