## Phase 3: DeepSeek AI Integration ### AI Services (apps/api/src/services/ai/) - DeepSeek API client with streaming, rate limiting, retries - AI service for financial analysis, executive summaries, recommendations - Optimized prompts for Mexican CFO digital assistant - Redis caching for AI responses ### Report Generation (apps/api/src/services/reports/) - ReportGenerator: monthly, quarterly, annual, custom reports - PDF generator with corporate branding (PDFKit) - Report templates for PYME, Startup, Enterprise - Spanish prompts for financial narratives - MinIO storage for generated PDFs ### AI & Reports API Routes - POST /api/ai/analyze - Financial metrics analysis - POST /api/ai/chat - CFO digital chat with streaming - POST /api/reports/generate - Async report generation - GET /api/reports/:id/download - PDF download - BullMQ jobs for background processing ### Frontend Pages - /reportes - Report listing with filters - /reportes/nuevo - 3-step wizard for report generation - /reportes/[id] - Full report viewer with charts - /asistente - CFO Digital chat interface - Components: ChatInterface, ReportCard, AIInsightCard ## Phase 4: ERP Integrations ### CONTPAQi Connector (SQL Server) - Contabilidad: catalog, polizas, balanza, estado de resultados - Comercial: clientes, proveedores, facturas, inventario - Nominas: empleados, nominas, percepciones/deducciones ### Aspel Connector (Firebird/SQL Server) - COI: accounting, polizas, balanza, auxiliares - SAE: sales, purchases, inventory, A/R, A/P - NOI: payroll, employees, receipts - BANCO: bank accounts, movements, reconciliation - Latin1 to UTF-8 encoding handling ### Odoo Connector (XML-RPC) - Accounting: chart of accounts, journal entries, reports - Invoicing: customer/vendor invoices, payments - Partners: customers, vendors, statements - Inventory: products, stock levels, valuations - Multi-company and version 14-17 support ### Alegra Connector (REST API) - Invoices, credit/debit notes with CFDI support - Contacts with Mexican fiscal fields (RFC, regimen) - Payments and bank reconciliation - Financial reports: trial balance, P&L, balance sheet - Webhook support for real-time sync ### SAP Business One Connector (OData/Service Layer) - Session management with auto-refresh - Financials: chart of accounts, journal entries, reports - Sales: invoices, credit notes, delivery notes, orders - Purchasing: bills, POs, goods receipts - Inventory: items, stock, transfers, valuation - Banking: accounts, payments, cash flow ### Integration Manager - Unified interface for all connectors - BullMQ scheduler for automated sync - Webhook handling for real-time updates - Migration 003_integrations.sql with sync tables - Frontend page /integraciones for configuration Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
264 lines
7.5 KiB
TypeScript
264 lines
7.5 KiB
TypeScript
/**
|
|
* CONTPAQi Integration Module
|
|
*
|
|
* Conector completo para integracion con los sistemas CONTPAQi:
|
|
* - CONTPAQi Contabilidad
|
|
* - CONTPAQi Comercial (ventas/compras)
|
|
* - CONTPAQi Nominas
|
|
*
|
|
* ESTRUCTURA DE TABLAS CONSULTADAS:
|
|
*
|
|
* ============================================================================
|
|
* CONTPAQi CONTABILIDAD
|
|
* ============================================================================
|
|
*
|
|
* Empresas
|
|
* - CIDEMPRESA: ID interno
|
|
* - CCODIGOEMPRESA: Codigo de empresa
|
|
* - CNOMBREEMPRESA: Nombre
|
|
* - CRFC: RFC
|
|
* - CRUTADATOS: Base de datos de la empresa
|
|
*
|
|
* Cuentas (Catalogo de cuentas contables)
|
|
* - CIDCUENTA: ID de cuenta
|
|
* - CCODIGOCUENTA: Codigo (ej: 1101-001)
|
|
* - CNOMBRECUENTA: Nombre
|
|
* - CTIPOCUENTA: 1=Activo, 2=Pasivo, 3=Capital, 4=Ingreso, 5=Costo, 6=Gasto, 7=Orden
|
|
* - CNATURALEZA: 1=Deudora, 2=Acreedora
|
|
* - CNIVEL: Nivel jerarquico
|
|
* - CCUENTAPADRE: Cuenta padre
|
|
* - CESDECATALOGO: 1=Cuenta de detalle
|
|
* - CCODIGOAGRUPADOR: Codigo agrupador SAT
|
|
*
|
|
* Polizas (Encabezado)
|
|
* - CIDPOLIZA: ID poliza
|
|
* - CTIPOPOLIZA: 1=Ingresos, 2=Egresos, 3=Diario, 4=Orden
|
|
* - CNUMPOLIZA: Numero
|
|
* - CFECHA: Fecha
|
|
* - CCONCEPTO: Descripcion
|
|
* - CIDEJERCICIO: Ano fiscal
|
|
* - CIDPERIODO: Mes (1-13)
|
|
* - CAFECTADA: Si esta aplicada a saldos
|
|
* - CUUIDCFDI: UUID del CFDI relacionado
|
|
*
|
|
* MovPolizas (Detalle de polizas)
|
|
* - CIDMOVPOLIZA: ID movimiento
|
|
* - CIDPOLIZA: Poliza padre
|
|
* - CNUMEROPARTIDA: Numero de linea
|
|
* - CCODIGOCUENTA: Cuenta contable
|
|
* - CCONCEPTO: Descripcion
|
|
* - CCARGO: Importe cargo
|
|
* - CABONO: Importe abono
|
|
* - CREFERENCIA: Referencia (num cheque, factura, etc)
|
|
* - CUUIDCFDI: UUID CFDI
|
|
* - CRFCTERCERO: RFC del tercero
|
|
*
|
|
* SaldosCuentas
|
|
* - CIDCUENTA: Cuenta
|
|
* - CIDEJERCICIO: Ejercicio
|
|
* - CIDPERIODO: Periodo
|
|
* - CSALDOINICIAL: Saldo inicial
|
|
* - CCARGOS: Total cargos
|
|
* - CABONOS: Total abonos
|
|
* - CSALDOFINAL: Saldo final
|
|
*
|
|
* ============================================================================
|
|
* CONTPAQi COMERCIAL
|
|
* ============================================================================
|
|
*
|
|
* admClientes (Clientes y Proveedores - tabla unificada)
|
|
* - CIDCLIENTEPROVEEDOR: ID
|
|
* - CCODIGOCLIENTE: Codigo
|
|
* - CRAZONSOCIAL: Razon social
|
|
* - CRFC: RFC
|
|
* - CTIPOCLIENTE: 1=Cliente, 2=ClienteProveedor, 3=Proveedor
|
|
* - CREGIMENFISCAL: Regimen fiscal
|
|
* - CUSOCFDI: Uso CFDI predeterminado
|
|
* - CLIMITECREDITO: Limite de credito
|
|
* - CDIASCREDITO: Dias de credito
|
|
* - CSALDOACTUAL: Saldo actual
|
|
*
|
|
* admDomicilios (Direcciones)
|
|
* - CIDDOMICILIO: ID
|
|
* - CIDCLIENTEPROVEEDOR: Cliente/Proveedor
|
|
* - CTIPO: Tipo de direccion
|
|
* - CCALLE, CNUMEROEXTERIOR, CCOLONIA, CCODIGOPOSTAL, etc.
|
|
*
|
|
* admProductos (Catalogo de productos)
|
|
* - CIDPRODUCTO: ID
|
|
* - CCODIGOPRODUCTO: Codigo
|
|
* - CNOMBREPRODUCTO: Nombre
|
|
* - CTIPOPRODUCTO: 1=Producto, 2=Paquete, 3=Servicio
|
|
* - CUNIDADMEDIDA: Unidad
|
|
* - CCLAVESAT: Clave SAT
|
|
* - CPRECIOBASE: Precio base
|
|
* - CULTIMOCOSTO: Ultimo costo
|
|
* - CCOSTOPROMEDIO: Costo promedio
|
|
* - CTASAIVA: Tasa de IVA
|
|
*
|
|
* admDocumentos (Facturas, Notas, Remisiones, etc.)
|
|
* - CIDDOCUMENTO: ID
|
|
* - CIDCONCEPTODOCUMENTO: Tipo de documento
|
|
* - CSERIEFASCICULO: Serie
|
|
* - CFOLIO: Folio
|
|
* - CFECHA: Fecha
|
|
* - CIDCLIENTEPROVEEDOR: Cliente/Proveedor
|
|
* - CSUBTOTAL, CDESCUENTO, CIVA, CTOTAL: Totales
|
|
* - CUUID: UUID del CFDI
|
|
* - CFORMAPAGO, CMETODOPAGO: Forma y metodo de pago
|
|
* - CPENDIENTE: Saldo pendiente
|
|
* - CCANCELADO: Si esta cancelado
|
|
*
|
|
* admMovimientos (Detalle de productos en documentos)
|
|
* - CIDMOVIMIENTO: ID
|
|
* - CIDDOCUMENTO: Documento padre
|
|
* - CIDPRODUCTO: Producto
|
|
* - CUNIDADES: Cantidad
|
|
* - CPRECIO: Precio unitario
|
|
* - CDESCUENTO: Descuento
|
|
* - CIMPORTE: Importe
|
|
* - CIVA: IVA
|
|
*
|
|
* admAlmacenes (Almacenes)
|
|
* - CIDALMACEN: ID
|
|
* - CCODIGOALMACEN: Codigo
|
|
* - CNOMBREALMACEN: Nombre
|
|
*
|
|
* admExistencias (Inventario por almacen)
|
|
* - CIDPRODUCTO: Producto
|
|
* - CIDALMACEN: Almacen
|
|
* - CEXISTENCIA: Cantidad
|
|
*
|
|
* ============================================================================
|
|
* CONTPAQi NOMINAS
|
|
* ============================================================================
|
|
*
|
|
* nomEmpleados (Catalogo de empleados)
|
|
* - CIDEMPLEAD: ID
|
|
* - CCODIGOEMPLEADO: Codigo/Numero
|
|
* - CNOMBRE, CAPELLIDOPATERNO, CAPELLIDOMATERNO: Nombre
|
|
* - CRFC, CCURP, CNSS: Identificadores
|
|
* - CFECHAALTA, CFECHABAJA: Fechas
|
|
* - CTIPOCONTRATO: Tipo de contrato
|
|
* - CTIPOREGIMEN: Regimen (Sueldos, Asimilados, etc.)
|
|
* - CPERIODICIDADPAGO: Periodicidad
|
|
* - CSALARIODIARIO: Salario diario
|
|
* - CSALARIODIAINTEGRADO: SDI
|
|
* - CDEPARTAMENTO, CPUESTO: Puesto
|
|
* - CBANCO, CCLABE: Datos bancarios
|
|
*
|
|
* nomPeriodos (Periodos de nomina)
|
|
* - CIDPERIODO: ID
|
|
* - CNUMEROPERIODO: Numero de periodo
|
|
* - CEJERCICIO: Ano
|
|
* - CFECHAINICIO, CFECHAFIN, CFECHAPAGO: Fechas
|
|
* - CTIPONOMINA: 1=Ordinaria, 2=Extraordinaria
|
|
*
|
|
* nomNominas (Nomina por empleado/periodo)
|
|
* - CIDNOMINA: ID
|
|
* - CIDEMPLEAD: Empleado
|
|
* - CIDPERIODO: Periodo
|
|
* - CTOTALPERCEPCIONES, CTOTALDEDUCCIONES: Totales
|
|
* - CNETO: Neto a pagar
|
|
* - CUUID: UUID del CFDI de nomina
|
|
*
|
|
* nomMovimientos (Percepciones y deducciones)
|
|
* - CIDMOVIMIENTO: ID
|
|
* - CIDNOMINA: Nomina
|
|
* - CTIPOMOVIMIENTO: 1=Percepcion, 2=Deduccion, 3=OtroPago
|
|
* - CIDTIPOMOVIMIENTO: ID del tipo
|
|
* - CIMPORTE: Importe
|
|
* - CIMPORTEGRAVADO, CIMPORTEEXENTO: Gravado/Exento
|
|
*
|
|
* nomTiposPercepcion (Catalogo de percepciones)
|
|
* - CIDTIPOPERCEPCION: ID
|
|
* - CCLAVE: Clave
|
|
* - CCONCEPTO: Descripcion
|
|
* - CTIPOPERCEPCIONSAT: Clave SAT
|
|
*
|
|
* nomTiposDeduccion (Catalogo de deducciones)
|
|
* - CIDTIPODEDUCCION: ID
|
|
* - CCLAVE: Clave
|
|
* - CCONCEPTO: Descripcion
|
|
* - CTIPODEDUCCIONSAT: Clave SAT
|
|
*
|
|
* ============================================================================
|
|
*
|
|
* @example
|
|
* ```typescript
|
|
* import {
|
|
* createCONTPAQiClient,
|
|
* createContabilidadConnector,
|
|
* createComercialConnector,
|
|
* createNominasConnector,
|
|
* createCONTPAQiSyncService,
|
|
* } from './services/integrations/contpaqi';
|
|
*
|
|
* // Crear cliente
|
|
* const client = createCONTPAQiClient({
|
|
* host: 'localhost',
|
|
* port: 1433,
|
|
* user: 'sa',
|
|
* password: 'password',
|
|
* database: 'ctCONTPAQi',
|
|
* });
|
|
*
|
|
* // Conectar a una empresa
|
|
* const empresas = await client.getEmpresas('Contabilidad');
|
|
* await client.connectToEmpresa(empresas[0]);
|
|
*
|
|
* // Usar conectores especificos
|
|
* const contabilidad = createContabilidadConnector(client);
|
|
* const cuentas = await contabilidad.getCatalogoCuentas();
|
|
* const balanza = await contabilidad.getBalanzaComprobacion({ ejercicio: 2024, periodo: 12 });
|
|
*
|
|
* // Sincronizar a Horux
|
|
* const syncService = createCONTPAQiSyncService({ dbPool, getSchemaName });
|
|
* const result = await syncService.syncToHorux({
|
|
* tenantId: 'xxx',
|
|
* connectionConfig: { ... },
|
|
* productos: ['Contabilidad', 'Comercial'],
|
|
* fechaDesde: new Date('2024-01-01'),
|
|
* fechaHasta: new Date('2024-12-31'),
|
|
* });
|
|
* ```
|
|
*/
|
|
|
|
// Types
|
|
export * from './contpaqi.types.js';
|
|
|
|
// Schemas
|
|
export * from './contpaqi.schema.js';
|
|
|
|
// Client
|
|
export {
|
|
CONTPAQiClient,
|
|
createCONTPAQiClient,
|
|
getCONTPAQiPoolManager,
|
|
closeCONTPAQiConnections,
|
|
testCONTPAQiConnection,
|
|
} from './contpaqi.client.js';
|
|
|
|
// Connectors
|
|
export {
|
|
ContabilidadConnector,
|
|
createContabilidadConnector,
|
|
} from './contabilidad.connector.js';
|
|
|
|
export {
|
|
ComercialConnector,
|
|
createComercialConnector,
|
|
} from './comercial.connector.js';
|
|
|
|
export {
|
|
NominasConnector,
|
|
createNominasConnector,
|
|
} from './nominas.connector.js';
|
|
|
|
// Sync Service
|
|
export {
|
|
CONTPAQiSyncService,
|
|
createCONTPAQiSyncService,
|
|
type CONTPAQiSyncServiceConfig,
|
|
} from './contpaqi.sync.js';
|