CRM Finance Automation, Cash Register Integration[Launched]

Financial Control Layer para KeepinCRM

Financial Control Layer para KeepinCRM preview

Arquitectura del sistema //

KeepinCRM APIFastAPIPythonSQLiteExcel ExportWindows AgentWinUSB/OLEIKC-E810T

1. Resumen Del Proyecto

El cliente es un negocio comercial y de construcción que gestionaba clientes, operaciones, pagos y ventas diarias en KeepinCRM. La CRM funcionaba como interfaz operativa, pero la lógica financiera vivía alrededor: revisiones manuales, decisiones de managers, caja, deuda, anticipos y aprobaciones de dirección

La CRM no podía asignar automáticamente un pago a las deudas abiertas más antiguas, calcular retrasos, separar clientes sanos de clientes de riesgo, bloquear un paso peligroso hacia despacho o dar a dirección una vista clara de cuentas por cobrar

Mi rol fue construir un financial control layer alrededor de CRM: middleware que lee KeepinCRM por API, aplica reglas de negocio, mantiene su propio audit journal, escribe resultados de vuelta, controla deuda, genera reporting y conecta caja con hardware fiscal físico

No fue “conectar una API”. Fue convertir un proceso vivo de dinero, deuda, caja, managers y decisiones de dirección en un sistema controlado

2. Situación Inicial

•Los pagos no se asignaban automáticamente: el cliente podía pagar a nivel de cuenta, pero el negocio necesitaba cerrar primero las operaciones abiertas más antiguas
•La deuda y el anticipo no eran sistémicos: deuda actual, sobrepago, saldos y días vencidos debían ser visibles en CRM, pero CRM no tenía esa lógica nativa
•El control de crédito era manual: un manager podía seguir moviendo una operación aunque el cliente superara el límite o tuviera deuda vencida
•Dirección necesitaba reporting operativo: saldo inicial, despachos, pagos, deuda final, anticipo, días vencidos y estado
•La caja era física y legacy: el puesto del cajero usaba Windows 7 y el dispositivo fiscal era local
•1C/RDP y la caja tenían que convivir: el agente no podía capturar el dispositivo todo el tiempo, solo durante la impresión
•Los duplicados eran peligrosos: procesar un pago dos veces o imprimir dos recibos podía crear errores financieros reales

3. Alcance

•Diseñar middleware entre KeepinCRM y las reglas financieras del negocio
•Implementar FIFO allocation: las deudas más antiguas se pagan primero
•Manejar pagos parciales, sobrepagos, anticipos y clientes sin operaciones abiertas
•Recalcular deuda, anticipo, retraso, estado del cliente y utilización del límite
•Implementar estados OK / RISK / BLOCK
•Bloquear acciones críticas cuando se exceden límites o vencimientos
•Dar a dirección un manual unblock con audit log
•Construir reporting de cuentas por cobrar con filtros y exportación Excel
•Crear receipt queue y agente local para caja fiscal
•Añadir background radar para pagos nuevos y cambios de operaciones

4. Solución

Financial Middleware Architecture

Operación anonimizada de KeepinCRM con etapas financieras, estado de pago y bloqueo
•KeepinCRM siguió siendo la interfaz del equipo, mientras la lógica financiera se movió a un servicio FastAPI
•El middleware lee datos por API, los mapea a un modelo financiero y escribe resultados controlados de vuelta a CRM
•El servicio se separó en módulos: CRM client, allocation engine, debt calculator, blocker, receivables reporter, receipt queue, local-agent endpoints y SQLite journal
•SQLite funciona como audit journal para allocations, recalculations, block events, receipts, processed payments, agent status y agent logs

FIFO Payment Allocation

•El sistema toma operaciones abiertas del cliente, selecciona las que tienen deuda, las ordena por fecha y cierra primero la deuda más antigua
•Los pagos parciales dejan saldo claro, los sobrepagos se convierten en anticipo y los clientes sin operaciones abiertas no pierden dinero en comentarios
•La misma payment ID no se procesa dos veces gracias a idempotency y allocation journal

Debt Control & Blocking

Ficha anonimizada de cliente KeepinCRM con pago, tareas y actividad automatizada
•El sistema calcula deuda, anticipo, días vencidos, utilization y estado del cliente
•Los estados OK / RISK / BLOCK convierten números en acción operativa
•BLOCK detiene el movimiento riesgoso de la operación
•Dirección puede desbloquear, pero solo con razón y registro en block_log

Reporting & Cash Register

Registro de actividad de KeepinCRM con automatización de recibos y estados fiscales
Recibos físicos de prueba impresos mediante la integración de KeepinCRM con caja
•El reporting calcula opening balance, charges, payments, closing balance, advance, overdue days y debt status
•Excel export da a dirección una herramienta práctica de control
•Receipt queue conecta CRM con la caja física mediante estados pending, completed y failed
•El agente local Windows toma el recibo, imprime en el dispositivo fiscal y devuelve el resultado
•El agente toma el dispositivo solo durante la impresión y lo libera para el software legacy

Radar & Background Processing

•Background radar detecta pagos nuevos y cambios de operaciones
•Un pago nuevo lanza allocation y control de bloqueo
•Un cambio de operación lanza recálculo de riesgo
•Daily recalculation detecta vencimientos incluso sin acción del manager

5. Resultado

•CRM se convirtió en interfaz para un proceso financiero controlado
•Los pagos empezaron a asignarse por una regla FIFO clara
•Deuda, anticipo, retraso y estado del cliente se volvieron calculables
•Los clientes riesgosos recibieron stop-points automáticos
•Dirección obtuvo override con audit log
•Reporting de cuentas por cobrar quedó disponible por API/UI y Excel
•La caja se conectó a CRM mediante cola, estados y agente local
•Windows 7 y hardware fiscal físico fueron integrados sin reemplazar el puesto del cajero

6. Resultado Técnico

El resultado fue un financial control layer para KeepinCRM:

•FastAPI middleware
•KeepinCRM API integration
•FIFO allocation engine
•Debt calculator
•Blocking engine
•Receivables reporter con Excel export
•Receipt queue
•Windows kassa-agent
•Radar background worker
•SQLite audit journal

7. Por Qué Fue Difícil

El proyecto fue difícil porque conectaba CRM, reglas financieras y un dispositivo fiscal físico en una estación Windows antigua

Había que mantener la interfaz CRM, dar control a dirección, evitar pagos y recibos duplicados, mostrar deuda real y no romper el puesto del cajero. No fue una integración genérica, sino una capa operativa de control financiero alrededor de CRM

¿Tienes un problema parecido que ya toca resolver?

Los sistemas fiables no salen de hablar bonito. Veamos cómo la ingeniería quirúrgica puede devolver ritmo a tu producto