mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
55 lines
2.0 KiB
Python
55 lines
2.0 KiB
Python
from odoo import api, fields, models
|
|
|
|
|
|
class HRHolidays(models.Model):
|
|
_inherit = 'hr.leave.type'
|
|
|
|
grant_by_tag = fields.Boolean(string="Grant by Tag")
|
|
|
|
def _accrue_for_employee_values(self, employee):
|
|
return {
|
|
'holiday_status_id': self.holiday_status_id.id,
|
|
'number_of_days_temp': self.number_of_days_temp,
|
|
'holiday_type': 'employee',
|
|
'employee_id': employee.id,
|
|
'type': 'add',
|
|
'state': 'confirm',
|
|
'double_validation': self.double_validation,
|
|
'grant_by_tag': self.grant_by_tag,
|
|
}
|
|
|
|
def accrue_for_employee(self, employee):
|
|
holidays = self.env['hr.leave'].sudo()
|
|
for leave_to_create in self:
|
|
values = leave_to_create._accrue_for_employee_values(employee)
|
|
if values:
|
|
leave = holidays.create(values)
|
|
leave.action_approve()
|
|
|
|
|
|
class HREmployee(models.Model):
|
|
_inherit = 'hr.employee'
|
|
|
|
@api.multi
|
|
def write(self, values):
|
|
holidays = self.env['hr.leave'].sudo()
|
|
for emp in self:
|
|
if values.get('category_ids'):
|
|
categ_ids_command_list = values.get('category_ids')
|
|
for categ_ids_command in categ_ids_command_list:
|
|
ids = None
|
|
if categ_ids_command[0] == 6:
|
|
ids = set(categ_ids_command[2])
|
|
ids -= set(emp.category_ids.ids)
|
|
if categ_ids_command[0] == 4:
|
|
id = categ_ids_command[1]
|
|
if id not in emp.category_ids.ids:
|
|
ids = [id]
|
|
if ids:
|
|
# new category ids
|
|
leaves = holidays.search([('category_id', 'in', list(ids)),
|
|
('grant_by_tag', '=', True)])
|
|
leaves.accrue_for_employee(emp)
|
|
|
|
return super(HREmployee, self).write(values)
|