[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:
@@ -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),
|
||||
|
||||
@@ -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):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user