diff --git a/quality_control_stock/models/stock_picking_type.py b/quality_control_stock/models/stock_picking_type.py index e78919f94..8cabe418b 100644 --- a/quality_control_stock/models/stock_picking_type.py +++ b/quality_control_stock/models/stock_picking_type.py @@ -22,16 +22,27 @@ class StockPickingType(models.Model): @api.model_create_multi def create(self, val_list): picking_types = super(StockPickingType, self).create(val_list) - picking_types._create_qc_trigger() + picking_types.filtered("active")._create_qc_trigger() return picking_types @api.multi def write(self, vals): res = super(StockPickingType, self).write(vals) + qc_trigger_model = self.env['qc.trigger'].sudo() if vals.get('name') or vals.get('warehouse_id'): - qc_trigger_model = self.env['qc.trigger'].sudo() for rec in self: qc_triggers = qc_trigger_model.search( [('picking_type_id', '=', rec.id)]) qc_triggers.write({'name': rec.name}) + if "active" in vals: + if vals["active"]: + for record in self: + if not qc_trigger_model.search( + [('picking_type_id', '=', record.id)] + ): + record._create_qc_trigger() + else: + qc_trigger_model.search( + [('picking_type_id', 'in', self.ids)] + ).unlink() return res diff --git a/quality_control_stock/tests/test_quality_control_stock.py b/quality_control_stock/tests/test_quality_control_stock.py index 6cd1d8853..277f3f285 100644 --- a/quality_control_stock/tests/test_quality_control_stock.py +++ b/quality_control_stock/tests/test_quality_control_stock.py @@ -242,17 +242,32 @@ class TestQualityControl(TransactionCase): 'code': 'outgoing', 'sequence_id': self.sequence.id }) - trigger = self.qc_trigger_model.search( - [('picking_type_id', '=', picking_type.id)]) + domain = [('picking_type_id', '=', picking_type.id)] + trigger = self.qc_trigger_model.search(domain) self.assertEqual(len(trigger), 1, 'One trigger must have been created.') self.assertEqual(trigger.name, picking_type.name, 'Trigger name must match picking type name.') - picking_type.write({ - 'name': 'Test Name Change', - }) + picking_type.write({'name': 'Test Name Change'}) self.assertEqual(trigger.name, picking_type.name, 'Trigger name must match picking type name.') + picking_type.write({"active": False}) + trigger = self.qc_trigger_model.search(domain) + self.assertFalse(trigger) + picking_type.write({"active": True}) + trigger = self.qc_trigger_model.search(domain) + self.assertTrue(trigger) + + def test_picking_type_inactive(self): + picking_type = self.picking_type_model.create({ + 'name': 'Test Picking Type', + 'code': 'outgoing', + "active": False, + 'sequence_id': self.sequence.id + }) + trigger = self.qc_trigger_model.search( + [('picking_type_id', '=', picking_type.id)]) + self.assertFalse(trigger) def test_qc_inspection_picking(self): self.inspection1.write({