Skip to Content
Odoo model

hr.expense

Expense. Defined in module hr_expense; exists in Odoo 16, 17, 18, 19, 20. Across the upgrade steps we tracked: 49 fields added, 20 removed, 1 renamed.

  1. Odoo 16 hr_expense
  2. Odoo 17 hr_expense
  3. Odoo 18 hr_expense
  4. Odoo 19 hr_expense
  5. Odoo 20 hr_expense

Odoo 16 to 17

Community only All changes in this step

Renamed (1)

Odoo 16Odoo 17Confidence
untaxed_amountuntaxed_amount_currency possible (same type, name extended)

Fields removed (14)

FieldTypeModuleNotes
amount_residualmonetaryhr_expense
amount_taxmonetaryhr_expense
amount_tax_companymonetaryhr_expense
attachment_numberintegerhr_expense
is_ref_editablebooleanhr_expense
is_refusedbooleanhr_expense
label_convert_ratecharhr_expense
referencecharhr_expense
same_currencybooleanhr_expense
samplebooleanhr_expense
sheet_is_editablebooleanhr_expense
total_amount_companymonetaryhr_expense
unit_amountfloathr_expense
unit_amount_displayfloathr_expense

Fields added (8)

FieldTypeModule
is_multiple_currencybooleanhr_expense
label_currency_ratecharhr_expense
message_main_attachment_checksumcharhr_expense
nb_attachmentintegerhr_expense
price_unitfloathr_expense
tax_amountmonetaryhr_expense
tax_amount_currencymonetaryhr_expense
total_amount_currencymonetaryhr_expense

Now also inherits mail.thread.main.attachment (fields from these parents are listed on their own pages).

Odoo 17 to 18

Community only All changes in this step

Fields added (2)

FieldTypeModule
same_receipt_expense_idsmany2manyhr_expense
vendor_idmany2onehr_expense

Odoo 18 to 19

Community + Enterprise All changes in this step

Fields removed (6)

FieldTypeModuleNotes
accounting_datedatehr_expense
approved_bymany2onehr_expense
approved_ondatetimehr_expense
predicted_categoryselectionhr_expense_predict_product
product_uom_category_idmany2onehr_expense
sheet_idmany2onehr_expense

Fields added (22)

Show all 22
FieldTypeModule
account_move_idmany2onehr_expense
amount_residualmonetaryhr_expense
approval_datedatetimehr_expense
approval_stateselectionhr_expense
can_approvebooleanhr_expense
can_resetbooleanhr_expense
card_idmany2onehr_expense_stripe
department_idmany2onehr_expense
former_sheet_idintegerhr_expense
is_card_expensebooleanhr_expense_stripe
journal_idmany2onehr_expense
manager_idmany2onehr_expense
mcc_tag_idmany2onehr_expense_stripe
payment_method_line_idmany2onehr_expense
payslip_idmany2onehr_payroll_expense
refund_in_payslipbooleanhr_payroll_expense
sale_order_line_idmany2onesale_expense
selectable_payment_method_line_idsmany2manyhr_expense
split_expense_origin_idmany2onehr_expense
stripe_authorization_idcharhr_expense_stripe
stripe_transaction_idcharhr_expense_stripe
untaxed_amountmonetaryhr_expense

Odoo 19 to 20

Community + Enterprise All changes in this step

Fields added (17)

Show all 17
FieldTypeModule
attach_receipts_to_invoicebooleansale_expense
can_edit_accountbooleanhr_expense
dispute_currency_idmany2onehr_expense_stripe
dispute_idmany2onehr_expense_stripe
disputed_amountmonetaryhr_expense_stripe
existing_bill_idmany2onehr_expense
expense_job_position_limit_amountmonetaryhr_expense
expense_job_position_limit_amount_currencymonetaryhr_expense
has_existing_billbooleanhr_expense
has_expense_job_position_limitbooleanhr_expense
is_expense_exceeding_job_position_limitbooleanhr_expense
is_own_expensebooleanhr_expense
l10n_be_is_mobility_expensebooleanl10n_be_hr_payroll_expense
l10n_be_mobility_budget_remaining_monthmonetaryl10n_be_hr_payroll_expense
l10n_be_mobility_budget_remaining_yearmonetaryl10n_be_hr_payroll_expense
last_notification_datedatetimehr_expense
split_expense_countintegerhr_expense

Now also inherits extract.mixin.with.words (fields from these parents are listed on their own pages).

No longer inherits documents.unlink.mixin.

1 actions on this model removed
  • hr_payroll_expense.hr_expense_add_to_payslip_action_server
1 menus opening this model removed
  • hr_expense.menu_hr_expense_account_employee_expenses

All fields declared on hr.expense (94)

Fields this model declares itself in any version, with the versions they exist in. Inherited fields (mail.thread and other mixins) are on the parent model's page.

present not present not covered (Enterprise, Odoo 16 and 17)

