[FW][FIX] hr_holidays: Improve error messages

closes odoo/odoo#83410

Forward-port-of: #83278
X-original-commit: db203ae7a6eee715fbc32939c5e38457cee7762a
Related: odoo/enterprise#23755
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
This commit is contained in:
Yannick Tivisse
2022-01-26 15:59:03 +00:00
parent 0dc683f033
commit 02b356cf82
4 changed files with 21 additions and 6 deletions
+8 -2
View File
@@ -1,16 +1,22 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
from odoo import fields, models
class HrDepartureWizard(models.TransientModel):
_name = 'hr.departure.wizard'
_description = 'Departure Wizard'
def _get_default_departure_date(self):
departure_date = False
if self.env.context.get('active_id'):
departure_date = self.env['hr.employee'].browse(self.env.context['active_id']).departure_date
return departure_date or fields.Date.today()
departure_reason_id = fields.Many2one("hr.departure.reason", default=lambda self: self.env['hr.departure.reason'].search([], limit=1), required=True)
departure_description = fields.Html(string="Additional Information")
departure_date = fields.Date(string="Departure Date", required=True, default=fields.Date.today)
departure_date = fields.Date(string="Departure Date", required=True, default=_get_default_departure_date)
employee_id = fields.Many2one(
'hr.employee', string='Employee', required=True,
default=lambda self: self.env.context.get('active_id', None),
+2 -2
View File
@@ -719,7 +719,7 @@ class HolidaysRequest(models.Model):
leave_days = mapped_days[holiday.employee_id.id][holiday.holiday_status_id.id]
if float_compare(leave_days['remaining_leaves'], 0, precision_digits=2) == -1 or float_compare(leave_days['virtual_remaining_leaves'], 0, precision_digits=2) == -1:
raise ValidationError(_('The number of remaining time off is not sufficient for this time off type.\n'
'Please also check the time off waiting for validation.'))
'Please also check the time off waiting for validation.') + '\n- %s' % holiday.display_name)
@api.constrains('date_from', 'date_to', 'employee_id')
def _check_date_state(self):
@@ -859,7 +859,7 @@ class HolidaysRequest(models.Model):
raise ValidationError(_(
'Could not find an allocation of type %(leave_type)s for the requested time period.',
leave_type=leave.holiday_status_id.display_name,
))
) + '\n- %s' % (leave.employee_id.name))
@api.constrains('holiday_allocation_id', 'date_to', 'date_from')
def _check_leave_type_validity(self):
@@ -5,9 +5,10 @@ from collections import defaultdict
from datetime import datetime, date
from dateutil.relativedelta import relativedelta
from odoo import api, fields, models
from odoo import api, fields, models, _
from odoo.addons.resource.models.resource import datetime_to_string, string_to_datetime, Intervals
from odoo.osv import expression
from odoo.exceptions import UserError
import pytz
@@ -178,6 +179,11 @@ class HrContract(models.Model):
return contract_vals
def _generate_work_entries(self, date_start, date_stop, force=False):
canceled_contracts = self.filtered(lambda c: c.state == 'cancel')
if canceled_contracts:
raise UserError(
_("Sorry, generating work entries from cancelled contracts is not allowed.") + '\n%s' % (
', '.join(canceled_contracts.mapped('name'))))
vals_list = []
date_start = fields.Datetime.to_datetime(date_start)
date_stop = datetime.combine(fields.Datetime.to_datetime(date_stop), datetime.max.time())
@@ -72,7 +72,10 @@ class HrLeave(models.Model):
nbr_contracts = self.env['hr.contract'].sudo().search_count(domain)
if nbr_contracts > 1:
contracts = self.env['hr.contract'].sudo().search(domain)
raise ValidationError(_('A leave cannot be set across multiple contracts.') + '\n' + ', '.join(contracts.mapped('name')))
raise ValidationError(
_('A leave cannot be set across multiple contracts.') + '\n%s\n%s' % (
', '.join(contracts.mapped('name')),
holiday.display_name))
def _cancel_work_entry_conflict(self):
"""