erp-core/docs/PLAN-EXPANSION-BACKEND.md

16 KiB

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