Sistema de Cartera Empresarial
DPJD / Mensulí S.A.S.
Único desarrollador full stack — diseño, backend, frontend y despliegue
Producto: Plataforma de cuentas por cobrar y cobranza para dos empresas del grupo, usada por analistas en 5 agencias.
Sistema multiempresa de cuentas por cobrar y cobranza construido desde cero: SAP Business One como fuente de lectura, MySQL operativo, Vue 3 en el cliente y Laravel en producción.
Problema
Operar cobranza en 5 agencias con 5 analistas, dos empresas (PASTOR / MENSULI) y datos vivos de SAP, sin mezclar facturas ni detener la operación durante la migración de arquitectura.
Enfoque
Arquitectura multi-compañía con guards de pago cruzados, asignación ponderada WRR, OCR de comprobantes, pasarela Wompi/PSE y autenticación con roles. Migración Node.js/Express → Laravel en producción sin frenar el desarrollo.
Por qué es difícil
SAP solo lectura, aislamiento multiempresa, pagos concurrentes, OCR de comprobantes y migración Node → Laravel sin ventana de parada.
Resultado
- Multiempresa PASTOR / MENSULI con aislamiento de pagos
- Asignación WRR para 5 analistas en 5 agencias
- Dashboards estabilizados sobre +19.000 registros
- Remediación de vulnerabilidades reales en producción
- Migración Node.js/Express → Laravel 11 sin detener la operación
Capacidades
- Migración Node.js/Express → Laravel 11 en producción
- Integración SAP Business One (SQL Server, solo lectura) + MySQL operativo
- OCR de comprobantes bancarios (Tesseract, español)
- Weighted Round-Robin con capacidad reducida a fin de mes — ROW_NUMBER() OVER()
- Arqueo de caja y descuento por pronto pago (sync pesos/%)
- Wompi/PSE: firma, webhooks e idempotencia
- RBAC con Spatie Permissions + Laravel Sanctum
- Roles: admin, supervisor, cobrador, cobrador-vendedor
Arquitectura
Detalle técnico
SELECT analyst_id, invoice_id
FROM (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY agency_id
ORDER BY weight DESC, critical_days DESC
) AS rn
FROM portfolio_queue
) q
WHERE rn <= capacity_for_week;