hr.expense: campos, relaciones y API
El modelo hr.expense («Gasto») es un modelo persistente declarado por el módulo Gastos y ampliado por 3 módulos más. Expone 84 campos, 50 de ellos declarados directamente en el modelo; 10 campos de otros modelos apuntan a él. A continuación encontrará cada campo con su nombre técnico, tipo, etiqueta en español y relaciones, y un ejemplo de llamada a la API JSON-2 de Odoo 19.
Ficha de identidad
- Nombre técnico
hr.expense- Etiqueta
- Gasto
- Tipo
- Persistente (models.Model)
- Tabla SQL
hr_expense- Módulo de origen
- Gastos (
hr_expense) - Ampliado por
- project_hr_expense, sale_expense, project_sale_expense
- Orden por defecto (_order)
date desc, id desc- Hereda de (mixins)
- mail.thread.main.attachmentmail.activity.mixinanalytic.mixin
Campos del modelo
50 campos propios, 28 heredados de mixins y 6 campos automáticos del ORM. Haga clic en un nombre para obtener el enlace directo al campo.
84 de 84 campos mostrados
| Nombre técnico | Etiqueta | Tipo | Detalles |
|---|---|---|---|
| account_id | Cuenta Se espera una cuenta de gastos | many2one | calculado, almacenado |
| account_move_id | Asiento contable | many2one | solo lectura |
| amount_residual | Importe adeudado | monetary | solo lectura related: |
| approval_date | Fecha de aprobación | datetime | solo lectura |
| approval_state | Estado de aprobación | selection | solo lectura Valores: |
| attachment_ids | Archivos adjuntos | one2many | inverso: |
| can_approve | Puede aprobar | boolean | solo lecturacalculado |
| can_be_reinvoiced | Se puede refacturar | boolean | calculado añadido por Gastos de ventas ( |
| can_reset | Puede restablecer | boolean | solo lecturacalculado |
| company_currency_id | Moneda del informe de la compañía | many2one | solo lectura related: |
| company_id | Compañía | many2one | obligatoriosolo lectura |
| currency_id | Moneda | many2one | obligatoriocalculado, almacenado |
| currency_rate | Tipo de cambio | float | solo lecturacalculado |
| date | Fecha del gasto | date | |
| department_id | Departamento | many2one | calculado, almacenado |
| description | Notas internas | text | |
| duplicate_expense_ids | Duplicar gasto | many2many | calculado |
| employee_id | Empleado | many2one | obligatoriocalculado, almacenado |
| former_sheet_id | Informe anterior | integer | |
| is_editable | Es editable por el usuario actual | boolean | solo lecturacalculado |
| is_multiple_currency | currency_id es diferente de company_currency_id | boolean | calculado |
| journal_id | Diario | many2one | solo lectura related: |
| label_currency_rate | Etiqueta del tipo de cambio | char | solo lecturacalculado |
| manager_id | Gerente | many2one | calculado, almacenado |
| message_main_attachment_checksum | Message Main Attachment Checksum | char | related: |
| name | Descripción | char | obligatoriocalculado, almacenado |
| nb_attachment | Número de archivos adjuntos | integer | calculado |
| payment_method_line_id | Método de pago El método de pago que se utiliza cuando la empresa paga el gasto. | many2one | calculado, almacenado |
| payment_mode | Pagado por | selection | obligatorio Valores: |
| price_unit | Precio unitario | float | obligatoriosolo lecturacalculado, almacenado |
| product_description | Descripción del producto | html | calculado |
| product_has_cost | El producto tiene coste | boolean | calculado |
| product_has_tax | Si el impuesto se define en un producto seleccionado | boolean | calculado |
| product_id | Categoría | many2one | |
| product_uom_id | Unidad | many2one→ uom.uom | calculado, almacenado |
| quantity | Cantidad | float | obligatorio |
| sale_order_id | Cliente a refacturar Si la categoría tiene una política de gastos, se refacturará en este pedido de venta | many2one | calculado, almacenado añadido por Gastos de ventas ( |
| sale_order_line_id | Línea de pedido de venta | many2one | solo lecturacalculado, almacenado añadido por Gastos de ventas ( |
| same_receipt_expense_ids | Mismo recibo de gastos | many2many | calculado |
| selectable_payment_method_line_ids | Línea de método de pago seleccionable | many2many | calculado |
| split_expense_origin_id | Gasto original dividido Gasto original de una división. | many2one | |
| state | Estado | selection | solo lecturacalculado, almacenado Valores: |
| tax_amount | Importe de impuestos Importe de impuestos en la moneda de la empresa | monetary | calculado, almacenado |
| tax_amount_currency | Importe de impuestos en la moneda Importe de impuestos en la moneda | monetary | calculado, almacenado |
| tax_ids | Impuestos incluidos Tanto los impuestos incluidos en el precio como los que no, se comportarán como incluidos en el precio para los gastos. | many2many | calculado, almacenado |
| total_amount | Total | monetary | calculado, almacenado |
| total_amount_currency | Total en moneda | monetary | calculado, almacenado |
| untaxed_amount | Importe base total | monetary | calculado, almacenado |
| untaxed_amount_currency | Importe base total en la moneda | monetary | calculado, almacenado |
| vendor_id | Proveedor | many2one | |
| activity_calendar_event_id | Siguiente evento en el calendario de actividades. | many2one | calculado heredado de mail.activity.mixin |
| activity_date_deadline | Fecha límite de la siguiente actividad | date | solo lecturacalculado heredado de mail.activity.mixin |
| activity_exception_decoration | Decoración de Actividad de Excepción Tipo de actividad de excepción en el registro. | selection | calculado Valores: heredado de mail.activity.mixin |
| activity_exception_icon | Icono Icono para indicar una actividad de excepción. | char | calculado heredado de mail.activity.mixin |
| activity_ids | Actividades | one2many | inverso: heredado de mail.activity.mixin |
| activity_state | Estado de la actividad Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities. | selection | calculado Valores: heredado de mail.activity.mixin |
| activity_summary | Resumen de la siguiente actividad | char | related: heredado de mail.activity.mixin |
| activity_type_icon | Icono de tipo de actividad | char | related: heredado de mail.activity.mixin |
| activity_type_id | Tipo de la siguiente actividad | many2one | related: heredado de mail.activity.mixin |
| activity_user_id | Usuario responsable | many2one | solo lecturacalculado heredado de mail.activity.mixin |
| analytic_distribution | Distribución analítica | json | calculado, almacenado heredado de analytic.mixin |
| analytic_precision | Precisión analítica | integer | heredado de analytic.mixin |
| distribution_analytic_account_ids | Cuenta analítica de distribución | many2many | calculado heredado de analytic.mixin |
| has_message | Tiene un mensaje | boolean | calculado heredado de mail.thread |
| message_attachment_count | Número de archivos adjuntos | integer | calculado heredado de mail.thread |
| message_follower_ids | Seguidores | one2many | inverso: heredado de mail.thread |
| message_has_error | Error de envío de mensaje Si está marcada, algunos mensajes tienen error de envío. | boolean | calculado heredado de mail.thread |
| message_has_error_counter | Número de errores Número de mensajes con error de envío | integer | calculado heredado de mail.thread |
| message_has_sms_error | Error de envío del SMS Si está marcada, algunos mensajes tienen error de envío. | boolean | calculado heredado de mail.thread |
| message_ids | Mensajes | one2many | inverso: heredado de mail.thread |
| message_is_follower | Es un seguidor | boolean | calculado heredado de mail.thread |
| message_main_attachment_id | Archivo adjunto principal | many2one | heredado de mail.thread.main.attachment |
| message_needaction | Acción requerida Si está marcada, hay nuevos mensajes que requieren su atención. | boolean | calculado heredado de mail.thread |
| message_needaction_counter | Número de acciones Número de mensajes que requieren una acción | integer | calculado heredado de mail.thread |
| message_partner_ids | Seguidores (Contactos) | many2many | calculado heredado de mail.thread |
| my_activity_date_deadline | Fecha límite de mi actividad | date | solo lecturacalculado heredado de mail.activity.mixin |
| rating_ids | Calificaciones | one2many | inverso: heredado de mail.thread |
| website_message_ids | Mensajes del sitio web Historial de comunicación del sitio web | one2many | inverso: heredado de mail.thread |
| create_date | Creado el | datetime | solo lecturaautomático |
| create_uid | Creado por | many2one | solo lecturaautomático |
| display_name | Nombre mostrado | char | solo lecturacalculadoautomático |
| id | ID | integer | solo lecturaautomático |
| write_date | Última actualización el | datetime | solo lecturaautomático |
| write_uid | Última actualización por | many2one | solo lecturaautomático |
Relaciones
Modelos enlazados desde este modelo
- account.account: account_id
- account.journal: journal_id
- account.move: account_move_id
- account.payment.method.line: payment_method_line_id, selectable_payment_method_line_ids
- account.tax: tax_ids
- hr.department: department_id
- hr.employee: employee_id
- hr.expense: duplicate_expense_ids, same_receipt_expense_ids, split_expense_origin_id
- ir.attachment: attachment_ids
- product.product: product_id
- res.company: company_id
- res.currency: company_currency_id, currency_id
- res.partner: vendor_id
- res.users: manager_id
- sale.order: sale_order_id
- sale.order.line: sale_order_line_id
- uom.uom: product_uom_id
Campos de otros modelos que apuntan aquí
- account.move.line: expense_id
- account.tax: hr_expense_ids
- hr.expense: duplicate_expense_ids, same_receipt_expense_ids, split_expense_origin_id
- hr.expense.approve.duplicate: expense_ids
- hr.expense.refuse.wizard: expense_ids
- hr.expense.split: expense_id
- hr.expense.split.wizard: expense_id
- sale.order.line: expense_id
Leer este modelo por la API
Ejemplo de llamada a la API JSON-2 de Odoo 19: lectura de los cinco primeros registros con campos reales del modelo. Sustituya la instancia, la base y la clave API por las suyas.
curl -X POST "https://su-instancia.odoo.com/json/2/hr.expense/search_read" \
-H "Authorization: bearer $ODOO_API_KEY" \
-H "X-Odoo-Database: su-base" \
-H "Content-Type: application/json" \
-d '{"domain":[],"fields":["name","company_id","currency_id","employee_id","payment_mode"],"limit":5}'import requests
BASE_URL = "https://su-instancia.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "su-base"}
res = requests.post(
f"{BASE_URL}/hr.expense/search_read",
headers=headers,
json={"domain": [], "fields": ["name","company_id","currency_id","employee_id","payment_mode"], "limit": 5},
)
res.raise_for_status()
print(res.json())- El acceso a la API externa está reservado al plan Custom de Odoo.
- XML-RPC y JSON-RPC se retirarán en Odoo 22 (otoño de 2028): use JSON-2.
- Se aplican los permisos de acceso y las reglas de registro del usuario de la clave.
Citar esta herramienta
¿Escribe un tutorial, una documentación interna o una respuesta en un foro? Copie este enlace para dirigir a sus lectores a la ficha actualizada.
<a href="https://aidoo.ai/es/outils/explorateur-modeles-odoo/hr-expense">hr.expense (Odoo 19.0)</a>Fuentes
- Código fuente del modelo en GitHub
- Documentación de Odoo 19: ORM API
- Documentación de Odoo 19: API externa JSON-2
Datos verificados el 23 de septiembre de 2026 · Odoo 19.0 Community
¿Tiene un proyecto Odoo o quiere aprovechar su ERP con la IA? Hablemos
Implantación, desarrollo de módulos, conexión de Claude o ChatGPT a sus datos: cuéntenos su contexto y le responderemos en 24 horas laborables.