[pyar] Orientacion para lxml y namespaces

Federico Manuel Echeverri Choux echeverrifm en gmail.com
Mie Mar 5 17:26:26 ART 2014


Hola Gente, Buenas tardes

Tengo un problema con los namespaces que uso en la facturacion electronica
y el agregado de una Addenda
En este caso tengo un XML de una Factura que trae su Namespace y otro XML
que genero para las especificaciones de la addenda del cliente facturado.

Ejemplo:

<?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"
    xsi:schemaLocation = "http://www.sat.gob.mx/cfd/3
http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd"
    version = "3.2"
    folio = "198"
    fecha = "2012-06-20T12:29:08"
    sello =
"QrTzf32tfF2nbkwpTE7ikks9CzmmJdijrqYPZvUagviLdY54woI4vVRMEwYqBj35fwZveZsGarpis8bBM611mWLUeBJ2StEdVA6cUtkLQxrZq2hZAWecRRPM+KauIZNlMOms326NfSEjUtrhblaBeBDrwuSzVnp6bFX5v0/4pxs="
    formaDePago = "PAGO EN UNA SOLA EXHIBICION"
    noCertificado = "00001000000104421443"
    certificado =
"MIIESzCCAzOgAwIBAgIUMDAwMDEwMDAwMDAxMDQ0MjE0NDMwDQYJKoZIhvcNAQEFBQAwggE2MTgwNgYDVQQDDC9BLkMuIGRlbCBTZXJ2aWNpbyBkZSBBZG1pbmlzdHJhY2nDs24gVHJpYnV0YXJpYTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExHzAdBgkqhkiG9w0BCQEWEGFjb2RzQHNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEzARBgNVBAcMCkN1YXVodGVtb2MxMzAxBgkqhkiG9w0BCQIMJFJlc3BvbnNhYmxlOiBGZXJuYW5kbyBNYXJ0w61uZXogQ29zczAeFw0xMTA5MjcxMzQ0MjlaFw0xMzA5MjYxMzQ0MjlaMIHrMS8wLQYDVQQDEyZQUk9WRUVET1JBIERFIENBSkFTIE5JTE8gUyBERSBSTCBERSBDVjEvMC0GA1UEKRMmUFJPVkVFRE9SQSBERSBDQUpBUyBOSUxPIFMgREUgUkwgREUgQ1YxLzAtBgNVBAoTJlBST1ZFRURPUkEgREUgQ0FKQVMgTklMTyBTIERFIFJMIERFIENWMSUwIwYDVQQtExxQQ04wOTA2MTZKUjMgLyBHQVJHNTYwMjExVjMwMR4wHAYDVQQFExUgLyBHQVJHNTYwMjExSENIVkJTMDIxDzANBgNVBAsTBlVOSURBRDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAr6MQny1hr2OTzP2KxbCk7FCxMztly4tQhy7pFxex/PpxgJhA5/HI86R17FFkvzQ51TDWVXIjuEAY04vXPHH4Xhe2lCjjwASsRMPj6D24CrOxn8NAIIf9zTFGNfKG7hQ2rnbvaSeaGrMuMEJm2Bf/Bbvv/Bqg80fnK+QD1VadKCMCAwEAAaMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAwDQYJKoZIhvcNAQEFBQADggEBAKbJxBkrE9Ul/schqdEEibF/Nupe39ARywAcWf9S+bM7FVQCkKUHLf8+AEdKCkttl1b8iN2tRvq6IBovfsr6CcN2dAAxKP9ka/raRW3FgpFDv3c/eBsEapaMvGUw3kZmatYHcvGy/0I1v+A3Vg8aK8ivK30kezMvVWCzHk5M7PZh8TCIRneFqFtFO0oZFH1jBLThUNBjT47wOEVZZ+S+C2C4BQ3Jhyz3WEq899F0UKca8fDNBkS346UCKEuIBmsdqgCFQIRVjI97lxIQ060s3ColdZMhTFrAXdTzd1C73h6M4nKPIG/W2VPOX9cqHh345hDF3p0SzE0RqpUzOfEI+fg="
    condicionesDePago = "CREDITO"
    subTotal = "6430.00"
    TipoCambio = "1.00"
    Moneda = "Peso Mexicano"
    total = "7458.80"
    tipoDeComprobante = "ingreso"
    metodoDePago = "DEPOSITO EN CUENTA"
    LugarExpedicion = "PORFIRIO DIAZ 777 , CENTRO, 78430, SOLEDAD DE
