From 0576c3743129b81f319ca08a5540dab7e171c779 Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Sat, 1 Feb 2020 19:51:11 -0600 Subject: [PATCH 1/3] [IMP] stock_location_limit_product: Use product uom --- .../models/stock_location_limit.py | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/stock_location_limit_product/models/stock_location_limit.py b/stock_location_limit_product/models/stock_location_limit.py index 6e50b87a1..d646d976f 100644 --- a/stock_location_limit_product/models/stock_location_limit.py +++ b/stock_location_limit_product/models/stock_location_limit.py @@ -1,9 +1,8 @@ # Copyright (C) 2019 Open Source Integrators # Copyright (C) 2019 Serpent Consulting Services Pvt. Ltd. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) -from odoo import api, fields, models, _ +from odoo import fields, models from odoo.addons import decimal_precision as dp -from odoo.exceptions import ValidationError class StockLocationLimit(models.Model): @@ -11,19 +10,6 @@ class StockLocationLimit(models.Model): _description = 'Stock Location Limit Product' _rec_name = 'product_id' - @api.onchange('product_id') - def onchange_uom_id(self): - self.uom_id = self.product_id.uom_id.id - - @api.constrains('product_id', 'uom_id') - def check_uom_id(self): - if self.uom_id.category_id != self.product_id.uom_id.category_id: - raise ValidationError(_( - "The unit of measure for the limit with the product %s must " - "be in the uom category %s!") % - (self.product_id.name, - self.product_id.uom_id.category_id.name)) - _sql_constraints = [ ('product_uniq', 'unique(product_id,location_id)', 'You cannot set 2 limits with the same product for a location!')] @@ -31,5 +17,6 @@ class StockLocationLimit(models.Model): product_id = fields.Many2one('product.product', string='Product') qty = fields.Float('Maximum Quantity', digits=dp.get_precision('Product Quantity')) - uom_id = fields.Many2one('uom.uom', string='UoM') + uom_id = fields.Many2one( + 'uom.uom', related='product_id.uom_id', string='UoM', store=True) location_id = fields.Many2one('stock.location', string='Location') From b8e6ce3af3d0e55df4c3340a45d88ac7faa2e7b1 Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Wed, 5 Feb 2020 12:40:54 -0600 Subject: [PATCH 2/3] [FIX] stock_location_limit_product: Tests --- .../test_stock_location_limit_product.py | 34 +++++++------------ 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/stock_location_limit_product/tests/test_stock_location_limit_product.py b/stock_location_limit_product/tests/test_stock_location_limit_product.py index 895587704..3576a9a8c 100644 --- a/stock_location_limit_product/tests/test_stock_location_limit_product.py +++ b/stock_location_limit_product/tests/test_stock_location_limit_product.py @@ -31,24 +31,16 @@ class TestStockLocationLimitProduct(TransactionCase): 'usage': 'internal', }) - def test_onchange_uom_id(self): - limit = self.limit_obj - with self.assertRaises(ValidationError): - # constrain is called when create a record. - limit = self.limit_obj.create({ - 'location_id': self.location.id, - 'product_id': self.product.id, - 'qty': 100, - }) - if not limit: - limit = self.limit_obj.create({ - 'location_id': self.location.id, - 'product_id': self.product2.id, - 'qty': 100, - 'uom_id': self.uom.id, - }) - limit.onchange_uom_id() - limit.check_uom_id() - limit_count = len(self.limit_obj.search([])) - self.assertEqual(limit_count, 2) - self.assertEqual(limit.uom_id.id, self.uom.id) + def test_creating_stock_location_limit(self): + self.limit_obj.create({ + 'location_id': self.location.id, + 'product_id': self.product.id, + 'qty': 100, + }) + self.limit_obj.create({ + 'location_id': self.location.id, + 'product_id': self.product2.id, + 'qty': 100, + }) + limit_count = len(self.limit_obj.search([])) + self.assertEqual(limit_count, 2) From c22857d487661362d00968262a6e3a8fbd2ea77e Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Thu, 6 Feb 2020 15:34:01 -0600 Subject: [PATCH 3/3] [FIX] stock_location_limit_product --- .../tests/test_stock_location_limit_product.py | 1 - 1 file changed, 1 deletion(-) diff --git a/stock_location_limit_product/tests/test_stock_location_limit_product.py b/stock_location_limit_product/tests/test_stock_location_limit_product.py index 3576a9a8c..8845ab9e2 100644 --- a/stock_location_limit_product/tests/test_stock_location_limit_product.py +++ b/stock_location_limit_product/tests/test_stock_location_limit_product.py @@ -1,7 +1,6 @@ # Copyright (C) 2019 Open Source Integrators # Copyright (C) 2019 Serpent Consulting Services Pvt. Ltd. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo.exceptions import ValidationError from odoo.tests.common import TransactionCase