[FIX]fix problem when trying to add line entry in my current timesheet
authorCedric Snauwaert <csn@openerp.com>
Wed, 12 Dec 2012 15:21:26 +0000 (16:21 +0100)
committerCedric Snauwaert <csn@openerp.com>
Wed, 12 Dec 2012 15:21:26 +0000 (16:21 +0100)
bzr revid: csn@openerp.com-20121212152126-czq2fwo1oxkvt73o

addons/hr_timesheet/hr_timesheet.py
addons/hr_timesheet_sheet/hr_timesheet_sheet.py
addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml

index 9e53374..26893c1 100644 (file)
@@ -99,7 +99,7 @@ class hr_analytic_timesheet(osv.osv):
         if context is None:
             context = {}
         emp_obj = self.pool.get('hr.employee')
-        emp_id = emp_obj.search(cr, uid, [('user_id', '=', context.get('user_id', uid))], context=context)
+        emp_id = emp_obj.search(cr, uid, [('user_id', '=', context.get('user_id') or uid)], context=context)
         if emp_id:
             emp = emp_obj.browse(cr, uid, emp_id[0], context=context)
             if emp.product_id:
@@ -110,7 +110,7 @@ class hr_analytic_timesheet(osv.osv):
         emp_obj = self.pool.get('hr.employee')
         if context is None:
             context = {}
-        emp_id = emp_obj.search(cr, uid, [('user_id', '=', context.get('user_id', uid))], context=context)
+        emp_id = emp_obj.search(cr, uid, [('user_id', '=', context.get('user_id') or uid)], context=context)
         if emp_id:
             emp = emp_obj.browse(cr, uid, emp_id[0], context=context)
             if emp.product_id:
@@ -121,7 +121,7 @@ class hr_analytic_timesheet(osv.osv):
         emp_obj = self.pool.get('hr.employee')
         if context is None:
             context = {}
-        emp_id = emp_obj.search(cr, uid, [('user_id', '=', context.get('user_id', uid))], context=context)
+        emp_id = emp_obj.search(cr, uid, [('user_id', '=', context.get('user_id') or uid)], context=context)
         if emp_id:
             emp = emp_obj.browse(cr, uid, emp_id[0], context=context)
             if bool(emp.product_id):
@@ -136,8 +136,11 @@ class hr_analytic_timesheet(osv.osv):
         emp_obj = self.pool.get('hr.employee')
         if context is None:
             context = {}
-        emp_id = emp_obj.search(cr, uid, [('user_id', '=', context.get('user_id', uid))], context=context)
-        if not emp_id :
+        if not context.get('employee_id'):
+            emp_id = emp_obj.search(cr, uid, [('user_id','=',context.get('user_id') or uid)], limit=1, context=context)
+        else:
+            emp_id = [context.get('employee_id')]
+        if not emp_id:
             raise osv.except_osv(_('Warning!'), _('Please create an employee for this user, using the menu: Human Resources > Employees.'))
         emp = emp_obj.browse(cr, uid, emp_id[0], context=context)
         if emp.journal_id:
@@ -152,7 +155,7 @@ class hr_analytic_timesheet(osv.osv):
         'general_account_id': _getGeneralAccount,
         'journal_id': _getAnalyticJournal,
         'date': lambda self, cr, uid, ctx: ctx.get('date', fields.date.context_today(self,cr,uid,context=ctx)),
-        'user_id': lambda obj, cr, uid, ctx: ctx.get('user_id', uid),
+        'user_id': lambda obj, cr, uid, ctx: ctx.get('user_id') or uid,
     }
     def on_change_account_id(self, cr, uid, ids, account_id, context=None):
         return {'value':{}}
@@ -169,7 +172,7 @@ class hr_analytic_timesheet(osv.osv):
         if context is None:
             context = {}
         emp_obj = self.pool.get('hr.employee')
-        emp_id = emp_obj.search(cr, uid, [('user_id', '=', context.get('user_id', uid))], context=context)
+        emp_id = emp_obj.search(cr, uid, [('user_id', '=', context.get('user_id') or uid)], context=context)
         ename = ''
         if emp_id:
             ename = emp_obj.browse(cr, uid, emp_id[0], context=context).name
index 6a06041..f4ab61b 100644 (file)
@@ -218,8 +218,10 @@ class hr_timesheet_sheet(osv.osv):
     def onchange_employee_id(self, cr, uid, ids, employee_id, context=None):
         department_id =  False
         if employee_id:
-            department_id = self.pool.get('hr.employee').browse(cr, uid, employee_id, context=context).department_id.id
-        return {'value': {'department_id': department_id}}
+            empl_id = self.pool.get('hr.employee').browse(cr, uid, employee_id, context=context)
+            department_id = empl_id.department_id.id
+            user_id = empl_id.user_id.id
+        return {'value': {'department_id': department_id, 'user_id': user_id,}}
 
     # ------------------------------------------------
     # OpenChatter methods and notifications
index 6de6be6..defc4e1 100644 (file)
@@ -80,7 +80,8 @@
                     </div>
                     <div class="oe_title">
                         <label for="employee_id" class="oe_edit_only"/>
-                        <h1><field name="employee_id" on_change="onchange_employee_id(employee_id)" class="oe_inline"/></h1>
+                        <h1><field name="employee_id" on_change="onchange_employee_id(employee_id)" class="oe_inline" context="{'employee_id': employee_id, 'user_id':user_id}"/></h1>
+                        <field name="user_id" invisible="1"/>
                     </div>
                     <group>
                         <group>
@@ -94,7 +95,6 @@
                             <field name="total_attendance" widget="float_time"/>
                             <field name="total_timesheet" widget="float_time"/>
                             <field name="total_difference" widget="float_time"/>
-                            <field name="user_id" invisible="1"/>
                         </group>
                     </group>
                     <notebook>
                             </widget>
                         </page>
                         <page string="Details">
-                            <field context="{'user_id':user_id, 'timesheet_date_from': date_from, 'timesheet_date_to': date_to}" name="timesheet_ids" nolabel="1">
+                            <field context="{'employee_id': employee_id, 'user_id':user_id, 'timesheet_date_from': date_from, 'timesheet_date_to': date_to}" name="timesheet_ids" nolabel="1">
                                 <tree editable="top" string="Timesheet Activities">
                                     <field name="date"/>
                                     <field domain="[('type','in',['normal', 'contract']), ('state', '&lt;&gt;', 'close'),('use_timesheets','=',1)]" name="account_id" on_change="on_change_account_id(account_id, user_id)" context="{'default_use_timesheets': 1}"/>
                         </page>
                         <page string="Attendances" groups="base.group_hr_attendance">
                             <group>
-                                <field context="{'user_id':user_id}" name="attendances_ids" nolabel="1">
+                                <field context="{'employee_id': employee_id, 'user_id':user_id}" name="attendances_ids" nolabel="1">
                                     <tree string="Attendances" editable="bottom">
                                         <field name="name"/>
                                         <field name="action"/>