GRACIANO SANCHEZ, SOLEDAD DE GRACIANO SANCHEZ, SAN LUIS POTOSI, MEXICO">
    <cfdi:Emisor rfc = "PCN090616JR3" nombre = "PROVEEDORA DE CAJAS NILO, S
DE R.L DE C.V.">
        <cfdi:DomicilioFiscal
            calle = "PORFIRIO DIAZ"
            noExterior = "777"
            colonia = "CENTRO"
            localidad = "SAN LUIS POTOSI"
            municipio = "SOLEDAD DE GRACIANO SANCHEZ"
            estado = "SAN LUIS POTOSI"
            pais = "MEXICO"
            codigoPostal = "78430"/>
        <cfdi:ExpedidoEn
            calle = "PORFIRIO DIAZ"
            noExterior = "777"
            colonia = "CENTRO"
            localidad = "SOLEDAD DE GRACIANO SANCHEZ"
            municipio = "SOLEDAD DE GRACIANO SANCHEZ"
            estado = "SAN LUIS POTOSI"
            pais = "MEXICO"
            codigoPostal = "78430"/>
        <cfdi:RegimenFiscal Regimen = "PERSONA MORAL REGIMEN GENERAL"/>
    </cfdi:Emisor>
    <cfdi:Receptor rfc = "APL1202014C3" nombre = "ALUPRINT PLEGADIZOS S. DE
R.L. DE C.V.">
        <cfdi:Domicilio
            calle = "EJE 120"
            noExterior = "320"
            colonia = "MANZANA 35, ZONA INDUSTRIAL"
            localidad = "SAN LUIS POTOSI"
            municipio = "SAN LUIS POTOSI"
            estado = "SAN LUIS POTOSI"
            pais = "MEXICO"
            codigoPostal = "78395"/>
    </cfdi:Receptor>
    <cfdi:Conceptos>
        <cfdi:Concepto
            cantidad = "1000.00"
            unidad = "Pieza"
            descripcion = "CAJA REGULAR 50X31.5X17.5 14KG CS"
            valorUnitario = "6.43"
            importe = "6430.00"/>
    </cfdi:Conceptos>
    <cfdi:Impuestos totalImpuestosTrasladados = "1028.80">
        <cfdi:Traslados>
            <cfdi:Traslado
                impuesto = "IVA"
                tasa = "16.00"
                importe = "1028.80"/>
        </cfdi:Traslados>
    </cfdi:Impuestos>
    <cfdi:Complemento>
        <tfd:TimbreFiscalDigital
            xmlns:tfd = "http://www.sat.gob.mx/TimbreFiscalDigital"
            xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation = "http://www.sat.gob.mx/TimbreFiscalDigital
http://www.sat.gob.mx/TimbreFiscalDigital/TimbreFiscalDigital.xsd"
            selloCFD =
"QrTzf32tfF2nbkwpTE7ikks9CzmmJdijrqYPZvUagviLdY54woI4vVRMEwYqBj35fwZveZsGarpis8bBM611mWLUeBJ2StEdVA6cUtkLQxrZq2hZAWecRRPM+KauIZNlMOms326NfSEjUtrhblaBeBDrwuSzVnp6bFX5v0/4pxs="
            FechaTimbrado = "2012-06-20T12:29:09"
            UUID = "7742A047-33EA-4C12-AA19-E92656B698D5"
            noCertificadoSAT = "00001000000102695128"
            version = "1.0"
            selloSAT =
