Skip to content

Instantly share code, notes, and snippets.

@tejastank
Last active December 14, 2015 12:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tejastank/5089560 to your computer and use it in GitHub Desktop.
Save tejastank/5089560 to your computer and use it in GitHub Desktop.
OpenERP hr_holidays : Concern working hours(calendar_id) with leave request, when anyone take leave and have set working hours, then leave should be lf evaluated using working hours, if employee takes leave from Monday to Friday then leave will be 5 days leave not 7 days. Depends on working hours what he set. e.g: if he takes 1 day full and seco…
=== modified file 'hr/hr_data.xml'
--- hr/hr_data.xml 2013-02-25 10:25:40 +0000
+++ hr/hr_data.xml 2013-03-04 13:01:51 +0000
@@ -17,6 +17,7 @@
<field name="name">Administrator</field>
<field name="user_id" ref="base.user_root"/>
<field name="image">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</field>
+ <field name="calendar_id" ref="resource.timesheet_group1"/>
</record>
</data>
=== modified file 'hr/hr_demo.xml'
--- hr/hr_demo.xml 2013-03-01 08:47:20 +0000
+++ hr/hr_demo.xml 2013-03-04 13:00:41 +0000
@@ -99,6 +99,7 @@
<field name="work_location">Grand-Rosière</field>
<field name="work_phone">+3281813700</field>
<field name="work_email">fp@openerp.com</field>
+ <field name="calendar_id" ref="resource.timesheet_group1"/>
<field name="image">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</field>
</record>
@@ -110,6 +111,7 @@
<field name="work_location">Grand-Rosière</field>
<field name="work_phone">+3281813700</field>
<field name="work_email">al@openerp.com</field>
+ <field name="calendar_id" ref="resource.timesheet_group1"/>
<field name="image">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</field>
</record>
=== modified file 'hr_holidays/hr_holidays.py'
--- hr_holidays/hr_holidays.py 2013-02-24 13:21:11 +0000
+++ hr_holidays/hr_holidays.py 2013-03-04 13:07:46 +0000
@@ -156,7 +156,7 @@
'employee_id': fields.many2one('hr.employee', "Employee", select=True, invisible=False, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'manager_id': fields.many2one('hr.employee', 'First Approval', invisible=False, readonly=True, help='This area is automatically filled by the user who validate the leave'),
'notes': fields.text('Reasons',readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
- 'number_of_days_temp': fields.float('Allocation', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
+ 'number_of_days_temp': fields.float('Allocation', digits=(2,1), readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'number_of_days': fields.function(_compute_number_of_days, string='Number of Days', store=True),
'meeting_id': fields.many2one('crm.meeting', 'Meeting'),
'type': fields.selection([('remove','Leave Request'),('add','Allocation Request')], 'Request Type', required=True, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, help="Choose 'Leave Request' if someone wants to take an off-day. \nChoose 'Allocation Request' if you want to increase the number of leaves available for someone", select=True),
@@ -216,23 +216,23 @@
}
return result
- def onchange_employee(self, cr, uid, ids, employee_id):
- result = {'value': {'department_id': False}}
+ def onchange_employee(self, cr, uid, ids, employee_id, date_to, date_from, context):
+ result = self.onchange_date(cr, uid, ids, employee_id, date_to, date_from, context)
if employee_id:
employee = self.pool.get('hr.employee').browse(cr, uid, employee_id)
- result['value'] = {'department_id': employee.department_id.id}
+ result['value']['department_id'] = employee.department_id.id or False
return result
# TODO: can be improved using resource calendar method
- def _get_number_of_days(self, date_from, date_to):
+ def _get_number_of_days(self, date_from, date_to, calendar=False, context=None):
"""Returns a float equals to the timedelta between two dates given as string."""
-
- DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S"
- from_dt = datetime.datetime.strptime(date_from, DATETIME_FORMAT)
- to_dt = datetime.datetime.strptime(date_to, DATETIME_FORMAT)
- timedelta = to_dt - from_dt
- diff_day = timedelta.days + float(timedelta.seconds) / 86400
- return diff_day
+ if not calendar:
+ timedelta = date_to - date_from
+ diff_day = (timedelta.days + float(timedelta.seconds) / 86400) + 1
+ return round(math.floor(diff_day))
+ else:
+ diff_day = calendar.get_working_days(date_from, date_to, context=context)[calendar.id]
+ return diff_day
def unlink(self, cr, uid, ids, context=None):
for rec in self.browse(cr, uid, ids, context=context):
@@ -240,51 +240,41 @@
raise osv.except_osv(_('Warning!'),_('You cannot delete a leave which is in %s state.')%(rec.state))
return super(hr_holidays, self).unlink(cr, uid, ids, context)
- def onchange_date_from(self, cr, uid, ids, date_to, date_from):
+ def onchange_date(self, cr, uid, ids, employee_id, date_to, date_from, context=None):
"""
If there are no date set for date_to, automatically set one 8 hours later than
the date_from.
Also update the number_of_days.
"""
+ DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S"
+ from_dt = to_dt = False
+ if date_from:
+ from_dt = datetime.datetime.strptime(date_from, DATETIME_FORMAT)
+ if date_to:
+ to_dt = datetime.datetime.strptime(date_to, DATETIME_FORMAT)
# date_to has to be greater than date_from
- if (date_from and date_to) and (date_from > date_to):
+ if (date_from and date_to) and (from_dt > to_dt):
raise osv.except_osv(_('Warning!'),_('The start date must be anterior to the end date.'))
result = {'value': {}}
# No date_to set so far: automatically compute one 8 hours later
if date_from and not date_to:
- date_to_with_delta = datetime.datetime.strptime(date_from, tools.DEFAULT_SERVER_DATETIME_FORMAT) + datetime.timedelta(hours=8)
+ date_to_with_delta = from_dt + datetime.timedelta(hours=8)
result['value']['date_to'] = str(date_to_with_delta)
# Compute and update the number of days
- if (date_to and date_from) and (date_from <= date_to):
- diff_day = self._get_number_of_days(date_from, date_to)
- result['value']['number_of_days_temp'] = round(math.floor(diff_day))+1
- else:
- result['value']['number_of_days_temp'] = 0
-
- return result
-
- def onchange_date_to(self, cr, uid, ids, date_to, date_from):
- """
- Update the number_of_days.
- """
-
- # date_to has to be greater than date_from
- if (date_from and date_to) and (date_from > date_to):
- raise osv.except_osv(_('Warning!'),_('The start date must be anterior to the end date.'))
-
- result = {'value': {}}
-
- # Compute and update the number of days
- if (date_to and date_from) and (date_from <= date_to):
- diff_day = self._get_number_of_days(date_from, date_to)
- result['value']['number_of_days_temp'] = round(math.floor(diff_day))+1
- else:
- result['value']['number_of_days_temp'] = 0
-
- return result
+ if (date_to and date_from) and (from_dt <= to_dt):
+ working_calendar = False
+ if employee_id:
+ working_calendar = self.pool.get("hr.employee").browse(cr, uid, employee_id, context=context).calendar_id
+ diff_day = self._get_number_of_days(from_dt, to_dt, calendar=working_calendar, context=context)
+ result['value']['number_of_days_temp'] = diff_day
+ else:
+ result['value']['number_of_days_temp'] = 0
+
+ return result
+
def create(self, cr, uid, values, context=None):
""" Override to avoid automatic logging of creation """
=== modified file 'hr_holidays/hr_holidays_view.xml'
--- hr_holidays/hr_holidays_view.xml 2013-02-24 13:21:11 +0000
+++ hr_holidays/hr_holidays_view.xml 2013-03-04 13:00:41 +0000
@@ -68,8 +68,8 @@
<label for="number_of_days_temp" string="Duration" help="The default duration interval between the start date and the end date is 8 hours. Feel free to adapt it to your needs."/>
<div>
<group col="3">
- <field name="date_from" nolabel="1" on_change="onchange_date_from(date_to, date_from)" required="1" class="oe_inline"/><label string="-" class="oe_inline"/>
- <field name="date_to" nolabel="1" on_change="onchange_date_to(date_to, date_from)" required="1" class="oe_inline"/>
+ <field name="date_from" nolabel="1" on_change="onchange_date(employee_id, date_to, date_from, context)" required="1" class="oe_inline"/><label string="-" class="oe_inline"/>
+ <field name="date_to" nolabel="1" on_change="onchange_date(employee_id, date_to, date_from, context)" required="1" class="oe_inline"/>
</group>
<div>
<field name="number_of_days_temp" class="oe_inline"/> days
@@ -78,8 +78,8 @@
<field name="category_id" attrs="{'required':[('holiday_type','=','category')], 'invisible':[('holiday_type','=','employee')], 'readonly':[('state','!=','draft'), ('state','!=','confirm')]}"/>
</group>
<group>
- <field name="holiday_type" on_change="onchange_type(holiday_type, employee_id)" attrs="{'readonly':[('state','!=','draft')]}" width="130" string="Mode" groups="base.group_hr_user"/>
- <field name="employee_id" attrs="{'required':[('holiday_type','=','employee')],'invisible':[('holiday_type','=','category')]}" on_change="onchange_employee(employee_id)" groups="base.group_hr_user"/>
+ <field name="holiday_type" on_change="onchange_type(holiday_type)" attrs="{'readonly':[('state','!=','draft')]}" width="130" string="Mode" groups="base.group_hr_user"/>
+ <field name="employee_id" attrs="{'required':[('holiday_type','=','employee')],'invisible':[('holiday_type','=','category')]}" on_change="onchange_employee(employee_id, date_to, date_from, context)" groups="base.group_hr_user"/>
<field name="department_id" attrs="{'readonly':[('holiday_type','=','category')]}" groups="base.group_hr_user"/>
</group>
</group>
@@ -168,8 +168,8 @@
<group col="4">
<field name="holiday_status_id"/>
<field name="type"/>
- <field name="date_from" on_change="onchange_date_from(date_to, date_from)" attrs="{'readonly':[('type','=','add')], 'required':[('type','=','remove')]}"/>
- <field name="date_to" on_change="onchange_date_from(date_to, date_from)" attrs="{'readonly':[('type','=','add')], 'required':[('type','=','remove')]}"/>
+ <field name="date_from" on_change="onchange_date(employee_id, date_to, date_from, context)" attrs="{'readonly':[('type','=','add')], 'required':[('type','=','remove')]}"/>
+ <field name="date_to" on_change="onchange_date(employee_id, date_to, date_from, context)" attrs="{'readonly':[('type','=','add')], 'required':[('type','=','remove')]}"/>
<field name="number_of_days_temp"/>
<field name="manager_id"/>
</group>
@@ -510,6 +510,7 @@
<div>
<field name="remaining_leaves" class="oe_inline"/> days
</div>
+ <field name="calendar_id"/>
</group>
</xpath>
<xpath expr="//div[@name='button_box']" position="inside">
=== modified file 'hr_holidays/test/test_hr_holiday.yml'
--- hr_holidays/test/test_hr_holiday.yml 2013-02-13 10:18:03 +0000
+++ hr_holidays/test/test_hr_holiday.yml 2013-03-04 13:00:41 +0000
@@ -26,3 +26,34 @@
!workflow {model: hr.holidays, action: validate, ref: hr_holidays_employee1_cl}
-
I can also see Summary of Employee's holiday by using "Employee's Holidays" Report. This report will allows to choose to print holidays with state Confirmed, Validated or both.
+-
+ I assign the dates in the holiday request for full day leave.
+-
+ !record {model: hr.holidays, id: hr_holiday1}:
+ name: Sick Leave
+ holiday_status_id: holiday_status_cl
+ date_from: !eval time.strftime('%Y-%m-12 8:00:00')
+ date_to: !eval time.strftime('%Y-%m-12 18:00:00')
+ employee_id: hr.employee
+ type: remove
+-
+ I assign the dates in the holiday request for half day leave.
+-
+ !record {model: hr.holidays, id: hr_holiday1}:
+ name: Sick Leave
+ holiday_status_id: holiday_status_cl
+ date_from: !eval time.strftime('%Y-%m-13 8:00:00')
+ date_to: !eval time.strftime('%Y-%m-13 12:00:00')
+ employee_id: hr.employee
+ type: remove
+-
+ I assign the dates in the holiday request for half day leave and one more full day leave.
+-
+ !record {model: hr.holidays, id: hr_holiday1}:
+ name: Sick Leave
+ holiday_status_id: holiday_status_cl
+ date_from: !eval time.strftime('%Y-%m-16 13:00:00')
+ date_to: !eval time.strftime('%Y-%m-17 12:00:00')
+ employee_id: hr.employee
+ type: remove
+
=== modified file 'resource/resource.py'
--- resource/resource.py 2012-12-21 16:48:08 +0000
+++ resource/resource.py 2013-03-04 13:00:41 +0000
@@ -24,10 +24,16 @@
from faces import *
from openerp.osv import fields, osv
from openerp.tools.translate import _
-
+import pytz
from itertools import groupby
from operator import itemgetter
+def dtotz(sourcedate, timezone='UTC'):
+ """ Convert date to specified timezone date."""
+ server_tz = pytz.timezone ('UTC')
+ client_tz = pytz.timezone (timezone)
+ dt =server_tz.localize(sourcedate, is_dst=None).astimezone(client_tz)
+ return datetime(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second)
class resource_calendar(osv.osv):
_name = "resource.calendar"
@@ -42,6 +48,16 @@
'company_id': lambda self, cr, uid, context: self.pool.get('res.company')._company_default_get(cr, uid, 'resource.calendar', context=context)
}
+ def get_working_days(self, cr, uid, ids, date_from, date_to, context=None):
+ res = {}
+ days = 0.0
+ date_from = dtotz(date_from, context.get('tz','UTC'))
+ date_to = dtotz(date_to, context.get('tz','UTC'))
+ for calendar_id in ids:
+ days = self.interval_days_get(cr, uid, calendar_id, date_from, date_to)
+ res[calendar_id] = days
+ return res
+
def working_hours_on_day(self, cr, uid, resource_calendar_id, day, context=None):
"""Calculates the Working Total Hours based on Resource Calendar and
given working day (datetime object).
@@ -251,6 +267,52 @@
current_hour = 0.0
return (hours/3600)
+
+ def interval_days_get(self, cr, uid, id, dt_from, dt_to, resource=False):
+ """ Calculates the Total Working hours based on given start_date to
+ end_date, If resource id is supplied that it will consider the source
+ leaves also in calculating the hours.
+
+ @param dt_from : date start to calculate hours
+ @param dt_end : date end to calculate hours
+ @param resource: optional resource id, If given resource leave will be
+ considered.
+
+ @return : Total number of working hours based dt_from and dt_end and
+ resource if supplied.
+ """
+ if not id:
+ return 0.0
+ dt_leave = self._get_leaves(cr, uid, id, resource)
+ days = 0.0
+ current_hour = dt_from.hour
+ while (dt_from <= dt_to):
+ hours = 0.0
+ quarter_total = 0.0
+ cr.execute("select hour_from,hour_to from resource_calendar_attendance where dayofweek='%s' and calendar_id=%s order by hour_from", (dt_from.weekday(),id))
+ der = cr.fetchall()
+ for (hour_from, hour_to) in der:
+ quarter_total += hour_to - hour_from
+ if hours != 0.0 or current_hour < hour_from:#For first time of the loop only,hours will be 0
+ current_hour = hour_from
+ if dt_from < dt_to and current_hour < hour_to :
+ if dt_from.strftime('%Y-%m-%d') in dt_leave:
+ break;
+ else:
+ d1 = datetime(dt_from.year, dt_from.month, dt_from.day, int(math.floor(current_hour)), int((current_hour%1) * 60))
+ d2 = datetime(dt_from.year, dt_from.month, dt_from.day, int(math.floor(hour_to)), int((hour_to%1) * 60))
+ if dt_from.day == dt_to.day:
+ if hour_from <= dt_to.hour <= hour_to:
+ d2 = dt_to
+ dt_from = d2
+ hours += (d2-d1).seconds
+
+ nextday_start = (der[0])[0] if der else 0.0
+ dt_from = datetime(dt_from.year, dt_from.month, dt_from.day, int(math.floor(nextday_start)), int((nextday_start%1) * 60)) + timedelta(days=1)
+ current_hour = 0.0
+ if quarter_total:
+ days += (hours/3600) / quarter_total
+ return days
resource_calendar()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment