Página 1 de 1

Agregar Nodo Complemento

Publicado: Lun Ago 05, 2013 5:58 pm
por M3rino
Que tal colegas:
Es necesario incluir al XML en la version 3.2, el nodo de Complemento con las etiquetas de <selloCFD=""> <FechaTimbrado=""> <UUID=""> <noCertificadoSAT=""> <version="1.0"> <selloSAT="">
si es asi me podrian orientar un poco para agregarselo al XML ya creado..?

por aqui en este foro vi algo así:
XmlDocument docXML = new XmlDocument();
docXML.Load("Prueba.xml");
// Create an attribute and add it to the root element
docXML.DocumentElement.SetAttribute("sello", selloDigitalOriginal);
docXML.Save("Prueba.xml");

Si utilizo este mismo fragmento para agregar el complemento se agrega en el elemento principal que es <cfdi:Comprobante> y no en la de Complemento
¿Como podria indicarle el elemento y los Atributos?

de antemano muchas gracias..!

Re: Agregar Nodo Complemento

Publicado: Mar Ago 06, 2013 11:45 am
por mauricio
Compañero... estas un poco perdido... el complemente que mencionas forma parte del Timbre Fiscal que los PAC te tienen que agregar al momento de timbrar tu factura, tu solo construye un XML valido, mandalo a timbrar y si todo esta bien el PAC te regresa el mismo XML añadiendo el nodo Complemento con todo estos datos...

Saludos

Re: Agregar Nodo Complemento

Publicado: Mar Ago 06, 2013 1:03 pm
por M3rino
mauricio escribió:Compañero... estas un poco perdido... el complemente que mencionas forma parte del Timbre Fiscal que los PAC te tienen que agregar al momento de timbrar tu factura, tu solo construye un XML valido, mandalo a timbrar y si todo esta bien el PAC te regresa el mismo XML añadiendo el nodo Complemento con todo estos datos...

Saludos
En mi caso o tan solo con las pruebas que estoy haciendo con mi PAC "Solucion Factible"
me regresa lo siguiente:

Código: Seleccionar todo

<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <ns:timbrarResponse xmlns:ns="http://timbrado.ws.cfdi.solucionfactible.com">
            <ns:return xmlns:ax23="http://timbrado.ws.cfdi.solucionfactible.com/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax23:CFDICertificacion">
                <ax23:status>200</ax23:status>
                <ax23:mensaje>OK</ax23:mensaje>
                <ax23:resultados xsi:type="ax23:CFDIResultadoCertificacion">
                    <ax23:cadenaOriginal>||1.0|A5148D79-626F-4213-AC34-263369F9C727|2011-05-16T16:43:04|j+sqQ/Md+hz8YSqLx5XNpRREgpqZjJL9jA/KUSK+LZIo30Ml93A5May6yEQEw6KVz1Z8ap2DYBfZc+oN5lgMoshYQqxtNQUmjSMOuV9AWAksLMjOegDZrMuh7rNo1pdWlymUezOBA2pko19zjE6Vrobdsnn596d8fNwd7geUxxM=|30001000000100000801||</ax23:cadenaOriginal>
                    <ax23:certificadoSAT>30001000000100000801</ax23:certificadoSAT>
                    <ax23:cfdiTimbrado>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0eHhNPSI+PGNm . . . ZGk6RWrdmhtWGpoUD+PC9jZmRpOkNvbXByb2JhbnRlPg0K</ax23:cfdiTimbrado>
                    <ax23:fechaTimbrado>2011-05-16T21:43:04.481Z</ax23:fechaTimbrado>
                    <ax23:mensaje>La operación se completó con éxito</ax23:mensaje>
                    <ax23:qrCode>iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDA//+0BaRJ . . . d94cI+vI/kugA61E/60JiLOEAAAAASUVORK5CYII=</ax23:qrCode>
                    <ax23:selloSAT>IZUrCoMwsKRhy1ah7YVvRJ0K2gd1sh++WN+v . . . hmXjhP7WajMcWRr71yMgdy4LvNfPrk=</ax23:selloSAT>
                    <ax23:status>200</ax23:status>
                    <ax23:uuid>A5148D79-626F-4213-AC34-263369F9C727</ax23:uuid>
                    <ax23:versionTFD>1.0</ax23:versionTFD>
                </ax23:resultados>
            </ns:return>
        </ns:timbrarResponse>
    </soapenv:Body>
</soapenv:Envelope>
entonces de mi lado tengo que agregarselo al XML original.
o hasta el momento es lo que tengo entendido

