~eficent/eficent-openerp-project-management/trunk

« back to all changes in this revision

Viewing changes to analytic_resource_plan_task/task.py

  • Committer: jb.eficent
  • Date: 2014-10-28 11:31:49 UTC
  • Revision ID: jordi.ballester@eficent.com-20141028113149-7nqijet58evqr06s
Various updates

Show diffs side-by-side

added added

removed removed

Lines of Context:
159
159
        if isinstance(ids, (long, int)):
160
160
            ids = [ids]
161
161
 
162
 
        if 'stage_id' in vals or 'planned_hours' in vals or 'user_id' in vals or 'delegated_user_id' in vals or 'project_id' in vals:
 
162
        if 'stage_id' in vals \
 
163
                or 'planned_hours' in vals \
 
164
                or 'user_id' in vals \
 
165
                or 'delegated_user_id' in vals \
 
166
                or 'project_id' in vals \
 
167
                or 'default_resource_plan_line' in vals:
163
168
 
164
169
            for t in self.browse(cr, uid, ids, context=context):
165
 
 
166
170
                plan_input = {}
167
171
 
168
172
                if 'stage_id' in vals:
210
214
                else:
211
215
                    plan_input['company_id'] = t.company_id and t.company_id.id or False
212
216
 
 
217
                if 'default_resource_plan_line' in vals:
 
218
                    plan_input['default_resource_plan_line'] = vals['default_resource_plan_line']
 
219
                else:
 
220
                    plan_input['default_resource_plan_line'] = \
 
221
                        t.default_resource_plan_line and t.default_resource_plan_line.id or False
 
222
 
213
223
                stage = stage_obj.browse(cr, uid, plan_input['stage_id'])
214
224
                state = stage.state
215
225
 
221
231
                    #Add or update the resource plan line
222
232
                    plan_output = self._prepare_resource_plan_line(cr, uid, plan_input, context=context)
223
233
                    plan_output['task_id'] = t.id
224
 
                    if t.default_resource_plan_line:
225
 
                        resource_plan_line_obj.write(cr, uid, [t.default_resource_plan_line.id],
 
234
                    if plan_input['default_resource_plan_line']:
 
235
 
 
236
                        res = super(project_task, self).write(cr, uid, ids, vals, context=context)
 
237
 
 
238
                        resource_plan_line_obj.write(cr, uid, [plan_input['default_resource_plan_line']],
226
239
                                                     plan_output, context)
 
240
                        return res
 
241
 
227
242
                    else:
228
243
                        new_resource_plan_line_id = resource_plan_line_obj.create(cr, uid,
229
244
                                                                                  plan_output,
230
245
                                                                                  context=context)
231
246
                        vals['default_resource_plan_line'] = new_resource_plan_line_id
 
247
                        return super(project_task, self).write(cr, uid, ids, vals, context=context)
232
248
 
233
249
                else:
234
250
                    #Remove the resource plan line
237
253
 
238
254
        return super(project_task, self).write(cr, uid, ids, vals, context=context)
239
255
 
 
256
 
240
257
    def map_resource_plan_lines(self, cr, uid, old_task_id, new_task_id, context=None):
241
258
        """ copy and map tasks from old to new project """
242
259
        if context is None:
254
271
            new_task.project_id.analytic_account_id.id or False
255
272
 
256
273
        default['task_id'] = new_task.id
257
 
 
 
274
        task_vals = {}
258
275
        for resource_plan_line in task.resource_plan_lines:
 
276
                new_resource_plan_line = resource_plan_line_obj.copy(cr, uid,
 
277
                                                                     resource_plan_line.id, default,
 
278
                                                                     context=context)
 
279
                if new_resource_plan_line:
 
280
                    map_resource_plan_line_id[resource_plan_line.id] = new_resource_plan_line
 
281
 
259
282
                default_resource_plan_line = \
260
283
                    task.default_resource_plan_line \
261
284
                    and task.default_resource_plan_line.id \
262
285
                    or False
263
 
                if resource_plan_line.id is not default_resource_plan_line:
264
 
                    new_resource_plan_line = resource_plan_line_obj.copy(cr, uid,
265
 
                                                                         resource_plan_line.id, default,
266
 
                                                                         context=context)
267
 
                    if new_resource_plan_line:
268
 
                        map_resource_plan_line_id[resource_plan_line.id] = new_resource_plan_line
269
 
 
270
 
        self.write(cr, uid, [new_task_id], {'resource_plan_lines': [(6, 0, map_resource_plan_line_id.values())]})
 
286
                if resource_plan_line.id == default_resource_plan_line:
 
287
                    task_vals['default_resource_plan_line'] = new_resource_plan_line
 
288
        if map_resource_plan_line_id:
 
289
            task_vals['resource_plan_lines'] = [(6, 0, map_resource_plan_line_id.values())]
 
290
 
 
291
        if task_vals:
 
292
            self.write(cr, uid, [new_task_id], task_vals, context=context)
 
293
 
271
294
        return True
272
295
 
273
296
    def copy(self, cr, uid, id, default=None, context=None):