tictac/itis_hr_extend/wizard/ot_change.py

102 lines
3.9 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, DEFAULT_SERVER_DATE_FORMAT
from datetime import datetime, timedelta
class OTChange(models.TransientModel):
_name = "ot.change"
reason = fields.Char("Reason")
ot_time = fields.Float("Overtime Count")
leave_day = fields.Float("Leave Day")
@api.model
def default_get(self, fields):
res = super(OTChange, self).default_get(fields)
emp_id = self.env.context.get("active_id")
emp_rec = self.env['hr.employee'].browse(emp_id)
if self.env.context.get("from_ot_change", False):
# res.update({'ot_time': emp_rec.overtime_count})
res.update({'ot_time': emp_rec.employee_overtime_id.emp_overtime_count})
else:
res.update({'leave_day': emp_rec.additional_leave_days})
return res
@api.multi
def set_ot_time(self):
emp_id = self.env.context.get("active_id")
emp_rec = self.env['hr.employee'].browse(emp_id)
if self.env.context.get("from_ot_change", False):
emp_rec.update_overtime_count(self.ot_time, self.reason)
else:
emp_rec.update_leave_day(self.leave_day, self.reason)
return True
class LDChange(models.TransientModel):
_name = "ld.change"
reason = fields.Char("Reason")
type = fields.Selection([('add', 'Hinzufügen'),('sub', 'Abziehen')], "Type")
leave_day = fields.Float("Leave Day")
@api.multi
def set_ld_time(self):
leave_journal_obj = self.env['hr.leave.journal']
leave_days = self.leave_day
if self.type == 'sub':
leave_days = leave_days * -1
values = {
'employee_id': self.env.context.get("active_id"),
'year': datetime.today().year,
'year_type': 'actual',
'type': 'manual',
'leave_type':'days',
'leave_days': leave_days,
'name': self.reason + ' ' + self.env['res.users'].browse(self._uid).name + ' ' + datetime.now().strftime('%d%m%Y %H:%M:%S'),
}
leave_journal_obj.create(values)
#for SOW17
@api.multi
def set_nextyear_ld_time(self):
"""Add a logic to give ability to change leave day for the next year.
User can only change it after May month
"""
leave_journal_obj = self.env['hr.leave.journal']
leave_days = self.leave_day
if self.type == 'sub':
leave_days = leave_days * -1
values = {
'employee_id': self.env.context.get("active_id"),
'year': datetime.today().year+1,
'year_type': 'next',
'type': 'manual',
'leave_type':'days',
'leave_days': leave_days,
'name': self.reason + ' ' + self.env['res.users'].browse(self._uid).name + ' ' + datetime.now().strftime('%d%m%Y %H:%M:%S'),
}
leave_journal_obj.create(values)