116 lines
5.5 KiB
Python
116 lines
5.5 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
##############################################################################
|
||
|
#
|
||
|
# TicTac allows several HR functionalities. This program bases on Odoo v. 8. Copyright
|
||
|
# (C) 2018 ITIS www.itis.de commissioned by Wikimedia Deutschland e.V.
|
||
|
#
|
||
|
# This program is free software: you can redistribute it and/or modify it under the
|
||
|
# terms of the GNU Affero General Public License as published by the Free Software
|
||
|
# Foundation, either version 3 of the License, or (at your option) any later version.
|
||
|
#
|
||
|
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||
|
# PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
|
||
|
#
|
||
|
# You should have received a copy of the GNU Affero General Public License along with
|
||
|
# this program. If not, see <https://www.gnu.org/licenses/>.
|
||
|
#
|
||
|
##############################################################################
|
||
|
|
||
|
from openerp import models, api, fields, _
|
||
|
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
|
||
|
from datetime import datetime
|
||
|
|
||
|
|
||
|
class ITISHoliday(models.Model):
|
||
|
|
||
|
_name = "itis.holiday"
|
||
|
|
||
|
name = fields.Char("Holiday Name")
|
||
|
date = fields.Date("Date")
|
||
|
|
||
|
@api.model
|
||
|
def get_holiday_date(self):
|
||
|
"""
|
||
|
function call from the js, use to return the holiday dates
|
||
|
"""
|
||
|
holiday_dates = []
|
||
|
for holiday_brw in self.search([]):
|
||
|
holiday_dates.append(holiday_brw.date)
|
||
|
|
||
|
return holiday_dates
|
||
|
|
||
|
@api.model
|
||
|
def create(self, values):
|
||
|
"""
|
||
|
To create holiday list entry calender of leave request
|
||
|
|
||
|
"""
|
||
|
res = super(ITISHoliday, self).create(values)
|
||
|
if values:
|
||
|
holiday_date = values.get('date')
|
||
|
holiday_name = values.get('name')
|
||
|
|
||
|
if holiday_date and holiday_name:
|
||
|
hr_holidays_status_brw = self.env['hr.holidays.status'].search([('is_holiday','=',True)],limit=1)
|
||
|
hr_holidays_env = self.env['hr.holidays']
|
||
|
if hr_holidays_status_brw:
|
||
|
hr_emp_records = self.env['hr.employee'].search([('user_id','!=',None)])
|
||
|
for hr_emp_brw in hr_emp_records:
|
||
|
try:
|
||
|
hr_holiday_brw = hr_holidays_env.with_context(mail_notify_force_send=False,holiday_create=True,mail_create_nosubscribe=False,mail_create_nolog=False).\
|
||
|
create({'employee_id':hr_emp_brw.id, 'date_from':holiday_date,'date_to':holiday_date,
|
||
|
'holiday_name':holiday_name,'holiday_status_id':hr_holidays_status_brw.id,
|
||
|
'holiday_type':'employee','leave_selection':'full_day','leave_selection_date_to':'full_day',})
|
||
|
# msg = _("Holiday %s created.") %(holiday_name)
|
||
|
# hr_holiday_brw.message_post(body=msg)
|
||
|
self._cr.execute("update hr_holidays set state = 'validate' where id = %s",(hr_holiday_brw.id,))
|
||
|
except:
|
||
|
#Todo Error handling
|
||
|
pass
|
||
|
return res
|
||
|
|
||
|
@api.multi
|
||
|
def unlink(self):
|
||
|
"""
|
||
|
To delete the related holiday from the leave request
|
||
|
"""
|
||
|
for itis_holiday_brw in self:
|
||
|
hr_holidays_env = self.env['hr.holidays']
|
||
|
hr_holidays_records = hr_holidays_env.search([('date_from','=',itis_holiday_brw.date),('holiday_name','=',itis_holiday_brw.name)])
|
||
|
for hr_holiday_brw in hr_holidays_records:
|
||
|
self._cr.execute("delete from hr_holidays where id = %s",(hr_holiday_brw.id,))
|
||
|
|
||
|
return super(ITISHoliday, self).unlink()
|
||
|
|
||
|
@api.multi
|
||
|
def write(self, vals):
|
||
|
"""
|
||
|
To write on the leave request holiday base upon the conditions
|
||
|
"""
|
||
|
hr_holidays_status_brw = self.env['hr.holidays.status'].search([('is_holiday','=',True)],limit=1)
|
||
|
hr_holidays_env = self.env['hr.holidays']
|
||
|
if vals.get('date'):
|
||
|
|
||
|
hr_holidays_records = hr_holidays_env.search([('date_from','=',self.date),('holiday_name','=',self.name)])
|
||
|
for hr_holiday_brw in hr_holidays_records:
|
||
|
self._cr.execute("delete from hr_holidays where id = %s",(hr_holiday_brw.id,))
|
||
|
if vals.get('name'):
|
||
|
name = vals.get('name')
|
||
|
else:
|
||
|
name = self.name
|
||
|
if hr_holidays_status_brw:
|
||
|
hr_emp_records = self.env['hr.employee'].search([('user_id','!=',None)])
|
||
|
for hr_emp_brw in hr_emp_records:
|
||
|
hr_holiday_brw = hr_holidays_env.create({'employee_id':hr_emp_brw.id,'date_from':vals.get('date'),'date_to':vals.get('date'),'holiday_name':name,'holiday_status_id':hr_holidays_status_brw.id})
|
||
|
# msg = _("Holiday %s created.") %(name)
|
||
|
# hr_holiday_brw.message_post(body=msg)
|
||
|
self._cr.execute("update hr_holidays set state = 'validate' where id = %s",(hr_holiday_brw.id,))
|
||
|
elif vals.get('name') and not vals.get('date'):
|
||
|
hr_holidays_records = hr_holidays_env.search([('date_from','=',self.date),('holiday_name','=',self.name)])
|
||
|
for hr_holidays_brw in hr_holidays_records:
|
||
|
self._cr.execute("update hr_holidays set holiday_name = %s where id = %s" , (vals.get('name'),hr_holidays_brw.id))
|
||
|
res = super(ITISHoliday, self).write(vals)
|
||
|
return res
|