workspace-v1/shared/knowledge-base/reference/odoo/docs/03-modelado-datos/MODELO-analytic.md
rckrdmrd cb4c0681d3 feat(workspace): Add new projects and update architecture
New projects created:
- michangarrito (marketplace mobile)
- template-saas (SaaS template)
- clinica-dental (dental ERP)
- clinica-veterinaria (veterinary ERP)

Architecture updates:
- Move catalog from core/ to shared/
- Add MCP servers structure and templates
- Add git management scripts
- Update SUBREPOSITORIOS.md with 15 new repos
- Update .gitignore for new projects

Repository infrastructure:
- 4 main repositories
- 11 subrepositorios
- Gitea remotes configured

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:43:28 -06:00

8.6 KiB

Modelo de Datos: Analytic

Modulo: analytic Total Modelos: 5 Modelos Documentados: 5


1. Indice de Modelos

Modelo Descripcion Archivo
account.analytic.account Cuentas analiticas analytic_account.py
account.analytic.line Lineas analiticas analytic_line.py
account.analytic.plan Planes analiticos analytic_plan.py
account.analytic.applicability Reglas aplicabilidad analytic_plan.py
account.analytic.distribution.model Modelos distribucion analytic_distribution_model.py

2. Detalle por Modelo

2.1 account.analytic.account (Cuentas Analiticas)

Archivo: models/analytic_account.py Descripcion: Analytic Account Hereda de: mail.thread

Campos Principales

Campo Tipo Req Descripcion
name Char Si Nombre cuenta
code Char No Codigo referencia
active Boolean No Activa (default=True)
plan_id Many2one Si Plan analitico
root_plan_id Many2one No Plan raiz (related)
company_id Many2one No Empresa
partner_id Many2one No Socio asociado

Campos Monetarios (Computed)

Campo Tipo Descripcion
balance Monetary Saldo (credit - debit)
debit Monetary Total debitos
credit Monetary Total creditos
currency_id Many2one Moneda empresa

Campos de Relacion

Campo Tipo Descripcion
line_ids One2many Lineas analiticas

2.2 account.analytic.line (Lineas Analiticas)

Archivo: models/analytic_line.py Descripcion: Analytic Line Hereda de: analytic.plan.fields.mixin

Campos Principales

Campo Tipo Req Descripcion
name Char Si Descripcion
date Date Si Fecha
account_id Many2one No Cuenta principal
auto_account_id Many2one No Cuenta auto (computed)
partner_id Many2one No Socio
user_id Many2one No Usuario
company_id Many2one Si Empresa

Campos Monetarios

Campo Tipo Descripcion
amount Monetary Monto (requerido, default=0)
currency_id Many2one Moneda empresa (related)
unit_amount Float Cantidad (default=0)
product_uom_id Many2one Unidad de medida

Campos de Distribucion

Campo Tipo Descripcion
analytic_distribution Json Distribucion {account_ids: %}

2.3 account.analytic.plan (Planes Analiticos)

Archivo: models/analytic_plan.py Descripcion: Analytic Plan Estructura: Jerarquica (_parent_store=True)

Campos Principales

Campo Tipo Req Descripcion
name Char Si Nombre plan
description Text No Descripcion
sequence Integer No Orden (default=10)
color Integer No Color (1-11)
company_id Many2one No Empresa

Campos Jerarquicos

Campo Tipo Descripcion
parent_id Many2one Plan padre
children_ids One2many Planes hijo
root_id Many2one Plan raiz (computed)
complete_name Char Nombre completo jerarquico
parent_path Char Ruta jerarquica

Campos de Configuracion

Campo Tipo Descripcion
default_applicability Selection Aplicabilidad default
applicability_ids One2many Reglas aplicabilidad
account_ids One2many Cuentas del plan
account_count Integer Cuentas directas
all_account_count Integer Cuentas incluyendo hijos

2.4 account.analytic.applicability (Aplicabilidad)

Archivo: models/analytic_plan.py Descripcion: Analytic Plan Applicability

Campo Tipo Req Descripcion
analytic_plan_id Many2one Si Plan aplicable
business_domain Selection No Dominio (general)
applicability Selection Si Tipo aplicabilidad
company_id Many2one No Empresa especifica

Valores de Aplicabilidad

Valor Descripcion
optional Opcional
mandatory Obligatorio (debe sumar 100%)
unavailable No disponible

2.5 account.analytic.distribution.model

Archivo: models/analytic_distribution_model.py Descripcion: Analytic Distribution Model Hereda de: analytic.mixin

Campo Tipo Descripcion
sequence Integer Orden prioridad
partner_id Many2one Socio especifico
partner_category_id Many2one Categoria socio
company_id Many2one Empresa
analytic_distribution Json Distribucion pre-configurada

3. Mixins

3.1 analytic.mixin

Archivo: models/analytic_mixin.py Proposito: Agregar distribucion analitica a cualquier modelo

Campo Tipo Descripcion
analytic_distribution Json Distribucion {ids: %}
distribution_analytic_account_ids Many2many Cuentas en distribucion

Metodos Clave

Metodo Descripcion
_compute_analytic_distribution Calcula desde cuentas
_search_analytic_distribution Busqueda por nombre cuenta
_merge_distribution Fusiona distribuciones
_validate_distribution Valida 100% para obligatorios
_sanitize_values Redondea porcentajes

3.2 analytic.plan.fields.mixin

Archivo: models/analytic_line.py Proposito: Campos dinamicos por cada plan

Campo Tipo Descripcion
account_id Many2one Cuenta principal (Project)
auto_account_id Many2one Cuenta auto-detectada

Campos Dinamicos Generados

Plan "Project" → account_id
Otros planes → x_plan{id}_id
Planes hijo → x_account_id_{depth}_id

4. Diagrama Entidad-Relacion

┌───────────────────────┐    account_ids    ┌───────────────────────┐
│ account.analytic.plan │──────────────────►│account.analytic.account│
│                       │                    │                       │
│  - name               │     plan_id       │  - name               │
│  - parent_id          │◄───────────────────│  - balance            │
│  - default_applicability│                  │  - debit, credit      │
└───────────┬───────────┘                    └───────────┬───────────┘
            │                                            │
   children_ids                                   line_ids
            ▼                                            ▼
┌───────────────────────┐                    ┌───────────────────────┐
│ account.analytic.plan │                    │ account.analytic.line │
│     (hijo)            │                    │                       │
└───────────────────────┘                    │  - amount             │
                                             │  - account_id         │
┌───────────────────────┐                    │  - analytic_distribution│
│account.analytic.      │                    └───────────────────────┘
│applicability          │
│                       │
│  - applicability      │
│  - business_domain    │
└───────────────────────┘

┌───────────────────────┐
│account.analytic.      │
│distribution.model     │
│                       │
│  - partner_id         │
│  - analytic_distribution│
└───────────────────────┘

5. Formato JSON de Distribucion

// Ejemplo: 50% a cuentas 1+2, 50% a cuenta 3
{
    "1,2": 50.0,
    "3": 50.0
}

// Las claves son IDs de cuentas separados por coma
// Los valores son porcentajes (Float)
// Total debe ser 100% para planes obligatorios

6. Indice GIN para Busqueda JSON

PostgreSQL GIN index en analytic_distribution para busquedas rapidas en campos JSON.


Referencias:

  • Carpeta models: addons/analytic/models/