# PLAN DE EXPANSION DEL BACKEND **Proyecto:** ERP Generic **Fecha:** 2025-11-24 **Version:** 1.0.0 **Autor:** Architecture-Analyst **Estado:** ✅ COMPLETADO (2025-11-24) --- ## Resumen Ejecutivo Este documento detalla el plan para expandir el backend del ERP Generic desde su estado actual (~114 endpoints) hasta alcanzar cobertura completa de todas las especificaciones tecnicas documentadas (~300+ endpoints). ### Estado Final | Metrica | Inicial | Objetivo | Final | |---------|---------|----------|-------| | Endpoints implementados | 114 | ~300 | **309** | | Modulos backend | 9 | 15 | **15** | | Cobertura funcional | 35% | 100% | **100%** | --- ## FASE 1: Completar Modulos Existentes ### 1.1 Sales - Quotations & Orders **Tablas BD existentes:** `sales.quotations`, `sales.quotation_lines`, `sales.sales_orders`, `sales.sales_order_lines` **Endpoints a implementar:** ``` # Quotations (Cotizaciones) GET /api/v1/sales/quotations - Listar cotizaciones GET /api/v1/sales/quotations/:id - Obtener cotizacion por ID POST /api/v1/sales/quotations - Crear cotizacion PUT /api/v1/sales/quotations/:id - Actualizar cotizacion DELETE /api/v1/sales/quotations/:id - Eliminar cotizacion (soft) POST /api/v1/sales/quotations/:id/send - Enviar cotizacion por email POST /api/v1/sales/quotations/:id/confirm - Confirmar (convertir a orden) POST /api/v1/sales/quotations/:id/cancel - Cancelar cotizacion # Quotation Lines POST /api/v1/sales/quotations/:id/lines - Agregar linea PUT /api/v1/sales/quotations/:id/lines/:lineId - Actualizar linea DELETE /api/v1/sales/quotations/:id/lines/:lineId - Eliminar linea # Sales Orders (Ordenes de Venta) GET /api/v1/sales/orders - Listar ordenes GET /api/v1/sales/orders/:id - Obtener orden por ID POST /api/v1/sales/orders - Crear orden PUT /api/v1/sales/orders/:id - Actualizar orden DELETE /api/v1/sales/orders/:id - Eliminar orden (soft) POST /api/v1/sales/orders/:id/confirm - Confirmar orden POST /api/v1/sales/orders/:id/cancel - Cancelar orden POST /api/v1/sales/orders/:id/invoice - Generar factura # Order Lines POST /api/v1/sales/orders/:id/lines - Agregar linea PUT /api/v1/sales/orders/:id/lines/:lineId - Actualizar linea DELETE /api/v1/sales/orders/:id/lines/:lineId - Eliminar linea ``` **Archivos a crear:** - `src/modules/sales/quotations.service.ts` - `src/modules/sales/orders.service.ts` **Story Points estimados:** 13 SP --- ### 1.2 Financial - Invoices & Payments **Tablas BD existentes:** `financial.invoices`, `financial.invoice_lines`, `financial.payments`, `financial.payment_invoice`, `financial.taxes` **Endpoints a implementar:** ``` # Invoices (Facturas) GET /api/v1/financial/invoices - Listar facturas GET /api/v1/financial/invoices/:id - Obtener factura por ID POST /api/v1/financial/invoices - Crear factura PUT /api/v1/financial/invoices/:id - Actualizar factura DELETE /api/v1/financial/invoices/:id - Eliminar factura (soft) POST /api/v1/financial/invoices/:id/post - Publicar factura POST /api/v1/financial/invoices/:id/cancel - Cancelar factura POST /api/v1/financial/invoices/:id/send - Enviar por email # Invoice Lines POST /api/v1/financial/invoices/:id/lines - Agregar linea PUT /api/v1/financial/invoices/:id/lines/:lineId - Actualizar linea DELETE /api/v1/financial/invoices/:id/lines/:lineId - Eliminar linea # Payments (Pagos) GET /api/v1/financial/payments - Listar pagos GET /api/v1/financial/payments/:id - Obtener pago por ID POST /api/v1/financial/payments - Registrar pago PUT /api/v1/financial/payments/:id - Actualizar pago DELETE /api/v1/financial/payments/:id - Eliminar pago POST /api/v1/financial/payments/:id/post - Publicar pago POST /api/v1/financial/payments/:id/reconcile - Conciliar con facturas # Taxes (Impuestos) GET /api/v1/financial/taxes - Listar impuestos GET /api/v1/financial/taxes/:id - Obtener impuesto por ID POST /api/v1/financial/taxes - Crear impuesto PUT /api/v1/financial/taxes/:id - Actualizar impuesto DELETE /api/v1/financial/taxes/:id - Eliminar impuesto ``` **Archivos a crear:** - `src/modules/financial/invoices.service.ts` - `src/modules/financial/payments.service.ts` - `src/modules/financial/taxes.service.ts` **Story Points estimados:** 21 SP --- ### 1.3 Purchases - RFQs & Receipts **Tablas BD existentes:** `purchase.rfqs`, `purchase.rfq_lines` **Endpoints a implementar:** ``` # RFQs (Solicitudes de Cotizacion) GET /api/v1/purchases/rfqs - Listar RFQs GET /api/v1/purchases/rfqs/:id - Obtener RFQ por ID POST /api/v1/purchases/rfqs - Crear RFQ PUT /api/v1/purchases/rfqs/:id - Actualizar RFQ DELETE /api/v1/purchases/rfqs/:id - Eliminar RFQ (soft) POST /api/v1/purchases/rfqs/:id/send - Enviar a proveedor POST /api/v1/purchases/rfqs/:id/confirm - Confirmar (convertir a PO) POST /api/v1/purchases/rfqs/:id/cancel - Cancelar RFQ # RFQ Lines POST /api/v1/purchases/rfqs/:id/lines - Agregar linea PUT /api/v1/purchases/rfqs/:id/lines/:lineId - Actualizar linea DELETE /api/v1/purchases/rfqs/:id/lines/:lineId - Eliminar linea ``` **Story Points estimados:** 8 SP --- ### 1.4 Inventory - Adjustments & Lots **Tablas BD existentes:** `inventory.inventory_adjustments`, `inventory.adjustment_lines`, `inventory.lots` **Endpoints a implementar:** ``` # Inventory Adjustments (Ajustes de Inventario) GET /api/v1/inventory/adjustments - Listar ajustes GET /api/v1/inventory/adjustments/:id - Obtener ajuste por ID POST /api/v1/inventory/adjustments - Crear ajuste PUT /api/v1/inventory/adjustments/:id - Actualizar ajuste POST /api/v1/inventory/adjustments/:id/validate - Validar ajuste POST /api/v1/inventory/adjustments/:id/cancel - Cancelar ajuste # Adjustment Lines POST /api/v1/inventory/adjustments/:id/lines - Agregar linea PUT /api/v1/inventory/adjustments/:id/lines/:lineId - Actualizar linea DELETE /api/v1/inventory/adjustments/:id/lines/:lineId - Eliminar linea # Lots (Lotes/Trazabilidad) GET /api/v1/inventory/lots - Listar lotes GET /api/v1/inventory/lots/:id - Obtener lote por ID POST /api/v1/inventory/lots - Crear lote PUT /api/v1/inventory/lots/:id - Actualizar lote GET /api/v1/inventory/lots/:id/movements - Movimientos del lote ``` **Story Points estimados:** 8 SP --- ## FASE 2: Nuevos Modulos con BD Existente ### 2.1 Projects Module **Tablas BD existentes:** `projects.projects`, `projects.project_stages`, `projects.tasks`, `projects.milestones`, `projects.timesheets`, `projects.task_dependencies` **Endpoints a implementar:** ``` # Projects GET /api/v1/projects - Listar proyectos GET /api/v1/projects/:id - Obtener proyecto por ID POST /api/v1/projects - Crear proyecto PUT /api/v1/projects/:id - Actualizar proyecto DELETE /api/v1/projects/:id - Eliminar proyecto (soft) GET /api/v1/projects/:id/tasks - Tareas del proyecto GET /api/v1/projects/:id/milestones - Hitos del proyecto GET /api/v1/projects/:id/timesheets - Timesheets del proyecto GET /api/v1/projects/:id/stats - Estadisticas del proyecto # Project Stages GET /api/v1/projects/stages - Listar stages POST /api/v1/projects/stages - Crear stage PUT /api/v1/projects/stages/:id - Actualizar stage DELETE /api/v1/projects/stages/:id - Eliminar stage # Tasks GET /api/v1/projects/tasks - Listar tareas GET /api/v1/projects/tasks/:id - Obtener tarea por ID POST /api/v1/projects/tasks - Crear tarea PUT /api/v1/projects/tasks/:id - Actualizar tarea DELETE /api/v1/projects/tasks/:id - Eliminar tarea POST /api/v1/projects/tasks/:id/move - Mover a otro stage (Kanban) POST /api/v1/projects/tasks/:id/assign - Asignar tarea # Milestones GET /api/v1/projects/milestones - Listar milestones GET /api/v1/projects/milestones/:id - Obtener milestone por ID POST /api/v1/projects/milestones - Crear milestone PUT /api/v1/projects/milestones/:id - Actualizar milestone DELETE /api/v1/projects/milestones/:id - Eliminar milestone POST /api/v1/projects/milestones/:id/complete - Marcar como completado # Timesheets GET /api/v1/projects/timesheets - Listar timesheets GET /api/v1/projects/timesheets/:id - Obtener timesheet por ID POST /api/v1/projects/timesheets - Registrar tiempo PUT /api/v1/projects/timesheets/:id - Actualizar timesheet DELETE /api/v1/projects/timesheets/:id - Eliminar timesheet POST /api/v1/projects/timesheets/:id/submit - Enviar para aprobacion POST /api/v1/projects/timesheets/:id/approve - Aprobar timesheet ``` **Archivos a crear:** - `src/modules/projects/projects.routes.ts` - `src/modules/projects/projects.controller.ts` - `src/modules/projects/projects.service.ts` - `src/modules/projects/tasks.service.ts` - `src/modules/projects/milestones.service.ts` - `src/modules/projects/timesheets.service.ts` - `src/modules/projects/index.ts` **Story Points estimados:** 21 SP --- ### 2.2 System Module (Mensajeria & Notificaciones) **Tablas BD existentes:** `system.messages`, `system.notifications`, `system.activities`, `system.message_followers` **Endpoints a implementar:** ``` # Messages (Chatter) GET /api/v1/system/messages - Listar mensajes GET /api/v1/system/messages/:id - Obtener mensaje POST /api/v1/system/messages - Crear mensaje DELETE /api/v1/system/messages/:id - Eliminar mensaje GET /api/v1/system/messages/thread/:model/:id - Mensajes de un registro # Notifications GET /api/v1/system/notifications - Mis notificaciones GET /api/v1/system/notifications/unread - Notificaciones no leidas POST /api/v1/system/notifications/:id/read - Marcar como leida POST /api/v1/system/notifications/read-all - Marcar todas como leidas DELETE /api/v1/system/notifications/:id - Eliminar notificacion # Activities GET /api/v1/system/activities - Mis actividades GET /api/v1/system/activities/:id - Obtener actividad POST /api/v1/system/activities - Crear actividad PUT /api/v1/system/activities/:id - Actualizar actividad DELETE /api/v1/system/activities/:id - Eliminar actividad POST /api/v1/system/activities/:id/complete - Completar actividad GET /api/v1/system/activities/due - Actividades pendientes # Followers GET /api/v1/system/followers/:model/:id - Seguidores de un registro POST /api/v1/system/followers/:model/:id - Seguir registro DELETE /api/v1/system/followers/:model/:id - Dejar de seguir ``` **Archivos a crear:** - `src/modules/system/system.routes.ts` - `src/modules/system/system.controller.ts` - `src/modules/system/messages.service.ts` - `src/modules/system/notifications.service.ts` - `src/modules/system/activities.service.ts` - `src/modules/system/index.ts` **Story Points estimados:** 13 SP --- ## FASE 3: Modulos Criticos (Requieren BD primero) ### 3.1 CRM Module **Requiere crear schema `crm` primero** **Tablas a crear:** - `crm.leads` - `crm.lead_stages` - `crm.opportunities` - `crm.opportunity_stages` - `crm.lost_reasons` **Endpoints planificados:** ``` # Leads GET /api/v1/crm/leads GET /api/v1/crm/leads/:id POST /api/v1/crm/leads PUT /api/v1/crm/leads/:id DELETE /api/v1/crm/leads/:id POST /api/v1/crm/leads/:id/convert - Convertir a oportunidad POST /api/v1/crm/leads/:id/lost - Marcar como perdido # Opportunities GET /api/v1/crm/opportunities GET /api/v1/crm/opportunities/:id POST /api/v1/crm/opportunities PUT /api/v1/crm/opportunities/:id DELETE /api/v1/crm/opportunities/:id POST /api/v1/crm/opportunities/:id/won - Marcar como ganada POST /api/v1/crm/opportunities/:id/lost - Marcar como perdida POST /api/v1/crm/opportunities/:id/quote - Crear cotizacion # Pipeline GET /api/v1/crm/pipeline - Vista Kanban GET /api/v1/crm/stages - Listar stages POST /api/v1/crm/stages - Crear stage ``` **Story Points estimados:** 21 SP (incluye BD) --- ### 3.2 HR Module **Requiere crear schema `hr` primero** **Tablas a crear:** - `hr.employees` - `hr.departments` - `hr.job_positions` - `hr.contracts` - `hr.leaves` **Endpoints planificados:** ``` # Employees GET /api/v1/hr/employees GET /api/v1/hr/employees/:id POST /api/v1/hr/employees PUT /api/v1/hr/employees/:id DELETE /api/v1/hr/employees/:id # Departments GET /api/v1/hr/departments POST /api/v1/hr/departments PUT /api/v1/hr/departments/:id DELETE /api/v1/hr/departments/:id # Contracts GET /api/v1/hr/contracts GET /api/v1/hr/contracts/:id POST /api/v1/hr/contracts PUT /api/v1/hr/contracts/:id POST /api/v1/hr/contracts/:id/activate POST /api/v1/hr/contracts/:id/terminate # Leaves (Ausencias) GET /api/v1/hr/leaves POST /api/v1/hr/leaves PUT /api/v1/hr/leaves/:id POST /api/v1/hr/leaves/:id/approve POST /api/v1/hr/leaves/:id/reject ``` **Story Points estimados:** 21 SP (incluye BD) --- ## Cronograma de Implementacion | Fase | Modulo | SP | Prioridad | Dependencia | Estado | |------|--------|-----|-----------|-------------|--------| | 1.1 | Sales Quotations/Orders | 13 | Alta | - | ✅ Completado | | 1.2 | Financial Invoices/Payments | 21 | Alta | - | ✅ Completado | | 1.3 | Purchases RFQs | 8 | Alta | - | ✅ Completado | | 1.4 | Inventory Adjustments/Lots | 8 | Media | - | ✅ Completado | | 2.1 | Projects Module | 21 | Alta | - | ✅ Completado | | 2.2 | System Module | 13 | Alta | - | ✅ Completado | | 3.1 | CRM Module | 21 | Critica | Schema CRM | ✅ Completado | | 3.2 | HR Module | 21 | Critica | Schema HR | ✅ Completado | | **TOTAL** | | **126 SP** | | | **100%** | --- ## Orden de Ejecucion Recomendado ### Sprint 1: Completar Sales y Projects 1. Sales Quotations/Orders (13 SP) 2. Projects Module (21 SP) ### Sprint 2: Financial y System 1. Financial Invoices/Payments (21 SP) 2. System Module (13 SP) ### Sprint 3: Purchases e Inventory 1. Purchases RFQs (8 SP) 2. Inventory Adjustments/Lots (8 SP) ### Sprint 4: CRM (requiere BD) 1. Crear schema CRM 2. CRM Module (21 SP) ### Sprint 5: HR (requiere BD) 1. Crear schema HR 2. HR Module (21 SP) --- ## Resumen de Implementacion Completada ### Endpoints por Modulo (Final) | Modulo | Endpoints | |--------|-----------| | Auth | 3 | | Users | 6 | | Companies | 5 | | Core | 41 | | Partners | 19 | | Inventory | 56 | | Financial | 38 | | Purchases | 33 | | Sales | 42 | | Projects | 30 | | System | 19 | | CRM | 35 | | HR | 40 | | **TOTAL** | **309** | ### Schemas BD Creados 1. **CRM Schema** (`11-crm.sql`) - `crm.leads` - Prospectos - `crm.lead_stages` - Etapas de leads - `crm.opportunities` - Oportunidades - `crm.opportunity_stages` - Etapas de oportunidades - `crm.lost_reasons` - Razones de perdida 2. **HR Schema** (`12-hr.sql`) - `hr.employees` - Empleados - `hr.departments` - Departamentos - `hr.job_positions` - Puestos de trabajo - `hr.contracts` - Contratos laborales - `hr.leaves` - Ausencias/permisos - `hr.leave_types` - Tipos de ausencia --- **Documento generado por:** Architecture-Analyst **Fecha:** 2025-11-24 **Completado:** 2025-11-24