Sistema Contable + Nómina Sistema para cliente
Motor de nómina y contabilidad
El reemplazo propio del ERP Siesa para la fábrica: nómina colombiana, comprobantes contables automáticos, nómina electrónica DIAN y planillas PILA — con snapshots, reversiones y auditoría.
- Hice ingeniería inversa de los documentos de nómina de Siesa y dejé por escrito 22 reglas de negocio y 18 decisiones de arquitectura antes de que existiera el motor.
- Cada liquidación se convierte en comprobantes contables cuadrados, XML UBL para la DIAN firmado con XAdES, planillas PILA y lotes de pago bancario.
- 569 pruebas automatizadas — incluida una prueba golden que reproduce enero de 2026 de punta a punta — detrás de un pipeline de CI de nueve etapas.


El encargo
Bizcopan, una panificadora de Zapatoca (Santander), liquida la nómina y la contabilidad de unas cincuenta personas en Siesa, un ERP comercial. El objetivo: reemplazarlo por un sistema propio, alineado con la ley laboral colombiana y en el que el equipo contable confíe desde el primer día.
La confianza es lo difícil, así que el proyecto empezó sin código: estudio del marco legal, ingeniería inversa de los documentos mensuales de Siesa, un cuestionario con la persona que liquida la nómina y un modelo de datos construido a partir de lo que el sistema anterior realmente produce.
Lo que construí
- Motor de nómina quincenal y mensual, con snapshots mensuales de provisiones y aportes
- Novedades: horas extras y recargos, licencias, incapacidades, vacaciones y cuotas de préstamos
- Comprobantes contables automáticos por cada nómina, con reversión y árbol del PUC
- Nómina electrónica DIAN: XML UBL, firma XAdES y seguimiento de transmisiones
- Planillas PILA con hash de integridad, lotes de pago y archivos planos bancarios
- Consulta de empleado por periodo, saldos iniciales importados desde Excel y cierre mensual
- Una interfaz tipo libro mayor en claro y oscuro: riel de secciones, pestañas, procesos agrupados y buscador «Ir a…» con Ctrl K
Arquitectura
- Empleados y contratossalario · EPS · pensión · ARL
- Novedadeshoras extras · licencias · préstamos
- Parámetros del añoSMMLV · tasas · umbrales
- Comprobantes contablescuadrados · reversibles
- Nómina electrónica DIANXML UBL · firma XAdES
- Planilla PILAarchivo plano · hash · estados
- Lotes de pagoarchivos planos bancarios
Cada cambio pasa por
- 1ruff
- 2mypy --strict
- 3pytest unit
- 4pytest integration
- 5pytest golden
- 6alembic ↑↓
- 7front-end build
- 8docker build
- 9deploy staging
Por dentro
Reglas antes que código
22 reglas de negocio y 18 ADR se escribieron y revisaron antes de la primera migración. El diseño de cada módulo nombra las reglas que implementa, así que una diferencia en un número se vuelve una conversación sobre una regla.
Pruebas que incluyen el mundo real
Pruebas unitarias para los cálculos puros, de integración contra un PostgreSQL real levantado con testcontainers y una prueba golden que reproduce un mes completo de nómina.
El CI como puerta
ruff, mypy --strict, tres suites de pytest, un ciclo de upgrade/downgrade de Alembic, el build del front end y un build de Docker deben pasar antes de desplegar a staging.
Seguro para ensayar
Un modo playground simula la DIAN y los bancos y muestra un aviso en cada pantalla, para que el equipo contable practique sin que nada salga de la empresa.
Asíncrono donde conviene
SQLAlchemy 2 asíncrono sobre FastAPI para la API, Alembic síncrono por decisión, y reintentos y consultas a la DIAN en un worker de arq sobre Redis con backoff.
Galería








Dónde está hoy
Los módulos de nómina, contabilidad y seguridad social están construidos y probados. La marcha en paralelo contra Siesa está planeada para octubre–diciembre de 2026 y la salida a producción para enero de 2027.
El soporte multiempresa está en el diseño desde el inicio: ya hay una segunda empresa en la hoja de ruta.
Las pantallas muestran empleados ficticios creados en el modo playground del sistema. En este sitio no aparece ningún dato real de nómina.