# ALCANCE DETALLADO POR MÓDULO **Fecha:** 2025-11-23 **Versión:** 1.0 **Basado en:** LISTA-MODULOS-ERP-GENERICO.md + Análisis Fase 0 --- ## Introducción Este documento define el alcance detallado de cada uno de los 14 módulos del ERP Genérico. **Objetivo:** Establecer claramente qué incluye y qué NO incluye cada módulo para evitar: - Scope creep (agregar funcionalidades innecesarias) - Over-engineering (generalizar lo que debe ser específico) - Conflictos entre módulos (límites difusos) **Metodología:** - ✅ **Incluido:** Funcionalidades que son genéricas y reutilizables en 70%+ de proyectos - ❌ **Excluido:** Funcionalidades específicas de industria (construcción, vidrio, etc.) - 🔧 **Límites:** Dónde termina un módulo y empieza otro --- ## MGN-001: Fundamentos ### Descripción Módulo base que proporciona autenticación, autorización, gestión de usuarios y multi-tenancy. Es la columna vertebral de seguridad del ERP. ### Alcance Incluido (✅ Dentro del Alcance) **Autenticación:** - Login con email/password - Generación de JWT tokens (access token + refresh token) - Logout (invalidación de tokens) - Registro de usuarios (signup) con validación de email - Reset password (envío de token por email, expiración 24h) - Cambio de contraseña (validación de contraseña fuerte: 8+ chars, mayúsculas, números, símbolos) - Verificación de email (token de verificación) - Política de contraseñas (longitud mínima, complejidad, expiración) **Gestión de Usuarios:** - CRUD de usuarios (create, read, update, soft delete) - Perfiles de usuario (nombre, email, teléfono, foto, idioma preferido) - Activación/desactivación de usuarios (active=true/false) - Asignación de roles a usuarios (muchos a muchos) - Historial de sesiones (last login, login count, IPs) **Roles y Permisos (RBAC):** - CRUD de roles (Administrator, Accountant, Supervisor, etc.) - Permisos granulares CRUD por modelo (create, read, update, delete) - Herencia de roles (ej: Supervisor hereda permisos de Employee) - Permisos por campo (field-level permissions - opcional P1) - Record Rules (RLS policies) - Filtros SQL dinámicos por rol **Multi-Tenancy:** - Schema-level isolation (cada tenant un schema PostgreSQL) - Context switching (cambio de tenant por request) - Función `get_current_tenant_id()` para RLS - Validación de acceso cruzado entre tenants (estrictamente prohibido) **Seguridad:** - Hash de contraseñas (bcrypt, 10 rounds) - Rate limiting (login attempts: 5 intentos/15min) - Session management (tokens con expiración) - CORS configuration - Helmet.js (security headers) ### Alcance Excluido (❌ Fuera del Alcance) **Autenticación Avanzada:** - ❌ Login con OAuth2/OIDC (Google, Facebook, Azure AD) - **Razón:** No es esencial para MVP, se puede agregar después (P2) - ❌ Autenticación de dos factores (2FA/MFA) - **Razón:** Importante, pero no crítico para inicio (P1) - ❌ Biometría (huella, Face ID) - **Razón:** Específico de mobile (P2) - ❌ SSO (Single Sign-On) - **Razón:** Empresarial avanzado (P2) **Gestión de Usuarios Avanzada:** - ❌ Delegación de permisos (usuario A delega a usuario B temporalmente) - **Razón:** Caso de uso específico (P2) - ❌ Grupos de usuarios (además de roles) - **Razón:** Los roles son suficientes para MVP - ❌ Aprobaciones workflow (aprobar creación de usuarios) - **Razón:** Overhead innecesario para inicio **Multi-Tenancy Avanzado:** - ❌ Database-level isolation (cada tenant una DB) - **Razón:** Schema-level es suficiente y más eficiente - ❌ Tenants con custom domains - **Razón:** Complejidad infraestructura (P2) ### Límites con Otros Módulos **Con MGN-002 (Empresas):** - **MGN-001 termina:** Gestión de usuarios y roles - **MGN-002 empieza:** Gestión de empresas/organizaciones (users pueden acceder a múltiples empresas) - **Límite:** Usuario puede tener un rol diferente en cada empresa **Con MGN-014 (Mensajería):** - **MGN-001 termina:** Autenticación de usuarios - **MGN-014 empieza:** Notificaciones a usuarios, mensajes - **Límite:** MGN-001 provee el contexto de usuario actual, MGN-014 lo usa para notificar ### Casos de Uso Principales 1. **UC-AUTH-001:** Usuario se registra en el sistema 2. **UC-AUTH-002:** Usuario inicia sesión 3. **UC-AUTH-003:** Usuario solicita reset de contraseña 4. **UC-AUTH-004:** Administrador crea un nuevo usuario 5. **UC-AUTH-005:** Administrador asigna roles a usuario 6. **UC-AUTH-006:** Administrador define permisos de un rol 7. **UC-AUTH-007:** Sistema valida permisos de usuario para acción (CRUD) 8. **UC-AUTH-008:** Sistema cambia de tenant (multi-tenancy) ### Actores - **Administrador:** Gestiona usuarios, roles, permisos - **Usuario:** Se autentica, usa el sistema - **Sistema:** Valida permisos automáticamente ### Referencias - **Odoo:** base (res.users, res.groups, ir.model.access, ir.rule) - **Gamilit:** auth_management schema - **ADR:** ADR-001 (Stack), ADR-003 (Multi-Tenancy), ADR-006 (RBAC) --- ## MGN-002: Empresas y Organizaciones ### Descripción Módulo que gestiona empresas/organizaciones y configuración multi-empresa. Permite que usuarios trabajen con múltiples empresas y que documentos pertenezcan a empresas específicas. ### Alcance Incluido (✅ Dentro del Alcance) **Gestión de Empresas:** - CRUD de empresas (create, read, update, soft delete) - Datos de empresa: nombre, nombre legal, RFC/NIT/Tax ID, logo, email, teléfono, sitio web - Dirección de empresa (calle, ciudad, estado, país, código postal) - Configuración fiscal (régimen fiscal, responsabilidades tributarias) - Moneda principal de la empresa - Empresa vinculada a partner (patrón Odoo: una empresa también es un partner) **Multi-Empresa:** - Usuario puede tener acceso a múltiples empresas (tabla de asignación users_companies) - Usuario puede tener roles diferentes en cada empresa - Context switching: cambiar empresa activa sin logout - Filtrado automático de datos por empresa (RLS) - Validación de acceso cruzado entre empresas (un usuario no puede ver datos de empresa sin acceso) **Jerarquías Organizacionales:** - Holdings (parent_id): una empresa puede ser parte de un grupo - Visualización de organigrama de empresas (árbol jerárquico) ### Alcance Excluido (❌ Fuera del Alcance) **Funcionalidades Avanzadas:** - ❌ Consolidación financiera (balance consolidado de holdings) - **Razón:** Funcionalidad contable avanzada, va en MGN-004 o extensión (P2) - ❌ Transferencias inter-compañía automáticas - **Razón:** Complejidad contable, no esencial para MVP (P2) - ❌ Configuración de permisos cruzados entre empresas - **Razón:** Caso de uso específico, no genérico - ❌ Unidades de negocio (Business Units) dentro de empresa - **Razón:** Puede modelarse con departamentos en MGN-010 **Específico de Industria:** - ❌ Sucursales con inventario independiente - **Razón:** Es lógica de inventario (MGN-005) - ❌ Centros de costos - **Razón:** Es lógica de contabilidad analítica (MGN-008) ### Límites con Otros Módulos **Con MGN-001 (Fundamentos):** - **MGN-001 termina:** Usuarios y roles - **MGN-002 empieza:** Empresas y asignación usuario-empresa - **Límite:** Un usuario puede tener rol diferente en cada empresa **Con MGN-003 (Catálogos):** - **MGN-002 termina:** Datos de empresa - **MGN-003 empieza:** Partners (empresa también es un partner) - **Límite:** Empresa tiene relación con partner (company.partner_id) **Con MGN-004, MGN-005, MGN-006, MGN-007 (Módulos Transaccionales):** - **MGN-002 termina:** Definición de empresa - **Módulos transaccionales empiezan:** Documentos (facturas, órdenes, etc.) con company_id - **Límite:** Todos los documentos deben tener company_id (FK a companies) ### Casos de Uso Principales 1. **UC-COMP-001:** Administrador crea una nueva empresa 2. **UC-COMP-002:** Administrador configura datos fiscales de empresa 3. **UC-COMP-003:** Administrador asigna usuarios a empresa 4. **UC-COMP-004:** Usuario cambia de empresa activa (context switching) 5. **UC-COMP-005:** Usuario con acceso a múltiples empresas ve lista de empresas permitidas 6. **UC-COMP-006:** Administrador crea holding (jerarquía de empresas) ### Actores - **Administrador:** Gestiona empresas, configuración - **Usuario Multi-Empresa:** Trabaja con varias empresas - **Sistema:** Filtra datos por empresa automáticamente ### Referencias - **Odoo:** base (res.company) - **Gamilit:** core schema (companies table) - **ADR:** ADR-002 (Arquitectura Modular), ADR-003 (Multi-Tenancy) --- ## MGN-003: Catálogos Maestros ### Descripción Módulo que gestiona catálogos maestros universales: partners, países, monedas, unidades de medida, categorías de productos. Son datos de referencia compartidos por todos los módulos transaccionales. ### Alcance Incluido (✅ Dentro del Alcance) **Partners Universales:** - CRUD de partners (patrón Odoo: un partner puede ser cliente, proveedor, empleado, contacto) - Flags: is_customer, is_supplier, is_employee, is_contact - Datos generales: nombre, nombre legal, email, teléfono, sitio web - Dirección (calle, ciudad, estado, país, código postal) - Datos fiscales (Tax ID, régimen fiscal) - Jerarquía (parent_id): un partner puede tener contactos hijos - Condiciones de pago (payment terms) - Calificación de partner (customer rank, supplier rank) **Países y Regiones:** - Catálogo de países (ISO 3166-1: código 2 letras, código 3 letras, código numérico) - Estados/Provincias por país - Ciudades (opcional, puede ser texto libre) - Códigos postales - Formatos de dirección por país (ej: USA → ZIP, México → CP) **Monedas:** - Catálogo de monedas (ISO 4217: USD, MXN, EUR, etc.) - Tasas de cambio (con vigencia temporal: fecha inicio, fecha fin) - Actualización manual de tasas (en MVP, automática en P1) - Moneda de visualización vs moneda de registro **Unidades de Medida (UoM):** - Categorías de UoM (longitud, peso, volumen, tiempo, unidades) - UoM por categoría (kg, g, ton / m, cm, km / L, mL / etc.) - Factor de conversión (ej: 1 kg = 1000 g) - UoM de referencia por categoría - Conversiones automáticas dentro de categoría **Categorías de Productos:** - Jerarquía de categorías (parent_id) - Categorías genéricas (materiales, servicios, etc.) - Asignación de cuenta contable por categoría (opcional, integración con MGN-004) ### Alcance Excluido (❌ Fuera del Alcance) **Funcionalidades Avanzadas:** - ❌ CRM avanzado de partners (scoring, segmentación) - **Razón:** Va en MGN-009 (CRM) - ❌ Portal de proveedores/clientes - **Razón:** Va en MGN-013 (Portal) - ❌ Actualización automática de tasas de cambio (API externa) - **Razón:** No esencial para MVP (P1) - ❌ Conversiones de UoM entre categorías - **Razón:** No tiene sentido (kg a metros) - ❌ UoM compuestas (kg/m², m³/h) - **Razón:** Complejidad innecesaria (P2) **Específico de Industria:** - ❌ Partners con clasificación por industria (construcción, vidrio, etc.) - **Razón:** Específico de proyecto - ❌ Catálogo de productos - **Razón:** Va en MGN-005 (Inventario), aquí solo categorías ### Límites con Otros Módulos **Con MGN-002 (Empresas):** - **MGN-002 termina:** Empresa - **MGN-003 empieza:** Empresa también es un partner (company.partner_id) - **Límite:** Empresa tiene relación 1-1 con partner **Con MGN-004 (Financiero):** - **MGN-003 termina:** Partners, monedas - **MGN-004 empieza:** Facturas a partners, asientos con moneda - **Límite:** MGN-003 provee catálogos, MGN-004 los usa **Con MGN-005 (Inventario):** - **MGN-003 termina:** Categorías de productos, UoM - **MGN-005 empieza:** Productos (con categoría y UoM) - **Límite:** MGN-003 provee categorías y UoM, MGN-005 crea productos **Con MGN-006 (Compras) y MGN-007 (Ventas):** - **MGN-003 termina:** Partners (proveedores, clientes) - **MGN-006/007 empiezan:** Órdenes con partners - **Límite:** MGN-003 gestiona partners, MGN-006/007 crean transacciones ### Casos de Uso Principales 1. **UC-CAT-001:** Usuario crea un nuevo cliente/proveedor (partner) 2. **UC-CAT-002:** Usuario busca un partner por nombre/email/Tax ID 3. **UC-CAT-003:** Usuario configura condiciones de pago de partner 4. **UC-CAT-004:** Administrador actualiza tasas de cambio de monedas 5. **UC-CAT-005:** Usuario convierte cantidades entre UoM (kg a g) 6. **UC-CAT-006:** Administrador crea jerarquía de categorías de productos 7. **UC-CAT-007:** Usuario agrega contactos a un partner (parent_id) ### Actores - **Administrador:** Configura catálogos maestros - **Usuario Ventas:** Gestiona clientes (partners con is_customer=true) - **Usuario Compras:** Gestiona proveedores (partners con is_supplier=true) - **Usuario RRHH:** Gestiona empleados (partners con is_employee=true) - **Sistema:** Usa catálogos para validaciones y conversiones ### Referencias - **Odoo:** base (res.partner, res.country, res.currency, uom.uom) - **Gamilit:** core schema (partners, currencies, countries) - **ADR:** ADR-007 (Database Design) --- ## MGN-004: Financiero Básico ### Descripción Módulo de contabilidad general. Gestiona plan de cuentas, asientos contables, facturas, pagos, conciliación y reportes financieros básicos. ### Alcance Incluido (✅ Dentro del Alcance) **Plan de Cuentas:** - CRUD de cuentas contables (activo, pasivo, capital, ingresos, egresos) - Jerarquía de cuentas (parent_id) - Tipos de cuenta (view, payable, receivable, bank, cash, etc.) - Código de cuenta (numérico o alfanumérico) - Cuentas específicas por empresa (multi-empresa) - Templates de plan de cuentas por país (México, USA) **Asientos Contables:** - Creación de asientos (journal entries) con líneas (débito/crédito) - Validación débito = crédito (fundamental) - Estados: draft → posted (no editable después de posted) - Cancelación de asientos (reversing entry) - Asientos por journal (ventas, compras, banco, misceláneos) - Fecha de asiento vs fecha de registro - Asientos automáticos desde módulos transaccionales (facturas, pagos) **Facturas:** - Facturas de cliente (customer invoices) - Facturas de proveedor (vendor bills) - Notas de crédito (credit notes) - Estados: draft → open → paid → cancelled - Líneas de factura (productos/servicios, cantidad, precio, impuestos) - Cálculo automático de impuestos (IVA, retenciones) - Generación automática de asientos contables al validar factura - Multi-moneda (factura en USD, registro en MXN) **Pagos:** - Registro de pagos (customer payments, vendor payments) - Métodos de pago (efectivo, transferencia, cheque, tarjeta) - Pagos parciales - Conciliación de pagos con facturas (payment reconciliation) - Diferencias de pago (descuentos, redondeos) - Pagos anticipados (advance payments) **Reportes Financieros:** - Balance General (Balance Sheet) - Estado de Resultados (Profit & Loss / P&L) - Filtros: por empresa, por fecha, por moneda - Exportación: PDF, Excel **Multi-Moneda:** - Transacciones en moneda extranjera - Conversión automática a moneda de empresa - Gain/Loss por diferencia cambiaria - Reportes en múltiples monedas ### Alcance Excluido (❌ Fuera del Alcance) **Contabilidad Avanzada:** - ❌ Presupuestos financieros - **Razón:** Va en módulo específico o MGN-012 (P2) - ❌ Consolidación multi-empresa - **Razón:** Funcionalidad avanzada (P2) - ❌ Flujo de caja (Cash Flow) - **Razón:** Reporte avanzado (P1) - ❌ Activos fijos (depreciación) - **Razón:** Módulo especializado (P2) - ❌ Nómina contable - **Razón:** Va en MGN-010 (RRHH) - ❌ Facturación electrónica (CFDI México, e-invoicing) - **Razón:** Específico de país (extensión) **Reportes Avanzados:** - ❌ Reportes IFRS/GAAP específicos - **Razón:** Requiere consultoría contable (P2) - ❌ Dashboards financieros - **Razón:** Va en MGN-012 (Reportes y Analytics) - ❌ Análisis de varianzas - **Razón:** Reporte avanzado (P2) **Integraciones:** - ❌ Integración con SAT México (timbrado CFDI) - **Razón:** Específico de país (extensión) - ❌ Integración con bancos (conciliación automática) - **Razón:** Requiere APIs bancarias (P1) ### Límites con Otros Módulos **Con MGN-003 (Catálogos):** - **MGN-003 termina:** Partners, monedas - **MGN-004 empieza:** Facturas a partners, conversión de monedas - **Límite:** MGN-004 usa partners y monedas de MGN-003 **Con MGN-006 (Compras) y MGN-007 (Ventas):** - **MGN-006/007 terminan:** Órdenes de compra/venta - **MGN-004 empieza:** Facturas generadas desde órdenes, asientos contables - **Límite:** Órdenes pueden generar facturas, pero la factura es documento contable (MGN-004) **Con MGN-008 (Analítica):** - **MGN-004 termina:** Asientos contables en plan de cuentas general - **MGN-008 empieza:** Asientos con distribución analítica (por proyecto) - **Límite:** MGN-004 registra contabilidad general, MGN-008 registra contabilidad analítica (paralela) ### Casos de Uso Principales 1. **UC-FIN-001:** Contador crea asiento contable manual 2. **UC-FIN-002:** Sistema genera asiento automático al validar factura de venta 3. **UC-FIN-003:** Usuario crea factura de cliente 4. **UC-FIN-004:** Usuario registra pago de cliente 5. **UC-FIN-005:** Usuario concilia pago con factura 6. **UC-FIN-006:** Contador genera Balance General 7. **UC-FIN-007:** Contador genera Estado de Resultados 8. **UC-FIN-008:** Usuario crea factura de proveedor en USD (empresa en MXN) ### Actores - **Contador:** Gestiona plan de cuentas, asientos, reportes - **Usuario Ventas:** Crea facturas de cliente - **Usuario Compras:** Registra facturas de proveedor - **Usuario Tesorería:** Registra pagos, concilia - **Sistema:** Genera asientos automáticos, calcula impuestos ### Referencias - **Odoo:** account (account.account, account.move, account.payment) - **Gamilit:** financial_management schema - **ADR:** ADR-007 (Database Design) --- ## MGN-005: Inventario Básico ### Descripción Módulo de gestión de inventario. Maneja productos, almacenes, ubicaciones, movimientos de stock, trazabilidad y valoración de inventario. ### Alcance Incluido (✅ Dentro del Alcance) **Productos:** - CRUD de productos (bienes físicos y servicios) - Tipos de producto: almacenable (storable), consumible (consumable), servicio (service) - Datos de producto: nombre, descripción, código interno, código de barras - Categoría de producto (FK a MGN-003) - Unidad de medida (UoM) - FK a MGN-003 - Variantes de producto (producto con múltiples atributos: talla, color) - Precio de costo (para valoración) - Precio de venta (sugerido) **Almacenes y Ubicaciones:** - CRUD de almacenes (warehouses) - Ubicaciones jerárquicas (warehouse → zone → aisle → rack → level) - Tipos de ubicación: física, virtual (proveedores, clientes, producción, pérdidas) - Ubicación por defecto por almacén - Inventario por ubicación **Movimientos de Stock:** - Movimientos de stock (stock moves): origen → destino - Estados: draft → confirmed → done → cancelled - Cantidad movida, UoM - Doble movimiento (origen → tránsito → destino) para movimientos complejos - Movimientos automáticos desde órdenes de compra/venta - Movimientos manuales (ajustes, transferencias) **Pickings (Albaranes):** - Agrupación de movimientos: picking de recepción, entrega, interno - Estados: draft → ready → done - Validación parcial (recibir parte de una orden) - Impresión de albaranes (PDF) **Trazabilidad:** - Lotes (batch/lot): productos con fecha de lote (ej: lote de producción) - Números de serie (serial numbers): productos con número único (ej: computadoras) - Trazabilidad completa (de dónde vino, a dónde fue) **Valoración de Inventario:** - Métodos: FIFO (First In First Out), LIFO (Last In First Out), Costo Promedio - Cálculo automático de costo de producto - Asientos contables automáticos (si valoración automática activada) **Inventario Físico:** - Conteos de inventario (inventory adjustments) - Diferencias entre conteo físico y sistema - Generación de ajustes automáticos ### Alcance Excluido (❌ Fuera del Alcance) **Funcionalidades Avanzadas:** - ❌ Producción/Manufactura (MRP) - **Razón:** Módulo independiente (P2) - ❌ Kits/Bundles (productos compuestos) - **Razón:** Complejidad (P1) - ❌ Rutas de inventario complejas (push/pull rules) - **Razón:** Odoo avanzado (P2) - ❌ Estrategias de picking (FIFO, LIFO, FEFO) - **Razón:** Warehouse management avanzado (P2) - ❌ Codificación automática de productos - **Razón:** No es genérico - ❌ Imágenes de productos (galería) - **Razón:** P1, inicialmente 1 imagen **Específico de Industria:** - ❌ Productos con ficha técnica (construcción) - **Razón:** Específico de industria - ❌ Productos con explosión de insumos (APU) - **Razón:** Específico de construcción - ❌ Control de caducidad (FEFO) - **Razón:** Específico de alimentos/farmacia (P1) ### Límites con Otros Módulos **Con MGN-003 (Catálogos):** - **MGN-003 termina:** Categorías de productos, UoM - **MGN-005 empieza:** Productos con categoría y UoM - **Límite:** MGN-005 usa catálogos de MGN-003 **Con MGN-004 (Financiero):** - **MGN-005 termina:** Valoración de inventario (costo de producto) - **MGN-004 empieza:** Asientos contables de valoración - **Límite:** Si valoración automática activada, MGN-005 genera asientos en MGN-004 **Con MGN-006 (Compras):** - **MGN-006 termina:** Orden de compra confirmada - **MGN-005 empieza:** Picking de recepción, movimientos de stock - **Límite:** Confirmación de PO genera picking automáticamente **Con MGN-007 (Ventas):** - **MGN-007 termina:** Orden de venta confirmada - **MGN-005 empieza:** Picking de entrega, movimientos de stock - **Límite:** Confirmación de SO genera picking automáticamente ### Casos de Uso Principales 1. **UC-INV-001:** Usuario crea un nuevo producto almacenable 2. **UC-INV-002:** Usuario crea un almacén con ubicaciones 3. **UC-INV-003:** Usuario realiza transferencia interna de stock 4. **UC-INV-004:** Usuario recibe productos (desde orden de compra) 5. **UC-INV-005:** Usuario entrega productos (desde orden de venta) 6. **UC-INV-006:** Usuario realiza conteo de inventario físico 7. **UC-INV-007:** Sistema calcula valoración de inventario (FIFO) 8. **UC-INV-008:** Usuario consulta trazabilidad de lote/número de serie ### Actores - **Usuario Almacén:** Gestiona movimientos, recepciones, entregas - **Usuario Compras:** Recibe productos de proveedores - **Usuario Ventas:** Entrega productos a clientes - **Contador:** Consulta valoración de inventario - **Sistema:** Genera movimientos automáticos, calcula valoración ### Referencias - **Odoo:** stock (stock.warehouse, stock.location, stock.move, stock.picking, stock.quant) - **Gamilit:** inventory_management schema - **ADR:** ADR-007 (Database Design) --- ## MGN-006: Compras Básico ### Descripción Módulo de gestión de compras. Maneja proveedores, solicitudes de cotización, órdenes de compra, recepciones y facturación de proveedores. ### Alcance Incluido (✅ Dentro del Alcance) **Gestión de Proveedores:** - Proveedores son partners con is_supplier=true (MGN-003) - Condiciones de pago de proveedor - Lead time (tiempo de entrega) - Calificación de proveedor (supplier rank) **Solicitudes de Cotización (RFQ):** - Creación de RFQ a proveedores - Líneas de RFQ (productos, cantidades, precios esperados) - Envío de RFQ por email (PDF) - Estados: draft → sent → bid → cancelled **Órdenes de Compra:** - Creación de órdenes de compra (purchase orders) - Conversión de RFQ a PO - Líneas de PO (productos, cantidades, precio unitario, subtotal, impuestos, total) - Estados: draft → confirmed → received → billed → cancelled - Fechas: fecha de orden, fecha de entrega esperada - Términos de pago - Notas de orden **Workflow de Aprobación:** - Aprobación manual de órdenes (si monto > umbral) - Estados de aprobación: pending_approval → approved → rejected - Historial de aprobaciones **Recepciones:** - Integración con MGN-005 (Inventario) - Generación automática de picking de recepción al confirmar PO - Validación de recepción (parcial o total) - Control de cantidades recibidas vs ordenadas **Facturación de Proveedores:** - Integración con MGN-004 (Financiero) - Creación de factura de proveedor desde PO - Control de cantidades facturadas vs recibidas vs ordenadas (3-way match) - Validación de factura (genera asiento contable) **Reportes Básicos:** - Reporte de compras por proveedor - Reporte de compras por producto - Reporte de órdenes pendientes de recepción ### Alcance Excluido (❌ Fuera del Alcance) **Funcionalidades Avanzadas:** - ❌ Requisiciones de compra (purchase requisitions) - **Razón:** Proceso adicional (P1) - ❌ Acuerdos marco con proveedores (blanket orders) - **Razón:** Complejidad (P2) - ❌ Subastas inversas - **Razón:** No es común en mayoría de industrias (P2) - ❌ Comparación automática de cotizaciones - **Razón:** Funcionalidad avanzada (P1) - ❌ Integración con catálogos de proveedores (punchout) - **Razón:** Requiere integraciones externas (P2) - ❌ Workflow de aprobación complejo (múltiples niveles) - **Razón:** Inicialmente 1 nivel es suficiente (P1) **Específico de Industria:** - ❌ Gestión de contratos de construcción - **Razón:** Específico de industria - ❌ Retenciones de garantía - **Razón:** Puede ser específico de construcción ### Límites con Otros Módulos **Con MGN-003 (Catálogos):** - **MGN-003 termina:** Partners (proveedores) - **MGN-006 empieza:** Órdenes de compra a proveedores - **Límite:** MGN-006 usa proveedores de MGN-003 **Con MGN-004 (Financiero):** - **MGN-006 termina:** Orden de compra, recepción - **MGN-004 empieza:** Factura de proveedor (genera asiento contable) - **Límite:** PO puede generar factura de proveedor (vendor bill en MGN-004) **Con MGN-005 (Inventario):** - **MGN-006 termina:** Orden de compra confirmada - **MGN-005 empieza:** Picking de recepción, movimientos de stock - **Límite:** Confirmación de PO genera picking en MGN-005 **Con MGN-008 (Analítica):** - **MGN-006 termina:** Líneas de orden de compra - **MGN-008 empieza:** Distribución analítica de costos por proyecto - **Límite:** Líneas de PO pueden tener analytic_account_id ### Casos de Uso Principales 1. **UC-COM-001:** Usuario crea RFQ y envía a proveedores 2. **UC-COM-002:** Usuario convierte RFQ a orden de compra 3. **UC-COM-003:** Usuario crea orden de compra directamente 4. **UC-COM-004:** Sistema genera picking de recepción al confirmar PO 5. **UC-COM-005:** Usuario valida recepción de productos 6. **UC-COM-006:** Usuario crea factura de proveedor desde PO 7. **UC-COM-007:** Sistema valida 3-way match (PO vs Recepción vs Factura) 8. **UC-COM-008:** Aprobador aprueba/rechaza orden de compra ### Actores - **Usuario Compras:** Crea RFQ, órdenes de compra - **Aprobador Compras:** Aprueba órdenes > umbral - **Usuario Almacén:** Valida recepciones - **Contador:** Registra facturas de proveedor - **Sistema:** Genera pickings, valida 3-way match ### Referencias - **Odoo:** purchase (purchase.order, purchase.order.line) - **Gamilit:** purchasing_management schema - **ADR:** ADR-007 (Database Design) --- ## MGN-007: Ventas Básico ### Descripción Módulo de gestión de ventas. Maneja clientes, cotizaciones, órdenes de venta, entregas y facturación de clientes. ### Alcance Incluido (✅ Dentro del Alcance) **Gestión de Clientes:** - Clientes son partners con is_customer=true (MGN-003) - Condiciones de pago de cliente - Límite de crédito - Calificación de cliente (customer rank) **Cotizaciones:** - Creación de cotizaciones (quotations) - Líneas de cotización (productos, cantidades, precio unitario, descuentos, subtotal, impuestos, total) - Estados: draft → sent → sale → cancelled - Envío de cotización por email (PDF) - Validez de cotización (fecha de expiración) - Términos y condiciones **Órdenes de Venta:** - Conversión de cotización a orden de venta (sale order) - Creación directa de orden de venta - Líneas de SO (productos/servicios, cantidades, precio, descuentos, impuestos) - Estados: quotation → sale → delivery → invoice → done - Fechas: fecha de orden, fecha de entrega esperada - Notas de orden **Entregas:** - Integración con MGN-005 (Inventario) - Generación automática de picking de entrega al confirmar SO - Validación de entrega (parcial o total) - Control de cantidades entregadas vs ordenadas **Facturación de Clientes:** - Integración con MGN-004 (Financiero) - Creación de factura de cliente desde SO - Control de cantidades facturadas vs entregadas vs ordenadas - Validación de factura (genera asiento contable) - Facturación anticipada (down payment) **Portal de Clientes Básico:** - Cliente puede ver sus cotizaciones - Cliente puede aprobar cotización online - Firma electrónica de cotización (canvas HTML5) - (Funcionalidad completa en MGN-013) **Reportes Básicos:** - Reporte de ventas por cliente - Reporte de ventas por producto - Reporte de órdenes pendientes de entrega ### Alcance Excluido (❌ Fuera del Alcance) **Funcionalidades Avanzadas:** - ❌ Subscripciones/Ventas recurrentes - **Razón:** Modelo de negocio específico (P2) - ❌ Órdenes de venta con múltiples entregas (delivery schedules) - **Razón:** Complejidad (P1) - ❌ Pricing rules complejos (descuentos escalonados) - **Razón:** Funcionalidad avanzada (P1) - ❌ Comisiones de ventas - **Razón:** Módulo independiente (P2) - ❌ Contratos de venta - **Razón:** Complejidad (P2) - ❌ Integración con e-commerce - **Razón:** Requiere plataforma externa (extensión) **Específico de Industria:** - ❌ Gestión de proyectos de venta - **Razón:** Va en MGN-011 (Proyectos) - ❌ Venta de servicios profesionales con timesheet - **Razón:** Combina MGN-007 + MGN-011 ### Límites con Otros Módulos **Con MGN-003 (Catálogos):** - **MGN-003 termina:** Partners (clientes) - **MGN-007 empieza:** Cotizaciones y órdenes de venta a clientes - **Límite:** MGN-007 usa clientes de MGN-003 **Con MGN-004 (Financiero):** - **MGN-007 termina:** Orden de venta, entrega - **MGN-004 empieza:** Factura de cliente (genera asiento contable) - **Límite:** SO puede generar factura de cliente (customer invoice en MGN-004) **Con MGN-005 (Inventario):** - **MGN-007 termina:** Orden de venta confirmada - **MGN-005 empieza:** Picking de entrega, movimientos de stock - **Límite:** Confirmación de SO genera picking en MGN-005 **Con MGN-008 (Analítica):** - **MGN-007 termina:** Líneas de orden de venta - **MGN-008 empieza:** Distribución analítica de ingresos por proyecto - **Límite:** Líneas de SO pueden tener analytic_account_id **Con MGN-009 (CRM):** - **MGN-009 termina:** Oportunidad de venta (lead) - **MGN-007 empieza:** Cotización creada desde oportunidad - **Límite:** Lead puede convertirse en quotation **Con MGN-013 (Portal):** - **MGN-007 termina:** Creación de cotización - **MGN-013 empieza:** Vista de cotización en portal, aprobación - **Límite:** MGN-007 tiene portal básico, MGN-013 tiene portal completo ### Casos de Uso Principales 1. **UC-VEN-001:** Usuario crea cotización y envía a cliente 2. **UC-VEN-002:** Cliente aprueba cotización online (portal básico) 3. **UC-VEN-003:** Usuario convierte cotización a orden de venta 4. **UC-VEN-004:** Sistema genera picking de entrega al confirmar SO 5. **UC-VEN-005:** Usuario valida entrega de productos 6. **UC-VEN-006:** Usuario crea factura de cliente desde SO 7. **UC-VEN-007:** Usuario registra pago de cliente (MGN-004) 8. **UC-VEN-008:** Usuario consulta reporte de ventas por cliente ### Actores - **Usuario Ventas:** Crea cotizaciones, órdenes de venta - **Usuario Almacén:** Valida entregas - **Contador:** Genera facturas de cliente - **Cliente (Portal):** Aprueba cotizaciones online - **Sistema:** Genera pickings, facturas ### Referencias - **Odoo:** sale (sale.order, sale.order.line) - **Gamilit:** sales_management schema - **ADR:** ADR-007 (Database Design) --- ## MGN-008: Contabilidad Analítica ### Descripción Módulo de contabilidad analítica. Permite tracking de costos e ingresos por proyecto, departamento, centro de costo. Es paralelo a la contabilidad general (MGN-004). ### Alcance Incluido (✅ Dentro del Alcance) **Cuentas Analíticas:** - CRUD de cuentas analíticas (analytic accounts) - Tipos: proyecto, departamento, centro de costo, cliente - Jerarquía (parent_id): proyectos con sub-proyectos - Estado: activo/inactivo - Presupuesto asignado (opcional) - Vinculación con company_id (multi-empresa) **Líneas Analíticas:** - Registro automático de líneas analíticas desde transacciones - Líneas con: cuenta analítica, monto, fecha, descripción, documento origen - Líneas de costo (negativas) e ingreso (positivas) - Agrupación por cuenta analítica **Distribución Analítica:** - Una transacción puede distribuirse a múltiples cuentas analíticas - Porcentaje de distribución (ej: 60% Proyecto A, 40% Proyecto B) - Validación: suma de porcentajes = 100% **Integración con Módulos Transaccionales:** - Campo `analytic_account_id` en: - Líneas de factura (MGN-004) - Líneas de orden de compra (MGN-006) - Líneas de orden de venta (MGN-007) - Timesheet de empleados (MGN-010) - Tareas de proyectos (MGN-011) - Generación automática de líneas analíticas al confirmar documentos **Tags Analíticos:** - Etiquetas adicionales (ej: torre, etapa, fase) - Múltiples tags por línea analítica - Filtros por tags en reportes **Reportes Analíticos:** - Balance por cuenta analítica (costos vs ingresos) - P&L por proyecto - Comparación presupuesto vs real - Reporte de rentabilidad por proyecto - Filtros: por fecha, empresa, tipo de cuenta ### Alcance Excluido (❌ Fuera del Alcance) **Funcionalidades Avanzadas:** - ❌ Presupuestos complejos (revisiones, versiones) - **Razón:** Funcionalidad avanzada (P1) - ❌ Alertas de sobre-presupuesto - **Razón:** Funcionalidad avanzada (P1) - ❌ Forecast (proyecciones) - **Razón:** Requiere algoritmos (P2) - ❌ Cross-charging (facturación inter-proyectos) - **Razón:** Complejidad (P2) **Específico de Industria:** - ❌ APU (Análisis de Precio Unitario) construcción - **Razón:** Específico de construcción - ❌ Curva S - **Razón:** Específico de construcción - ❌ Costos por fase de obra - **Razón:** Puede modelarse con tags analíticos ### Límites con Otros Módulos **Con MGN-004 (Financiero):** - **MGN-004 termina:** Asientos en contabilidad general - **MGN-008 empieza:** Distribución analítica de asientos - **Límite:** Contabilidad general y analítica son paralelas (una transacción genera asiento en ambas) **Con MGN-006 (Compras) y MGN-007 (Ventas):** - **MGN-006/007 terminan:** Líneas de órdenes - **MGN-008 empieza:** Campo analytic_account_id en líneas - **Límite:** Órdenes registran costos/ingresos en cuentas analíticas **Con MGN-011 (Proyectos):** - **MGN-011 termina:** Proyecto como entidad - **MGN-008 empieza:** Proyecto tiene cuenta analítica asociada (1-1) - **Límite:** Un proyecto MGN-011 = una cuenta analítica MGN-008 **Con MGN-012 (Reportes):** - **MGN-008 termina:** Datos de líneas analíticas - **MGN-012 empieza:** Reportes consolidados, dashboards - **Límite:** MGN-012 consume datos de MGN-008 ### Casos de Uso Principales 1. **UC-ANA-001:** Administrador crea cuenta analítica para proyecto 2. **UC-ANA-002:** Usuario asigna cuenta analítica a línea de orden de compra 3. **UC-ANA-003:** Sistema genera líneas analíticas al validar factura 4. **UC-ANA-004:** Usuario distribuye costo a múltiples cuentas analíticas 5. **UC-ANA-005:** Usuario consulta balance por cuenta analítica (P&L por proyecto) 6. **UC-ANA-006:** Usuario compara presupuesto vs real 7. **UC-ANA-007:** Usuario filtra líneas analíticas por tags ### Actores - **Administrador Proyectos:** Crea cuentas analíticas - **Usuario Compras/Ventas:** Asigna cuentas analíticas a transacciones - **Gerente de Proyecto:** Consulta rentabilidad de proyecto - **Contador:** Genera reportes analíticos - **Sistema:** Genera líneas analíticas automáticamente ### Referencias - **Odoo:** analytic (account.analytic.account, account.analytic.line) - **ADR:** ADR-007 (Database Design) - **Importancia:** ⭐⭐⭐⭐⭐ CRÍTICO para ERPs de proyectos --- ## MGN-009: CRM Básico ### Descripción Módulo de gestión de relaciones con clientes (CRM). Maneja leads, oportunidades, pipeline de ventas, actividades y conversión a cotizaciones. ### Alcance Incluido (✅ Dentro del Alcance) **Gestión de Leads/Oportunidades:** - CRUD de leads (contactos interesados) - Datos de lead: nombre, empresa, email, teléfono, fuente (website, referral, etc.) - Conversión de lead a oportunidad - Oportunidades con: monto estimado, probabilidad de cierre, fecha esperada - Vinculación con partner (MGN-003) **Pipeline de Ventas:** - Stages personalizables (ej: Prospección → Calificación → Propuesta → Negociación → Ganado/Perdido) - Drag-and-drop entre stages (kanban) - Probabilidad de cierre por stage - Revenue estimado por stage **Actividades y Seguimiento:** - Programación de actividades (llamadas, reuniones, emails) - Estados: pendiente → completada → vencida - Recordatorios - Notas de actividad **Lead Scoring:** - Scoring automático basado en criterios (ej: tamaño empresa, industria, interacción) - Calificación: hot, warm, cold **Teams de Ventas:** - CRUD de equipos de ventas - Asignación de leads a equipos - Objetivos de ventas por equipo (opcional) **Conversión a Cotización:** - Botón "Crear Cotización" desde oportunidad - Pre-llenado de datos (cliente, productos, monto) - Vínculo entre oportunidad (MGN-009) y cotización (MGN-007) **Reportes CRM:** - Reporte de oportunidades por stage - Reporte de conversión rate - Reporte de rendimiento por vendedor - Embudo de ventas (funnel) ### Alcance Excluido (❌ Fuera del Alcance) **Funcionalidades Avanzadas:** - ❌ Marketing automation (campaigns, email marketing) - **Razón:** Módulo independiente (P2) - ❌ Integración con redes sociales - **Razón:** Requiere APIs externas (P2) - ❌ Predicción de cierre con ML - **Razón:** Complejidad (P3) - ❌ CRM avanzado (customer journey, customer lifetime value) - **Razón:** Funcionalidad avanzada (P2) - ❌ Atención al cliente (tickets, helpdesk) - **Razón:** Módulo independiente (P2) **Integraciones:** - ❌ Integración con email (Gmail, Outlook) - **Razón:** Requiere APIs externas (P1) - ❌ Integración con teléfono (VoIP) - **Razón:** Requiere infraestructura (P2) ### Límites con Otros Módulos **Con MGN-003 (Catálogos):** - **MGN-003 termina:** Partners (clientes potenciales) - **MGN-009 empieza:** Leads que se convierten en partners - **Límite:** Un lead puede crear un partner al calificarse **Con MGN-007 (Ventas):** - **MGN-009 termina:** Oportunidad - **MGN-007 empieza:** Cotización creada desde oportunidad - **Límite:** Oportunidad puede generar cotización (sale.order) **Con MGN-014 (Mensajería):** - **MGN-009 termina:** Lead, oportunidad - **MGN-014 empieza:** Actividades, recordatorios, notificaciones - **Límite:** MGN-009 usa sistema de actividades de MGN-014 ### Casos de Uso Principales 1. **UC-CRM-001:** Usuario crea un nuevo lead 2. **UC-CRM-002:** Usuario califica lead y convierte a oportunidad 3. **UC-CRM-003:** Usuario mueve oportunidad entre stages (drag-and-drop) 4. **UC-CRM-004:** Usuario programa llamada de seguimiento 5. **UC-CRM-005:** Usuario convierte oportunidad a cotización 6. **UC-CRM-006:** Usuario marca oportunidad como ganada/perdida 7. **UC-CRM-007:** Gerente consulta embudo de ventas (funnel) ### Actores - **Vendedor:** Gestiona leads, oportunidades, actividades - **Gerente de Ventas:** Consulta reportes, gestiona equipos - **Sistema:** Calcula scoring, envía recordatorios ### Referencias - **Odoo:** crm (crm.lead, crm.stage, crm.team) - **ADR:** ADR-007 (Database Design) --- ## MGN-010: RRHH Básico ### Descripción Módulo de recursos humanos. Maneja empleados, departamentos, contratos, asistencias, ausencias y timesheet básico. ### Alcance Incluido (✅ Dentro del Alcance) **Gestión de Empleados:** - CRUD de empleados - Datos personales: nombre, email, teléfono, dirección, fecha de nacimiento - Datos laborales: puesto (job position), departamento, manager, fecha de ingreso - Empleado vinculado a partner (is_employee=true) y user (opcional) - Estado: activo/inactivo - Foto de empleado **Departamentos y Puestos:** - CRUD de departamentos - Jerarquía de departamentos (parent_id) - Jefe de departamento (manager) - CRUD de puestos de trabajo (job positions) - Descripción de puesto **Contratos Laborales:** - CRUD de contratos - Tipos de contrato: indefinido, temporal, honorarios - Datos de contrato: salario, fecha inicio, fecha fin (opcional), puesto, tipo de jornada - Estados: draft → running → expired → cancelled **Asistencias:** - Check-in/Check-out (registro de entrada/salida) - Cálculo automático de horas trabajadas - Reporte de asistencias por empleado - Reporte de asistencias por departamento **Ausencias y Permisos:** - CRUD de tipos de ausencia (vacaciones, incapacidad, permiso sin goce) - Solicitudes de ausencia (leave requests) - Estados: draft → pending_approval → approved → refused - Workflow de aprobación (manager aprueba) - Saldo de días de vacaciones **Organigrama:** - Visualización jerárquica de empleados (por manager) - Visualización por departamento **Timesheet Básico:** - Registro de horas trabajadas por día - Asignación de horas a cuenta analítica (MGN-008) - Validación de horas (manager aprueba) ### Alcance Excluido (❌ Fuera del Alcance) **Nómina:** - ❌ Cálculo de nómina (salario, deducciones, impuestos) - **Razón:** Módulo especializado, específico de país (P1) - ❌ Recibos de nómina - **Razón:** Va con módulo de nómina (P1) - ❌ Integración con bancos (pago de nómina) - **Razón:** Requiere APIs bancarias (P2) **Funcionalidades Avanzadas:** - ❌ Evaluaciones de desempeño - **Razón:** Módulo independiente (P2) - ❌ Reclutamiento (job postings, applicants) - **Razón:** Módulo independiente (P2) - ❌ Capacitación y desarrollo - **Razón:** Módulo independiente (P2) - ❌ Gestión de beneficios - **Razón:** Complejidad (P2) - ❌ Gastos de empleados (expense reports) - **Razón:** Módulo independiente (P1) ### Límites con Otros Módulos **Con MGN-001 (Fundamentos):** - **MGN-001 termina:** Users - **MGN-010 empieza:** Empleados vinculados a users - **Límite:** Un user puede ser empleado (employee_id) **Con MGN-003 (Catálogos):** - **MGN-003 termina:** Partners - **MGN-010 empieza:** Empleados vinculados a partners (is_employee=true) - **Límite:** Un empleado es un partner **Con MGN-008 (Analítica):** - **MGN-010 termina:** Timesheet (horas trabajadas) - **MGN-008 empieza:** Líneas analíticas desde timesheet - **Límite:** Horas de timesheet generan líneas analíticas **Con MGN-011 (Proyectos):** - **MGN-010 termina:** Timesheet de empleado - **MGN-011 empieza:** Timesheet asignado a tareas - **Límite:** Timesheet puede vincularse a tareas de proyectos ### Casos de Uso Principales 1. **UC-HR-001:** RRHH crea un nuevo empleado 2. **UC-HR-002:** RRHH asigna empleado a departamento y puesto 3. **UC-HR-003:** RRHH crea contrato de trabajo 4. **UC-HR-004:** Empleado registra check-in/check-out 5. **UC-HR-005:** Empleado solicita vacaciones 6. **UC-HR-006:** Manager aprueba/rechaza solicitud de vacaciones 7. **UC-HR-007:** Empleado registra timesheet (horas trabajadas por proyecto) 8. **UC-HR-008:** Manager valida timesheet de empleado ### Actores - **RRHH:** Gestiona empleados, contratos, ausencias - **Manager:** Aprueba ausencias, valida timesheet - **Empleado:** Registra asistencias, solicita ausencias, registra timesheet - **Sistema:** Calcula horas trabajadas, saldo de vacaciones ### Referencias - **Odoo:** hr (hr.employee, hr.contract, hr.attendance, hr.leave) - **Gamilit:** hr_management schema - **ADR:** ADR-007 (Database Design) --- ## MGN-011: Proyectos Genéricos ### Descripción Módulo de gestión de proyectos genéricos. Maneja proyectos, tareas, milestones, timesheet y portal de proyectos para clientes. ### Alcance Incluido (✅ Dentro del Alcance) **Gestión de Proyectos:** - CRUD de proyectos - Datos de proyecto: nombre, descripción, cliente (partner), manager, fecha inicio/fin - Estados: draft → active → completed → cancelled - Proyecto vinculado a cuenta analítica (1-1) - MGN-008 - Proyecto vinculado a empresa (company_id) **Tareas:** - CRUD de tareas (tasks) - Datos de tarea: nombre, descripción, proyecto, asignado a, fecha límite, prioridad - Estados configurables por proyecto (stages): To Do → In Progress → Review → Done - Kanban de tareas (drag-and-drop entre stages) - Subtareas (parent_id) - Dependencias entre tareas (opcional P1) **Milestones:** - CRUD de milestones (hitos importantes) - Fecha de milestone, estado (pendiente, completado) - Tareas asociadas a milestone **Timesheet:** - Integración con MGN-010 (RRHH) - Registro de horas trabajadas por tarea - Validación de horas (manager aprueba) - Horas generan líneas analíticas (MGN-008) **Gantt:** - Vista de timeline de tareas - Visualización de dependencias - Drag-and-drop para reprogramar **Portal de Proyectos:** - Cliente puede ver sus proyectos - Cliente puede ver tareas (read-only) - Cliente puede comentar en tareas - (Funcionalidad completa en MGN-013) **Reportes Básicos:** - Reporte de tareas por proyecto - Reporte de horas trabajadas por proyecto - Reporte de milestones cumplidos vs pendientes ### Alcance Excluido (❌ Fuera del Alcance) **Funcionalidades Avanzadas:** - ❌ Gestión de recursos (resource allocation) - **Razón:** Complejidad (P2) - ❌ Critical Path Method (CPM) - **Razón:** Algoritmo complejo (P2) - ❌ Baseline de proyectos (versiones de plan) - **Razón:** Funcionalidad avanzada (P2) - ❌ Issues/Bugs tracking - **Razón:** Puede ser módulo independiente (P2) - ❌ Wiki de proyecto - **Razón:** Requiere editor avanzado (P2) **Específico de Industria:** - ❌ Proyectos de construcción (manzanas, lotes, prototipos) - **Razón:** Específico de construcción (extensión) - ❌ Curva S, APU - **Razón:** Específico de construcción - ❌ Control de avances físicos - **Razón:** Específico de construcción ### Límites con Otros Módulos **Con MGN-003 (Catálogos):** - **MGN-003 termina:** Partners (clientes) - **MGN-011 empieza:** Proyectos con cliente (partner_id) - **Límite:** Proyecto tiene cliente **Con MGN-008 (Analítica):** - **MGN-011 termina:** Proyecto como entidad de gestión - **MGN-008 empieza:** Proyecto tiene cuenta analítica (1-1) - **Límite:** Un proyecto MGN-011 = una cuenta analítica MGN-008 **Con MGN-010 (RRHH):** - **MGN-010 termina:** Timesheet de empleado - **MGN-011 empieza:** Timesheet asignado a tareas - **Límite:** Horas de timesheet se asignan a tareas **Con MGN-013 (Portal):** - **MGN-011 termina:** Proyecto y tareas - **MGN-013 empieza:** Vista de proyecto en portal para cliente - **Límite:** MGN-011 tiene portal básico, MGN-013 tiene portal completo ### Casos de Uso Principales 1. **UC-PRO-001:** Manager crea un nuevo proyecto 2. **UC-PRO-002:** Manager crea tareas en proyecto 3. **UC-PRO-003:** Usuario asignado mueve tarea entre stages (kanban) 4. **UC-PRO-004:** Empleado registra horas trabajadas en tarea 5. **UC-PRO-005:** Manager valida timesheet de tarea 6. **UC-PRO-006:** Manager crea milestone y asocia tareas 7. **UC-PRO-007:** Cliente ve avance de proyecto en portal 8. **UC-PRO-008:** Usuario consulta Gantt de proyecto ### Actores - **Manager de Proyecto:** Gestiona proyectos, tareas, milestones - **Usuario Asignado:** Trabaja en tareas, registra horas - **Cliente (Portal):** Ve avance de proyecto - **Sistema:** Genera líneas analíticas desde timesheet ### Referencias - **Odoo:** project (project.project, project.task, project.milestone) - **Gamilit:** projects_management schema - **ADR:** ADR-007 (Database Design) --- ## MGN-012: Reportes y Analytics ### Descripción Módulo de reportes y analytics avanzados. Proporciona dashboards, reportes configurables, exportación de datos y visualizaciones. ### Alcance Incluido (✅ Dentro del Alcance) **Dashboards:** - Dashboard genérico con widgets configurables - Widgets: KPIs (números), gráficos (línea, barra, pie), tablas - Configuración por rol (cada rol ve su dashboard) - Filtros globales (fecha, empresa, proyecto) **Reportes Configurables:** - Query builder visual (sin SQL) - Selección de campos, filtros, agrupaciones, ordenamiento - Guardado de reportes personalizados - Compartir reportes con otros usuarios **Reportes Financieros Estándar:** - Balance General (integración con MGN-004) - Estado de Resultados / P&L (integración con MGN-004) - Flujo de Caja (Cash Flow) - P1 **Reportes Analíticos:** - P&L por proyecto (integración con MGN-008) - Balance por cuenta analítica - Comparación presupuesto vs real **KPIs Genéricos:** - KPIs de ventas (monto vendido, # órdenes, ticket promedio) - KPIs de compras (monto comprado, # órdenes, proveedores activos) - KPIs de inventario (valor de stock, rotación) - KPIs financieros (cuentas por cobrar, cuentas por pagar, liquidez) **Exportación:** - Exportación a PDF (con header/footer de empresa) - Exportación a Excel (con formato) - Exportación a CSV - Programación de reportes (envío por email automático) - P1 **Gráficos y Visualizaciones:** - Librería de gráficos (Chart.js o Recharts) - Tipos: línea, barra, pie, área, scatter - Gráficos interactivos (zoom, tooltips) ### Alcance Excluido (❌ Fuera del Alcance) **Funcionalidades Avanzadas:** - ❌ BI avanzado (OLAP, cubos) - **Razón:** Complejidad (P3) - ❌ Predicciones con ML - **Razón:** Requiere data science (P3) - ❌ Integración con herramientas BI externas (Power BI, Tableau) - **Razón:** Requiere APIs (P2) - ❌ Data warehouse - **Razón:** Infraestructura adicional (P3) **Reportes Específicos:** - ❌ Reportes específicos de industria - **Razón:** Van en extensiones específicas ### Límites con Otros Módulos **Con MGN-004 (Financiero):** - **MGN-004 termina:** Datos contables - **MGN-012 empieza:** Reportes financieros (Balance, P&L) - **Límite:** MGN-012 consume datos de MGN-004 **Con MGN-008 (Analítica):** - **MGN-008 termina:** Datos analíticos - **MGN-012 empieza:** Reportes analíticos (P&L por proyecto) - **Límite:** MGN-012 consume datos de MGN-008 **Con Todos los Módulos:** - **Otros módulos terminan:** Generación de datos - **MGN-012 empieza:** Consumo y visualización de datos - **Límite:** MGN-012 es capa de reporting sobre todos los módulos ### Casos de Uso Principales 1. **UC-REP-001:** Usuario consulta dashboard de ventas 2. **UC-REP-002:** Contador genera Balance General 3. **UC-REP-003:** Gerente genera P&L por proyecto 4. **UC-REP-004:** Usuario crea reporte personalizado con query builder 5. **UC-REP-005:** Usuario exporta reporte a Excel 6. **UC-REP-006:** Usuario programa envío de reporte por email (semanal) 7. **UC-REP-007:** Usuario visualiza gráfico de ventas por mes ### Actores - **Contador:** Genera reportes financieros - **Gerente:** Consulta dashboards, KPIs - **Administrador:** Configura reportes por rol - **Usuario:** Crea reportes personalizados ### Referencias - **Odoo:** account (reports), reporting - **Gamilit:** analytics module - **ADR:** ADR-007 (Database Design) --- ## MGN-013: Portal de Usuarios ### Descripción Módulo de portal para usuarios externos (clientes, proveedores). Permite acceso limitado a documentos, aprobación de cotizaciones, firma electrónica y vista de proyectos. ### Alcance Incluido (✅ Dentro del Alcance) **Acceso Portal:** - Usuarios con rol `portal_user` (is_portal=true) - Login separado (subdomain o /portal) - RLS estricto (usuario solo ve sus registros) - Permisos read-only + acciones permitidas (aprobar, firmar) **Vista de Documentos:** - Cotizaciones (MGN-007): ver, aprobar, firmar - Órdenes de venta (MGN-007): ver estado, entregas - Facturas (MGN-004): ver, descargar PDF - Pagos (MGN-004): ver estado - Proyectos (MGN-011): ver avance, tareas, comentar **Aprobación de Documentos:** - Aprobación de cotizaciones online - Estados: pending → approved → rejected - Historial de aprobaciones **Firma Electrónica:** - Canvas HTML5 para firma - Almacenamiento seguro de firma (base64 en DB o S3) - Firma válida legalmente (con timestamp, IP, user agent) - PDF firmado (con imagen de firma) **Mensajería:** - Integración con MGN-014 - Cliente puede comentar en documentos - Cliente puede enviar mensajes a empresa - Notificaciones por email **Dashboard Personalizado:** - Dashboard por rol (cliente ve sus órdenes, facturas, proyectos) - KPIs básicos (monto pendiente, órdenes activas) ### Alcance Excluido (❌ Fuera del Alcance) **Funcionalidades Avanzadas:** - ❌ Portal de proveedores (RFQ online, respuesta de cotización) - **Razón:** Caso de uso específico (P1) - ❌ Portal de empleados - **Razón:** Puede ser extensión de MGN-010 (P2) - ❌ Customización completa de portal por cliente - **Razón:** Complejidad (P2) - ❌ White-label portal (custom branding por cliente) - **Razón:** Requiere infraestructura (P2) **Integraciones:** - ❌ Integración con e-signature providers (DocuSign, etc.) - **Razón:** Requiere APIs externas (P2) ### Límites con Otros Módulos **Con MGN-001 (Fundamentos):** - **MGN-001 termina:** Autenticación de usuarios - **MGN-013 empieza:** Portal con rol portal_user - **Límite:** Portal usa autenticación de MGN-001 **Con MGN-007 (Ventas):** - **MGN-007 termina:** Cotizaciones, órdenes - **MGN-013 empieza:** Vista de cotizaciones en portal, aprobación - **Límite:** Portal consume datos de MGN-007 **Con MGN-011 (Proyectos):** - **MGN-011 termina:** Proyectos, tareas - **MGN-013 empieza:** Vista de proyectos en portal - **Límite:** Portal consume datos de MGN-011 **Con MGN-014 (Mensajería):** - **MGN-014 termina:** Sistema de mensajes - **MGN-013 empieza:** Mensajes en portal - **Límite:** Portal usa mensajería de MGN-014 ### Casos de Uso Principales 1. **UC-POR-001:** Cliente inicia sesión en portal 2. **UC-POR-002:** Cliente ve sus cotizaciones pendientes 3. **UC-POR-003:** Cliente aprueba cotización online 4. **UC-POR-004:** Cliente firma cotización electrónicamente 5. **UC-POR-005:** Cliente ve avance de su proyecto 6. **UC-POR-006:** Cliente descarga factura en PDF 7. **UC-POR-007:** Cliente envía mensaje a empresa desde portal ### Actores - **Cliente (Portal):** Ve documentos, aprueba, firma - **Proveedor (Portal):** Ve órdenes de compra (opcional P1) - **Empleado Empresa:** Responde mensajes de portal - **Sistema:** Valida permisos, notifica aprobaciones ### Referencias - **Odoo:** portal (portal.user, portal access) - **ADR:** ADR-006 (RBAC), ADR-007 (Database Design) - **Importancia:** ⭐⭐⭐⭐⭐ CRÍTICO para portal derechohabientes INFONAVIT --- ## MGN-014: Mensajería y Notificaciones ### Descripción Módulo de mensajería y notificaciones. Proporciona sistema de mensajes (chatter), notificaciones, tracking automático de cambios, actividades y followers. ### Alcance Incluido (✅ Dentro del Alcance) **Sistema de Mensajes (Chatter):** - Patrón mail.thread de Odoo - Chatter por registro (comentarios en facturas, órdenes, proyectos, etc.) - Tipos de mensaje: note (interno), comment (visible a followers) - Adjuntos en mensajes **Notificaciones:** - Notificaciones in-app (campana con badge de conteo) - Notificaciones por email - Push notifications (opcional P1, para mobile) - Preferencias de notificación por usuario **Tracking Automático de Cambios:** - Decorador `@TrackChanges(['status', 'amount', 'assigned_to'])` - Registro automático de cambios en campos configurados - Mensaje automático en chatter: "Usuario X cambió Status de Draft a Confirmed" - Auditoría sin código adicional **Actividades Programadas:** - CRUD de actividades (llamadas, reuniones, emails, tareas) - Fecha/hora de actividad, asignado a, tipo, descripción - Estados: pendiente → completada → vencida - Recordatorios automáticos (1 día antes, 1 hora antes) - Integración con calendario (opcional P1) **Followers (Seguidores):** - Usuarios pueden seguir registros (follow/unfollow) - Followers reciben notificaciones automáticas de cambios - Agregar followers automáticamente (ej: vendedor sigue sus órdenes) **Templates de Email:** - Templates configurables (Handlebars o similar) - Variables: {{user.name}}, {{order.amount}}, etc. - Envío de emails desde templates (cotizaciones, facturas, etc.) **Mensajería en Tiempo Real:** - WebSocket con Socket.IO - Notificaciones push instantáneas - Mejor UX vs polling ### Alcance Excluido (❌ Fuera del Alcance) **Funcionalidades Avanzadas:** - ❌ Chat en tiempo real (Slack-like) - **Razón:** Requiere infraestructura compleja (P2) - ❌ Videollamadas - **Razón:** Requiere WebRTC (P3) - ❌ Integración con email (Gmail, Outlook) - **Razón:** Requiere APIs externas (P1) - ❌ SMS notifications - **Razón:** Requiere proveedor SMS (P2) - ❌ Email marketing - **Razón:** Módulo independiente (P2) ### Límites con Otros Módulos **Con Todos los Módulos:** - **Otros módulos terminan:** Creación/actualización de registros - **MGN-014 empieza:** Tracking de cambios, notificaciones - **Límite:** MGN-014 es transversal, todos los módulos pueden usar chatter y notificaciones ### Casos de Uso Principales 1. **UC-NOT-001:** Usuario comenta en orden de venta (chatter) 2. **UC-NOT-002:** Sistema registra cambio automático (tracking) 3. **UC-NOT-003:** Usuario recibe notificación in-app 4. **UC-NOT-004:** Usuario configura preferencias de notificación 5. **UC-NOT-005:** Usuario programa actividad (llamada a cliente) 6. **UC-NOT-006:** Sistema envía recordatorio de actividad vencida 7. **UC-NOT-007:** Usuario sigue orden de compra (follow) 8. **UC-NOT-008:** Sistema envía email desde template ### Actores - **Usuario:** Comenta, crea actividades, recibe notificaciones - **Sistema:** Registra cambios automáticamente, envía notificaciones - **Administrador:** Configura templates de email ### Referencias - **Odoo:** mail (mail.thread, mail.message, mail.followers, mail.activity) - **Gamilit:** notifications_management schema - **ADR:** ADR-007 (Database Design) - **Importancia:** ⭐⭐⭐⭐⭐ ESENCIAL para auditoría y colaboración --- ## Resumen de Alcance ### Total de Funcionalidades | Módulo | Funcionalidades Incluidas | Funcionalidades Excluidas | Ratio Incluidas/Excluidas | |--------|---------------------------|---------------------------|---------------------------| | MGN-001 | 8 (Auth, Users, RBAC, Multi-tenancy) | 9 (OAuth, 2FA, SSO, etc.) | 47% | | MGN-002 | 5 (Empresas, Multi-empresa, Holdings) | 4 (Consolidación, Transfers, etc.) | 56% | | MGN-003 | 8 (Partners, Countries, Currencies, UoM) | 5 (CRM avanzado, Portal, etc.) | 62% | | MGN-004 | 10 (Contabilidad general completa) | 7 (Presupuestos, Activos fijos, etc.) | 59% | | MGN-005 | 10 (Inventario completo) | 6 (MRP, Kits, Rutas, etc.) | 63% | | MGN-006 | 8 (Compras completo) | 5 (Requisiciones, Acuerdos marco, etc.) | 62% | | MGN-007 | 9 (Ventas completo) | 6 (Subscripciones, Comisiones, etc.) | 60% | | MGN-008 | 7 (Analítica completa) | 4 (Presupuestos avanzados, etc.) | 64% | | MGN-009 | 8 (CRM básico) | 5 (Marketing automation, etc.) | 62% | | MGN-010 | 9 (RRHH básico) | 6 (Nómina, Reclutamiento, etc.) | 60% | | MGN-011 | 8 (Proyectos genéricos) | 5 (Resource allocation, CPM, etc.) | 62% | | MGN-012 | 7 (Reportes y dashboards) | 4 (BI avanzado, ML, etc.) | 64% | | MGN-013 | 6 (Portal básico) | 4 (Portal proveedores, White-label, etc.) | 60% | | MGN-014 | 8 (Mensajería completa) | 5 (Chat, Videollamadas, SMS, etc.) | 62% | | **TOTAL** | **111** | **75** | **60%** | **Promedio:** 60% de funcionalidades incluidas vs 40% excluidas (para evitar over-engineering) --- ## Próximos Pasos 1. **Validar alcance con stakeholders:** Revisar que funcionalidades incluidas son suficientes para MVP 2. **Crear DEPENDENCIAS-MODULOS.md:** Documentar orden de implementación basado en dependencias 3. **Diseñar database schemas:** Crear DDL de cada módulo (Fase 2) 4. **Diseñar APIs:** Crear especificaciones OpenAPI 3.0 (Fase 2) --- **Documento creado:** 2025-11-23 **Versión:** 1.0 **Autor:** Architecture-Analyst **Estado:** ✅ Completado **Próximo documento:** DEPENDENCIAS-MODULOS.md