Re: Agregar Nodo Complemento

Publicado: Mar Ago 06, 2013 1:05 pm
por mauricio
¿No te lo regresa tu PAC ya formadito solo para guardar?... bueno... si este es el caso, entonces si, tienes que agregarselo a tu XML original... lastima...

Saludos

Re: Agregar Nodo Complemento

Publicado: Mar Ago 06, 2013 1:07 pm
por M3rino
mauricio escribió:¿No te lo regresa tu PAC ya formadito solo para guardar?... bueno... si este es el caso, entonces si, tienes que agregarselo a tu XML original... lastima...

Saludos
alguna idea de como lo pueda Hacer ..?

Re: Agregar Nodo Complemento

Publicado: Mar Ago 06, 2013 2:55 pm
por mauricio
Con Python es realmente sencillo, ¿que lenguaje estas usando?

Re: Agregar Nodo Complemento

Publicado: Mar Ago 06, 2013 3:14 pm
por M3rino
mauricio escribió:Con Python es realmente sencillo, ¿que lenguaje estas usando?
Vb.NET

Re: Agregar Nodo Complemento

Publicado: Mié Ago 07, 2013 12:38 am
por mauricio
Tu nodo complemento debe de quedar así:

Código: Seleccionar todo

    <cfdi:Complemento>
        <tfd:TimbreFiscalDigital
            xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital"
            version="1.0"
            UUID="E6E0E85E-E2C0-4288-9E4A-D80C7F9B7650"
            FechaTimbrado="2013-08-07T00:43:09"
            selloCFD="h22VcNNiM3J4GBWxljzLHXox5yj6MrzTFHnQgdkIDgcwxAF7YcK6DoiM="
            noCertificadoSAT="20001000000100005761"
            selloSAT="zRcqTNlSuj0DkDkp8860Bytk9k1qHamdOFmR0LxNEtihUWM8K8zBOg8o="
           xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/TimbreFiscalDigital/TimbreFiscalDigital.xsd"/>
    </cfdi:Complemento>
Te muestro como hacerlo con Python, solo tienes que buscar las equivalencias en tu lenguaje:

Código: Seleccionar todo

# -*- coding: utf-8 -*-

from xml.etree import ElementTree as ET
from xml.dom import minidom

ET.register_namespace('cfdi',"http://www.sat.gob.mx/cfd/3") 
        
xml_cfdi = """<?xml version='1.0' encoding='utf-8'?>
<cfdi:Comprobante
    xmlns:cfdi="http://www.sat.gob.mx/cfd/3"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    sello="h26xxD1TPm9sJ93mDyS53J4GBWxljzLHXox5yj6MrzTFHnQgdkIDgcwxAF7YcK6DoiM="
    certificado="MIIEdDCCA1ygAw/sPMzWWGt8S1yjmtPfXgFs1t65AZ2hcTwTAuHrKwDyUVww=="
    fecha="2013-08-07T00:43:09"
    LugarExpedicion="Coyoacan, México, D.F."
    Moneda="peso"
    TipoCambio="1.00"
    folio="1"
    formaDePago="Pago en una sola exhibición"
    metodoDePago="No identificado"
    noCertificado="20001000000100005867"
    serie="F"
    subTotal="10000.00"
    tipoDeComprobante="ingreso"
    total="11600.00"
    version="3.2"
    xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd">
    <cfdi:Emisor
        nombre="ACCEM SERVICIOS EMPRESARIALES SC"
        rfc="AAA010101AAA">
        <cfdi:DomicilioFiscal
            calle="Carlota Armero"
            codigoPostal="04040"
            colonia="Culhuacan"
            estado="México, D.F."
            municipio="Coyoacan"
            noExterior="No 1000"
            pais="México"/>
        <cfdi:RegimenFiscal Regimen="Regimen General de Ley Personas Morales"/>
    </cfdi:Emisor>
    <cfdi:Receptor
        nombre="Mauricio Baeza"
        rfc="BASM740115RR9">
        <cfdi:Domicilio
            calle="Parque"
            codigoPostal="04040"
            colonia="Parque San Andrés"
            estado="México, D.F."
            municipio="Coyoacán"
            noExterior="No 14"
            pais="México"/>
    </cfdi:Receptor>
    <cfdi:Conceptos>
        <cfdi:Concepto
            cantidad="1.00"
            descripcion="Asesoria en desarrollo de sistema"
            importe="10000.00"
            noIdentificacion="1"
            unidad="Servicio"
            valorUnitario="10000.00"/>
    </cfdi:Conceptos>
    <cfdi:Impuestos totalImpuestosTrasladados="1600.00">
        <cfdi:Traslados>
            <cfdi:Traslado importe="1600.00" impuesto="IVA" tasa="16"/>
        </cfdi:Traslados>
    </cfdi:Impuestos>
</cfdi:Comprobante>
"""

