¿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....

Como Programar en Pascal y Delphi, ejemplo calculadora en Delphi

Que tal amigos, bienvenidos a otra semana de nuestro blog, les quiero platicar acerca de un lenguaje de programación que se llama Pascal, fue creado por Niklaus Wirth entre 1968 y 1970, es un lenguaje enfocado a la programación estructurada, esto se refiere a que se crean funciones o subrutinas y utilizar criterios de selección con if y switch e iteraciones o ciclos con las sentencias for o while.

Pascal a mi parecer es muy sencillo de aprender yo lo aprendí cuando estaba en la Secundaria y me parece muy bueno, después en la Universidad en la materia de graficación el Académico que me dio clases que es un gran profesor y científico Manuel Martin Ortiz los ejercicios de la materia los realizábamos en Borland Delphi (versión Windows) que es ni mas ni menos que un entorno de desarrollo (programa para escribir programas) para Object Pascal o IDE , que es  entorno de desarrollo para la versión orientada a Objetos de Pascal y que permite generar software con ventanas o pantallas es decir lo hace más gráfico o visual (la explicación de la programación orientada a objetos la pueden ver en la siguiente liga Javascript)

Para este ejemplo vamos hacer una calculadora pero con una pantalla más amigable que el otro ejemplo que vimos con Progress.

Comencemos con el código 


unit Unit1;

interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdNetworkCalculator;

type

  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Label2: TLabel;
    Label3: TLabel;
    Campo2: TEdit;
    Campo1: TEdit;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var

  Form1: TForm1;
  resultado: Double;
implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);

var
  A : Extended;
  B  : Extended;
begin
       try
           A :=   strtofloat(Campo1.Text)   ;
           B :=   strtofloat(Campo2.Text)   ;
           Edit1.Text := floattostr(A + B) ;
       Except
           on Exception : EConvertError do
           ShowMessage(Exception.Message);
       end;
end;

procedure TForm1.Button2Click(Sender: TObject);

var
  A : Extended;
  B  : Extended;
begin
       try
           A :=   strtofloat(Campo1.Text)   ;
           B :=   strtofloat(Campo2.Text)   ;
           Edit1.Text := floattostr(A - B) ;
       Except
           on Exception : EConvertError do
           ShowMessage(Exception.Message);
       end;

end;


procedure TForm1.Button4Click(Sender: TObject);

var
  A : Extended;
  B  : Extended;
begin
       try
           A :=   strtofloat(Campo1.Text)   ;
           B :=   strtofloat(Campo2.Text)   ;
           Edit1.Text := floattostr(A / B) ;
       Except
           on Exception : EConvertError do
           ShowMessage(Exception.Message);
       end;

end;


procedure TForm1.Button3Click(Sender: TObject);

var
  A : Extended;
  B  : Extended;
begin
       try
           A :=   strtofloat(Campo1.Text)   ;
           B :=   strtofloat(Campo2.Text)   ;
           Edit1.Text := floattostr(A * B) ;
       Except
           on Exception : EConvertError do
           ShowMessage(Exception.Message);
       end;

end;



end.

Explicación del código



Para programar en Pascal debemos seguir algunas normas, cada que terminemos una instrucción debemos colocar el signo de punto y coma (;) 
  • Los tipos de variables que podemos utilizar son:

Nombre Rango Bytes Tipo
char 8
ShortString
AnsiStrings
Widestrings
Byte 0 .. 255 1 Enteros
Shortint -128 .. 127 1 Enteros
Smallint -32768 .. 32767 2 Enteros
Word 0 .. 65535 2 Enteros
Integer smallint o longint 2 o 4 Enteros
Cardinal longword 4 Enteros
Longint -2147483648 .. 2147483647 4 Enteros
Longword 0..4294967295 4 Enteros
Int64 -9223372036854775808 .. 9223372036854775807 8 Enteros
QWord 0 .. 18446744073709551615 8 Enteros
Single 1.5E-45 .. 3.4E38 4 Decimales
Double 5.0E-324 .. 1.7E308 8 Decimales
Extended 1.9E-4932 .. 1.1E4932 10 Decimales
Comp -2E64+1 .. 2E63-1 8 Decimales
Currency -9.22337E+14 8 Decimales
Boolean 1 Lógicos
ByteBool 1 Lógicos
WordBool 2 Lógicos
LongBool 4 Lógicos

  • Cada objeto dentro de la pantalla tiene sus propias características por ejemplo un botón le puedes configurar el tamaño, la letra, el fondo y 




  • Cada que terminemos un segmento de programa debemos colocar end; y cuando es fin de un procedimiento o de todo el programa end.

procedure TForm1.Button3Click(Sender: TObject);
var
  A : Extended;
  B  : Extended;
begin
       try
           A :=   strtofloat(Campo1.Text)   ;
           B :=   strtofloat(Campo2.Text)   ;
           Edit1.Text := floattostr(A * B) ;
       Except
           on Exception : EConvertError do
           ShowMessage(Exception.Message);
       end;

end;


end.

Ejecución del Programa





Les dejó la liga para descargarlo


En lo personal creo que es muy buena opción para desarrollo de aplicaciones, porque una vez que terminas tu desarrollo, generas tu programa ejecutable y lo puedes distribuir sin tener que instalar nada más a menos que tu aplicación lo requiera y no entregas tus programas fuentes o códigos, si no solo el sistema. Tiene varias librerías para poder realizar conexiones con otros sistemas o hacer cosas muy complejas, tiene conectores para conexión de bases de datos, para crear WebService, toda la barra superior son las librerías que tiene




No se si sea un lenguaje muy popular, pero se que si hay empresas que lo utiliza, incluso si filtran en OCC también hay trabajos que requieren este software https://www.occ.com.mx/empleos/de-desarrollador-delphi/

Otro ejemplo de programación de Delphi en este blog 
https://www.programacionparatodos.com/2020/01/catalogos-cascada-en-delphi.html

Saludos, espero les haya parecido interesante este post y nos compartan. Hasta el próximo post.

No olvide compartirnos y seguirnos en este blog o en Facebook.

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)

Cómo crear un Predictor de Partidos de Fútbol con JavaScript y API-Football