¿100 CFDI en 40 segundos? Valida XML del SAT con Excel

Imagen
🤯 ¿100 CFDI en 40 segundos? Automatiza la validación de XML con Excel ¿Cuánto tiempo dedicas a revisar archivos XML de facturas electrónicas? Si trabajas con contabilidad, cuentas por pagar, cuentas por cobrar o administración, sabes que validar muchos comprobantes fiscales puede convertirse en una tarea repetitiva. 🚀 ¿Y si pudieras procesar 100 archivos XML en aproximadamente 40 segundos? En esta demostración utilizo una macro de Excel diseñada para automatizar la validación masiva de CFDI y consultar su estado ante el Servicio de Administración Tributaria (SAT). 📊 ¿Qué hace esta macro de Excel? La herramienta permite seleccionar una carpeta con archivos XML y procesar múltiples comprobantes sin tener que revisarlos individualmente. Procesa varios archivos XML de CFDI. Extrae información de los comprobantes fiscales. Consulta el estado de los CFDI ante el servicio del SAT....

Definición de Código ASCII en informática

En la programación hay muchos desarrollos que necesitaremos saber que es el código ASCII, porque cuando tenemos que generar ciertos archivos que enviamos de un sistema a otro, o que nos piden en ciertos desarrollos de software debemos cumplir ciertas reglas por ejemplo un layout para alta de usuarios donde debamos ingresar nombres con Ñ, como Ibañez, direcciones donde debamos ingresar Sopeña, España o acentos, no todos los sistemas nos aceptan estos tipos de datos, por lo que necesitamos hacer un proceso de conversión o de eliminación de esos caracteres en nuestra información a enviar.


Para ello hay un estándar que se definió para identificar cada carácter con un número, de manera general eso es el código ASCII.


Ahora de manera oficial que es:


American Standard Code for Information Interchange, Los códigos ASCII representan texto en las computadoras fue hecho por Internet Assigned Numbers Authority . El primer uso comercial del código fué en Telegrafos, La primera definición de este estándar fué en 1963 y la ultima actualización en 1986

Para poder utilizar el código ASCII


Esos símbolos de la tabla ASCII pueden generarlos con su teclado utilizando la tecla ALT + Numero de la tabla por ejemplo:


  • ALT + 64 = @ 
  • ALT + 164 = ñ 
Para mas ejemplo les comparó la siguiente Liga

https://support.office.com/es-es/article/insertar-s%C3%ADmbolos-y-caracteres-ascii-o-unicode-basados-en-el-alfabeto-latino-d13f58d3-7bcb-44a7-a4d5-972ee12e50e0

O también en el mapa de Caracteres de Windows, pueden ver el codigó ASCII


Un ejemplo en un programa Progress 4gl:



lvc-name = REPLACE(lvc-name,CHR(209,SESSION:CPINTERNAL,"ISO8859-1"),"N").
lvc-name = REPLACE(lvc-name,CHR(193,SESSION:CPINTERNAL,"ISO8859-1")
                     ,"A").
lvc-name = REPLACE(lvc-name,CHR(201,SESSION:CPINTERNAL,"ISO8859-1")
                    ,"E").

Aquí tenemos 2 funciones muy importantes

REPLACE: esta instrucción lo que nos permite hacer es cambiar un carácter o grupo de letras por otro(s). Tiene 3 parámetros

  • La variable en donde se va a buscar
  • El campo a buscar
  • El valor por el que va a cambiar


CHR: esta instrucción obtiene el código obtiene el carácter que corresponde a la tabla ASCII, tiene solo un parámetro que es el código correspondiente a la tabla


Como se ve el programa



DEF VAR lvc-name AS CHAR Initial ""   .                                       
DEF VAR lvc-name2 AS CHAR INITIAL "".                                         
lvc-name = "M" + CHR(233) + "xico" .                                         
DISPLAY "Antes" lvc-name FORMAT "X(10)" SKIP.                                 
lvc-name2 =REPLACE(lvc-name,CHR(130),"e").                                   
lvc-name2 = REPLACE(lvc-name,CHR(233,SESSION:CPINTERNAL,"ISO8859-1"),"e").   
lvc-name2 = REPLACE(lvc-name,CHR(201,SESSION:CPINTERNAL,"ISO8859-1"),"e").   
DISPLAY "Desp" lvc-name2   FORMAT "X(30)" SKIP.                               

                                                 

Como se ve la ejecución




Progress 4gl función CHR


Para ver mas detalle de esta función les comparto la liga de la documentación de Progress


Este tipo de instrucciones no solo aplica a Progress, tambíen estan en C#, C++, Python por ejemplo en este ultimo hay librerías que hacen conversión a códigos o a unicode o UTF-8 como por ejemplo BeutifulSoup


Ejemplo en Visual Basic

En Visual Basic, que es el lenguaje de las Macros de Excel, tenemos las instrucciones 
Chr(charcode) 
ChrB(charcode)
ChrW(charcode)


Mgsbox(Chr(65))

Que cumple el mismo objetivo que la función de Progress que es obtener el texto del código ASCII


Ejemplo en C Sharp o C#


string value = "Ñ";

// Convert the string into a byte[].

byte[] asciiBytes = Encoding.ASCII.GetBytes(value);
foreach(byte b in ASCIIValues) {
    Console.WriteLine(b);
}

Espero que este post les haya gustado y sobretodo les sea de utilidad al momento de hacer sus proyectos, principalmente tendrán que utilizarlo para generar layouts que envíen a otros sistemas.

Saludos amigos programadores, dejen sus comentarios o dudas.
No olvide compartirnos y seguirnos en este blog, en Facebook.


Más ejemplos de PHP



Mas ejemplos de Progress


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 crear un Predictor de Partidos de Fútbol con JavaScript y API-Football

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