Relación de facturas automatica: Un Script para Godínes
Como buen godín, cada año me enfrento a la misma rutina: revisar y hacer una relación de todas mis facturas para asegurarme de que todo lo capturado en el SAT coincide con lo que tengo en mis registros. Este proceso puede resultar tedioso, especialmente cuando se trata de un gran volumen de documentos. Para simplificar esta tarea, decidí crear un script en Python que me ayude a generar una relación básica de mis facturas electrónicas. En este artículo, te compartiré el contexto de esta herramienta, cómo funciona y cómo puedes implementarla en tu propio flujo de trabajo.
Contexto
Desde que el SAT actualizó su sistema de facturación, muchos de nosotros hemos tenido que adaptarnos a cambios que, aunque positivos, pueden complicar la gestión de nuestras facturas. Este script está diseñado para procesar las facturas electrónicas en formato XML, extraer información clave y generar un archivo CSV que contenga una relación de estas facturas.
¿Qué hace el script?
El script que he desarrollado tiene como objetivo principal extraer datos relevantes de las facturas en formato XML y organizarlos en un archivo CSV que puede ser abierto por Excel. A través de un análisis de la estructura XML de las facturas, el script identifica y recopila detalles como la fecha de emisión, el RFC del emisor y receptor, los nombres correspondientes y el total de cada factura. Esto permite una revisión más ágil y eficiente de la información.
Limitaciones
Es importante mencionar que este script funciona únicamente con las facturas del año actual y del año anterior, siempre y cuando las empresas hayan actualizado sus formatos de facturación. Esto significa que las facturas de años anteriores que no se hayan actualizado no serán procesadas correctamente.
Instalación de librerías necesarias
Antes de ejecutar el script, asegúrate de tener Python instalado en tu máquina. El script utiliza las bibliotecas estándar de Python, por lo que no necesitas instalar librerías adicionales. Sin embargo, si no tienes Python, puedes descargarlo desde aquí.
Cómo usar el script paso a paso
- Preparar el entorno:
- Crea una carpeta en tu computadora donde colocarás todas tus facturas en formato XML.
- Guardar el script:
- Copia el código proporcionado a continuación en un archivo llamado
procesar_facturas.py
.
import os import xml.etree.ElementTree as ET import csv def extract_data_from_xml(xml_file): tree = ET.parse(xml_file) root = tree.getroot() # Namespace utilizado en las facturas electrónicas ns = {'cfdi': 'http://www.sat.gob.mx/cfd/4'} # Datos básicos de la factura fecha = root.attrib.get('Fecha') total = root.attrib.get('Total') # Intentamos encontrar el elemento Emisor y Receptor emisor = root.find('cfdi:Emisor', ns) receptor = root.find('cfdi:Receptor', ns) # Verificamos que los elementos existan antes de intentar acceder a sus atributos rfc_emisor = emisor.attrib.get('Rfc') if emisor is not None else 'No encontrado' nombre_emisor = emisor.attrib.get('Nombre') if emisor is not None else 'No encontrado' rfc_receptor = receptor.attrib.get('Rfc') if receptor is not None else 'No encontrado' nombre_receptor = receptor.attrib.get('Nombre') if receptor is not None else 'No encontrado' return [fecha, rfc_emisor, nombre_emisor, rfc_receptor, nombre_receptor, total] def process_xml_folder(): folder_path = os.path.dirname(os.path.abspath(__file__)) data = [] for file_name in os.listdir(folder_path): if file_name.endswith('.xml'): xml_path = os.path.join(folder_path, file_name) try: data.append(extract_data_from_xml(xml_path)) except ET.ParseError as e: print(f"Error al parsear {file_name}: {e}") except Exception as e: print(f"Error procesando {file_name}: {e}") return data def save_to_csv(data, output_file): header = ['Fecha', 'RFC Emisor', 'Nombre Emisor', 'RFC Receptor', 'Nombre Receptor', 'Total'] with open(output_file, 'w', newline='', encoding='utf-8') as csv_file: writer = csv.writer(csv_file) writer.writerow(header) writer.writerows(data) # El script toma automáticamente la ruta del directorio donde está guardado output_file = 'relacion_gastos.csv' data = process_xml_folder() save_to_csv(data, output_file) print(f"Datos guardados en {output_file}")
- Copia el código proporcionado a continuación en un archivo llamado
- Colocar las facturas:
- Mueve todas tus facturas XML a la misma carpeta donde guardaste el script.
- Ejecutar el script:
- Abre una terminal o símbolo del sistema.
-
Navega a la carpeta donde está el script y ejecuta el siguiente comando:
python procesar_facturas.py
- Revisar el archivo CSV:
- Una vez que el script termine de ejecutarse, encontrarás un archivo llamado
relacion_gastos.csv
en la misma carpeta. Este archivo contendrá la relación de tus facturas con la información extraída.
- Una vez que el script termine de ejecutarse, encontrarás un archivo llamado
Este script es una herramienta sencilla pero efectiva para ayudar a los godínes a mantener un control más organizado de sus facturas. Puedes ahorrar tiempo y reducir la posibilidad de errores en la revisión de tus documentos fiscales.