diff --git a/addons/project/__openerp__.py b/addons/project/__openerp__.py index 1c1b8fea4f8..c9484ae9dd8 100644 --- a/addons/project/__openerp__.py +++ b/addons/project/__openerp__.py @@ -61,10 +61,8 @@ Dashboard for project members that includes: 'project_demo.xml', ], 'test':[ - 'test/process/draft2delegate2open2done_task.yml', - 'test/process/template2project2close.yml', - 'test/process/cancel_project.yml', - 'test/process/cancel_task.yml', + 'test/project_process.yml', + 'test/task_process.yml', ], 'installable': True, 'active': False, diff --git a/addons/project/test/process/cancel_project.yml b/addons/project/test/process/cancel_project.yml deleted file mode 100644 index db5ba8ff0b7..00000000000 --- a/addons/project/test/process/cancel_project.yml +++ /dev/null @@ -1,40 +0,0 @@ -- - I cancel unqualified Project. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel Project in to Draft. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel pending Project. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel opened Project. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel delegated Project. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel done Project. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel close Project. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I reset canclled Project into Draft. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) \ No newline at end of file diff --git a/addons/project/test/process/cancel_task.yml b/addons/project/test/process/cancel_task.yml deleted file mode 100644 index 618db25b22d..00000000000 --- a/addons/project/test/process/cancel_task.yml +++ /dev/null @@ -1,35 +0,0 @@ -- - I cancel unqualified Task. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel Task in to Draft. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel pending Task. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel opened Task. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel done Task. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel close Task. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) -- - I reset canclled Task into Draft. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) \ No newline at end of file diff --git a/addons/project/test/process/draft2delegate2open2done_task.yml b/addons/project/test/process/draft2delegate2open2done_task.yml deleted file mode 100644 index 544d95c326e..00000000000 --- a/addons/project/test/process/draft2delegate2open2done_task.yml +++ /dev/null @@ -1,76 +0,0 @@ -- - In order to test process of Project Task, -- - I put task in pending due to specification is not clear. -- - !python {model: project.task}: | - self.do_pending(cr, uid, [ref("project_task_1")]) -- - I Check state of task after put in pending. -- - !assert {model: project.task, id: project_task_1, severity: error, string: task should be in pending state}: - - state == "pending" -- - Now I delegate task to team member. -- - !python {model: project.task.delegate}: | - new_id = self.create(cr,uid,{'planned_hours': 1.0, 'user_id': 3, - 'name': 'demo task', 'state': 'pending', 'prefix': 'CHECK: demo task', - 'planned_hours_me': 1.0, 'new_task_description': 'this is demo.'}) - self.delegate(cr, uid, [new_id], {"active_id": ref("project_task_1")}) -- - I check delegated task details. -- - !assert {model: project.task.delegate, id: project_task_1, severity: error, string: Task should be pending state}: - - - planned_hours == 0.0 - - name == 'a' - - state == "pending" -- - I check new task after delegated task. -- - !record {model: project.task, id: project_task_delegate }: - name: test - planned_hours: 30.0 - project_id: project_task_1 - remaining_hours: 30.0 - description: testing of delegated task - state: draft -- - Now I Delegate task to these tasks and make it pending -- - !record {model: project.task, id: project_task_1 }: - child_ids: - - project.project_task_delegate - planned_hours: 20.0 - state: pending -- - I Re-open the task -- - !python {model: project.task}: | - self.do_reopen(cr, uid, [ref("project_task_1")]) -- - - I check reopened task details. -- - !assert {model: project.task, id: project_task_1, severity: error, string: task should be open.}: - - state == "open" -- - I reevaluate task with remaining hours. -- - - I Check remaining hours after reevaluated task. -- - !assert {model: project.task.reevaluate, id: project_task_1, severity: error, string: task should be reevaluated}: - - remaining_hours == 1.0 -- - I close the task. -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_1")]) -- - I Check state after closed. -- - !assert {model: project.task, id: project_task_1, severity: error, string: task is in open state}: - - state == "done" -- diff --git a/addons/project/test/process/template2project2close.yml b/addons/project/test/project_process.yml similarity index 73% rename from addons/project/test/process/template2project2close.yml rename to addons/project/test/project_process.yml index a4c7da0a9b5..c440c757273 100644 --- a/addons/project/test/process/template2project2close.yml +++ b/addons/project/test/project_process.yml @@ -1,17 +1,13 @@ - In order to Test Process of Project Management, - - I create duplicate template + I create duplicate template. - !python {model: project.project}: | - new_project = self.duplicate_template(cr, uid, [ref("project_integrate_openerp")]) - if not new_project: - raise Exception( "New project based on template not created") - new_id = new_project['res_id'] - new_project = self.read(cr, uid, [new_id], ['name', 'state'])[0] - state = new_project['state'] - name = new_project['name'] - assert state == 'open', "Project in %s state. Project created from template project must be in open state"%state + new_template = self.duplicate_template(cr, uid, [ref("project_integrate_openerp")]) + assert new_template, "duplicate template is not created" + template = self.browse(cr, uid, new_template['res_id'], context=context) + assert template.state == 'open', "Duplicate template must be in open state." - I convert template into real Project. - @@ -24,7 +20,7 @@ - state == "open" - - I put project in pending + I put project in pending. - !python {model: project.project}: | self.set_pending(cr, uid, [ref("project_integrate_openerp")]) @@ -59,3 +55,8 @@ !python {model: project.project}: | self.set_template(cr, uid, [ref("project_integrate_openerp")]) - + I cancel Project. +- + !python {model: project.project}: | + self.set_cancel(cr, uid, [ref("project_integrate_openerp")]) + diff --git a/addons/project/test/task_process.yml b/addons/project/test/task_process.yml new file mode 100644 index 00000000000..0a6a15a230b --- /dev/null +++ b/addons/project/test/task_process.yml @@ -0,0 +1,69 @@ +- + I put task in pending due to specification is not clear. +- + !python {model: project.task}: | + self.do_pending(cr, uid, [ref("project_task_1")]) + context.update({"active_id": ref("project_task_1")}) +- + I Check state of task after put in pending. +- + !assert {model: project.task, id: project_task_1, severity: error, string: task should be in pending state}: + - state == "pending" +- + !record {model: project.task.delegate, id: delegate_id}: + user_id: res_users_analyst + planned_hours: 12.0 + planned_hours_me: 2.0 +- + Now I delegate task to team member. +- + !python {model: project.task.delegate}: | + self.delegate(cr, uid, [ref("delegate_id")], {"active_id": ref("project_task_1")}) +- + I check delegated task details. +- + !python {model: project.task}: | + task = self.browse(cr, uid, ref("project_task_1"), context=context) + assert task.planned_hours == 2.0, "Planning hours is not correct after delegated." + assert task.state == "pending", "Task should be in Pending after delegated." + assert len(task.child_ids), "Sub task is not created after delegate." +- + I Re-open the task. +- + !python {model: project.task}: | + self.do_reopen(cr, uid, [ref("project_task_1")]) +- + I check reopened task details. +- + !assert {model: project.task, id: project_task_1, severity: error, string: task should be open.}: + - state == "open" +- + !record {model: project.task.reevaluate, id: reevaluate_id}: + remaining_hours : 120 +- + I reevaluate task with remaining hours. +- + !python {model: project.task.reevaluate}: | + self.compute_hours(cr, uid, [ref("reevaluate_id")], {"active_id": ref("project_task_1")}) +- + I check remaining hours after reevaluated task. +- + !assert {model: project.task, id: project_task_1, severity: error, string: task should be reevaluated}: + - remaining_hours == 120.0 +- + I close the task. +- + !python {model: project.task}: | + self.do_close(cr, uid, [ref("project_task_1")]) +- + I Check state after closed. +- + !assert {model: project.task, id: project_task_1, severity: error, string: task is in open state}: + - state == "done" +- + I cancel Task. +- + !python {model: project.task}: | + self.do_cancel(cr, uid, [ref("project_task_2")]) + + diff --git a/addons/project/test/test_project.yml b/addons/project/test/test_project.yml deleted file mode 100644 index f79c2a34224..00000000000 --- a/addons/project/test/test_project.yml +++ /dev/null @@ -1,296 +0,0 @@ -- - Test project template feature -- - Create project 'OpenERP Training Programme' -- - !record {model: project.project, id: project_project_openerptrainingprogramme0}: - company_id: base.main_company - name: OpenERP Training Programme -- - Create task 'Technical Training' for this project -- - !record {model: project.task, id: project_task_technicaltraining0}: - date_start: !eval time.strftime('%Y-%m-%d %H:%M:%S') - name: Technical Training - planned_hours: 30.0 - project_id: project_project_openerptrainingprogramme0 - remaining_hours: 30.0 - state: draft -- - Create task 'Functional Training' for this project -- - !record {model: project.task, id: project_task_functionaltraining0}: - date_start: !eval time.strftime('%Y-%m-%d %H:%M:%S') - name: Functional Training - planned_hours: 30.0 - project_id: project_project_openerptrainingprogramme0 - remaining_hours: 30.0 - state: draft -- - Set project as project template -- - !python {model: project.project}: | - self.set_template(cr, uid, [ref("project_project_openerptrainingprogramme0")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_open_view_project_all")], - "tz": False, "active_id": ref("project.menu_open_view_project_all"), }) -- - Check if project in template state -- - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in template state}: - - state == "template" -- - Create new project based on this template -- - !python {model: project.project}: | - new_prj = self.duplicate_template(cr, uid, [ref("project_project_openerptrainingprogramme0")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_open_view_project_all")], - "tz": False, "active_id": ref("project.menu_open_view_project_all"), }) - if not new_prj: - raise Exception( "New project based on template not created") - new_id = new_prj['res_id'] - new_prj = self.read(cr, uid, [new_id], ['name', 'state'])[0] - state = new_prj['state'] - name = new_prj['name'] - assert state == 'open', "Project in %s state. Project created from template project must be in open state"%state -- - Reset project template to normal project -- - !python {model: project.project}: | - self.reset_project(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": - [ref("project.menu_open_view_project_all")], "tz": False, "active_model": - "ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"), - }) -- - Check if project in open state -- - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in open state}: - - state == "open" -- - Test for different project-states -- - Keep project pending -- - !python {model: project.project}: | - self.set_pending(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": - [ref("project.menu_open_view_project_all")], "tz": False, "active_model": - "ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"), - }) -- - Check if project in pending state -- - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in pending state}: - - state == "pending" -- - Cancel the project -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": - [ref("project.menu_open_view_project_all")], "tz": False, "active_model": - "ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"), - }) -- - Check if project in cancel state -- - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in cancel state}: - - state == "cancelled" -- - Re-open the project -- - !python {model: project.project}: | - self.set_open(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": [ref("project.menu_open_view_project_all")], - "tz": False, "active_model": "ir.ui.menu", "project_id": False, "active_id": - ref("project.menu_open_view_project_all"), }) -- - Check if project in open state -- - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in open state}: - - state == "open" -- - Test for task work allocation -- - As i cancelled my project before, i check if the task 'Technical Training' is in cancelled state -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Task is in cancelled state}: - - state == "cancelled" -- - Now in order to reactivate the task 'Technical Training', i click on the "Reactivate" button and fill the remaining hour field -- - !record {model: project.task.reevaluate, id: project_task_technicaltraining_remainingwiz0}: - remaining_hours: 30.0 -- | - I click the apply button -- - !python {model: project.task.reevaluate}: | - self.compute_hours(cr, uid, [ref('project_task_technicaltraining_remainingwiz0')], {'active_id': ref("project_task_technicaltraining0"),'button_reactivate': True}) -- | - Check if task 'Technical Training' in open state and for other initial values -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Project is in open state}: - - state == "open" - - planned_hours == 30 - - remaining_hours == 30 - - delay_hours == 0.0 - - effective_hours == 0.0 -- - Make a work task entry 'Training on OpenERP modules, models and classes' of 10 hours -- - !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}: - work_ids: - - date: !eval time.strftime('%Y-%m-%d %H:%M:%S') - hours: 10.0 - name: Training on OpenERP modules, models and classes - user_id: base.user_root -- - Check for effective hours and remaining hours, effective_hours must be equal to 10 -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After work task of 10 hours effective_hours must be equal to 10}: - - remaining_hours == 20 - - effective_hours == 10.0 -- - Make a work task entry 'Training on OpenERP xml views' of 10 hours -- - !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}: - work_ids: - - date: !eval time.strftime('%Y-%m-%d %H:%M:%S') - hours: 10.0 - name: Training on OpenERP xml views - user_id: base.user_root -- - Check for effective hours and remaining hours, effective_hours must be equal to 20 -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After one more work task of 10 hours effective_hours must be equal to 20}: - - remaining_hours == 10 - - effective_hours == 20.0 -- - Make a work task entry 'Training on workflows' of 10 hours -- - !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}: - work_ids: - - date: !eval time.strftime('%Y-%m-%d %H:%M:%S') - hours: 10.0 - name: Training on workflows - user_id: base.user_root -- - Check for effective hours and remaining hours, effective_hours must be equal to 30 -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After one more work task of 10 hours effective_hours must be equal to 30}: - - remaining_hours == 0 - - effective_hours == 30.0 -- - Set remaining hours of 10 hours for reevaluating the task -- - !record {model: project.task.reevaluate, id: config_compute_remaining_0}: - remaining_hours: 10.0 -- - Reevaluate the task -- - !python {model: project.task.reevaluate}: | - self.compute_hours(cr, uid, [ref("config_compute_remaining_0")], {"lang": "en_US", - "project_id": False, "tz": False, "active_model": "project.task", "search_default_project_id": - False, "search_default_user_id": 1, "search_default_current": 1, "active_ids": - [ref("project_task_technicaltraining0")], "active_id": ref("project_task_technicaltraining0"), }) - -- - Check for effective hours and remaining hours, remaining_hours must be 10 while planned_hours remains 30 -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After reevaluating the task with 10 hours remaining_hours must be 10 while planned_hours remains 30}: - - planned_hours == 30 - - remaining_hours == 10.0 - - effective_hours == 30.0 -- - Make a work task entry 'Training on reports and wizards' of 10 hours -- - !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}: - work_ids: - - date: !eval time.strftime('%Y-%m-%d %H:%M:%S') - hours: 10.0 - name: Training on reports and wizards - user_id: base.user_root -- - Check for effective hours and remaining hours -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After one more work task of 10 hours effective_hours must be equal to 40 while planned_hours remains 30}: - - planned_hours == 30 - - remaining_hours == 0 - - effective_hours == 40.0 -- - Close the task -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_technicaltraining0")], {'mail_send': False}) -- - Check if task in done state -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Task is in done state}: - - state == "done" - - -- - Test for task reactivation -- - Reactivate task -- - !record {model: project.task.reevaluate, id: config_compute_remaining_1}: - remaining_hours: 10.0 -- - Reevaluate the task with 10 hours remaining -- - !python {model: project.task.reevaluate}: | - self.compute_hours(cr, uid, [ref("config_compute_remaining_1")], {"lang": "en_US", - "project_id": False, "tz": False, "button_reactivate": True, "active_model": - "project.task", "search_default_project_id": False, "search_default_user_id": - 1, "search_default_current": 1, "active_ids": [ref("project_task_technicaltraining0")], "active_id": ref("project_task_technicaltraining0"), - }) -- - Check for effective hours and remaining hours, remaining_hours must be 10 while planned_hours remains 30 -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After reevaluating the task with 10 hours remaining_hours must be 10 while planned_hours remains 30}: - - planned_hours == 30 - - remaining_hours == 10.0 - - effective_hours == 40.0 -- - Make a work task entry 'Training on yml' of 5 hours -- - !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}: - work_ids: - - date: !eval time.strftime('%Y-%m-%d %H:%M:%S') - hours: 5.0 - name: Training on yml - user_id: base.user_root -- - Check for effective hours and remaining hours, remaining_hours must be 5, effective_hours must be 45 -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After work task of 5 hours effective_hours must be equal to 45 and remaining_hours is 5}: - - planned_hours == 30 - - remaining_hours == 5.0 - - effective_hours == 45.0 -- - Close the task -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_technicaltraining0")], {'mail_send': False}) -- - Check if task in done state -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error}: - - state == "done" -- - Check for effective hours and remaining hours -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After closing the task planned_hours must remain 30 effective_hours must be 45 and remaining hours must be 0}: - - planned_hours == 30 - - remaining_hours == 0.0 - - effective_hours == 45.0 -- - Close project 'OpenERP Training Programme' -- - !python {model: project.project}: | - self.set_done(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": [ref("project.menu_open_view_project_all")], - "tz": False, "active_model": "ir.ui.menu", "project_id": False, "active_id": - ref("project.menu_open_view_project_all"), }) -- - Check if project in close state -- - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: "Project must be in closed state"}: - - state == "close" - diff --git a/addons/project/test/test_project_delegation.yml b/addons/project/test/test_project_delegation.yml deleted file mode 100644 index 02bc9afaae8..00000000000 --- a/addons/project/test/test_project_delegation.yml +++ /dev/null @@ -1,230 +0,0 @@ -- - This scenario tests the delegation process. Closing all the delegated tasks(task delegation at multiple levels) transits the parent task from pending to open state. -- - Creating a project OpenERP Documentation -- - !record {model: project.project, id: project_project_openerpdocumentation0}: - company_id: base.main_company - name: OpenERP Documentation - -- - Creating a task 'Develop book for Technical and Functional reference' -- - !record {model: project.task, id: project_task_documentation_book}: - name: Develop book for Technical and Functional reference - planned_hours: 20.0 - project_id: project_project_openerpdocumentation0 - remaining_hours: 20.0 - state: draft - -- - Open the task -- - !python {model: project.task}: | - self.do_open(cr, uid, [ref("project_task_documentation_book")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")], - "tz": False, "active_id": ref("project.menu_action_view_task"), }) - -- - Creating a task 'Publish the References' -- - !record {model: project.task, id: project_task_publish_book}: - name: Publish the References - planned_hours: 10.0 - project_id: project_project_openerpdocumentation0 - remaining_hours: 10.0 - state: draft - -- - Open the task -- - !python {model: project.task}: | - self.do_open(cr, uid, [ref("project_task_publish_book")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")], - "tz": False, "active_id": ref("project.menu_action_view_task"), }) - -- - Test the delegate wizard -- - Creating a delegate task 'Publish the References' of 15 hours, renaming parent task to 'CHECK Publish the References' of 1 hour -- - !record {model: project.task.delegate, id: project_task_publish_book_delegate}: - name: Publish the References - new_task_description: aaa - planned_hours: 15.0 - planned_hours_me: 1.0 - prefix: 'CHECK: Publish the References' - state: pending - user_id: base.user_demo - -- - Validating the delegate task -- - !python {model: project.task.delegate}: | - self.delegate(cr, uid, [ref("project_task_publish_book_delegate")], - {"lang": "en_US", "active_model": "project.task", "tz": False, "record_id": - 4, "active_ids": [ref("project_task_publish_book")], "active_id": ref("project_task_publish_book"), - }) - -- - Check if parent task 'CHECK Publish the References' is in pending state -- - !assert {model: project.task, id: project_task_publish_book, severity: error, string: "Task must be in pending state after delegation"}: - - state == "pending" -- - Creating a delegate task 'Prepare a book that gives functional overview of OpenERP' -- - !record {model: project.task, id: project_task_delegate_openerp_tutorial}: - name: Prepare a book that gives functional overview of OpenERP - planned_hours: 30.0 - project_id: project.project_project_openerpdocumentation0 - remaining_hours: 30.0 - state: draft - -- - Open the task -- - !python {model: project.task}: | - self.do_open(cr, uid, [ref("project_task_delegate_openerp_tutorial")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")], - "tz": False, "active_id": ref("project.menu_action_view_task"), }) - -- - Creating a delegate task 'Prepare a technical reference for creating your modules' -- - !record {model: project.task, id: project_task_delegate_developer_book}: - name: Prepare a technical reference for creating your modules - planned_hours: 30.0 - project_id: project_project_openerpdocumentation0 - remaining_hours: 30.0 - state: draft - -- - Open the task -- - !python {model: project.task}: | - self.do_open(cr, uid, [ref("project_task_delegate_developer_book")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")], - "tz": False, "active_id": ref("project.menu_action_view_task"), }) - -- - Delegate task 'Develop book for Technical and Functional reference' to these tasks and make it pending -- - !record {model: project.task, id: project_task_documentation_book}: - child_ids: - - project.project_task_delegate_openerp_tutorial - - project.project_task_delegate_developer_book - planned_hours: 20.0 - state: pending - -- - Creating a delegate task 'Prepare documentation for Module Development' -- - !record {model: project.task, id: project_task_delegate_module_develop}: - name: Prepare documentation for Module Development - planned_hours: 30.0 - project_id: project.project_project_openerpdocumentation0 - remaining_hours: 30.0 - state: draft - - -- - Creating a delegate 'Prepare documentation for Business Process Development' -- - !record {model: project.task, id: project_task_delegate_business_process_develop}: - name: Prepare documentation for Business Process Development - planned_hours: 30.0 - project_id: project_project_openerpdocumentation0 - remaining_hours: 30.0 - state: draft - -- - Delegate task 'Prepare a technical reference for creating your modules' to these tasks and make it pending -- - !record {model: project.task, id: project_task_delegate_developer_book}: - child_ids: - - project.project_task_delegate_module_develop - - project.project_task_delegate_business_process_develop - planned_hours: 20.0 - state: pending - -- - Open the task -- - !python {model: project.task}: | - self.do_open(cr, uid, [ref("project_task_delegate_module_develop")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")], - "tz": False, "active_id": ref("project.menu_action_view_task"), }) - -- - Open the task -- - !python {model: project.task}: | - self.do_open(cr, uid, [ref("project_task_delegate_business_process_develop")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")], - "tz": False, "active_id": ref("project.menu_action_view_task"), }) - -- - Check if 'Prepare a technical reference for creating your modules' in pending state -- - !assert {model: project.task, id: project_task_delegate_developer_book, severity: error, string: Task must be in pending state}: - - state == "pending" - -- - Close the child task 'Prepare documentation for Module Development' -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_delegate_module_develop")], {"lang": "en_US", - "active_ids": [ref("project.menu_action_view_task")], "tz": False, "active_model": - "ir.ui.menu", "section_id": False, "search_default_project_id": False, "search_default_user_id": - 1, "search_default_current": 1, "mail_send": False, "active_id": ref("project.menu_action_view_task"), - }) - -- - Close the child task 'Prepare documentation for Business Process Development' -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_delegate_business_process_develop")], {"lang": "en_US", - "active_ids": [ref("project.menu_action_view_task")], "tz": False, "active_model": - "ir.ui.menu", "section_id": False, "search_default_project_id": False, "search_default_user_id": - 1, "search_default_current": 1, "mail_send": False, "active_id": ref("project.menu_action_view_task"), - }) - -- - Parent task 'Prepare a technical reference for creating your modules' task must now be in open state -- - !assert {model: project.task, id: project_task_delegate_developer_book, severity: error, string: Task is in done state}: - - state == "open" - - -- - Check if task 'Develop book for Technical and Functional reference' in pending state -- - !assert {model: project.task, id: project_task_documentation_book, severity: error, string: Task is in pending state}: - - state == "pending" - -- - Close the child task 'Prepare a technical reference for creating your modules' -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_delegate_developer_book")], {"lang": "en_US", - "active_ids": [ref("project.menu_action_view_task")], "tz": False, "active_model": - "ir.ui.menu", "section_id": False, "search_default_project_id": False, "search_default_user_id": - 1, "search_default_current": 1, "mail_send": False, "active_id": ref("project.menu_action_view_task"), - }) - -- - Close the child task 'Prepare a book that gives functional overview of OpenERP' -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_delegate_openerp_tutorial")], {"lang": "en_US", - "active_ids": [ref("project.menu_action_view_task")], "tz": False, "active_model": - "ir.ui.menu", "section_id": False, "search_default_project_id": False, "search_default_user_id": - 1, "search_default_current": 1, "mail_send": False, "active_id": ref("project.menu_action_view_task"), - }) - -- - Parent task 'Develop book for Technical and Functional reference' must be now in open state -- - !assert {model: project.task, id: project_task_documentation_book, severity: error, string: Task is in done state}: - - state == "open"