mirror of
https://github.com/OCA/manufacture.git
synced 2025-01-28 16:37:15 +02:00
[FIX] quality_control_stock: Fix qc.trigger creation
Several use cases: - Triggers were created for all created picking types, not only active ones. - If picking types are activated/deactivated, this is not reflected on qc.trigger records.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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({
|
||||
|
||||
Reference in New Issue
Block a user