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/