Show all 94 fields
FieldTypeLabelModule1617181920
account_idmany2one account.accountAccounthr_expense
account_move_idmany2one account.moveJournal Entryhr_expense
accounting_datedateAccounting Datehr_expense
amount_residualmonetaryAmount Duehr_expense
amount_taxmonetaryTax amount in Currencyhr_expense
amount_tax_companymonetaryTax amounthr_expense
approval_datedatetimeApproval Datehr_expense
approval_stateselectionhr_expense
approved_bymany2one res.usersApproved Byhr_expense
approved_ondatetimeApproved Onhr_expense
attach_receipts_to_invoicebooleanAttach receipts to future customer invoicessale_expense
attachment_idsone2many ir.attachmentAttachmentshr_expense
attachment_numberintegerNumber of Attachmentshr_expense
can_approvebooleanCan Approvehr_expense
can_be_reinvoicedbooleanCan be reinvoicedsale_expense
can_edit_accountbooleanhr_expense
can_resetbooleanCan Resethr_expense
card_idmany2one hr.expense.stripe.cardCardhr_expense_stripeE
company_currency_idmany2one res.currencyReport Company Currencyhr_expense
company_idmany2one res.companyCompanyhr_expense
currency_idmany2one res.currencyCurrencyhr_expense
currency_ratefloathr_expense
datedateDatehr_expense
department_idmany2one hr.departmentDepartmenthr_expense
descriptiontextInternal Noteshr_expense
dispute_currency_idmany2one res.currencyDispute Currencyhr_expense_stripeE
dispute_idmany2one hr.expense.stripe.disputehr_expense_stripeE
disputed_amountmonetaryDisputed Amounthr_expense_stripeE
document_countintegerDocument Countdocuments_hr_expenseE
duplicate_expense_idsmany2many hr.expensehr_expense
employee_idmany2one hr.employeeEmployeehr_expense
existing_bill_idmany2one account.moveExisting Billhr_expense
expense_job_position_limit_amountmonetaryJob Position Limithr_expense
expense_job_position_limit_amount_currencymonetaryJob Position Limit in Currencyhr_expense
former_sheet_idintegerFormer Reporthr_expense
has_existing_billbooleanhr_expense
has_expense_job_position_limitbooleanhr_expense
is_card_expensebooleanhr_expense_stripeE
is_editablebooleanIs Editable By Current Userhr_expense
is_expense_exceeding_job_position_limitbooleanhr_expense
is_multiple_currencybooleanIs currency_id different from the company_currency_idhr_expense
is_own_expensebooleanhr_expense
is_ref_editablebooleanReference Is Editable By Current Userhr_expense
is_refusedbooleanExplicitly Refused by manager or accountanthr_expense
journal_idmany2one account.journalhr_expense
l10n_be_is_mobility_expensebooleanl10n_be_hr_payroll_expenseE
l10n_be_mobility_budget_remaining_monthmonetaryl10n_be_hr_payroll_expenseE
l10n_be_mobility_budget_remaining_yearmonetaryl10n_be_hr_payroll_expenseE
label_convert_ratecharhr_expense
label_currency_ratecharhr_expense
last_notification_datedatetimeLast Notification Datehr_expense
manager_idmany2one res.usersManagerhr_expense
mcc_tag_idmany2one product.mcc.stripe.taghr_expense_stripeE
message_main_attachment_checksumcharhr_expense
namecharDescriptionhr_expense
nb_attachmentintegerNumber of Attachmentshr_expense
payment_method_line_idmany2one account.payment.method.linePayment Methodhr_expense
payment_modeselectionReimbursementhr_expense
payslip_idmany2one hr.payslipPaysliphr_payroll_expenseE
predicted_categoryselectionPredicted Categoryhr_expense_predict_productE
price_unitfloatUnit Pricehr_expense
product_descriptionhtmlhr_expense
product_has_costbooleanIs product with non zero cost selectedhr_expense
product_has_taxbooleanWhether tax is defined on a selected producthr_expense
product_idmany2one product.productProducthr_expense
product_uom_category_idmany2one uom.categoryUoM Categoryhr_expense
product_uom_idmany2one uom.uomUnithr_expense
quantityfloathr_expense
referencecharBill Referencehr_expense
refund_in_payslipbooleanReimburse In Next Paysliphr_payroll_expenseE
sale_order_idmany2one sale.orderReinvoice tosale_expense
sale_order_line_idmany2one sale.order.linesale_expense
same_currencybooleanIs currency_id different from the company_currency_idhr_expense
same_receipt_expense_idsmany2many hr.expensehr_expense
samplebooleanhr_expense_extractE
selectable_payment_method_line_idsmany2many account.payment.method.linehr_expense
sheet_idmany2one hr.expense.sheetExpense Reporthr_expense
sheet_is_editablebooleanhr_expense
split_expense_countintegerNumber of Split Expenseshr_expense
split_expense_origin_idmany2one hr.expenseOrigin Split Expensehr_expense
stateselectionStatushr_expense
stripe_authorization_idcharStripe Authorization IDhr_expense_stripeE
stripe_transaction_idcharStripe Transaction IDhr_expense_stripeE
tax_amountmonetaryTax amounthr_expense
tax_amount_currencymonetaryTax amount in Currencyhr_expense
tax_idsmany2many account.taxIncluded taxeshr_expense
total_amountmonetaryTotalhr_expense
total_amount_companymonetaryTotalhr_expense
total_amount_currencymonetaryTotal In Currencyhr_expense
unit_amountfloatUnit Pricehr_expense
unit_amount_displayfloatUnit Price Displayhr_expense
untaxed_amountmonetaryTotal Untaxed Amounthr_expense
untaxed_amount_currencymonetaryTotal Untaxed Amount In Currencyhr_expense
vendor_idmany2one res.partnerVendorhr_expense
Coverage. Odoo 16 to 17 and 17 to 18 compare Community modules only (the Enterprise 16 and 17 sources are not available to us). Odoo 18 to 19 and 19 to 20 include Community and Enterprise modules. Everything here comes from a static read of the Odoo source code: a field counts as removed only when no parent model, mixin or delegated model still provides it. Fields created dynamically at run time can be missed, and entries we could not confirm are marked as low confidence.