bemade_fsm: Explicitly set user_ids=False on visit task creation. Fixes Dur-Pro/bemade-addons#90
This commit is contained in:
parent
9850b9115c
commit
c966af3343
4 changed files with 57 additions and 38 deletions
|
|
@ -216,6 +216,7 @@ class SaleOrderLine(models.Model):
|
|||
'visit_id': self.visit_id.id,
|
||||
'date_deadline': self.visit_id.approx_date,
|
||||
'planned_hours': self.task_duration,
|
||||
'user_ids': False, # Force to empty or it uses the current user
|
||||
})
|
||||
return task
|
||||
|
||||
|
|
|
|||
|
|
@ -168,3 +168,27 @@ class BemadeFSMBaseTest(TransactionCase):
|
|||
names.pop(0)
|
||||
parent = subtasks[0]
|
||||
return template
|
||||
|
||||
def _invoice_sale_order(self, so):
|
||||
wiz = self.env['sale.advance.payment.inv'].with_context(
|
||||
{'active_ids': [so.id]}).create({})
|
||||
wiz.create_invoices()
|
||||
inv = so.invoice_ids[-1]
|
||||
inv.action_post()
|
||||
return inv
|
||||
|
||||
def _generate_visit(self, sale_order, label="Test Label"):
|
||||
return self.env['bemade_fsm.visit'].create([{
|
||||
'sale_order_id': sale_order.id,
|
||||
'label': label,
|
||||
}])
|
||||
|
||||
def _generate_so_with_one_visit_two_lines(self):
|
||||
so = self._generate_sale_order()
|
||||
visit = self._generate_visit(sale_order=so)
|
||||
sol1 = self._generate_sale_order_line(sale_order=so)
|
||||
sol2 = self._generate_sale_order_line(sale_order=so)
|
||||
visit.so_section_id.sequence = 1
|
||||
sol1.sequence = 2
|
||||
sol2.sequence = 3
|
||||
return so, visit, sol1, sol2
|
||||
|
|
|
|||
|
|
@ -57,13 +57,7 @@ class FSMVisitTest(BemadeFSMBaseTest):
|
|||
self.assertTrue(visit.is_invoiced)
|
||||
|
||||
def test_visit_groups_section_tasks_when_confirmed(self):
|
||||
so = self._generate_sale_order()
|
||||
visit = self._generate_visit(sale_order=so)
|
||||
sol1 = self._generate_sale_order_line(sale_order=so)
|
||||
sol2 = self._generate_sale_order_line(sale_order=so)
|
||||
visit.so_section_id.sequence = 1
|
||||
sol1.sequence = 2
|
||||
sol2.sequence = 3
|
||||
so, visit, sol1, sol2 = self._generate_so_with_one_visit_two_lines()
|
||||
|
||||
so.action_confirm()
|
||||
|
||||
|
|
@ -74,15 +68,7 @@ class FSMVisitTest(BemadeFSMBaseTest):
|
|||
visit_subtasks and sol1.task_id in visit_subtasks and sol2.task_id in visit_subtasks)
|
||||
|
||||
def test_visit_task_gets_correct_due_date_on_confirmation(self):
|
||||
partner = self._generate_partner()
|
||||
so = self._generate_sale_order(partner=partner)
|
||||
visit = self._generate_visit(sale_order=so)
|
||||
sol1 = self._generate_sale_order_line(sale_order=so, qty=4.0)
|
||||
sol2 = self._generate_sale_order_line(sale_order=so, qty=4.0)
|
||||
visit.approx_date = date.today() + timedelta(days=7)
|
||||
visit.so_section_id.sequence = 1
|
||||
sol1.sequence = 2
|
||||
sol2.sequence = 3
|
||||
so, visit, sol1, sol2 = self._generate_so_with_one_visit_two_lines()
|
||||
|
||||
so.action_confirm()
|
||||
|
||||
|
|
@ -115,16 +101,3 @@ class FSMVisitTest(BemadeFSMBaseTest):
|
|||
|
||||
self.assertEqual(len(so.order_line), 3)
|
||||
|
||||
def _invoice_sale_order(self, so):
|
||||
wiz = self.env['sale.advance.payment.inv'].with_context(
|
||||
{'active_ids': [so.id]}).create({})
|
||||
wiz.create_invoices()
|
||||
inv = so.invoice_ids[-1]
|
||||
inv.action_post()
|
||||
return inv
|
||||
|
||||
def _generate_visit(self, sale_order, label="Test Label"):
|
||||
return self.env['bemade_fsm.visit'].create([{
|
||||
'sale_order_id': sale_order.id,
|
||||
'label': label,
|
||||
}])
|
||||
|
|
|
|||
|
|
@ -25,7 +25,8 @@ class TestSalesOrder(BemadeFSMBaseTest):
|
|||
partner = self._generate_partner()
|
||||
so = self._generate_sale_order(partner=partner)
|
||||
parent_task = self._generate_task_template(structure=[2, 1],
|
||||
names=['Parent Template', 'Child Template',
|
||||
names=['Parent Template',
|
||||
'Child Template',
|
||||
'Grandchild Template'])
|
||||
child_task_1 = parent_task.subtasks[0]
|
||||
child_task_2 = parent_task.subtasks[1]
|
||||
|
|
@ -39,7 +40,8 @@ class TestSalesOrder(BemadeFSMBaseTest):
|
|||
self.assertTrue(parent_task.name in sol.task_id.name)
|
||||
self.assertTrue(child_task_1.name in sol.task_id.child_ids[0].name)
|
||||
self.assertTrue(child_task_2.name in sol.task_id.child_ids[1].name)
|
||||
self.assertTrue(sol.task_id.child_ids[0].child_ids and len(sol.task_id.child_ids[0].child_ids) == 1)
|
||||
self.assertTrue(sol.task_id.child_ids[0].child_ids and len(
|
||||
sol.task_id.child_ids[0].child_ids) == 1)
|
||||
self.assertTrue(grandchild_task.name in sol.task_id.child_ids.child_ids[0].name)
|
||||
|
||||
def test_order_confirmation_single_equipment(self):
|
||||
|
|
@ -65,10 +67,14 @@ class TestSalesOrder(BemadeFSMBaseTest):
|
|||
partner = self._generate_partner()
|
||||
for i in range(5):
|
||||
self._generate_equipment(partner=partner)
|
||||
sale_order = self._generate_sale_order(partner=partner) # No default equipment since more than 3 on partner
|
||||
sol1, sol2, sol3 = [self._generate_sale_order_line(sale_order=sale_order) for i in range(3)]
|
||||
sol1.equipment_ids = [Command.set([partner.equipment_ids[i].id for i in range(2)])]
|
||||
sol3.equipment_ids = [Command.set([partner.equipment_ids[i].id for i in range(2, 5)])]
|
||||
sale_order = self._generate_sale_order(
|
||||
partner=partner) # No default equipment since more than 3 on partner
|
||||
sol1, sol2, sol3 = [self._generate_sale_order_line(sale_order=sale_order) for i
|
||||
in range(3)]
|
||||
sol1.equipment_ids = [
|
||||
Command.set([partner.equipment_ids[i].id for i in range(2)])]
|
||||
sol3.equipment_ids = [
|
||||
Command.set([partner.equipment_ids[i].id for i in range(2, 5)])]
|
||||
|
||||
sale_order.action_confirm()
|
||||
|
||||
|
|
@ -76,7 +82,6 @@ class TestSalesOrder(BemadeFSMBaseTest):
|
|||
self.assertEqual(sol2.equipment_ids, sol2.task_id.equipment_ids)
|
||||
self.assertEqual(sol3.equipment_ids, sol3.task_id.equipment_ids)
|
||||
|
||||
|
||||
def test_task_template_with_equipment_flow(self):
|
||||
""" The equipment selected on a task template should flow down to the task created on SO confirmation."""
|
||||
partner = self._generate_partner()
|
||||
|
|
@ -167,7 +172,8 @@ class TestSalesOrder(BemadeFSMBaseTest):
|
|||
""" Marking the task linked to an SO line should mark the line delivered. Marking sub-tasks done should not."""
|
||||
partner = self._generate_partner()
|
||||
so = self._generate_sale_order(partner=partner)
|
||||
task_template = self._generate_task_template(structure=[2], names=["Parent Task", "Subtask"])
|
||||
task_template = self._generate_task_template(structure=[2],
|
||||
names=["Parent Task", "Subtask"])
|
||||
product = self._generate_product(task_template=task_template)
|
||||
sol = self._generate_sale_order_line(so, product=product)
|
||||
so.action_confirm()
|
||||
|
|
@ -230,6 +236,20 @@ class TestSalesOrder(BemadeFSMBaseTest):
|
|||
self.assertEqual(task.site_contacts, so.site_contacts)
|
||||
self.assertEqual(task.work_order_contacts, so.work_order_contacts)
|
||||
|
||||
def test_tasks_created_at_order_confirmation_have_no_assignees(self):
|
||||
so, visit, sol1, sol2 = self._generate_so_with_one_visit_two_lines()
|
||||
user = self._generate_project_user(name="User", login='login')
|
||||
|
||||
# We test as a specific user since testing as root may not produce the error
|
||||
so.with_user(user).action_confirm()
|
||||
|
||||
visit_task = visit.task_id
|
||||
subtask1 = visit_task.child_ids[0]
|
||||
subtask2 = visit_task.child_ids[1]
|
||||
self.assertFalse(visit_task.user_ids)
|
||||
self.assertFalse(subtask1.user_ids)
|
||||
self.assertFalse(subtask2.user_ids)
|
||||
|
||||
|
||||
@tagged("-at_install", "post_install", "slow")
|
||||
class TestSaleOrderTour(HttpCase, TestSalesOrder):
|
||||
|
|
@ -247,7 +267,8 @@ class TestSaleOrderTour(HttpCase, TestSalesOrder):
|
|||
def test_task_mark_to_invoice(self):
|
||||
# Make sure that when a manager clicks the ready to invoice button, the qty delivered is updated on the SO
|
||||
so = self._generate_sale_order(client_order_ref='TEST ORDER 2')
|
||||
sol = self._generate_sale_order_line(so, self._generate_product(name='Test Product 3'))
|
||||
sol = self._generate_sale_order_line(so, self._generate_product(
|
||||
name='Test Product 3'))
|
||||
so.action_confirm()
|
||||
user = self._generate_project_manager_user('Mr. User', 'mruser')
|
||||
self.start_tour('/web', 'sale_order_tour', login=user.login)
|
||||
|
|
|
|||
Loading…
Reference in a new issue