Supplier invoices on HR expenses

hr_expense_invoice
REPOSITORY
REPOSITORYOCA/hr-expense
GIT
GIThttps://github.com/OCA/hr-expense.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr-expense/tree/18.0/hr_expense_invoice
VERSION
VERSION 1.0.3
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, Weblate, OCA-git-bot, oca-ci, David Bañón, christian-ramos-tecnativa, dtec-landoo
WEBSITE
WEBSITEhttps://github.com/OCA/hr-expense
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_expense
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - hr
    - phone_validation
    - resource_mail
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module should be used when a supplier invoice is paid by an
employee. It allows to set a supplier invoice for each expense line,
adding the corresponding journal items to transfer the debt to the
employee.

There are 2 ways to reference expense to invoice.

1.  On expense, directly select one invoice.
2.  On expense report, use button "Create Vendor Bill" to create one
    invoice for multiple expenses.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
hr_expense_sheet_form_view_inherit_sale_expense hr.expense.sheet.form.inherit.sale.expense hr.expense.sheet xpath Inherits hr_expense.view_hr_expense_sheet_form
hr_expense_view_form hr.expense.form hr.expense field Inherits hr_expense.hr_expense_view_form
view_move_form account.move.form - Add expense smart-button account.move div Inherits account.view_move_form
Models touched (4)

New fields (2)
  • expense_ids One2many → hr.expense
    comodel_name='hr.expense' inverse_name='invoice_id' string='Expenses'
  • source_invoice_expense_id Many2one → hr.expense
    comodel_name='hr.expense' help='Reference to the expense with a linked invoice that generated thistransfer journal entry'
Public methods (2)
  • action_force_register_payment(self)
  • action_view_expense(self)

New fields (0)

No new fields.

Public methods (1)
  • reconcile(self)
    Mark expenses paid by employee having invoice when reconciling them.

New fields (4)
  • amount_residual Monetary
    compute='_compute_amount_residual' store=True string='Amount Due'
  • invoice_id Many2one → account.move
    comodel_name='account.move' copy=False domain=[('move_type', '=', 'in_invoice'), ('state', '=', 'posted'), ('payment_state', '=', 'not_paid'), ('expense_ids', '=', False)] string='Vendor Bill'
  • sheet_id_state Selection
    related='sheet_id.state' string='Sheet state'
  • transfer_move_ids One2many → account.move
    comodel_name='account.move' inverse_name='source_invoice_expense_id'
Public methods (1)
  • action_expense_create_invoice(self)

New fields (1)
  • invoice_count Integer
    compute='_compute_invoice_count'
Public methods (4)
  • action_sheet_move_post(self)
  • action_view_invoices(self)
  • get_expense_sheets_with_invoices(self, func)
  • set_to_paid(self)
    Don't mark sheet as paid when reconciling invoices.
REPOSITORY
REPOSITORYOCA/hr-expense
GIT
GIThttps://github.com/OCA/hr-expense.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr-expense/tree/17.0/hr_expense_invoice
VERSION
VERSION 1.0.4
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, Víctor Martínez, OCA-git-bot, desdelinux, oca-ci, German Loredo [Vauxoo], David Bañón
WEBSITE
WEBSITEhttps://github.com/OCA/hr-expense
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_expense
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - hr
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module should be used when a supplier invoice is paid by an
employee. It allows to set a supplier invoice for each expense line,
adding the corresponding journal items to transfer the debt to the
employee.

There are 2 ways to reference expense to invoice.

1.  On expense, directly select one invoice.
2.  On expense report, use button "Create Vendor Bill" to create one
    invoice for multiple expenses.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
hr_expense_sheet_form_view_inherit_sale_expense hr.expense.sheet.form.inherit.sale.expense hr.expense.sheet xpath Inherits hr_expense.view_hr_expense_sheet_form
hr_expense_view_form hr.expense.form hr.expense field Inherits hr_expense.hr_expense_view_form
view_move_form account.move.form - Add expense smart-button account.move div Inherits account.view_move_form
Models touched (4)

New fields (2)
  • expense_ids One2many → hr.expense
    comodel_name='hr.expense' inverse_name='invoice_id' string='Expenses'
  • source_invoice_expense_id Many2one → hr.expense
    comodel_name='hr.expense' help='Reference to the expense with a linked invoice that generated thistransfer journal entry'
Public methods (1)
  • action_view_expense(self)

New fields (0)

No new fields.

Public methods (1)
  • reconcile(self)
    Mark expenses paid by employee having invoice when reconciling them.

