60 KiB
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
- UC-AUTH-001: Usuario se registra en el sistema
- UC-AUTH-002: Usuario inicia sesión
- UC-AUTH-003: Usuario solicita reset de contraseña
- UC-AUTH-004: Administrador crea un nuevo usuario
- UC-AUTH-005: Administrador asigna roles a usuario
- UC-AUTH-006: Administrador define permisos de un rol
- UC-AUTH-007: Sistema valida permisos de usuario para acción (CRUD)
- 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
- UC-COMP-001: Administrador crea una nueva empresa
- UC-COMP-002: Administrador configura datos fiscales de empresa
- UC-COMP-003: Administrador asigna usuarios a empresa
- UC-COMP-004: Usuario cambia de empresa activa (context switching)
- UC-COMP-005: Usuario con acceso a múltiples empresas ve lista de empresas permitidas
- 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
- UC-CAT-001: Usuario crea un nuevo cliente/proveedor (partner)
- UC-CAT-002: Usuario busca un partner por nombre/email/Tax ID
- UC-CAT-003: Usuario configura condiciones de pago de partner
- UC-CAT-004: Administrador actualiza tasas de cambio de monedas
- UC-CAT-005: Usuario convierte cantidades entre UoM (kg a g)
- UC-CAT-006: Administrador crea jerarquía de categorías de productos
- 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
- UC-FIN-001: Contador crea asiento contable manual
- UC-FIN-002: Sistema genera asiento automático al validar factura de venta
- UC-FIN-003: Usuario crea factura de cliente
- UC-FIN-004: Usuario registra pago de cliente
- UC-FIN-005: Usuario concilia pago con factura
- UC-FIN-006: Contador genera Balance General
- UC-FIN-007: Contador genera Estado de Resultados
- 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
- UC-INV-001: Usuario crea un nuevo producto almacenable
- UC-INV-002: Usuario crea un almacén con ubicaciones
- UC-INV-003: Usuario realiza transferencia interna de stock
- UC-INV-004: Usuario recibe productos (desde orden de compra)
- UC-INV-005: Usuario entrega productos (desde orden de venta)
- UC-INV-006: Usuario realiza conteo de inventario físico
- UC-INV-007: Sistema calcula valoración de inventario (FIFO)
- 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
- UC-COM-001: Usuario crea RFQ y envía a proveedores
- UC-COM-002: Usuario convierte RFQ a orden de compra
- UC-COM-003: Usuario crea orden de compra directamente
- UC-COM-004: Sistema genera picking de recepción al confirmar PO
- UC-COM-005: Usuario valida recepción de productos
- UC-COM-006: Usuario crea factura de proveedor desde PO
- UC-COM-007: Sistema valida 3-way match (PO vs Recepción vs Factura)
- 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
- UC-VEN-001: Usuario crea cotización y envía a cliente
- UC-VEN-002: Cliente aprueba cotización online (portal básico)
- UC-VEN-003: Usuario convierte cotización a orden de venta
- UC-VEN-004: Sistema genera picking de entrega al confirmar SO
- UC-VEN-005: Usuario valida entrega de productos
- UC-VEN-006: Usuario crea factura de cliente desde SO
- UC-VEN-007: Usuario registra pago de cliente (MGN-004)
- 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_iden:- 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
- UC-ANA-001: Administrador crea cuenta analítica para proyecto
- UC-ANA-002: Usuario asigna cuenta analítica a línea de orden de compra
- UC-ANA-003: Sistema genera líneas analíticas al validar factura
- UC-ANA-004: Usuario distribuye costo a múltiples cuentas analíticas
- UC-ANA-005: Usuario consulta balance por cuenta analítica (P&L por proyecto)
- UC-ANA-006: Usuario compara presupuesto vs real
- 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
- UC-CRM-001: Usuario crea un nuevo lead
- UC-CRM-002: Usuario califica lead y convierte a oportunidad
- UC-CRM-003: Usuario mueve oportunidad entre stages (drag-and-drop)
- UC-CRM-004: Usuario programa llamada de seguimiento
- UC-CRM-005: Usuario convierte oportunidad a cotización
- UC-CRM-006: Usuario marca oportunidad como ganada/perdida
- 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
- UC-HR-001: RRHH crea un nuevo empleado
- UC-HR-002: RRHH asigna empleado a departamento y puesto
- UC-HR-003: RRHH crea contrato de trabajo
- UC-HR-004: Empleado registra check-in/check-out
- UC-HR-005: Empleado solicita vacaciones
- UC-HR-006: Manager aprueba/rechaza solicitud de vacaciones
- UC-HR-007: Empleado registra timesheet (horas trabajadas por proyecto)
- 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
- UC-PRO-001: Manager crea un nuevo proyecto
- UC-PRO-002: Manager crea tareas en proyecto
- UC-PRO-003: Usuario asignado mueve tarea entre stages (kanban)
- UC-PRO-004: Empleado registra horas trabajadas en tarea
- UC-PRO-005: Manager valida timesheet de tarea
- UC-PRO-006: Manager crea milestone y asocia tareas
- UC-PRO-007: Cliente ve avance de proyecto en portal
- 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
- UC-REP-001: Usuario consulta dashboard de ventas
- UC-REP-002: Contador genera Balance General
- UC-REP-003: Gerente genera P&L por proyecto
- UC-REP-004: Usuario crea reporte personalizado con query builder
- UC-REP-005: Usuario exporta reporte a Excel
- UC-REP-006: Usuario programa envío de reporte por email (semanal)
- 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
- UC-POR-001: Cliente inicia sesión en portal
- UC-POR-002: Cliente ve sus cotizaciones pendientes
- UC-POR-003: Cliente aprueba cotización online
- UC-POR-004: Cliente firma cotización electrónicamente
- UC-POR-005: Cliente ve avance de su proyecto
- UC-POR-006: Cliente descarga factura en PDF
- 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
- UC-NOT-001: Usuario comenta en orden de venta (chatter)
- UC-NOT-002: Sistema registra cambio automático (tracking)
- UC-NOT-003: Usuario recibe notificación in-app
- UC-NOT-004: Usuario configura preferencias de notificación
- UC-NOT-005: Usuario programa actividad (llamada a cliente)
- UC-NOT-006: Sistema envía recordatorio de actividad vencida
- UC-NOT-007: Usuario sigue orden de compra (follow)
- 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
- Validar alcance con stakeholders: Revisar que funcionalidades incluidas son suficientes para MVP
- Crear DEPENDENCIAS-MODULOS.md: Documentar orden de implementación basado en dependencias
- Diseñar database schemas: Crear DDL de cada módulo (Fase 2)
- 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