[MERGE]: Merged with lp:openobject-addons
[odoo/odoo.git] / addons / project_mrp / test / project_task_procurement.yml
1 -
2   In order to test process to generate task automatic from procurement, I confirm sale order to sale service product.
3 -
4   !workflow {model: sale.order, action: order_confirm, ref: sale.order7}
5 -
6   I run the scheduler.
7 -
8   !python {model: procurement.order}: |
9     self.run_scheduler(cr, uid)
10 -
11   Now I check that task details after run procurement
12 -
13   !python {model: procurement.order}: |
14     from datetime import datetime
15     procurement_ids = self.search(cr, uid, [('sale_line_id', '=', ref('line_services'))])
16     assert procurement_ids, "Procurement is not generated for Service Order Line."
17     procurement = self.browse(cr, uid, procurement_ids[0], context=context)
18     assert procurement.state != 'done' , "Procurement should not be closed."
19     task = procurement.task_id
20     assert task, "Task is not generated."
21     # check whether task project either is the product's project, or corresponds to the analytic account of sale order
22     project = task.project_id
23     if procurement.product_id.project_id:
24         assert project == procurement.product_id.project_id, "Project does not correspond."
25     elif procurement.sale_line_id:
26         account = procurement.sale_line_id.order_id.project_id
27         assert (not project and not account) or project.analytic_account_id == account, "Project does not correspond."
28     planned_hours = self._convert_qty_company_hours(cr, uid, procurement, context=context)
29     assert task.planned_hours == planned_hours, 'Planned Hours do not correspond.'
30     assert datetime.strptime(task.date_deadline, '%Y-%m-%d') == datetime.strptime(procurement.date_planned, '%Y-%m-%d %H:%M:%S'), 'Deadline does not correspond.'
31     if procurement.product_id.product_manager:
32         assert task.user_id.id == procurement.product_id.product_manager.id, 'Allocated Person does not correspond with Service Product Manager.'
33     assert task.description == procurement.note, "Task description does not correspond."
34 -
35   I close that task.
36 -
37   !python {model: project.task}: |
38     task_ids = self.search(cr, uid, [('sale_line_id', '=', ref('line_services'))])
39     assert task_ids, "Task is not generated for Service Order Line."
40     self.do_close(cr, uid, task_ids, context=context)
41 -
42   I check procurement of Service Order Line after closed task.
43 -
44   !python {model: procurement.order}: |
45     procurement_ids = self.search(cr, uid, [('sale_line_id', '=', ref('line_services'))])
46     assert procurement_ids, "Procurement is not generated for Service Order Line."
47     procurement = self.browse(cr, uid, procurement_ids[0], context=context)
48     assert procurement.state == 'done' , "Procurement should be closed."