# Análisis del Módulo Analytic de Odoo **Módulo:** analytic **Prioridad:** P0 **Mapeo MGN:** MGN-008 (Contabilidad Analítica) ## Descripción Módulo CRÍTICO para ERPs multi-proyecto. Permite tracking de costos/ingresos por: - Proyectos - Departamentos - Centros de costo - Clientes - Campañas ## Modelos Principales ### account.analytic.account (Cuentas Analíticas) - Nombre del proyecto/centro de costo - Plan de cuentas analítico - Balance de costos/ingresos ### account.analytic.line (Líneas Analíticas) - Registro de costo o ingreso - Vinculado a cuenta analítica - Integrado en: compras, ventas, inventario, nómina, gastos ## Patrón Universal **TODOS los módulos transaccionales registran en analytic:** ```python # En purchase.order.line analytic_account_id = fields.Many2one('account.analytic.account') # En sale.order.line analytic_account_id = fields.Many2one('account.analytic.account') # En account.move.line (facturas) analytic_account_id = fields.Many2one('account.analytic.account') # En hr_timesheet (horas trabajadas) analytic_account_id = fields.Many2one('account.analytic.account') ``` **Resultado:** Reportes consolidados de costos/ingresos por proyecto ## Ejemplo de Uso ``` Proyecto: "Construcción Torre A" analytic_account_id = 101 Compras de materiales: $500,000 → analytic_account_id = 101 Ventas de departamentos: $2,000,000 → analytic_account_id = 101 Nómina de empleados: $300,000 → analytic_account_id = 101 Balance Analítico: Ingresos: $2,000,000 Costos: $800,000 Margen: $1,200,000 (60%) ``` ## Mapeo a MGN-008 - RF-ANA-001: Gestión de cuentas analíticas - RF-ANA-002: Registro de líneas analíticas - RF-ANA-003: Reportes por proyecto/centro de costo - RF-ANA-004: Integración con módulos transaccionales ## Implementación Recomendada MGN-008 ```sql -- Schema analytics CREATE TABLE analytics.accounts ( id SERIAL PRIMARY KEY, tenant_id INT NOT NULL, code VARCHAR(20) NOT NULL, name VARCHAR(200) NOT NULL, type VARCHAR(50), -- project, department, cost_center, customer parent_id INT REFERENCES analytics.accounts(id), active BOOLEAN DEFAULT TRUE ); CREATE TABLE analytics.lines ( id SERIAL PRIMARY KEY, tenant_id INT NOT NULL, account_id INT NOT NULL REFERENCES analytics.accounts(id), date DATE NOT NULL, description TEXT, amount DECIMAL(15,2) NOT NULL, currency_id INT, source_module VARCHAR(50), -- 'purchase', 'sale', 'payroll', 'expenses' source_id INT, -- ID del registro fuente created_at TIMESTAMPTZ DEFAULT NOW() ); ``` **Aplicabilidad:** ⭐⭐⭐⭐⭐ - ESENCIAL para ERP Construcción/Proyectos --- **Fecha:** 2025-11-23 **Estado:** ✅ Análisis completo