Divyesh Makwana(OpenERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-bug-885387-mdi into 
lp:openobject-addons.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-885387-mdi/+merge/82136

Hello Sir,

I have fix the issue: https://bugs.launchpad.net/openobject-addons/+bug/885387 
"timesheet - sign in - out : must not allow overlaps".

Thanks and Regards,

Divyesh Makwana(MDI)
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-885387-mdi/+merge/82136
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/trunk-bug-885387-mdi.
=== modified file 'hr_attendance/hr_attendance.py'
--- hr_attendance/hr_attendance.py	2011-07-01 23:41:24 +0000
+++ hr_attendance/hr_attendance.py	2011-11-14 12:50:07 +0000
@@ -64,19 +64,21 @@
     }
 
     def _altern_si_so(self, cr, uid, ids, context=None):
-        for id in ids:
-            sql = '''
-            SELECT action, name
-            FROM hr_attendance AS att
-            WHERE employee_id = (SELECT employee_id FROM hr_attendance WHERE id=%s)
-            AND action IN ('sign_in','sign_out')
-            AND name <= (SELECT name FROM hr_attendance WHERE id=%s)
-            ORDER BY name DESC
-            LIMIT 2 '''
-            cr.execute(sql,(id,id))
-            atts = cr.fetchall()
-            if not ((len(atts)==1 and atts[0][0] == 'sign_in') or (len(atts)==2 and atts[0][0] != atts[1][0] and atts[0][1] != atts[1][1])):
-                return False
+        current_attendance_data = self.browse(cr, uid, ids, context=context)[0]
+        obj_attendance_ids = self.search(cr, uid, [('employee_id', '=', current_attendance_data.employee_id.id)], context=context)
+        obj_attendance_ids.remove(ids[0])
+        hr_attendance_data = self.browse(cr, uid, obj_attendance_ids, context=context)
+
+        for old_attendance in hr_attendance_data:
+            if old_attendance.employee_id.id == current_attendance_data['employee_id'].id:
+                if old_attendance.action == current_attendance_data['action']:
+                    return False
+                elif old_attendance.name >= current_attendance_data['name']:
+                    return False
+                else:
+                    return True
+        if current_attendance_data['action'] == 'sign_out':
+            return False
         return True
 
     _constraints = [(_altern_si_so, 'Error: Sign in (resp. Sign out) must follow Sign out (resp. Sign in)', ['action'])]

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to