diff --git a/stock_change_qty_reason/__manifest__.py b/stock_change_qty_reason/__manifest__.py index d7d65b267..8548cd051 100644 --- a/stock_change_qty_reason/__manifest__.py +++ b/stock_change_qty_reason/__manifest__.py @@ -19,6 +19,7 @@ 'views/base_config_view.xml', 'views/stock_inventory_line_reason_view.xml', 'views/stock_inventory_line_view.xml', + 'views/stock_inventory_view.xml', 'wizard/stock_product_change_qty.xml' ], 'installable': True, diff --git a/stock_change_qty_reason/models/__init__.py b/stock_change_qty_reason/models/__init__.py index 4e1329aa1..0b357cdec 100644 --- a/stock_change_qty_reason/models/__init__.py +++ b/stock_change_qty_reason/models/__init__.py @@ -1,6 +1,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import res_config_settings +from . import stock_inventory from . import stock_inventory_line from . import stock_inventory_line_reason from . import stock_move diff --git a/stock_change_qty_reason/models/stock_inventory.py b/stock_change_qty_reason/models/stock_inventory.py new file mode 100644 index 000000000..fd3b50e83 --- /dev/null +++ b/stock_change_qty_reason/models/stock_inventory.py @@ -0,0 +1,30 @@ +# Copyright 2019 Eficent Business and IT Consulting Services S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import api, fields, models + + +class StockInventory(models.Model): + _inherit = 'stock.inventory' + + reason = fields.Char(help='Type in a reason for the ' + 'product quantity change') + preset_reason_id = fields.Many2one('stock.inventory.line.reason') + + def _get_inventory_lines_values(self): + vals = super(StockInventory, self)._get_inventory_lines_values() + for val in vals: + if self.preset_reason_id: + val['preset_reason_id'] = self.preset_reason_id.id + elif self.reason: + val['reason'] = self.reason + return vals + + @api.onchange('reason') + def onchange_reason(self): + for line in self.line_ids: + line.reason = self.reason + + @api.onchange('preset_reason_id') + def onchange_preset_reason(self): + for line in self.line_ids: + line.preset_reason_id = self.preset_reason_id diff --git a/stock_change_qty_reason/tests/test_stock_change_qty_reason.py b/stock_change_qty_reason/tests/test_stock_change_qty_reason.py index 5a3dcb511..86615386a 100644 --- a/stock_change_qty_reason/tests/test_stock_change_qty_reason.py +++ b/stock_change_qty_reason/tests/test_stock_change_qty_reason.py @@ -18,6 +18,7 @@ class TestStockQuantityChangeReason(SavepointCase): cls.product_category_model = cls.env['product.category'] cls.wizard_model = cls.env['stock.change.product.qty'] cls.preset_reason_id = cls.env['stock.inventory.line.reason'] + cls.stock_location = cls.env.ref('stock.stock_location_stock') # INSTANCES cls.category = cls.product_category_model.create({ @@ -104,3 +105,28 @@ class TestStockQuantityChangeReason(SavepointCase): self.assertEqual(move2.origin, reason.name) self.assertEqual(move2.preset_reason_id, reason) self.assertFalse(move3) + + def test_inventory_adjustment_onchange_reason_preset_reason(self): + """ Check that adding a reason or a preset reason explode to lines + """ + product2 = self._create_product('product_product_2') + self._product_change_qty(product2, 50, 'product_2_reason') + inventory = self.env['stock.inventory'].create({ + 'name': 'remove product2', + 'filter': 'product', + 'location_id': self.stock_location.id, + 'product_id': product2.id, + }) + inventory.preset_reason_id = self._create_reason('Test 1', + 'Description Test 1') + inventory.action_start() + self.assertEqual(len(inventory.line_ids), 1) + inventory.preset_reason_id = self._create_reason('Test 2', + 'Description Test 2') + inventory.onchange_preset_reason() + self.assertEquals(inventory.line_ids.preset_reason_id, + inventory.preset_reason_id) + inventory.reason = 'Reason 2' + inventory.onchange_reason() + self.assertEquals(inventory.line_ids.reason, + inventory.reason) diff --git a/stock_change_qty_reason/views/stock_inventory_view.xml b/stock_change_qty_reason/views/stock_inventory_view.xml new file mode 100644 index 000000000..7d28ae4ad --- /dev/null +++ b/stock_change_qty_reason/views/stock_inventory_view.xml @@ -0,0 +1,27 @@ + + + + + stock.inventory.reason.form.inherit + stock.inventory + + + + + + + + + + stock.inventory.reason.form.inherit.code + stock.inventory + + + + + + + + +