xml_complemento = """<?xml version='1.0' encoding='utf-8'?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Body>
            <ns:timbrarResponse xmlns:ns="http://timbrado.ws.cfdi.solucionfactible.com">
                <ns:return xmlns:ax23="http://timbrado.ws.cfdi.solucionfactible.com/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax23:CFDICertificacion">
                    <ax23:status>200</ax23:status>
                    <ax23:mensaje>OK</ax23:mensaje>
                    <ax23:resultados xsi:type="ax23:CFDIResultadoCertificacion">
                        <ax23:cadenaOriginal>||1.0|A5148D79-626F-4213-AC34-263369F9C727|2011-05-16T16:43:04|j+sqQ/Md+hz8YSqLx5XNpRREgpqZjJL9jA/KUSK+LZIo30Ml93A5May6yEQEw6KVz1Z8ap2DYBfZc+oN5lgMoshYQqxtNQUmjSMOuV9AWAksLMjOegDZrMuh7rNo1pdWlymUezOBA2pko19zjE6Vrobdsnn596d8fNwd7geUxxM=|30001000000100000801||</ax23:cadenaOriginal>
                        <ax23:certificadoSAT>30001000000100000801</ax23:certificadoSAT>
                        <ax23:cfdiTimbrado>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0eHhNPSI+PGNm . . . ZGk6RWrdmhtWGpoUD+PC9jZmRpOkNvbXByb2JhbnRlPg0K</ax23:cfdiTimbrado>
                        <ax23:fechaTimbrado>2011-05-16T21:43:04.481Z</ax23:fechaTimbrado>
                        <ax23:mensaje>La operación se completó con éxito</ax23:mensaje>
                        <ax23:qrCode>iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDA//+0BaRJ . . . d94cI+vI/kugA61E/60JiLOEAAAAASUVORK5CYII=</ax23:qrCode>
                        <ax23:selloSAT>IZUrCoMwsKRhy1ah7YVvRJ0K2gd1sh++WN+v . . . hmXjhP7WajMcWRr71yMgdy4LvNfPrk=</ax23:selloSAT>
                        <ax23:status>200</ax23:status>
                        <ax23:uuid>A5148D79-626F-4213-AC34-263369F9C727</ax23:uuid>
                        <ax23:versionTFD>1.0</ax23:versionTFD>
                    </ax23:resultados>
                </ns:return>
            </ns:timbrarResponse>
        </soapenv:Body>
    </soapenv:Envelope>
"""

xml = ET.fromstring(xml_complemento)
r = xml[0][0][0][0]
if r.text == '200':
    r = xml[0][0][0][2]
    data = {}
    for n in r.getchildren():
        key = n.tag.split('}')[1]
        data[key] = n.text
    atributos = {}
    complemento = ET.Element('cfdi:Complemento')
    atributos['xmlns:tfd'] = 'http://www.sat.gob.mx/TimbreFiscalDigital'
    atributos['xsi:schemaLocation'] = 'http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/TimbreFiscalDigital/TimbreFiscalDigital.xsd'
    atributos['version'] = data['versionTFD']
    atributos['UUID'] = data['uuid']
    atributos['FechaTimbrado'] = data['fechaTimbrado']
    atributos['selloCFD'] = data['cfdiTimbrado']
    atributos['noCertificadoSAT'] = data['certificadoSAT']
    atributos['selloSAT'] = data['selloSAT']
    timbre = ET.SubElement(complemento, 'tfd:TimbreFiscalDigital', atributos)

    xml = ET.fromstring(xml_cfdi)
    xml.insert(len(xml.getchildren()), complemento)

    print (minidom.parseString(ET.tostring(xml, 'utf-8')).toprettyxml(encoding='utf8'))
Tal vez puedas usar este código desde VB.Net pero eso te lo confirmo mañana...

Saludos

Re: Agregar Nodo Complemento

Publicado: Mié Ago 07, 2013 5:32 pm
por M3rino
Excelente ! muchas gracias por el aporte @mauricio
ya quedo solucionado

Re: Agregar Nodo Complemento

Publicado: Vie Ago 08, 2014 9:40 am
por Rag-mx
Como lograstes solucionar el problema en vb?