hr.expense : champs, relations et API
Le modèle hr.expense (« Dépense ») est un modèle persistant déclaré par le module Dépenses, puis enrichi par 3 autres modules. Il expose 84 champs, dont 50 déclarés directement sur le modèle ; 10 champs d'autres modèles pointent vers lui. Retrouvez ci-dessous chaque champ avec son nom technique, son type, son libellé français et ses relations, puis un exemple d'appel à l'API JSON-2 d'Odoo 19.
Fiche d'identité
- Nom technique
hr.expense- Libellé
- Dépense
- Type
- Persistant (models.Model)
- Table SQL
hr_expense- Module d'origine
- Dépenses (
hr_expense) - Étendu par
- project_hr_expense, sale_expense, project_sale_expense
- Tri par défaut (_order)
date desc, id desc- Hérite de (mixins)
- mail.thread.main.attachmentmail.activity.mixinanalytic.mixin
Champs du modèle
50 champs propres, 28 hérités des mixins et 6 champs automatiques de l'ORM. Cliquez sur un nom pour obtenir le lien direct vers le champ.
84 champs affichés sur 84
| Nom technique | Libellé | Type | Détails |
|---|---|---|---|
| account_id | Compte Un compte de frais est attendu | many2one | calculé, stocké |
| account_move_id | Pièce comptable | many2one | lecture seule |
| amount_residual | Montant dû | monetary | lecture seule related : |
| approval_date | Date de validation | datetime | lecture seule |
| approval_state | État de validation | selection | lecture seule Valeurs : |
| attachment_ids | Pièces jointes | one2many | inverse : |
| can_approve | Peut approuver | boolean | lecture seulecalculé |
| can_be_reinvoiced | Peut être refacturé | boolean | calculé ajouté par Ventes Dépenses ( |
| can_reset | Peut réinitialiser | boolean | lecture seulecalculé |
| company_currency_id | Rapport dans la devise de la société | many2one | lecture seule related : |
| company_id | Société | many2one | requislecture seule |
| currency_id | Devise | many2one | requiscalculé, stocké |
| currency_rate | Taux de change | float | lecture seulecalculé |
| date | Date de la dépense | date | |
| department_id | Département | many2one | calculé, stocké |
| description | Notes internes | text | |
| duplicate_expense_ids | Dupliquer la dépense | many2many | calculé |
| employee_id | Employé | many2one | requiscalculé, stocké |
| former_sheet_id | Ancien rapport | integer | |
| is_editable | Est éditable par l'utilisateur actuel | boolean | lecture seulecalculé |
| is_multiple_currency | Est-ce que currency_id est différent de company_currency_id | boolean | calculé |
| journal_id | Journal | many2one | lecture seule related : |
| label_currency_rate | Libellé du taux de change | char | lecture seulecalculé |
| manager_id | Manager | many2one | calculé, stocké |
| message_main_attachment_checksum | Message Main Attachment Checksum | char | related : |
| name | Description | char | requiscalculé, stocké |
| nb_attachment | Nombre de pièces jointes | integer | calculé |
| payment_method_line_id | Mode de paiement Le mode de paiement utilisé lorsque la dépense est payée par la société. | many2one | calculé, stocké |
| payment_mode | Payé par | selection | requis Valeurs : |
| price_unit | Prix unitaire | float | requislecture seulecalculé, stocké |
| product_description | Description du produit | html | calculé |
| product_has_cost | Produit a un coût | boolean | calculé |
| product_has_tax | Si la taxe est définie sur un produit sélectionné | boolean | calculé |
| product_id | Catégorie | many2one | |
| product_uom_id | Unité | many2one→ uom.uom | calculé, stocké |
| quantity | Quantité | float | requis |
| sale_order_id | Client à refacturer Si la catégorie a une politique concernant les dépenses, celle-ci sera refacturée sur cette commande client | many2one | calculé, stocké ajouté par Ventes Dépenses ( |
| sale_order_line_id | Ligne de commande | many2one | lecture seulecalculé, stocké ajouté par Ventes Dépenses ( |
| same_receipt_expense_ids | Dépense avec le même justificatif | many2many | calculé |
| selectable_payment_method_line_ids | Ligne de mode de paiement sélectionnable | many2many | calculé |
| split_expense_origin_id | Dépense d’origine répartie Dépense d’origine issue d’une répartition. | many2one | |
| state | Statut | selection | lecture seulecalculé, stocké Valeurs : |
| tax_amount | Montant de la taxe Montant de la taxe dans la devise de la société | monetary | calculé, stocké |
| tax_amount_currency | Montant de la taxe dans la devise Montant de la taxe dans la devise | monetary | calculé, stocké |
| tax_ids | Taxes comprises Les taxes incluses dans le prix et les taxes exclues du prix se comporteront comme des taxes incluses dans le prix pour les dépenses. | many2many | calculé, stocké |
| total_amount | Total | monetary | calculé, stocké |
| total_amount_currency | Total dans la devise | monetary | calculé, stocké |
| untaxed_amount | Montant total hors taxes | monetary | calculé, stocké |
| untaxed_amount_currency | Montant total hors taxes dans la devise | monetary | calculé, stocké |
| vendor_id | Fournisseur | many2one | |
| activity_calendar_event_id | Activité suivante de l'événement du calendrier | many2one | calculé hérité de mail.activity.mixin |
| activity_date_deadline | Date limite de l'activité à venir | date | lecture seulecalculé hérité de mail.activity.mixin |
| activity_exception_decoration | Indicateur d’exception d’activité Type d'activité d'exception enregistrée. | selection | calculé Valeurs : hérité de mail.activity.mixin |
| activity_exception_icon | Icône Icône pour indiquer une activité d'exception. | char | calculé hérité de mail.activity.mixin |
| activity_ids | Activités | one2many | inverse : hérité de mail.activity.mixin |
| activity_state | Statut de l'activité Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities. | selection | calculé Valeurs : hérité de mail.activity.mixin |
| activity_summary | Résumé de l'activité suivante | char | related : hérité de mail.activity.mixin |
| activity_type_icon | Icône de type d'activité | char | related : hérité de mail.activity.mixin |
| activity_type_id | Type d'activités à venir | many2one | related : hérité de mail.activity.mixin |
| activity_user_id | Utilisateur responsable | many2one | lecture seulecalculé hérité de mail.activity.mixin |
| analytic_distribution | Répartition Analytique | json | calculé, stocké hérité de analytic.mixin |
| analytic_precision | Précision analytique | integer | hérité de analytic.mixin |
| distribution_analytic_account_ids | Compte analytique de répartition | many2many | calculé hérité de analytic.mixin |
| has_message | A un message | boolean | calculé hérité de mail.thread |
| message_attachment_count | Nombre de pièces jointes | integer | calculé hérité de mail.thread |
| message_follower_ids | Abonnés | one2many | inverse : hérité de mail.thread |
| message_has_error | Erreur d'envoi du message Si coché, certains messages ont une erreur de livraison. | boolean | calculé hérité de mail.thread |
| message_has_error_counter | Nombre d'erreurs Nombre de messages avec des erreurs d'envoi | integer | calculé hérité de mail.thread |
| message_has_sms_error | Erreur d'envoi SMS Si coché, certains messages ont une erreur de livraison. | boolean | calculé hérité de mail.thread |
| message_ids | Messages | one2many | inverse : hérité de mail.thread |
| message_is_follower | Est un abonné | boolean | calculé hérité de mail.thread |
| message_main_attachment_id | Pièce jointe principale | many2one | hérité de mail.thread.main.attachment |
| message_needaction | Nécessite une action Si coché, de nouveaux messages demandent votre attention. | boolean | calculé hérité de mail.thread |
| message_needaction_counter | Nombre d'actions Nombre de messages nécessitant une action | integer | calculé hérité de mail.thread |
| message_partner_ids | Abonnés (Partenaires) | many2many | calculé hérité de mail.thread |
| my_activity_date_deadline | Échéance de mon activité | date | lecture seulecalculé hérité de mail.activity.mixin |
| rating_ids | Évaluations | one2many | inverse : hérité de mail.thread |
| website_message_ids | Messages du site web Historique de communication du site web | one2many | inverse : hérité de mail.thread |
| create_date | Créé le | datetime | lecture seuleautomatique |
| create_uid | Créé par | many2one | lecture seuleautomatique |
| display_name | Nom affiché | char | lecture seulecalculéautomatique |
| id | ID | integer | lecture seuleautomatique |
| write_date | Dernière mise à jour le | datetime | lecture seuleautomatique |
| write_uid | Dernière mise à jour par | many2one | lecture seuleautomatique |
Relations
Modèles liés depuis ce modèle
- 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
Champs d'autres modèles qui pointent ici
- 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
Lire ce modèle par l'API
Exemple d'appel à l'API JSON-2 d'Odoo 19 : lecture des cinq premiers enregistrements avec des champs réels du modèle. Remplacez l'instance, la base et la clé API par les vôtres.
curl -X POST "https://votre-instance.odoo.com/json/2/hr.expense/search_read" \
-H "Authorization: bearer $ODOO_API_KEY" \
-H "X-Odoo-Database: votre-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://votre-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "votre-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())- L'accès à l'API externe est réservé à la formule Custom d'Odoo.
- XML-RPC et JSON-RPC seront retirés dans Odoo 22 (automne 2028) : préférez JSON-2.
- Les droits d'accès et règles d'enregistrement de l'utilisateur de la clé s'appliquent.
Citer cet outil
Vous rédigez un tutoriel, une documentation interne ou une réponse sur un forum ? Copiez ce lien pour renvoyer vos lecteurs vers la fiche à jour.
<a href="https://aidoo.ai/fr/outils/explorateur-modeles-odoo/hr-expense">hr.expense (Odoo 19.0)</a>Sources
- Code source du modèle sur GitHub
- Documentation Odoo 19 : ORM API
- Documentation Odoo 19 : API externe JSON-2
Données vérifiées le 23 septembre 2026 · Odoo 19.0 Community
Vous avez un projet Odoo ou souhaitez exploiter votre ERP avec l'IA ? Échangeons
Intégration, développement de modules, connexion de Claude ou ChatGPT à vos données : décrivez-nous votre contexte, nous vous répondons sous 24 heures ouvrées.