ROBOT PARA DECLARACIÓN EN LA SAT
Tags: automation, wysiwyg, python, guatemala
Published: 2023-10-14 12:59:10

Cuando estamos inscritos como pequeños contribuyentes electrónicos ante la [Superintendencia de Administración Tributaria (SAT)](https://portal.sat.gob.gt/portal/) debemos hacer la declaración a Q 0 todos los meses para no caer en omisos y pagar una multa inicial como de Q 150. Esto lo tuve que aprender a las malas 😂 ya que por casi 6 meses no hice la declaración a Q 0, obviamente tuve que pagar casi Q 1 000 en multas más intereses. 😭😭

Por lo que decidí crear un recordatorio en mi calendario digital para que no se me olvidara (por increíble que parezca en febrero de este año solo ignore el recordatorio y también se me paso la fecha límite para hacerlo 😂🤡). Pero los que también hacen este tipo de declaraciones saben lo repetitivo que puede ser. Sin embargo, este proceso a veces no lleva más de 5 minutos. 

Desde hace tiempo he desarrollado pruebas de integración que aprendí a hacerlas con #Javascript específicamente con [Puppeteer](https://pptr.dev/), pero de igual forma tenía que ejecutar los procesos y volvía a la misma situación del recordatorio.

A raíz de esta situación aprendí a hacer "robots" y a programarlos con una tarea programada en Windows y desde entonces ya no hay meses en los que olvidé hacer las declaraciones 😍.

## ¿Como lo hice?

[SikuliX](http://sikulix.com/) automatiza todo lo que ves en la pantalla de tu computadora de escritorio con Windows, Mac o algo de Linux/Unix. Utiliza reconocimiento de imágenes impulsado por OpenCV para identificar componentes de GUI. Esto es útil en los casos en los que no hay un acceso fácil a las partes internas de una GUI o al código fuente de la aplicación o página web en la que deseas actuar.

![SikuliX](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zsc0c0v1xs87y8j6pgvx.png)

SikuliX soporta lenguajes como:

1. Python
2. Ruby
3. JavaScript

Decidí crear este robot con Python, para aprender más del lenguaje y debido a que los astros se alinearon el día que lo hice **¡FUNCIONÓ! ❤️**

Lo interesante de SikuliX es que mediante capturas de pantalla, la automatización sabrá donde dar click, donde debe ingresar texto y así con todas las instrucciones que le ingresemos. También tiene opciones para crear ventanas emergentes y poder informar al usuario sobre procesos o podemos pedirle información al usuario desde las mismas.

![Iniciar el proceso de la declaración](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oakdl1zvqk97m332r3o4.png)


![Proceso Cancelado](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nwsvlznabaa43517xy5v.png)

Estas ventanas emergentes me fueron de gran utilidad debido a que en el portal de [Declaraguate](https://declaraguate.sat.gob.gt/declaraguate-web/) tienen una pequeña validación de captcha 😅. Por lo que cuando llega esa parte de la automatización solo pido que se ingrese el captcha que aparece en la imagen y luego este sigue el proceso para hacer la declaración.


![Validación Captcha](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5na0oqt3p369qyjjqfrw.png)

La tarea programada se ejecuta cada 27 de cada mes y para ejecutarlo cree un archivo .bat para ejecutar el siguiente comando de Java: 

`java -jar C:\Sikulix\sikulixidewin-2.0.6-20230417.153928-17.jar -r "C:\Users\UsuarioWindows\declaracion_sat.sikuli"`

Les comparto una pequeña demostración de la automatización 😍:

![Demostracion](https://i.giphy.com/media/F4fDTrAlUw1ydyuCZY/giphy.webp)

## ¿Como implementarlo?

Requisitos:

1. Windows 11
2. [SikuliX](http://sikulix.com/)
3. [Java 11](https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html)
4. Git

> Si no tienes Windows 11 puedes hacer las modificaciones en las capturas en Sikulix para que se adapte a tu sistema operativo.

Paso 1:
Clonamos el repositorio en [github](https://github.com/garcodas/Declaracion-SAT---Sikulix)

Paso 2:

Ejecutamos el comando:
`java -jar C:\Sikulix\sikulixidewin-2.0.6-20230417.153928-17.jar -r "C:\Users\UsuarioWindows\declaracion_sat.sikuli"`

> Debes reemplazar la ruta de tu SikuliX y reemplazar la ruta donde clonaste el repositorio por la ruta de ejemplo que está dentro de las comillas.

Si quieres que también se ejecute en una tarea programada te dejo el link de la documentación de [Microsoft](https://learn.microsoft.com/es-es/troubleshoot/windows-server/system-management-components/schedule-server-process)