Leer datos XML directo desde MySQL (ejemplo factura electrónica CFDi 3.3)

consultaXMLdb

Tenemos una tabla con los registros (cfd) y una con el xml como un blob o text, la estructura que yo uso es así:

estructuraXMLDB

y luego para hacer una consulta básica sería algo como esto:

SELECT F.id,F.fechadoc, extractValue(R.dataxml,'//cfdi:Complemento/tfd:TimbreFiscalDigital/@UUID') , extractValue(R.dataxml,'//cfdi:Comprobante/cfdi:Emisor/@Rfc') as "RFC Emisor", extractValue(R.dataxml,'//cfdi:Comprobante/cfdi:Emisor/@Nombre') as "Emisor", extractValue(dataxml,'//cfdi:Conceptos/cfdi:Concepto/@Importe') as Monto, extractValue(dataxml,'//cfdi:Conceptos/cfdi:Concepto/@Descripcion') as Concepto FROM cfd F, cfdRaw R WHERE F.id = R.id AND F.id=127

Es todo, algo como lo anterior me regresa la consulta de la imagen. Así, directamente podemos interactuar con la estructura de las facturas CFDi 3.3 que se emiten y valida el SAT. Lo bueno: evitar crear campos para cada cosa cuando se manejan facturas XML, lo malo es que MySQL en versiones menores a 5.7 tratan las consultas como un texto normal, me parece que en la 5.7 ya se pueden crear índices sobre datos específicos del XML.

Estoy trabajando en un proyecto para llevar tus facturas personales de forma fácil y que puedas invitar a tu contador luego a que las revise, descargue, consulte, busque, etcétera, todo en un mismo lugar, evitando pérdida de documentos o andar intercambiando correos interminables. El proyecto está muy verde aún - CONTA es posible entrar con tu cuenta de Facebook.

Aquí puedes ver las fotos del post

Almacenado en Base de Datos, MySQL, Facturación Electrónica

por Jorge Martínez Mauricio :)



¿Algo que comentar?


Suscríbete por correo electrónico, recibirás los nuevos escritos antes que nadie y es gratis 😊

¿Ya conoces los foros de tar?

Relacionadas

    tar.mx es un blog sobre tecnología y otras chunches