469 lines
16 KiB
Markdown
469 lines
16 KiB
Markdown
# 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
|