From 041acb7bcc0260f643ee983f0900d137b88c85d7 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Sat, 14 Nov 2015 01:53:55 +0100 Subject: [PATCH] [IMP] quality_control_*: Make use of qty field Making it a regular field, you can put any manual quantity in inspections --- quality_control/__openerp__.py | 2 +- quality_control/models/qc_inspection.py | 7 +------ quality_control/views/qc_inspection_view.xml | 2 ++ quality_control_stock/__openerp__.py | 2 +- quality_control_stock/models/qc_inspection.py | 15 +++++++++++---- .../tests/test_quality_control_stock.py | 10 +++++++++- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/quality_control/__openerp__.py b/quality_control/__openerp__.py index 4414721ad..ad5a2aab4 100644 --- a/quality_control/__openerp__.py +++ b/quality_control/__openerp__.py @@ -6,7 +6,7 @@ { "name": "Quality control", - "version": "8.0.1.0.0", + "version": "8.0.1.1.0", "category": "Quality control", "license": "AGPL-3", "author": "OdooMRP team, " diff --git a/quality_control/models/qc_inspection.py b/quality_control/models/qc_inspection.py index fe307610c..6abe964f2 100644 --- a/quality_control/models/qc_inspection.py +++ b/quality_control/models/qc_inspection.py @@ -28,11 +28,6 @@ class QcInspection(models.Model): else: self.product = False - @api.one - @api.depends('object_id') - def _get_qty(self): - self.qty = 1.0 - name = fields.Char( string='Inspection number', required=True, default='/', select=True, readonly=True, states={'draft': [('readonly', False)]}, copy=False) @@ -46,7 +41,7 @@ class QcInspection(models.Model): product = fields.Many2one( comodel_name="product.product", compute="_get_product", store=True, help="Product associated with the inspection") - qty = fields.Float(string="Quantity", compute="_get_qty", store=True) + qty = fields.Float(string="Quantity", default=1.0) test = fields.Many2one( comodel_name='qc.test', string='Test', readonly=True, select=True) inspection_lines = fields.One2many( diff --git a/quality_control/views/qc_inspection_view.xml b/quality_control/views/qc_inspection_view.xml index c7b5a2e7f..196b19146 100644 --- a/quality_control/views/qc_inspection_view.xml +++ b/quality_control/views/qc_inspection_view.xml @@ -56,6 +56,7 @@ + @@ -112,6 +113,7 @@ + diff --git a/quality_control_stock/__openerp__.py b/quality_control_stock/__openerp__.py index f1eaa316d..21c203e4d 100644 --- a/quality_control_stock/__openerp__.py +++ b/quality_control_stock/__openerp__.py @@ -5,7 +5,7 @@ { "name": "Quality control - Stock", - "version": "8.0.1.0.0", + "version": "8.0.1.0.1", "category": "Quality control", "license": "AGPL-3", "author": "OdooMRP team, " diff --git a/quality_control_stock/models/qc_inspection.py b/quality_control_stock/models/qc_inspection.py index a7bd4cc52..385adb92b 100644 --- a/quality_control_stock/models/qc_inspection.py +++ b/quality_control_stock/models/qc_inspection.py @@ -41,16 +41,23 @@ class QcInspection(models.Model): elif self.object_id._name == 'stock.pack.operation': self.product = self.object_id.product_id - @api.one - @api.depends('object_id') - def _get_qty(self): - super(QcInspection, self)._get_qty() + @api.onchange('object_id') + def onchange_object_id(self): if self.object_id: if self.object_id._name == 'stock.move': self.qty = self.object_id.product_qty elif self.object_id._name == 'stock.pack.operation': self.qty = self.object_id.product_qty + @api.multi + def _prepare_inspection_header(self, object_ref, trigger_line): + res = super(QcInspection, self)._prepare_inspection_header( + object_ref, trigger_line) + # Fill qty when coming from pack operations + if object_ref and object_ref._name == 'stock.pack.operation': + res['qty'] = object_ref.product_qty + return res + picking = fields.Many2one( comodel_name="stock.picking", compute="get_picking", store=True) lot = fields.Many2one( diff --git a/quality_control_stock/tests/test_quality_control_stock.py b/quality_control_stock/tests/test_quality_control_stock.py index 000dcf43c..ee8d8267b 100644 --- a/quality_control_stock/tests/test_quality_control_stock.py +++ b/quality_control_stock/tests/test_quality_control_stock.py @@ -35,6 +35,7 @@ class TestQualityControl(TransactionCase): 'name': self.product.name, 'product_id': self.product.id, 'product_uom': self.product.uom_id.id, + 'product_uom_qty': 2.0, 'location_id': self.picking_type.default_location_src_id.id, 'location_dest_id': self.picking_type.default_location_dest_id.id, } @@ -60,8 +61,14 @@ class TestQualityControl(TransactionCase): self.picking1.do_transfer() self.assertEqual(self.picking1.created_inspections, 1, 'Only one inspection must be created') - self.assertEqual(self.picking1.qc_inspections[:1].test, self.test, + inspection = self.picking1.qc_inspections[:1] + self.assertEqual(inspection.qty, 2.0) + self.assertEqual(inspection.test, self.test, 'Wrong test picked when creating inspection.') + # Try in this context if onchange with an stock.pack.operation works + inspection.qty = 5 + inspection.onchange_object_id() + self.assertEqual(inspection.qty, 2.0) def test_inspection_create_for_template(self): self.product.product_tmpl_id.qc_triggers = [( @@ -221,6 +228,7 @@ class TestQualityControl(TransactionCase): 'object_id': '%s,%d' % (self.picking1.move_lines[:1]._model, self.picking1.move_lines[:1].id), }) + self.inspection1.onchange_object_id() self.assertEquals(self.inspection1.picking, self.picking1) self.assertEquals(self.inspection1.lot,