Diego Molinari

← Todos los casos

Carpetas que alguien hacía a mano

El problema

El sistema contable es de terceros y no se toca. Lo que hace es volcar todos los comprobantes que emite —facturas, notas de crédito, notas de débito— como archivos PDF dentro de un solo directorio. Todo junto, sin separar.

Del otro lado, el trabajo real necesita lo contrario: una carpeta por comprobante, con todo lo relacionado a ese comprobante adentro. Así que alguien abría el directorio gigante, buscaba el archivo, creaba la subcarpeta, copiaba el archivo adentro. Y de nuevo. Y de nuevo.

No es que estuviera mal hecho: es que era trabajo humano puesto a hacer algo que una persona no debería estar haciendo, todos los días, mientras el directorio no paraba de crecer.

Lo que hacía una persona

Antes — a mano

Un directorio con todo adentro

  • El sistema contable vuelca cada PDF en la misma carpeta.
  • Alguien busca el archivo, crea la subcarpeta y lo copia.
  • Cuanto más crece el directorio, más tarda cada búsqueda.

Después — automático

Una carpeta por comprobante

  • El servicio consulta qué comprobantes se emitieron.
  • Busca el archivo, arma la carpeta y lo deja adentro.
  • Si un archivo no aparece, lo dice. Antes no lo decía nadie.
El sistema contable sigue haciendo exactamente lo mismo. Lo que cambió es que ordenar lo que vuelca dejó de ser trabajo de una persona.

Qué construí

Un servicio que corre solo: consulta qué comprobantes se emitieron, busca el archivo de cada uno en el directorio de origen, le arma su carpeta y lo copia adentro con el nombre que corresponde. Deja registrado qué pasó en cada ejecución.

Arriba de eso, una aplicación web para ver el estado del servicio, mirar el historial y cambiar la configuración sin bajar nada.

Reemplaza a una versión anterior en VB .NET.

Las decisiones que costaron

Replicar exactamente las carpetas y los nombres de antes. Era la oportunidad de ordenar esa nomenclatura, que no es linda. No la tomé. Del otro lado hay gente que ya sabe dónde buscar y procesos que levantan archivos de esas rutas, y ninguno de los dos avisa si el archivo dejó de aparecer donde lo esperaban: simplemente no lo encuentran. Un nombre feo que funciona vale más que uno prolijo que rompe cosas que no sé que existen.

No repetir la misma alerta. Si se cae el recurso de red, la versión ingenua manda un correo por ciclo. A las tres horas hay decenas de correos iguales, y la persona que los recibe deja de abrirlos — con lo cual la próxima alerta, la que sí importa, tampoco se lee. El servicio detecta que el error es el mismo de antes y se calla.

Reintentar antes de dar por perdido. Un archivo que no está puede ser un archivo que no está, o un recurso de red que tardó. Son cosas distintas y se ven igual. El servicio reintenta y deja registrado cuándo un archivo apareció recién en el segundo intento — porque eso, repetido, ya no es un problema de archivos sino de red.

Configuración que se cambia sin bajar el servicio. La periodicidad, la hora, las rutas y las credenciales viven en la base y se editan desde la web. Las credenciales se guardan cifradas.

Vista ilustrativa · datos de ejemplo

gestor de comprobantes

Control del servicio

En ejecución

  • Últimahoy 14:00
  • Próximahoy 15:00
  • Cada60 minutos

Ejecutar ahora

312carpetas armadas hoy
4recuperados al reintentar
1sin archivo en origen
HoraEventoAviso
14:00Proceso finalizado · 312 comprobantes
14:00Archivo recuperado en el reintento 2
13:00Comprobante sin archivo en el directorio de origenEnviado
12:00Comprobante sin archivo en el directorio de origenOmitido · mismo error
Reconstrucción ilustrativa, no una captura. Los números son inventados. Las dos últimas filas son el punto: el mismo error a las 12 y a las 13, y un solo correo. La segunda vez el sistema lo registra igual, pero no vuelve a escribir.

Resultado

Las carpetas se arman solas, con reintentos, historial y avisos que se mandan una vez por problema. La estructura y los nombres son los mismos de antes, así que nadie tuvo que aprender a buscar en otro lado.