hr_expense_account_split/models/account_move.py

28 lines
1.0 KiB
Python

from odoo import models, fields, api
class AccountMove(models.Model):
_inherit = 'account.move'
is_expense_payment = fields.Boolean(
string="Is Expense Payment",
compute="_compute_is_expense_payment",
store=True,
)
@api.depends('payment_id.expense_sheet_id')
def _compute_is_expense_payment(self):
for move in self:
move.is_expense_payment = bool(move.payment_id and move.payment_id.expense_sheet_id)
def _get_hr_expense_base_class(self):
""" Returns the hr_expense class in the MRO to jump over it. """
mro = type(self).mro()
return next((c for c in mro if c.__module__ == 'odoo.addons.hr_expense.models.account_move'), None)
def write(self, vals):
# Surgical Jumper to bypass hr_expense's account.move lock
hr_expense_class = self._get_hr_expense_base_class()
if hr_expense_class and self._context.get('skip_expense_lock'):
return super(hr_expense_class, self).write(vals)
return super().write(vals)