Volver al Caso de Estudio

SageConnect — Tech Deep Dive

Automatizando la Integración ERP para 200+ Empleados

Stack Tecnológico

Node.jsExpressSQL ServerPM2
Arquitectura: Monolito Híbrido

Arquitectura

Sage 300 ERPMSSQL DatabaseAPVEND, POPORH1PORCPH1, APTCRSageConnectNode.js / Express — Single ProcessMulti-tenantExpress DashboardPort 3030Logs & MonitoringExecution StatusStats & ShutdownBackground Processor8 Controllers / TenantProvider SyncCFDI DownloadPayment Check & UploadPO Create / Update / ClosePO CancellationPortal deProveedoresFocaltecREST APIProviders, POs,CFDIs, PaymentsSage 300 Web APIREST / JSONPlanned MigrationMSSQL QueriesPOs, Payments, VendorsREST APICFDIs, POs, PaymentsREST API (Planned)Single-process architecture: sequential multi-tenant sync between Sage 300, Portal, and Web API (planned)

Flujo de Datos

  1. 1

    El procesador en segundo plano se ejecuta por calendario (Task Scheduler o intervalo PM2)

  2. 2

    Para cada tenant: consulta tablas MSSQL de Sage 300 para nuevas OCs, pagos y datos de proveedores

  3. 3

    Construye y valida payloads usando esquemas Joi y transformadores personalizados

  4. 4

    Envía órdenes de compra, pagos y datos de proveedores a la API REST del Portal de Proveedores

  5. 5

    Descarga CFDIs y datos de proveedores desde la API del Portal al almacenamiento local

  6. 6

    Ejecuta proceso externo de importación de CFDI para cargar facturas en Sage 300

Patrones de Código

Procesamiento Secuencial Multi-Tenant

Procesa múltiples empresas secuencialmente en un solo proceso Node.js. Cada tenant tiene su propia base de datos Sage 300, credenciales de API del Portal y RFC — configurados mediante variables de entorno separadas por comas.

Runtime de Doble Modo

Una sola aplicación se ejecuta en tres modos: solo-web (dashboard Express en puerto 3030), solo-background (8 controladores de sincronización), o combinado. PM2 o Windows Task Scheduler orquesta los ciclos de ejecución.

Arquitectura de Pipeline de Controladores

Ocho controladores especializados se ejecutan secuencialmente por tenant: Sync de Proveedores, Descarga de CFDI, Verificación de Pagos, Carga de Pagos, Creación de OC, Actualizaciones de OC, Cierre de OC y Cancelación de OC — cada uno manejando una responsabilidad de sincronización.

Métricas del Sistema

9
Controladores
8
Jobs en Segundo Plano
6
Endpoints del Dashboard
6
Servicios

Próxima Evolución

El sistema actual depende de un ejecutable externo de Windows (ImportaFacturasFocaltec.exe) para importar CFDIs a Sage 300 — una caja negra sin retroalimentación estructurada de errores, sin seguimiento por factura, y sin correlación entre XMLs procesados y batches creados.

La siguiente evolución reemplaza este ejecutable completamente integrando directamente con la Web API REST de Sage 300. Esto elimina la dependencia de Windows, habilita manejo granular de errores por factura, y hace todo el flujo de datos observable y testeable desde Node.js.

Esta migración también aborda gaps críticos de confiabilidad: pagos que se suben al portal antes de confirmar la importación de CFDI, fallas silenciosas en inserts de tablas de control, y corrupción de XML por condiciones de carrera en el pipeline de inyección de addenda.

Desarrollo Activo — Sigue el Proceso

¿Quieres resultados similares para tu proyecto?