Kuldeep Joshi(OpenERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-bug-878638-kjo into 
lp:openobject-addons.

Requested reviews:
  Bhumika (OpenERP) (sbh-openerp)
Related bugs:
  Bug #878638 in OpenERP Addons: "[project] task relations (child, parent) are 
not copied correctly in project copy or create from template"
  https://bugs.launchpad.net/openobject-addons/+bug/878638

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-878638-kjo/+merge/84452

Duplicate project set correct parent and child in task relation
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-878638-kjo/+merge/84452
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/trunk-bug-878638-kjo.
=== modified file 'project/project.py'
--- project/project.py	2011-12-03 14:04:27 +0000
+++ project/project.py	2011-12-05 10:10:34 +0000
@@ -218,18 +218,25 @@
     def copy(self, cr, uid, id, default={}, context=None):
         if context is None:
             context = {}
-
         default = default or {}
         context['active_test'] = False
         default['state'] = 'open'
         proj = self.browse(cr, uid, id, context=context)
         if not default.get('name', False):
             default['name'] = proj.name + _(' (copy)')
-
         res = super(project, self).copy(cr, uid, id, default, context)
+        if context.get('analytic_project_copy'):
+            return res
+        else:
+            task_obj = self.pool.get('project.task')
+            proj_new = self.browse(cr, uid, res, context=context)
+            map_task_id ={}
+            for task in proj.tasks:
+                map_task_id[task.id] = task_obj.search(cr, uid, [('name', '=', task.name+' (copy)')])[0]
+            self.write(cr, uid, res, {'tasks':[(6,0, map_task_id.values())]})
+            task_obj.duplicate_task(cr, uid, map_task_id, context=context)
         return res
-
-
+    
     def template_copy(self, cr, uid, id, default={}, context=None):
         task_obj = self.pool.get('project.task')
         proj = self.browse(cr, uid, id, context=context)
@@ -241,7 +248,7 @@
         map_task_id = {}
         for task in proj.tasks:
             map_task_id[task.id] =  task_obj.copy(cr, uid, task.id, {}, context=context)
-
+        
         self.write(cr, uid, res, {'tasks':[(6,0, map_task_id.values())]})
         task_obj.duplicate_task(cr, uid, map_task_id, context=context)
 
@@ -553,7 +560,7 @@
                         parent_ids.append(map_ids[parent.id])
             #FIXME why there is already the copy and the old one
             self.write(cr, uid, new, {'parent_ids':[(6,0,set(parent_ids))], 'child_ids':[(6,0, set(child_ids))]})
-
+            
     def copy_data(self, cr, uid, id, default={}, context=None):
         default = default or {}
         default.update({'work_ids':[], 'date_start': False, 'date_end': False, 'date_deadline': False})
@@ -568,7 +575,6 @@
                 default.update({'name':new_name})
         return super(task, self).copy_data(cr, uid, id, default, context)
 
-
     def _is_template(self, cr, uid, ids, field_name, arg, context=None):
         res = {}
         for task in self.browse(cr, uid, ids, context=context):

_______________________________________________
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