Modelo de Datos: Base (Kernel)
Modulo: base
Total Modelos Principales: 10 (documentados)
Total Modelos Completos: ~50
1. Indice de Modelos Principales
| Modelo |
Descripcion |
Campos |
Archivo |
| res.partner |
Contactos/Clientes/Proveedores |
40+ |
res_partner.py |
| res.users |
Usuarios del sistema |
25+ |
res_users.py |
| res.company |
Empresas |
30+ |
res_company.py |
| res.groups |
Grupos de seguridad |
15+ |
res_groups.py |
| ir.model |
Metamodelo ORM |
10+ |
ir_model.py |
| ir.rule |
Reglas de acceso |
10+ |
ir_rule.py |
| ir.cron |
Tareas programadas |
12+ |
ir_cron.py |
| ir.sequence |
Secuencias |
12+ |
ir_sequence.py |
| res.currency |
Monedas |
15+ |
res_currency.py |
| res.country |
Paises |
12+ |
res_country.py |
2. Detalle por Modelo
2.1 res.partner (Contactos)
Archivo: models/res_partner.py
Descripcion: Gestiona contactos, clientes y proveedores
Hereda de: format.address.mixin, format.vat.label.mixin, avatar.mixin
Campos Principales
| Campo |
Tipo |
Req |
Default |
Descripcion |
| name |
Char |
No |
- |
Nombre del contacto |
| complete_name |
Char |
No |
Computed |
Nombre completo (con padre) |
| email |
Char |
No |
- |
Correo electronico |
| phone |
Char |
No |
- |
Telefono |
| mobile |
Char |
No |
- |
Movil |
| website |
Char |
No |
- |
Sitio web |
| vat |
Char |
No |
- |
Identificacion fiscal |
| ref |
Char |
No |
- |
Referencia interna |
| active |
Boolean |
No |
True |
Activo |
| is_company |
Boolean |
No |
False |
Es empresa |
| employee |
Boolean |
No |
False |
Es empleado |
| function |
Char |
No |
- |
Puesto de trabajo |
| type |
Selection |
No |
contact |
Tipo: contact, invoice, delivery, other |
| lang |
Selection |
No |
- |
Idioma |
| tz |
Selection |
No |
- |
Zona horaria |
Campos de Direccion
| Campo |
Tipo |
Req |
Descripcion |
| street |
Char |
No |
Calle |
| street2 |
Char |
No |
Calle 2 |
| city |
Char |
No |
Ciudad |
| zip |
Char |
No |
Codigo postal |
| state_id |
Many2one |
No |
Estado/Provincia |
| country_id |
Many2one |
No |
Pais |
Campos Relacionales
| Campo |
Tipo |
Relacion |
Descripcion |
| parent_id |
Many2one |
res.partner |
Empresa padre |
| child_ids |
One2many |
res.partner |
Contactos hijos |
| company_id |
Many2one |
res.company |
Empresa |
| user_ids |
One2many |
res.users |
Usuarios vinculados |
| bank_ids |
One2many |
res.partner.bank |
Cuentas bancarias |
| category_id |
Many2many |
res.partner.category |
Categorias |
| country_id |
Many2one |
res.country |
Pais |
| state_id |
Many2one |
res.country.state |
Estado |
Constraints
| Nombre |
Tipo |
Campos |
Mensaje |
| check_name |
Python |
name, is_company |
Nombre requerido si es empresa |
2.2 res.users (Usuarios)
Archivo: models/res_users.py
Descripcion: Usuarios del sistema
Hereda de: res.partner (via _inherits)
Campos Principales
| Campo |
Tipo |
Req |
Default |
Descripcion |
| login |
Char |
Si |
- |
Nombre de usuario |
| password |
Char |
No |
Computed |
Contrasena (cifrada) |
| active |
Boolean |
No |
True |
Usuario activo |
| share |
Boolean |
No |
Computed |
Usuario compartido |
| signature |
Html |
No |
Computed |
Firma de email |
| role |
Selection |
No |
Computed |
Rol: group_user, group_system |
Campos Relacionales
| Campo |
Tipo |
Relacion |
Descripcion |
| partner_id |
Many2one |
res.partner |
Contacto (requerido) |
| company_id |
Many2one |
res.company |
Empresa default |
| company_ids |
Many2many |
res.company |
Empresas accesibles |
| group_ids |
Many2many |
res.groups |
Grupos |
| all_group_ids |
Many2many |
res.groups |
Grupos + implicados |
| action_id |
Many2one |
ir.actions.actions |
Accion inicial |
| api_key_ids |
One2many |
res.users.apikeys |
Claves API |
Metodos Importantes
| Metodo |
Descripcion |
| authenticate() |
Autenticar usuario |
| change_password() |
Cambiar contrasena |
| has_group() |
Verificar membresia de grupo |
| _is_internal() |
Es usuario interno? |
| _is_admin() |
Es administrador? |
2.3 res.company (Empresas)
Archivo: models/res_company.py
Descripcion: Estructura de empresas
Parent Store: Si (jerarquia)
Campos Principales
| Campo |
Tipo |
Req |
Default |
Descripcion |
| name |
Char |
Si |
Related |
Nombre |
| active |
Boolean |
No |
True |
Activa |
| sequence |
Integer |
No |
10 |
Orden |
| currency_id |
Many2one |
Si |
- |
Moneda |
| phone |
Char |
No |
Related |
Telefono |
| email |
Char |
No |
Related |
Email |
| website |
Char |
No |
Related |
Sitio web |
| vat |
Char |
No |
Related |
NIF |
Campos de Diseno
| Campo |
Tipo |
Descripcion |
| logo |
Binary |
Logotipo |
| logo_web |
Binary |
Logo optimizado web |
| font |
Selection |
Fuente corporativa |
| primary_color |
Char |
Color primario (hex) |
| secondary_color |
Char |
Color secundario |
| paperformat_id |
Many2one |
Formato de papel |
Campos Relacionales
| Campo |
Tipo |
Relacion |
Descripcion |
| partner_id |
Many2one |
res.partner |
Contacto empresa |
| parent_id |
Many2one |
res.company |
Empresa padre |
| child_ids |
One2many |
res.company |
Sucursales |
| root_id |
Many2one |
res.company |
Empresa raiz |
| user_ids |
Many2many |
res.users |
Usuarios |
| bank_ids |
One2many |
res.partner.bank |
Cuentas bancarias |
2.4 res.groups (Grupos de Seguridad)
Archivo: models/res_groups.py
Descripcion: Control de acceso
Campos
| Campo |
Tipo |
Req |
Descripcion |
| name |
Char |
Si |
Nombre del grupo |
| full_name |
Char |
No |
Nombre completo |
| comment |
Text |
No |
Descripcion |
| share |
Boolean |
No |
Grupo compartido |
| sequence |
Integer |
No |
Orden |
Relaciones
| Campo |
Tipo |
Relacion |
Descripcion |
| user_ids |
Many2many |
res.users |
Usuarios |
| implied_ids |
Many2many |
res.groups |
Grupos implicados |
| model_access |
One2many |
ir.model.access |
Derechos de acceso |
| rule_groups |
Many2many |
ir.rule |
Reglas de registro |
| menu_access |
Many2many |
ir.ui.menu |
Acceso a menus |
2.5 ir.rule (Reglas de Acceso)
Archivo: models/ir_rule.py
Descripcion: Control de acceso a nivel de registro
Campos
| Campo |
Tipo |
Req |
Default |
Descripcion |
| name |
Char |
No |
- |
Nombre |
| active |
Boolean |
No |
True |
Activa |
| domain_force |
Text |
No |
- |
Dominio/filtro |
| perm_read |
Boolean |
No |
True |
Permite lectura |
| perm_write |
Boolean |
No |
True |
Permite escritura |
| perm_create |
Boolean |
No |
True |
Permite creacion |
| perm_unlink |
Boolean |
No |
True |
Permite eliminacion |
| global |
Boolean |
No |
Computed |
Regla global |
Relaciones
| Campo |
Tipo |
Relacion |
Descripcion |
| model_id |
Many2one |
ir.model |
Modelo (requerido) |
| groups |
Many2many |
res.groups |
Grupos afectados |
2.6 ir.cron (Tareas Programadas)
Archivo: models/ir_cron.py
Descripcion: Trabajos automaticos
Campos
| Campo |
Tipo |
Req |
Default |
Descripcion |
| cron_name |
Char |
No |
Computed |
Nombre |
| active |
Boolean |
No |
True |
Activo |
| interval_number |
Integer |
Si |
1 |
Repetir cada X |
| interval_type |
Selection |
Si |
months |
Unidad: minutes, hours, days, weeks, months |
| nextcall |
Datetime |
Si |
- |
Proxima ejecucion |
| lastcall |
Datetime |
No |
- |
Ultima ejecucion |
| priority |
Integer |
No |
5 |
Prioridad (0=alta) |
| failure_count |
Integer |
No |
0 |
Fallos consecutivos |
Relaciones
| Campo |
Tipo |
Relacion |
Descripcion |
| ir_actions_server_id |
Many2one |
ir.actions.server |
Accion a ejecutar |
| user_id |
Many2one |
res.users |
Usuario ejecutor |
2.7 ir.sequence (Secuencias)
Archivo: models/ir_sequence.py
Descripcion: Generacion de numeros unicos
Campos
| Campo |
Tipo |
Req |
Default |
Descripcion |
| name |
Char |
Si |
- |
Nombre |
| code |
Char |
No |
- |
Codigo referencia |
| prefix |
Char |
No |
- |
Prefijo |
| suffix |
Char |
No |
- |
Sufijo |
| number_next |
Integer |
Si |
1 |
Proximo numero |
| number_increment |
Integer |
Si |
1 |
Incremento |
| padding |
Integer |
Si |
0 |
Relleno con ceros |
| implementation |
Selection |
Si |
standard |
Tipo: standard, no_gap |
| use_date_range |
Boolean |
No |
False |
Subsecuencias por fecha |
2.8 res.currency (Monedas)
Archivo: models/res_currency.py
Descripcion: Gestion de monedas
Campos
| Campo |
Tipo |
Req |
Default |
Descripcion |
| name |
Char(3) |
Si |
- |
Codigo ISO (USD, EUR) |
| iso_numeric |
Integer |
No |
- |
Codigo numerico ISO |
| full_name |
Char |
No |
- |
Nombre completo |
| symbol |
Char |
Si |
- |
Simbolo ($, E) |
| rounding |
Float |
No |
0.01 |
Factor redondeo |
| decimal_places |
Integer |
No |
Computed |
Decimales |
| position |
Selection |
No |
after |
Posicion simbolo |
| active |
Boolean |
No |
True |
Activa |
Relaciones
| Campo |
Tipo |
Relacion |
Descripcion |
| rate_ids |
One2many |
res.currency.rate |
Historico de tasas |
2.9 res.country (Paises)
Archivo: models/res_country.py
Descripcion: Informacion de paises
Campos
| Campo |
Tipo |
Req |
Default |
Descripcion |
| name |
Char |
Si |
- |
Nombre |
| code |
Char(2) |
Si |
- |
Codigo ISO |
| phone_code |
Integer |
No |
- |
Codigo telefonico |
| address_format |
Text |
No |
- |
Formato direccion |
| vat_label |
Char |
No |
- |
Etiqueta VAT |
| state_required |
Boolean |
No |
False |
Requiere estado |
| zip_required |
Boolean |
No |
True |
Requiere CP |
Relaciones
| Campo |
Tipo |
Relacion |
Descripcion |
| currency_id |
Many2one |
res.currency |
Moneda |
| state_ids |
One2many |
res.country.state |
Estados/Provincias |
| country_group_ids |
Many2many |
res.country.group |
Grupos de paises |
3. Diagrama Entidad-Relacion
┌─────────────────────────────────────────────────────────────────────────┐
│ DATOS MAESTROS │
└─────────────────────────────────────────────────────────────────────────┘
┌───────────────┐ parent_id ┌───────────────┐
│ res.partner │◄───────────────────│ res.partner │
│ │ │ │
│ - name │ child_ids │ (jerarquia) │
│ - email │────────────────────►│ │
│ - vat │ └───────────────┘
│ - type │
└───────┬───────┘
│ partner_id (required)
│
▼
┌───────────────┐ company_ids ┌───────────────┐
│ res.users │◄──────────────────►│ res.company │
│ │ (Many2many) │ │
│ - login │ │ - name │
│ - password │────────────────────►│ - currency_id│
│ - active │ company_id │ - logo │
└───────┬───────┘ └───────┬───────┘
│ │
│ group_ids │ parent_id
▼ ▼
┌───────────────┐ ┌───────────────┐
│ res.groups │ │ res.company │
│ │ │ (jerarquia) │
│ - name │ └───────────────┘
│ - sequence │
└───────┬───────┘
│
│ rule_groups / model_access
▼
┌───────────────┐ ┌───────────────┐
│ ir.rule │ │ ir.model.access│
│ │ │ │
│ - domain │ │ - perm_read │
│ - perm_* │ │ - perm_write │
└───────┬───────┘ └───────────────┘
│ model_id
▼
┌───────────────┐
│ ir.model │
│ │
│ - model │
│ - name │
└───────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ AUTOMATIZACION │
└─────────────────────────────────────────────────────────────────────────┘
┌───────────────┐ ir_actions_server_id
│ ir.cron │─────────────────────────►┌───────────────────┐
│ │ │ ir.actions.server │
│ - nextcall │ │ │
│ - interval │ │ - code │
│ - priority │ │ - model_id │
└───────────────┘ └───────────────────┘
┌───────────────┐ date_range_ids
│ ir.sequence │────────────────────────►┌─────────────────────┐
│ │ │ir.sequence.date_range│
│ - prefix │ │ │
│ - number_next│ │ - date_from │
│ - padding │ │ - date_to │
└───────────────┘ └─────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ GEOGRAFICO │
└─────────────────────────────────────────────────────────────────────────┘
┌───────────────┐ state_ids ┌───────────────────┐
│ res.country │───────────────────►│ res.country.state │
│ │ │ │
│ - code (ES) │ │ - name │
│ - phone_code │ │ - code │
└───────┬───────┘ └───────────────────┘
│ currency_id
▼
┌───────────────┐ rate_ids ┌───────────────────┐
│ res.currency │───────────────────►│ res.currency.rate │
│ │ │ │
│ - name (USD) │ │ - rate │
│ - symbol ($) │ │ - name (date) │
└───────────────┘ └───────────────────┘
Referencias:
- Carpeta models:
odoo/addons/base/models/
- Total archivos: 49