Una semana de Excel para facturar la cartera completa
La generación de recibos es el momento donde toda la operación de una distribuidora de gas converge en un documento. Cada mes, los datos de consumo de cada cliente —lecturas de medidor, cálculos de importe, pagos registrados— deben transformarse en un recibo individual, agruparse por condominio para su entrega física, y dejar constancia contable del periodo facturado. Para esta empresa, ese proceso era enteramente manual: el registro de datos en hojas de cálculo y el armado de cada recibo sobre una plantilla de Excel, documento por documento.
El costo del proceso heredado no se medía en horas, sino en días. Generar la totalidad de los recibos de la cartera —más de tres mil clientes distribuidos en decenas de condominios— consumía hasta una semana completa de trabajo en el cierre de cada ciclo de facturación. Una semana en la que un operador transcribía lecturas, aplicaba fórmulas de cálculo de consumo a mano, copiaba resultados a la plantilla de recibo, cruzaba manualmente los pagos recibidos para reflejar el saldo, y repetía el ciclo cliente por cliente. Cualquier error en una fórmula o una transcripción se propagaba silenciosamente al recibo del residente.
El problema se agravaba por la fragmentación de la información. Los datos de consumo vivían en un archivo, los pagos en otro, los registros de clientes en un tercero, y las fotografías de los medidores en carpetas sueltas sin vínculo estructurado con el recibo correspondiente. Consolidar todo eso en un documento coherente para cada cliente era un trabajo de reconciliación manual que dependía por completo de la disciplina y la memoria del operador, sin ningún sistema que garantizara que ningún cliente quedara sin facturar o facturado dos veces.
Cinco módulos que cierran el ciclo de facturación
Hermes se estructura en cinco módulos que cubren el ciclo completo de facturación, desde la entrada de datos crudos hasta la entrega del documento final al cliente. Cada módulo resuelve una etapa específica del proceso y se apoya en los datos producidos por el anterior, pero mantiene una responsabilidad acotada que permite operarlo, auditarlo y evolucionarlo de forma independiente. El sistema no reemplaza el criterio del equipo de facturación; reemplaza el trabajo mecánico que ese criterio antes tenía que ejecutar a mano.
Módulo de carga
El punto de entrada del sistema es la carga general de datos, que admite dos tipos de información. La carga de consumos y lecturas se realiza de forma masiva mediante un archivo ZIP que contiene un Excel con los registros del periodo junto a las fotografías correspondientes de cada medidor, vinculando desde el primer momento cada dato numérico con su evidencia visual. La carga de clientes se realiza mediante archivos Excel para el registro de nuevos clientes en el sistema. Esta separación reconoce que ambos flujos tienen cadencias distintas: los consumos llegan cada ciclo, mientras que el alta de clientes es esporádica.
Módulo de generación de recibos
El módulo central es el que da nombre al propósito del sistema. A partir de los consumos y lecturas cargados, calcula el importe de cada cliente —aplicando las fórmulas de consumo cuando la entrada son lecturas de medidor— y genera los recibos individuales. El cálculo y la generación producen tres artefactos simultáneos: los recibos individuales de cada cliente, las listas de entrega organizadas por condominio para el reparto físico, y un paquete ZIP descargable que agrupa recibos y listas de entrega listos para su distribución. Lo que antes era una semana de armado documento por documento se convierte en una operación de generación por lote a nivel de condominio.
Módulo de estados de cuenta
El tercer módulo produce estados de cuenta individuales por cliente, integrando la información de pagos registrada en el sistema de conciliación. El producto final es un documento PDF que consolida los consumos y pagos de los últimos seis meses, ofreciendo al cliente —y al equipo de atención— una visión histórica de su situación financiera con la distribuidora. Esta integración con el sistema de conciliación es lo que permite que el estado de cuenta refleje no solo lo facturado, sino lo efectivamente pagado, cerrando el círculo entre la generación del recibo y el cobro.
Módulo de datos de tanques y predicción
El cuarto módulo registra información que va más allá del consumo individual: lecturas de tanques y cargas de tanques a nivel de condominio. A partir de estos datos, el sistema genera un reporte de consumo orientado a la planificación logística, con el objetivo de predecir la carga de gas que requerirá cada condominio en el mes próximo. Este módulo transforma el sistema de facturación de una herramienta puramente retrospectiva —qué consumió cada cliente— en una herramienta también prospectiva: cuánto gas habrá que entregar y cuándo, permitiendo a la distribuidora optimizar su logística de reabastecimiento.
Módulo de administración
El quinto módulo gestiona la estructura organizativa del negocio: la información de los condominios, las torres que los componen, y los clientes asociados a cada uno. Permite la visualización de los clientes existentes y la modificación de su información, manteniendo coherente la jerarquía geográfica —condominio, torre, cliente— sobre la que se apoyan todos los demás módulos. Es la capa de datos maestros que garantiza que cuando el módulo de generación agrupa recibos por condominio, o el módulo de tanques predice cargas por inmueble, ambos operan sobre la misma estructura consistente y actualizada.
De una semana a tres días
El indicador principal del proyecto fue el tiempo total del ciclo de facturación: el periodo que transcurre desde que los datos de consumo están disponibles hasta que la totalidad de los recibos de la cartera está generada y lista para entrega. El proceso manual heredado consumía hasta una semana laboral completa. Con Hermes en producción, ese mismo ciclo se cierra en aproximadamente tres días, una reducción cercana al sesenta por ciento que libera al equipo de facturación de la fase más tediosa y propensa a error de su trabajo mensual.
La reducción de tiempo es solo la mitad del beneficio. El impacto menos visible pero igualmente significativo está en la integridad de los datos. En el proceso manual, la consolidación de consumos, pagos y registros de cliente dependía de operaciones de copiado entre archivos donde cada paso introducía la posibilidad de un error. Hermes elimina esa fragmentación: los recibos se generan directamente desde una fuente de datos única y consistente, los pagos se integran automáticamente desde el sistema de conciliación, y el sistema garantiza que cada cliente de cada condominio recibe exactamente un recibo por periodo.
El módulo de predicción de cargas de tanque añadió un valor que el proceso anterior no contemplaba en absoluto. Al convertir los datos históricos de consumo por condominio en una estimación de la carga requerida para el mes siguiente, la distribuidora pasó de reabastecer de forma reactiva —cuando un tanque se acercaba al límite— a una planificación logística informada que reduce tanto los viajes de reabastecimiento innecesarios como el riesgo de desabasto en los inmuebles atendidos.
Cada herramienta donde rinde mejor
La arquitectura de Hermes refleja una decisión pragmática sobre dónde ejecutar cada tipo de trabajo. La generación documental masiva, el procesamiento de archivos y el armado de los recibos involucran tres naturalezas técnicas distintas, y forzar todo en una sola plataforma habría significado renunciar a las fortalezas específicas de cada ecosistema. El sistema distribuye estas responsabilidades entre el backend transaccional, el procesamiento de archivos y la generación de documentos, coordinados bajo un único flujo de trabajo coherente.
El backend en .NET es el orquestador del ciclo de facturación. Gestiona el estado de cada etapa del proceso, persiste los datos de consumos, clientes y la estructura de condominios, y coordina la secuencia de operaciones: carga de información, ejecución del cálculo cuando la entrada son lecturas, integración de los pagos provenientes del sistema de conciliación, generación de recibos agrupados por condominio, y empaquetado final para descarga. Es también el punto de integración con los demás sistemas de la distribuidora, garantizando que los pagos conciliados y las lecturas procesadas fluyan hacia Hermes de forma consistente.
El procesamiento de archivos —la lectura de los Excel de consumos y clientes, la descompresión de los ZIP de carga con sus fotografías, y el empaquetado de los recibos y listas de entrega en el ZIP de descarga— se delega a scripts de Python invocados desde el backend. Esta elección sigue el mismo principio que el resto del ecosistema de la distribuidora: el manejo programático de archivos Excel y la manipulación de archivos comprimidos encuentran en Python las librerías más maduras y el control más fino sobre el formato de salida, especialmente cuando ese formato debe ser consistente con los procesos del departamento contable.
La generación de los recibos en sí se ejecuta mediante scripts de JavaScript especializados en el armado del documento. Esta separación de la generación documental respecto del resto del backend permite iterar sobre el diseño y la estructura del recibo —el artefacto que el cliente final efectivamente ve— sin tocar la lógica de negocio del cálculo ni la orquestación del flujo. El estado de cuenta, por su parte, se produce como documento PDF que consolida la información de consumos y pagos de los últimos seis meses en un formato pensado para la lectura del cliente y del equipo de atención.
El frontend en Vue presenta cada uno de los cinco módulos como un área de trabajo dedicada, con el módulo de generación como centro de la experiencia operativa. El flujo guía al operador a través de la secuencia natural del ciclo —cargar, calcular, conciliar, generar, descargar— manteniendo el estado del proceso en el servidor para que un ciclo de facturación completo pueda pausarse y retomarse sin pérdida de progreso. El módulo de administración expone la estructura de condominios y clientes en vistas editables que mantienen sincronizados los datos maestros sobre los que opera todo el sistema.
Un stack heterogéneo por diseño, no por accidente
Hermes utiliza cuatro tecnologías distintas, y esa heterogeneidad es una decisión de diseño deliberada antes que el resultado de la inercia. El criterio fue asignar a cada lenguaje el dominio donde es demostrablemente superior: .NET para la lógica de negocio transaccional y la integración con la infraestructura interna de la empresa; Python para el procesamiento de archivos Excel y comprimidos; JavaScript para la generación del documento de recibo; y Vue para la capa de interacción con el operador. Cada frontera entre tecnologías corresponde a una frontera real de responsabilidad.
La integración con el sistema de conciliación de pagos fue un requisito arquitectónico central. El estado de cuenta y la correcta representación del saldo en cada recibo dependen de que los pagos efectivamente registrados fluyan hacia Hermes de forma confiable y oportuna. Esta integración convierte a Hermes en parte de un ecosistema mayor de sistemas de la distribuidora, donde la conciliación de pagos, el procesamiento de lecturas de medidor y la generación documental operan de forma coordinada sobre la misma base de clientes.
La generación de documentos en formato consistente fue el reto técnico más exigente del proyecto. El recibo no es solo un contenedor de datos: es un documento con una estructura, un diseño y un formato que el cliente reconoce y que debe mantenerse estable ciclo tras ciclo. Resolver la generación de miles de estos documentos de forma programática, agrupados por condominio y empaquetados para entrega, exigió un control fino sobre el armado del documento que los scripts de JavaScript especializados y la generación de PDF para los estados de cuenta proporcionan.