[pyar] Orientacion para lxml y namespaces

Federico Manuel Echeverri Choux echeverrifm en gmail.com
Mie Mar 5 19:46:40 ART 2014


Hola

Muchisimas Gracias
Lo reviso ya mismo

Saludos

Federico Manuel Echeverri Choux
mobile: (+521) 444-1-400683
Tel: (+52) 444-8185539
skype: echeverrifm
twitter: @echeverrifm


El 5 de marzo de 2014, 16:29, Pablo Gabriel Celayes
<pablocelayes en gmail.com>escribió:

> Casualmente hace un par de semanas me tocó hacer algo parecido como
> challenge en un proceso con una empresa, ahí te va un ejemplo.
>
> https://www.dropbox.com/s/dc35z20ysi9nt2o/translator.py
>
> El código lo que hace es traducir un cierto formato de xml a otro con
> distintos namespaces, pero más que nada la parte que te va a servir es la
> que muestra cómo se le pasa un diccionario con los namespaces al parser.
>
> Hasta donde tengo entendido, la parte que usás de de esos diccionarios son
> las claves, pero el estándar es que cada namespace tenga una url asociada.
>
>
>
>
> 2014-03-05 17:26 GMT-03:00 Federico Manuel Echeverri Choux <
> echeverrifm en gmail.com>:
>
>> 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
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
>
> --
>  *ıl**l**ıl**l**ı* ρąβℓ๏ *ıllı**lı*
> We are the problem. And we should provide the *solution*.
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140305/7e1656af/attachment-0001.html>


More information about the pyar mailing list