Cómo validar cientos de XML CFDI automáticamente en Excel usando el SAT

Imagen
Cómo validar cientos de XML CFDI automáticamente en Excel usando el SAT Si trabajas con facturas electrónicas CFDI en México, probablemente alguna vez has tenido que validar manualmente XML uno por uno en el portal del SAT lo cual requiere mucho tiempo. Ese proceso puede tomar muchísimo tiempo cuando manejas decenas o cientos de facturas. Por eso desarrollé una macro profesional en Excel que permite: Leer cientos de XML automáticamente Consultar el estado CFDI directamente contra el SAT Identificar facturas vigentes o canceladas Procesar carpetas completas Generar resultados masivos en Excel ¿Qué hace esta herramienta? La macro utiliza el servicio oficial del SAT para consultar el estado de los CFDI 4.0 y automatiza completamente el proceso desde Excel. Solo debes: Seleccionar una carpeta con XMLs La macro procesa automáticamente todos los archivos Consulta el SAT en línea Genera una tabla completa con resultados Extra datos de los xml :RFC emisor ,RFC recepto...

Leer UUID de XML en listado de archivos con Python

Hola bienvenidos a un nuevo post, esta semana quiero compartirles un ejemplo de un programa en Python 2.7 que me ayudo a poder leer el nodo UUID de mis recibos de nómina, se preguntaran para que, bueno ya esta próximo el mes de abril que es el mes de declaración anual para personas físicas en México y me gusta ir preparando mi información para cuando llega el momento, bueno entonces busque el listado de los UUID.

Declaracion Anual SAT


La lógica de mi programa es:


  • Primero obtener la ruta de donde voy a buscar los archivos XML (mis recibos) en mi caso puse la ruta, pero también pueden utilizar el comando raw_input. En el programa la línea:       path = 'c:\\Users\\Ana   \\Documents\\2020\\declaracion\\XML_nominas\\' 
  • De esa carpeta solo buscar archivos con extensión XML
    1. Primero para recorrer el directorio con el os.walk que nos regresa 3 lista, primero el directorio, luego los subdirectorios, los archivos, esto en el programa es for r,d,files in os.walk(path):
    2. Después buscar solo los archivos con extensión o terminación .XML en el programa if file.endswith(".xml"):
  • Después buscar en nodo tfd:TimbreFiscalDigital, para ello primero es necesario :
    1. hacer un parse a los datos del archivo : xmL = pulldom.parse(file)
    2. Luego buscar en los nodos del XML  for event, element in xmL:                if event == pulldom.START_ELEMENT and element.tagName == 'tfd:TimbreFiscalDigital' :
  • Luego encontrar la característica UUID , almacenarla en una variable e imprimirla en el programa son las siguientes lineas  UUID = element.getAttribute('UUID')                   print ("UUID",UUID)
  • Utilice la librería os para leer mi path, para el caso de rutas en Windows deben colocar "//" doble diagonal entre cada directorio, si fuera Linux o Unix solo un "\" 
  • Para colocar comentarios en Python utilicen el caracter "#"
  • Para imprimir la información, utilicen print

Para ello el programa es:


import os
from xml.dom import pulldom

path = 'c:\\Users\\Ana\\Documents\\2020\\declaracion\\XML_nominas\\' 
#path = raw_input("Enter the path:")

files = []
for r,d,files in os.walk(path):
    for file in files:
        if file.endswith(".xml"):
            print(file) 
            xmL = pulldom.parse(file)
            for event, element in xmL:
                if event == pulldom.START_ELEMENT and element.tagName == 'tfd:TimbreFiscalDigital' :
                   UUID = element.getAttribute('UUID')
                   print ("UUID",UUID)


Ejecución del programa

Leer XML con Python


No es un software de contabilidad, pero es un ejemplo de como podemos utilizar Python para nuestra declaración anual. 

Ustedes pueden ajustar el programa para que lea otros nodos y que les de más información si la necesitan.  Espero les sea de utilidad y recuerden si son personas físicas y el año pasado tuvieron facturas por gastos médicos (psicólogo, nutriólogo, dentista,lentes), colegiaturas (hasta preparatoria) , transporte de sus hijos, gastos funerarios, donaciones, hipotecarios, que son los que recuerdo pueden presentar su declaración ante el SAT para más información, les comparto la liga del SAT


Espero este programa les sea de utilidad, compartan el post y nos sigan en el #programacionparatodos  y en nuestra página de Facebook

Comentarios

  1. En python 3.9.7 en Linux yo tuve que agregar el path al archivo:
    xmL = pulldom.parse(path+file)

    Fuera de eso funciona bien, Gracias
    Yo lo implemente para el nodo cfdi:Concepto para buscar campos del Diesel y filtrar con pandas
    Atte: C.P. Andrés

    ResponderBorrar
    Respuestas
    1. Hola Andres que bueno que te encontraste como hacerlo funcionar en Linux y nos lo comparte,(CP es de contador público?

      Borrar

Publicar un comentario

Dejanos tus dudas y comentarios

🚀 Mantener este blog funcionando requiere tiempo y café. ¡Puedes contribuir con uno aquí!

Entradas más populares de este blog

Guía Práctica: Ejemplo Completo de ASPX para Desarrolladores Web

👉 Cómo obtener el tipo de cambio en Excel con API de Banxico (paso a paso)

Macro en Word para automatizar documentos: genera diplomas en segundos (con código VBA)