Merge lp:~openerp-dev/openobject-addons/trunk-bug-812303-mtr into lp:openobject-addons

Proposed by Meera Trambadia (OpenERP)
Status: Rejected
Rejected by: Mustufa Rangwala (Open ERP)
Proposed branch: lp:~openerp-dev/openobject-addons/trunk-bug-812303-mtr
Merge into: lp:openobject-addons
Diff against target: 52 lines (+17/-3)
1 file modified
hr_holidays/hr_holidays.py (+17/-3)
To merge this branch: bzr merge lp:~openerp-dev/openobject-addons/trunk-bug-812303-mtr
Reviewer Review Type Date Requested Status
OpenERP Core Team Pending
Review via email: mp+75951@code.launchpad.net

Description of the change

hr_holidays:-In leave request it now calculates the correct number of days using resource.calendar --fixes=lp:812303

To post a comment you must log in.
Revision history for this message
Mustufa Rangwala (Open ERP) (mra-tinyerp) wrote :

I am rejecting the Merge proposal, as we are not considering this for upcoming version. But will be covered in future version's.

for future notes:
- Define the self.pool.get('resource.calendar') at beginning of the method (currently its in for loop)
- We should consider the user_id from leave request (Employee->user_id) not login user.
- Any specific need to add ids argument on _get_number_of_days() ?

Thanks,
Mustufa

Unmerged revisions

4985. By Meera Trambadia (OpenERP)

[MERGE] branch merged with lp:openobject-addons

4984. By Meera Trambadia (OpenERP)

[FIX] hr_holidays:-In leave request it now calculates the correct number of days

4983. By Meera Trambadia (OpenERP)

[MERGE] branch merged with lp:openobject-addons

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'hr_holidays/hr_holidays.py'
2--- hr_holidays/hr_holidays.py 2011-09-16 06:07:58 +0000
3+++ hr_holidays/hr_holidays.py 2011-09-19 05:59:19 +0000
4@@ -22,6 +22,8 @@
5 ##############################################################################
6
7 import datetime
8+from datetime import timedelta
9+
10 from itertools import groupby
11 from operator import itemgetter
12
13@@ -173,14 +175,26 @@
14 return result
15
16 # TODO: can be improved using resource calendar method
17- def _get_number_of_days(self, date_from, date_to):
18+ def _get_number_of_days(self, cr, uid, ids, date_from, date_to):
19 """Returns a float equals to the timedelta between two dates given as string."""
20
21+ resource_obj = self.pool.get('resource.resource')
22 DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S"
23 from_dt = datetime.datetime.strptime(date_from, DATETIME_FORMAT)
24 to_dt = datetime.datetime.strptime(date_to, DATETIME_FORMAT)
25 timedelta = to_dt - from_dt
26 diff_day = timedelta.days + float(timedelta.seconds) / 86400
27+ nb_of_days = round(diff_day)+1
28+ res_id = resource_obj.search(cr, uid,[('user_id', '=', uid)])
29+ for resource in resource_obj.browse(cr, uid, res_id):
30+ calendar_id = resource.calendar_id
31+ if not calendar_id:
32+ continue
33+ diff_day = 0
34+ for day in range(0, int(nb_of_days)):
35+ working_hours_on_day = self.pool.get('resource.calendar').working_hours_on_day(cr, uid, calendar_id, from_dt + datetime.timedelta(days=day))
36+ if working_hours_on_day:
37+ diff_day += 1.0
38 return diff_day
39
40 def unlink(self, cr, uid, ids, context=None):
41@@ -192,9 +206,9 @@
42 def onchange_date_from(self, cr, uid, ids, date_to, date_from):
43 result = {}
44 if date_to and date_from:
45- diff_day = self._get_number_of_days(date_from, date_to)
46+ diff_day = self._get_number_of_days(cr, uid, ids, date_from, date_to)
47 result['value'] = {
48- 'number_of_days_temp': round(diff_day)+1
49+ 'number_of_days_temp': diff_day
50 }
51 return result
52 result['value'] = {

Subscribers

People subscribed via source and target branches

to all changes: