planning constraint added

This commit is contained in:
projectsodoo 2021-01-07 11:26:41 +05:30
parent e9a9ba7e23
commit 9ca2ec1ffe
1 changed files with 20 additions and 1 deletions

View File

@ -10,7 +10,7 @@ import uuid
from math import ceil
from odoo import api, fields, models, _
from odoo.exceptions import UserError, AccessError
from odoo.exceptions import UserError, AccessError, ValidationError
from odoo.osv import expression
from odoo.tools.safe_eval import safe_eval
from odoo.tools import format_time
@ -92,6 +92,25 @@ class Planning(models.Model):
('check_allocated_hours_positive', 'CHECK(allocated_hours >= 0)', 'You cannot have negative shift'),
]
@api.constrains('start_datetime', 'end_datetime', 'employee_id')
def _check_same_time_valid(self):
if self.ids:
self.flush(['start_datetime', 'end_datetime', 'employee_id'])
query = """
SELECT S1.id,count(*) FROM
planning_slot S1, planning_slot S2
WHERE
S1.start_datetime < S2.end_datetime and S1.end_datetime > S2.start_datetime and S1.id <> S2.id and S1.employee_id = S2.employee_id
GROUP BY S1.id;
"""
self.env.cr.execute(query, (tuple(self.ids),))
overlap_mapping = dict(self.env.cr.fetchall())
for slot in self:
if overlap_mapping.get(slot.id, 0) >= 1:
raise ValidationError(_('Planning already assigned for this employee at the same time.'))
@api.depends('employee_id')
def _compute_planning_slot_company_id(self):
if self.employee_id: