Beispiel #1
0
    def parse_xml_to_dict(xml_em: XmlElement) -> Mapping[str, object]:
        """
        Parse XML element and return a dictionary.
        """
        # XPath: /AEC/DocumentoAEC/Caratula
        caratula_em = xml_em.find('sii-dte:Caratula', namespaces=DTE_XMLNS_MAP)
        caratula_dict = _Caratula.parse_xml_to_dict(caratula_em)

        # XPath: /AEC/DocumentoAEC/Cesiones
        cesiones_em = xml_em.find('sii-dte:Cesiones', namespaces=DTE_XMLNS_MAP)

        # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido
        dte_cedido_em = cesiones_em.find('sii-dte:DTECedido',
                                         namespaces=DTE_XMLNS_MAP)
        dte_cedido_dict = _DteCedido.parse_xml_to_dict(dte_cedido_em)

        # XPath: /AEC/DocumentoAEC/Cesiones/Cesion
        cesion_em_list: Sequence[XmlElement] = cesiones_em.findall(
            'sii-dte:Cesion',
            namespaces=DTE_XMLNS_MAP,
        )
        cesion_dict_list: Sequence[Mapping[str, object]]
        cesion_dict_list = [
            _Cesion.parse_xml_to_dict(cesion_em)
            for cesion_em in cesion_em_list
        ]

        # XPath: /AEC/DocumentoAEC
        return dict(
            # id=xml_em.get('ID'),
            caratula=caratula_dict,
            cesiones_dte_cedido=dte_cedido_dict,
            cesiones_cesion=cesion_dict_list,
        )
Beispiel #2
0
    def parse_xml_to_dict(xml_em: XmlElement) -> Mapping[str, object]:
        """
        Parse XML element and return a dictionary.
        """
        # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido/DocumentoDTECedido
        doc_dte_cedido_em = xml_em.find(
            'sii-dte:DocumentoDTECedido',
            namespaces=DTE_XMLNS_MAP,
        )

        # Signature over 'DocumentoDTECedido'
        # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido/Signature
        # signature_over_doc_dte_cedido_em = xml_em.find(
        #     'ds:Signature',
        #     namespaces=xml_utils.XML_DSIG_NS_MAP,
        # )
        # signature_over_doc_dte_cedido_dict = _XmlSignature.parse_xml_to_dict(
        #     signature_over_doc_dte_cedido_em,
        # )

        # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido/DocumentoDTECedido
        doc_dte_cedido_dict = _DocumentoDteCedido.parse_xml_to_dict(
            doc_dte_cedido_em)

        # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido
        return dict(documento_dte_cedido=doc_dte_cedido_dict,
                    # signature=signature_over_doc_dte_cedido_dict,
                    )
Beispiel #3
0
    def parse_xml_to_dict(xml_em: XmlElement) -> Mapping[str, object]:
        """
        Parse XML element and return a dictionary.
        """
        # XPath: //Signature/KeyInfo
        key_info_em = xml_em.find('ds:KeyInfo',
                                  namespaces=xml_utils.XML_DSIG_NS_MAP)

        # XPath: //Signature/KeyInfo/X509Data
        key_info_x509_data_em = (key_info_em.find(
            'ds:X509Data', namespaces=xml_utils.XML_DSIG_NS_MAP))

        # XPath: //Signature
        return dict(
            # XPath: //Signature/SignatureValue
            signature_value=xml_em.findtext(
                'ds:SignatureValue',
                namespaces=xml_utils.XML_DSIG_NS_MAP,
            ),

            # XPath: //Signature/KeyInfo/X509Data/X509Certificate
            key_info_x509_data_x509_cert=key_info_x509_data_em.findtext(
                'ds:X509Certificate',
                namespaces=xml_utils.XML_DSIG_NS_MAP,
            ),
        )
Beispiel #4
0
    def parse_xml_to_dict(xml_em: XmlElement) -> Mapping[str, object]:
        """
        Parse XML element and return a dictionary.
        """
        # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido/DocumentoDTECedido/DTE
        dte_em = xml_em.find('sii-dte:DTE', namespaces=DTE_XMLNS_MAP)

        # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido/DocumentoDTECedido
        return dict(
            # id=xml_em.get('ID'),
            dte=dte_em,
            # tmst_firma=xml_em.findtext('sii-dte:TmstFirma', namespaces=DTE_XMLNS_MAP),
        )
Beispiel #5
0
    def parse_xml_to_dict(xml_em: XmlElement) -> Mapping[str, object]:
        """
        Parse XML element and return a dictionary.
        """
        # XPath: /AEC/DocumentoAEC/Cesiones/Cesion/DocumentoCesion/IdDTE
        id_dte_em = xml_em.find('sii-dte:IdDTE', namespaces=DTE_XMLNS_MAP)
        id_dte_dict = _IdDte.parse_xml_to_dict(id_dte_em)

        # XPath: /AEC/DocumentoAEC/Cesiones/Cesion/DocumentoCesion/Cedente
        cedente_em = xml_em.find('sii-dte:Cedente', namespaces=DTE_XMLNS_MAP)
        cedente_dict = _Cedente.parse_xml_to_dict(cedente_em)

        # XPath: /AEC/DocumentoAEC/Cesiones/Cesion/DocumentoCesion/Cesionario
        cesionario_em = xml_em.find('sii-dte:Cesionario',
                                    namespaces=DTE_XMLNS_MAP)
        cesionario_dict = _Cesionario.parse_xml_to_dict(cesionario_em)

        # XPath: /AEC/DocumentoAEC/Cesiones/Cesion/DocumentoCesion
        return dict(
            # id=xml_em.get('ID'),
            seq_cesion=xml_em.findtext('sii-dte:SeqCesion',
                                       namespaces=DTE_XMLNS_MAP),
            id_dte=id_dte_dict,
            cedente=cedente_dict,
            cesionario=cesionario_dict,
            monto_cesion=xml_em.findtext('sii-dte:MontoCesion',
                                         namespaces=DTE_XMLNS_MAP),
            ultimo_vencimiento=xml_em.findtext(
                'sii-dte:UltimoVencimiento',
                namespaces=DTE_XMLNS_MAP,
            ),
            tmst_cesion=xml_em.findtext('sii-dte:TmstCesion',
                                        namespaces=DTE_XMLNS_MAP),
            email_deudor=xml_em.findtext('sii-dte:eMailDeudor',
                                         namespaces=DTE_XMLNS_MAP) or None,
        )