diff --git a/addons/hr_expense/models/hr_expense.py b/addons/hr_expense/models/hr_expense.py index 956224ef800..0f40421bd0b 100644 --- a/addons/hr_expense/models/hr_expense.py +++ b/addons/hr_expense/models/hr_expense.py @@ -500,41 +500,29 @@ class HrExpenseSheet(models.Model): self.department_id = self.employee_id.department_id @api.multi - def check_consistency(self): - for rec in self: - expense_lines = rec.expense_line_ids - if not expense_lines: - continue - if any(expense.employee_id != rec.employee_id for expense in expense_lines): - raise UserError(_("Expenses must belong to the same Employee.")) - if any(expense.payment_mode != expense_lines[0].payment_mode for expense in expense_lines): - raise UserError(_("Expenses must have been paid by the same entity (Company or employee)")) - - @api.one - @api.constrains('expense_line_ids') - def _check_employee(self): - employee_ids = self.expense_line_ids.mapped('employee_id') - if len(employee_ids) > 1 or (len(employee_ids) == 1 and employee_ids != self.employee_id): - raise ValidationError(_('You cannot add expense lines of another employee.')) - - @api.one @api.constrains('expense_line_ids') def _check_payment_mode(self): - payment_mode = set(self.expense_line_ids.mapped('payment_mode')) - if len(payment_mode) > 1: - raise ValidationError(_('You cannot report expenses with different payment modes.')) + for sheet in self: + expense_lines = sheet.mapped('expense_line_ids') + if expense_lines and any(expense.payment_mode != expense_lines[0].payment_mode for expense in expense_lines): + raise ValidationError(_("Expenses must have been paid by the same entity (Company or employee)")) + + @api.constrains('expense_line_ids', 'employee_id') + def _check_employee(self): + for sheet in self: + employee_ids = sheet.expense_line_ids.mapped('employee_id') + if len(employee_ids) > 1 or (len(employee_ids) == 1 and employee_ids != sheet.employee_id): + raise ValidationError(_('You cannot add expense lines of another employee.')) @api.model def create(self, vals): self._create_set_followers(vals) sheet = super(HrExpenseSheet, self).create(vals) - sheet.check_consistency() return sheet @api.multi def write(self, vals): res = super(HrExpenseSheet, self).write(vals) - self.check_consistency() if vals.get('employee_id'): self._add_followers() return res