erp-core/docs/01-analisis-referencias/odoo/odoo-analytic-analysis.md

2.6 KiB

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:

# 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

-- 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