mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-23 01:32:07 +02:00
19.0 vanilla
This commit is contained in:
parent
a1137a1456
commit
e1d89e11e3
2789 changed files with 1093187 additions and 605897 deletions
54
odoo-bringout-oca-ocb-hr/hr/wizard/mail_activity_schedule.py
Normal file
54
odoo-bringout-oca-ocb-hr/hr/wizard/mail_activity_schedule.py
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
from odoo import api, fields, models
|
||||
from odoo.fields import Domain
|
||||
|
||||
|
||||
class MailActivitySchedule(models.TransientModel):
|
||||
_inherit = 'mail.activity.schedule'
|
||||
|
||||
department_id = fields.Many2one('hr.department', compute='_compute_department_id')
|
||||
plan_department_filterable = fields.Boolean(compute='_compute_plan_department_filterable')
|
||||
|
||||
@api.depends('department_id')
|
||||
def _compute_plan_available_ids(self):
|
||||
todo = self.filtered(lambda s: s.plan_department_filterable)
|
||||
for scheduler in todo:
|
||||
domain = scheduler._get_plan_available_base_domain()
|
||||
if not scheduler.department_id:
|
||||
domain &= Domain('department_id', '=', False)
|
||||
else:
|
||||
domain &= Domain('department_id', '=', False) | Domain('department_id', '=', scheduler.department_id.id)
|
||||
scheduler.plan_available_ids = self.env['mail.activity.plan'].search(domain)
|
||||
super(MailActivitySchedule, self - todo)._compute_plan_available_ids()
|
||||
|
||||
@api.depends('res_model')
|
||||
def _compute_plan_department_filterable(self):
|
||||
for wizard in self:
|
||||
wizard.plan_department_filterable = wizard.res_model == 'hr.employee'
|
||||
|
||||
@api.depends('res_model_id', 'res_ids')
|
||||
def _compute_department_id(self):
|
||||
for wizard in self:
|
||||
if wizard.plan_department_filterable:
|
||||
applied_on = wizard._get_applied_on_records()
|
||||
all_departments = applied_on.department_id
|
||||
wizard.department_id = False if len(all_departments) > 1 else all_departments
|
||||
else:
|
||||
wizard.department_id = False
|
||||
|
||||
def _compute_plan_date(self):
|
||||
todo = self.filtered(lambda s: s.res_model == 'hr.employee')
|
||||
for scheduler in todo:
|
||||
selected_employees = scheduler._get_applied_on_records()
|
||||
start_dates = selected_employees.filtered('date_start').mapped('date_start')
|
||||
if start_dates:
|
||||
today = fields.Date.today()
|
||||
planned_due_date = min(start_dates)
|
||||
if planned_due_date < today or (planned_due_date - today).days < 30:
|
||||
scheduler.plan_date = today + relativedelta(days=+30)
|
||||
else:
|
||||
scheduler.plan_date = planned_due_date
|
||||
super(MailActivitySchedule, self - todo)._compute_plan_date()
|
||||
Loading…
Add table
Add a link
Reference in a new issue