bemade_fsm: Marking visit task done completes its descendants.
Re: Dur-Pro/bemade-addons#93
This commit is contained in:
parent
c966af3343
commit
0980f6fbb3
2 changed files with 25 additions and 9 deletions
|
|
@ -49,8 +49,6 @@ class Task(models.Model):
|
|||
|
||||
visit_id = fields.Many2one(comodel_name='bemade_fsm.visit')
|
||||
|
||||
is_complete = fields.Boolean(compute="_compute_is_complete")
|
||||
|
||||
# user_id = fields.Many2one('res.users', compute='_compute_user_id')
|
||||
#
|
||||
# @api.depends('user_ids')
|
||||
|
|
@ -71,13 +69,6 @@ class Task(models.Model):
|
|||
for project in self.project_id
|
||||
}
|
||||
|
||||
@api.depends('project_id', 'stage_id.is_closed')
|
||||
def _compute_is_complete(self):
|
||||
closing_stages = self._get_closed_stage_by_project()
|
||||
for rec in self:
|
||||
rec.is_complete = rec.stage_id == (rec.project_id
|
||||
and closing_stages[rec.project_id])
|
||||
|
||||
def _get_related_planning_slots(self):
|
||||
domain = expression.AND([
|
||||
self._get_domain_compute_forecast_hours(),
|
||||
|
|
@ -148,3 +139,15 @@ class Task(models.Model):
|
|||
rec.allow_billable = False
|
||||
else:
|
||||
rec.allow_billable = rec.project_id.allow_billable
|
||||
|
||||
def action_fsm_validate(self):
|
||||
visits = self.filtered(lambda t: t.visit_id)
|
||||
non_visits = self - visits
|
||||
super(Task, non_visits).action_fsm_validate()
|
||||
|
||||
visits._stop_all_timers_and_create_timesheets()
|
||||
closed_stage_by_project = visits._get_closed_stage_by_project()
|
||||
super(Task, visits.child_ids).action_fsm_validate()
|
||||
for visit in visits:
|
||||
stage = closed_stage_by_project[visit.project_id]
|
||||
visits.write({'stage_id': stage.id, 'fsm_done': True})
|
||||
|
|
|
|||
|
|
@ -101,3 +101,16 @@ class FSMVisitTest(BemadeFSMBaseTest):
|
|||
|
||||
self.assertEqual(len(so.order_line), 3)
|
||||
|
||||
def test_marking_visit_task_done_completes_descendants(self):
|
||||
so, visit, sol1, sol2 = self._generate_so_with_one_visit_two_lines()
|
||||
so.action_confirm()
|
||||
parent, child1, child2 = visit.task_id, sol1.task_id, sol2.task_id
|
||||
|
||||
parent.action_fsm_validate()
|
||||
|
||||
self.assertTrue(parent.is_closed)
|
||||
self.assertTrue(child1.is_closed)
|
||||
self.assertTrue(child2.is_closed)
|
||||
self.assertEqual(sol1.qty_to_deliver, 0)
|
||||
self.assertEqual(sol2.qty_to_deliver, 0)
|
||||
self.assertTrue(visit.is_completed)
|
||||
|
|
|
|||
Loading…
Reference in a new issue