"ioAudem/Zn2ZhjfxO0Xkslg5X6nr2pjWSWlFp/XGWoEdq6CPY+boybiDqIVOuB7R2oxijP0JH98g1JmDojqxFB3xFfXdieWTu+MXMocdPFlYJhoGq08va6Zx7qTbg6DQsFBjKLZ2WZbAFcthD9YoHAsnwTY+X6OD5CcLFWBmgBY="/>
    </cfdi:Complemento>
</cfdi:Comprobante>

Este es el XML generado por el sistema de facturacion, y esta es la Addenda
creada por mi sistema

<Addenda>
<modelo:AddendaModelo>
 <modelo:requestForPayment type="SimpleInvoiceType"
documentStructureVersion="AMC7.1" documentStatus="ORIGINAL"
DeliveryDate="[FECHADOCTO(yyyy-mm-dd)]" contentVersion="1.3.1">
<modelo:requestForPaymentIdentification>
<modelo:entityType>FA</modelo:entityType>
<modelo:uniqueCreatorIdentification>[FOLIO]</modelo:uniqueCreatorIdentification>
</modelo:requestForPaymentIdentification>
<modelo:specialInstruction code="AAB">
<modelo:text>[CONDICION]</modelo:text>
</modelo:specialInstruction>
<modelo:orderIdentification>
<modelo:referenceIdentification
type="ON">[SUPEDIDO]</modelo:referenceIdentification>
</modelo:orderIdentification>
<modelo:AdditionalInformation>
<modelo:referenceIdentification
type="IV">[FOLIO]</modelo:referenceIdentification>
</modelo:AdditionalInformation>
<modelo:buyer>
<modelo:gln>[CAMPOLIBRE2CLIE]</modelo:gln>
<modelo:contactInformation>
<modelo:personOrDepartmentName>
<modelo:text>Escribir_Contacto_Compras</modelo:text>
</modelo:personOrDepartmentName>
</modelo:contactInformation>
</modelo:buyer>
<modelo:seller>
<modelo:gln>Escribir_GLN_Proveedor</modelo:gln>
<modelo:alternatePartyIdentification
type="SELLER_ASSIGNED_IDENTIFIER_FOR_A_PARTY">Escribir_Numero_Proveedor</modelo:alternatePartyIdentification>
</modelo:seller>
<modelo:shipTo>
<modelo:gln>[CAMPOLIBRE2CONSIG]</modelo:gln>
<modelo:nameAndAddress>
<modelo:name>[CONSIGNARNOMBRE]</modelo:name>
<modelo:streetAddressOne>[CONSIGNARCALLE] [CONSIGNARNUMINT]
[CONSIGNARNUMEXT] [CONSIGNARCOLONIA]</modelo:streetAddressOne>
<modelo:city>[CONSIGNARPOBLA]</modelo:city>
<modelo:postalCode>[CONSIGNARCODIGO]</modelo:postalCode>
</modelo:nameAndAddress>
</modelo:shipTo>
<modelo:InvoiceCreator>
<modelo:gln>Escribir_GLN_Proveedor</modelo:gln>
<modelo:alternatePartyIdentification
type="VA">[EMISORRFC]</modelo:alternatePartyIdentification>
<modelo:nameAndAddress>
<modelo:name>[EMISORNOMBRE]</modelo:name>
<modelo:streetAddressOne>[EMISORCALLE] [EMISORNUMEXT] [EMISORNUMINT]
[EMISORCOL]</modelo:streetAddressOne>
<modelo:city>[EMISORMUNICIPIO]</modelo:city>
<modelo:postalCode>[EMISORCP]</modelo:postalCode>
</modelo:nameAndAddress>
</modelo:InvoiceCreator>
<modelo:currency currencyISOCode="MXN">
<modelo:currencyFunction>BILLING_CURRENCY</modelo:currencyFunction>
<modelo:rateOfChange>[TIPOCAMBIO]</modelo:rateOfChange>
</modelo:currency>
<INILISTAPROD>
<modelo:lineItem type="SimpleInvoiceLineItemType"
orderLineNumber="[NUMPARTIDA]">
<modelo:tradeItemIdentification>
<modelo:gtin>[PRODALTERNA]</modelo:gtin>
</modelo:tradeItemIdentification>
<modelo:tradeItemDescriptionInformation language="ES">
<modelo:longText>[PRODDESCRIP]</modelo:longText>
</modelo:tradeItemDescriptionInformation>
<modelo:invoicedQuantity
unitOfMeasure="[PRODLIBRE1]">[CANTIDAD]</modelo:invoicedQuantity>
<modelo:grossPrice>
<modelo:Amount>[PRODPRECIO(#0.00)]</modelo:Amount>
</modelo:grossPrice>
<modelo:netPrice>
<modelo:Amount>[PRODIMPORTE(#0.00)]</modelo:Amount>
</modelo:netPrice>
<modelo:AdditionalInformation>
<modelo:referenceIdentification type="DQ">[Campo libre
1]</modelo:referenceIdentification>
</modelo:AdditionalInformation>
<modelo:tradeItemTaxInformation>
<modelo:taxTypeDescription>VAT</modelo:taxTypeDescription>
<modelo:tradeItemTaxAmount>
<modelo:taxPercentage>[PRODPORCENIMP4(#0.00)]</modelo:taxPercentage>
<modelo:taxAmount>[PRODMONTOIMP4(#0.00)]</modelo:taxAmount>
</modelo:tradeItemTaxAmount>
<modelo:taxCategory>TRANSFERIDO</modelo:taxCategory>
</modelo:tradeItemTaxInformation>
<modelo:totalLineAmount>
<modelo:grossAmount>
<modelo:Amount>[PRODSUBTOTAL(#0.00)]</modelo:Amount>
</modelo:grossAmount>
<modelo:netAmount>
<modelo:Amount>[PRODIMPORTE(#0.00)]</modelo:Amount>
</modelo:netAmount>
</modelo:totalLineAmount>
</modelo:lineItem>
</INILISTAPROD>
<modelo:totalAmount>
<modelo:Amount>[SUBTOTAL(#0.00)]</modelo:Amount>
</modelo:totalAmount>
<modelo:baseAmount>
<modelo:Amount>[IMPORTEANTESIMPUESTOS(#0.00)]</modelo:Amount>
</modelo:baseAmount>
<modelo:tax type="VAT">
<modelo:taxPercentage>[PORCENIMPUESTO4(#0.00)]</modelo:taxPercentage>
<modelo:taxAmount>[MONTOIMPUESTO4(#0.00)]</modelo:taxAmount>
<modelo:taxCategory>TRANSFERIDO</modelo:taxCategory>
</modelo:tax>
<modelo:payableAmount>
<modelo:Amount>[IMPORTE(#0.00)]</modelo:Amount>
</modelo:payableAmount>
</modelo:requestForPayment>
</modelo:AddendaModelo>
</Addenda>

el problema es que cuando intento meter este ultimo XML al otro

lo cual lo hago de esta manera

obj_xml = etree.fromstring(invoice_xml.encode('utf-8'))
add_ = lxml.etree.XML(addenda_xml)

y cuando lo ejecuto me dice:

lxml.etree.XMLSyntaxError: Namespace prefix modelo on AddendaModelo is not
defined, line 2, column 22

ya busque mucho pero no encuentro muchos casos practicos, como para llegar
a una solucion, alguien hizo algo similar como para solucionarlo?

Desde ya muchas gracias y Saludos.


Federico Manuel Echeverri Choux
mobile: (+521) 444-1-400683
Tel: (+52) 444-8185539
skype: echeverrifm
twitter: @echeverrifm
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140305/df94b120/attachment-0001.html>


More information about the pyar mailing list