New fields (4)
  • amount_residual Monetary
    compute='_compute_amount_residual' store=True string='Amount Due'
  • invoice_id Many2one → account.move
    comodel_name='account.move' copy=False domain=[('move_type', '=', 'in_invoice'), ('state', '=', 'posted'), ('payment_state', '=', 'not_paid'), ('expense_ids', '=', False)] string='Vendor Bill'
  • sheet_id_state Selection
    related='sheet_id.state' string='Sheet state'
  • transfer_move_ids One2many → account.move
    comodel_name='account.move' inverse_name='source_invoice_expense_id'
Public methods (1)
  • action_expense_create_invoice(self)

New fields (1)
  • invoice_count Integer
    compute='_compute_invoice_count'
Public methods (3)
  • action_sheet_move_create(self)
    Perform extra checks and set proper payment state according linked invoices.
  • action_view_invoices(self)
  • set_to_paid(self)
    Don't mark sheet as paid when reconciling invoices.
REPOSITORY
REPOSITORYOCA/hr-expense
GIT
GIThttps://github.com/OCA/hr-expense.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr-expense/tree/16.0/hr_expense_invoice
VERSION
VERSION 2.0.3
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Eduardo De Miguel
WEBSITE
WEBSITEhttps://github.com/OCA/hr-expense
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:53
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_expense
    - hr_contract
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
hr_expense_sheet_form_view_inherit_sale_expense hr.expense.sheet.form.inherit.sale.expense hr.expense.sheet xpath Inherits hr_expense.view_hr_expense_sheet_form
hr_expense_view_form hr.expense.form hr.expense field Inherits hr_expense.hr_expense_view_form
view_move_form account.move.form - Add expense smart-button account.move div Inherits account.view_move_form
Models touched (4)

New fields (2)
  • expense_ids One2many → hr.expense
    comodel_name='hr.expense' inverse_name='invoice_id' string='Expenses'
  • source_invoice_expense_id Many2one → hr.expense
    comodel_name='hr.expense' help='Reference to the expense with a linked invoice that generated thistransfer journal entry'
