[FIX] resource: prevent week switch for default schedule
Steps to reproduce: In Working Times, click on "SWITCH TO 2 WEEKS CALENDAR" for the default calendar used by the company. Issue: A ValidationError appears: 'Attendances can't overlap.' Cause: To create a two-week schedule, by default, we will use attendances provided for the company's default schedule. When we want to switch from a one-week schedule to a two-week schedule, we first delete the attendances from the schedule to be modified. However, if this schedule is the company's default schedule, it will no longer have the default attendances that we must use to build the two-week schedule. So we end up with the two "fictitious" attendances that are used to delimit the two weeks. With only these two attendances, the constraint of not having two overlapping attendances is not respected (because the two attendances created will be modified to belong to the same week). Solution: Check that the calendar to be modified is not the default calendar used by the company. opw-3127337 closes odoo/odoo#112912 X-original-commit: 2f56ffbc2f1d3a2afbf51a859a5a5730af06fd6f Signed-off-by: Kevin Baptiste <kba@odoo.com>
This commit is contained in:
@@ -258,6 +258,12 @@ msgstr ""
|
||||
#. odoo-python
|
||||
#: code:addons/resource/models/resource.py:0
|
||||
#, python-format
|
||||
msgid "Impossible to switch calendar type for the default company schedule."
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: code:addons/resource/models/resource.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"In a calendar with 2 weeks mode, all periods need to be in the sections."
|
||||
msgstr ""
|
||||
|
||||
@@ -14,7 +14,7 @@ from pytz import timezone, utc
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.addons.base.models.res_partner import _tz_get
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.exceptions import ValidationError, UserError
|
||||
from odoo.osv import expression
|
||||
from odoo.tools.float_utils import float_round
|
||||
|
||||
@@ -184,6 +184,9 @@ class ResourceCalendar(models.Model):
|
||||
return float_round(hour_count / float(number_of_days), precision_digits=2)
|
||||
|
||||
def switch_calendar_type(self):
|
||||
if self == self.env.company.resource_calendar_id:
|
||||
raise UserError(_('Impossible to switch calendar type for the default company schedule.'))
|
||||
|
||||
if not self.two_weeks_calendar:
|
||||
self.attendance_ids.unlink()
|
||||
self.attendance_ids = [
|
||||
|
||||
Reference in New Issue
Block a user