diff --git a/quality_control_issue/models/__init__.py b/quality_control_issue/models/__init__.py index 56785ea53..8eef5efd4 100644 --- a/quality_control_issue/models/__init__.py +++ b/quality_control_issue/models/__init__.py @@ -1,9 +1,8 @@ # -*- coding: utf-8 -*- # Copyright 2017 Eficent Business and IT Consulting Services S.L. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from . import qc_issue +from . import qc_stage from . import qc_problem from . import qc_problem_group -from . import qc_stage from . import qc_issue_stage +from . import qc_issue diff --git a/quality_control_issue/models/qc_issue.py b/quality_control_issue/models/qc_issue.py index 66df5eafe..a7d5d7aae 100644 --- a/quality_control_issue/models/qc_issue.py +++ b/quality_control_issue/models/qc_issue.py @@ -23,9 +23,9 @@ class QualityControlIssue(models.Model): def _get_default_stage_id(self): """ Gives default stage_id """ - team_id = self.env['qc.team']._get_default_qc_team_id( + team = self.env['qc.team']._get_default_qc_team_id( user_id=self.env.uid) - return self.issue_stage_find([], team_id, [('fold', '=', False)]) + return self.issue_stage_find([], team, [('fold', '=', False)]) @api.multi def _read_group_stage_ids(self, domain, read_group_order=None, @@ -64,8 +64,7 @@ class QualityControlIssue(models.Model): track_visibility='onchange') product_id = fields.Many2one( comodel_name="product.product", string="Product", - readonly=True, states={"new": [("readonly", False)]}, - required=True) + readonly=True, states={"new": [("readonly", False)]}, required=True) product_tracking = fields.Selection(related="product_id.tracking") product_qty = fields.Float( string="Product Quantity", required=True, default=1.0, @@ -73,8 +72,8 @@ class QualityControlIssue(models.Model): digits_compute=dp.get_precision("Product Unit of Measure")) product_uom = fields.Many2one( comodel_name="product.uom", string="Product Unit of Measure", - required=True, default=_get_uom, - readonly=True, states={"new": [("readonly", False)]},) + default=_get_uom, required=True, readonly=True, + states={"new": [("readonly", False)]}) lot_id = fields.Many2one( comodel_name="stock.production.lot", string="Lot/Serial Number", readonly=True, states={"new": [("readonly", False)]},) @@ -117,7 +116,7 @@ class QualityControlIssue(models.Model): 'stage_id': _read_group_stage_ids } - def issue_stage_find(self, cases, team_id, domain=None, order='sequence'): + def issue_stage_find(self, cases, team, domain=None, order='sequence'): """ Override of the base.stage method Parameter of the stage search taken from the problem: - team_id: if set, stages must belong to this team or @@ -125,26 +124,25 @@ class QualityControlIssue(models.Model): stages """ team_ids = set() - if team_id: - team_ids.add(team_id) - for problem in cases: - if problem.team_id: - team_ids.add(problem.team_id.id) + if team: + team_ids.add(team.id) + for issue in cases: + if issue.team_id: + team_ids.add(issue.team_id.id) search_domain = [] if team_ids: search_domain += [('|')] * (len(team_ids) - 1) for team_id in team_ids: - search_domain.append(('qc_team_id', '=', team_id.id)) + search_domain.append(('qc_team_id', '=', team_id)) search_domain += list(domain) # perform search, return the first found - stage_ids = self.env['qc.issue.stage'].search( + stage = self.env['qc.issue.stage'].search( search_domain, order=order, limit=1) - if stage_ids: - return stage_ids[0] - return False + return stage @api.multi def action_confirm(self): + self._check_required_fields() self.write({'state': 'progress'}) @api.multi @@ -171,3 +169,8 @@ class QualityControlIssue(models.Model): if product: self.product_id = product self.product_uom = product.product_tmpl_id.uom_id + + @api.onchange("stage_id") + def _onchange_stage_id(self): + if self.stage_id.state: + self.state = self.stage_id.state diff --git a/quality_control_issue/models/qc_issue_stage.py b/quality_control_issue/models/qc_issue_stage.py index 3dfbfbfba..4a652ff18 100644 --- a/quality_control_issue/models/qc_issue_stage.py +++ b/quality_control_issue/models/qc_issue_stage.py @@ -39,3 +39,6 @@ class QualityControlIssueStage(models.Model): string='Folded in Pipeline', default=False, help='This stage is folded in the kanban view when there are no ' 'records in that stage to display.') + state = fields.Selection( + string="QC Status", + selection=lambda self: self.env['qc.issue']._fields['state'].selection) diff --git a/quality_control_issue/models/qc_problem.py b/quality_control_issue/models/qc_problem.py index 429154ba3..72b9881f4 100644 --- a/quality_control_issue/models/qc_problem.py +++ b/quality_control_issue/models/qc_problem.py @@ -19,9 +19,9 @@ class QcProblem(models.Model): def _get_default_stage_id(self): """ Gives default stage_id """ - team_id = self.env['qc.team']._get_default_qc_team_id( + team = self.env['qc.team']._get_default_qc_team_id( user_id=self.env.uid) - return self.stage_find([], team_id, [('fold', '=', False)]) + return self.stage_find([], team, [('fold', '=', False)]) @api.multi def _read_group_stage_ids(self, domain, read_group_order=None, @@ -86,7 +86,7 @@ class QcProblem(models.Model): 'stage_id': _read_group_stage_ids } - def stage_find(self, cases, team_id, domain=None, order='sequence'): + def stage_find(self, cases, team, domain=None, order='sequence'): """ Override of the base.stage method Parameter of the stage search taken from the problem: - team_id: if set, stages must belong to this team or @@ -94,8 +94,8 @@ class QcProblem(models.Model): stages """ team_ids = set() - if team_id: - team_ids.add(team_id) + if team: + team_ids.add(team.id) for problem in cases: if problem.team_id: team_ids.add(problem.team_id.id) @@ -103,11 +103,9 @@ class QcProblem(models.Model): if team_ids: search_domain += [('|')] * (len(team_ids) - 1) for team_id in team_ids: - search_domain.append(('qc_team_id', '=', team_id.id)) + search_domain.append(('qc_team_id', '=', team_id)) search_domain += list(domain) # perform search, return the first found - stage_ids = self.env['qc.stage'].search( + stage = self.env['qc.stage'].search( search_domain, order=order, limit=1) - if stage_ids: - return stage_ids[0] - return False + return stage diff --git a/quality_control_issue/views/qc_issue_view.xml b/quality_control_issue/views/qc_issue_view.xml index 0648932ca..1dffb686b 100644 --- a/quality_control_issue/views/qc_issue_view.xml +++ b/quality_control_issue/views/qc_issue_view.xml @@ -87,7 +87,8 @@ qc.issue.kanban qc.issue - +