Public methods (2)
  • action_view_expense(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • reconcile(self)
    Mark expenses paid by employee having invoice when reconciling them.

New fields (3)
  • invoice_id Many2one → account.move
    comodel_name='account.move' copy=False domain=[('move_type', '=', 'in_invoice'), ('state', '=', 'posted'), ('payment_state', '=', 'not_paid'), ('expense_ids', '=', False)] string='Vendor Bill'
  • sheet_id_state Selection
    related='sheet_id.state' string='Sheet state'
  • transfer_move_ids One2many → account.move
    comodel_name='account.move' inverse_name='source_invoice_expense_id'
Public methods (2)
  • action_expense_create_invoice(self)
  • action_move_create(self)
    Don't let super to create any move: - Paid by company: there's already the invoice. - Paid by employee: we create here a journal entry transferring the AP balance from the invoice partner to the employee.

New fields (1)
  • invoice_count Integer
    compute='_compute_invoice_count'
Public methods (3)
  • action_sheet_move_create(self)
    Perform extra checks and set proper state and payment state according linked invoices.
  • action_view_invoices(self)
  • set_to_paid(self)
    Don't mark sheet as paid when reconciling invoices.
REPOSITORY
REPOSITORYOCA/hr-expense
GIT
GIThttps://github.com/OCA/hr-expense.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr-expense/tree/15.0/hr_expense_invoice
VERSION
VERSION 1.1.3
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSVíctor Martínez, nicolas, Weblate, OCA-git-bot, Nicolas Mac Rouillon, oca-ci, DavidJForgeFlow
WEBSITE
WEBSITEhttps://github.com/OCA/hr-expense
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_expense
    - hr_contract
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
hr_expense_sheet_form_view_inherit_sale_expense hr.expense.sheet.form.inherit.sale.expense hr.expense.sheet xpath Inherits hr_expense.view_hr_expense_sheet_form
hr_expense_view_form hr.expense.form hr.expense field Inherits hr_expense.hr_expense_view_form
Models touched (4)

New fields (1)
  • expense_ids One2many → hr.expense
    comodel_name='hr.expense' inverse_name='invoice_id' string='Expenses'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • action_create_payments(self)

New fields (2)
  • invoice_id Many2one → account.move
    comodel_name='account.move' copy=False domain=[('move_type', '=', 'in_invoice'), ('state', '=', 'posted'), ('payment_state', '=', 'not_paid'), ('expense_ids', '=', False)] string='Vendor Bill'
  • sheet_id_state Selection
    related='sheet_id.state' string='Sheet state'
Public methods (1)
  • action_expense_create_invoice(self)

New fields (1)
  • invoice_count Integer
    compute='_compute_invoice_count'
Public methods (3)
  • action_sheet_move_create(self)
  • action_view_invoices(self)
  • set_to_paid(self)
    Don't mark sheet as paid when reconciling invoices.
REPOSITORY
REPOSITORYOCA/hr-expense
GIT
GIThttps://github.com/OCA/hr-expense.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr-expense/tree/14.0/hr_expense_invoice
VERSION
VERSION 1.1.4
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Lois Rilo, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Saran440, Kaynnan Lemes
WEBSITE
WEBSITEhttps://github.com/OCA/hr-expense
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_expense
    - hr_contract
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
hr_expense_sheet_form_view_inherit_sale_expense hr.expense.sheet.form.inherit.sale.expense hr.expense.sheet xpath Inherits hr_expense.view_hr_expense_sheet_form
hr_expense_view_form hr.expense.form hr.expense field Inherits hr_expense.hr_expense_view_form
Models touched (4)

New fields (1)
  • expense_ids One2many → hr.expense
    comodel_name='hr.expense' inverse_name='invoice_id' string='Expenses'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • action_create_payments(self)

New fields (2)
  • invoice_id Many2one → account.move
    comodel_name='account.move' copy=False domain=[('move_type', '=', 'in_invoice'), ('state', '=', 'posted'), ('payment_state', '=', 'not_paid'), ('expense_ids', '=', False)] string='Vendor Bill'
  • sheet_id_state Selection
    related='sheet_id.state' string='Sheet state'
Public methods (1)
  • action_expense_create_invoice(self)

New fields (1)
  • invoice_count Integer
    compute='_compute_invoice_count'
Public methods (3)
  • action_sheet_move_create(self)
  • action_view_invoices(self)
  • set_to_paid(self)
    Don't mark sheet as paid when reconciling invoices.
REPOSITORY
REPOSITORYOCA/hr-expense
GIT
GIThttps://github.com/OCA/hr-expense.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr-expense/tree/13.0/hr_expense_invoice
VERSION
VERSION 1.3.3
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Saran440
WEBSITE
WEBSITEhttps://github.com/OCA/hr-expense
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:17
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_expense
    - hr_contract
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - mail_bot
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
hr_expense_sheet_form_view_inherit_sale_expense hr.expense.sheet.form.inherit.sale.expense hr.expense.sheet xpath Inherits hr_expense.view_hr_expense_sheet_form
hr_expense_view_form hr.expense.form hr.expense field Inherits hr_expense.hr_expense_view_form
Models touched (4)

New fields (1)
  • expense_ids One2many → hr.expense
    comodel_name='hr.expense' inverse_name='invoice_id' string='Expenses'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • action_validate_invoice_payment(self)

New fields (2)
  • invoice_id Many2one → account.move
    comodel_name='account.move' copy=False domain=[('type', '=', 'in_invoice'), ('state', '=', 'posted'), ('invoice_payment_state', '=', 'not_paid'), ('expense_ids', '=', False)] string='Vendor Bill'
  • sheet_id_state Selection
    related='sheet_id.state' string='Sheet state'
Public methods (1)
  • action_expense_create_invoice(self)

New fields (1)
  • invoice_count Integer
    compute='_compute_invoice_count'
Public methods (3)
  • action_sheet_move_create(self)
  • action_view_invoices(self)
  • set_to_paid(self)
    Don't mark sheet as paid when reconciling invoices.
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/12.0/hr_expense_invoice
VERSION
VERSION 2.0.3
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, mreficent, david, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Kitti U
WEBSITE
WEBSITEhttps://github.com/OCA/hr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_expense
    - hr_contract
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - account
    - product
    - decimal_precision
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
hr_expense_sheet_form_view_inherit_sale_expense hr.expense.sheet.form.inherit.sale.expense hr.expense.sheet xpath Inherits hr_expense.view_hr_expense_sheet_form
hr_expense_view_form hr.expense.form hr.expense field Inherits hr_expense.hr_expense_view_form
Models touched (5)

New fields (1)
  • expense_ids One2many → hr.expense
    comodel_name='hr.expense' inverse_name='invoice_id' string='Expenses'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • reconcile(self, writeoff_acc_id=False, writeoff_journal_id=False)
    @api.multi

New fields (0)

No new fields.

Public methods (1)
  • action_validate_invoice_payment(self)

New fields (2)
  • invoice_id Many2one → account.invoice
    comodel_name='account.invoice' copy=False domain=[('type', '=', 'in_invoice'), ('state', '=', 'open'), ('expense_ids', '=', False)] oldname='invoice' string='Vendor Bill'
  • sheet_id_state Selection
    related='sheet_id.state' string='Sheet state'
Public methods (1)
  • action_expense_create_invoice(self)

New fields (1)
  • invoice_count Integer
    compute='_compute_invoice_count'
Public methods (2)
  • action_sheet_move_create(self)
    @api.multi
  • action_view_invoices(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/11.0/hr_expense_invoice
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, OCA Transbot, oca-travis, OCA-git-bot, Eric Antones
WEBSITE
WEBSITEhttps://github.com/OCA/hr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:58
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_expense
    - hr_contract
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - account
    - product
    - decimal_precision
    - analytic
    - web_planner
    - portal
    - http_routing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
hr_expense_form_view hr.expense.form hr.expense field Inherits hr_expense.hr_expense_form_view
Models touched (2)

New fields (1)
  • invoice_id Many2one → account.invoice
    comodel_name='account.invoice' domain="[('type', '=', 'in_invoice'), ('state', '=', 'open')]" oldname='invoice' string='Invoice'
Public methods (3)
  • create(self, vals)
    @api.model
  • onchange_invoice_id(self)
    @api.onchange('invoice_id')
  • write(self, vals)
    @api.multi

New fields (0)

No new fields.

Public methods (1)
  • action_sheet_move_create(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/10.0/hr_expense_invoice
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, cubells, OCA Transbot, oca-travis
WEBSITE
WEBSITEhttps://www.tecnativa.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_expense
    - hr_contract
    - base_action_rule
    - base
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - hr
    - account_accountant
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
hr_expense_form_view hr.expense.form hr.expense xpath Inherits hr_expense.hr_expense_form_view
Models touched (2)

New fields (1)
  • invoice_id Many2one → account.invoice
    comodel_name='account.invoice' domain="[('type', '=', 'in_invoice'), ('state', '=', 'open')]" oldname='invoice' string='Invoice'
Public methods (3)
  • create(self, vals)
    @api.model
  • onchange_invoice_id(self)
    @api.onchange('invoice_id')
  • write(self, vals)
    @api.multi

New fields (0)

No new fields.

Public methods (1)
  • action_sheet_move_create(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/9.0/hr_expense_invoice
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYHR
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Serv. Tecnol. Avanzados - Pedro M. Baeza
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Serv. Tecnol. Avanzados - Pedro M. Baeza
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITEhttp://www.serviciosbaeza.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_expense
    - hr_contract
    - base_action_rule
    - base
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - hr
    - web_tip
    - account_accountant
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
view_expenses_form_invoice hr.expense.form.invoice hr.expense.expense xpath Inherits hr_expense.view_expenses_form
Models touched (2)

New fields (0)

No new fields.

Public methods (4)
  • action_move_create(self)
    @api.multi
    Reconcile supplier invoice payables with the created move lines.
  • copy(self, default=None)
    @api.multi
  • line_get_convert(self, x, part, date)
    @api.model
  • move_line_get_item(self, line)
    @api.model

New fields (1)
  • invoice Many2one → account.invoice
    comodel_name='account.invoice' domain="[('type', '=', 'in_invoice'), ('state', '=', 'open')]"
Public methods (3)
  • create(self, vals)
    @api.model
  • onchange_invoice(self)
    @api.one@api.onchange('invoice')
    Show in screen invoice data
  • write(self, vals)
    @api.multi
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/8.0/hr_expense_invoice
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYHR
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Serv. Tecnol. Avanzados - Pedro M. Baeza
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Serv. Tecnol. Avanzados - Pedro M. Baeza
COMMITTERS
COMMITTERSStéphane Bidoul, Pedro M. Baeza, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis
WEBSITE
WEBSITEhttp://www.serviciosbaeza.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_expense
    - hr
    - base_setup
    - base
    - web_kanban
    - web
    - mail
    - resource
    - board
    - account_accountant
    - account_voucher
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
view_expenses_form_invoice hr.expense.form.invoice hr.expense.expense xpath Inherits hr_expense.view_expenses_form
Models touched (2)

New fields (0)

No new fields.

Public methods (4)
  • action_move_create(self)
    @api.multi
    Reconcile supplier invoice payables with the created move lines.
  • copy(self, default=None)
    @api.multi
  • line_get_convert(self, x, part, date)
    @api.model
  • move_line_get_item(self, line)
    @api.model

New fields (1)
  • invoice Many2one → account.invoice
    comodel_name='account.invoice' domain="[('type', '=', 'in_invoice'), ('state', '=', 'open')]"
Public methods (3)
  • create(self, vals)
    @api.model
  • onchange_invoice(self)
    @api.one@api.onchange('invoice')
    Show in screen invoice data
  • write(self, vals)
    @api.multi
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/hr-expense
PULL REQUEST
PULL REQUEST[19.0][MIG] hr_expense_invoice (#373)