28 lines
1002 B
Python
28 lines
1002 B
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('expense_ids')
|
|
def _compute_is_expense_payment(self):
|
|
for move in self:
|
|
move.is_expense_payment = bool(move.sudo().expense_ids)
|
|
|
|
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)
|