From 7e66877b814db8ad8688083a3fccef8ee4c92d3d Mon Sep 17 00:00:00 2001 From: Martha Rondon Date: Tue, 23 Jul 2024 19:44:16 -0400 Subject: [PATCH] [MIG] stock_secondary_unit: Migration to 17.0 --- stock_secondary_unit/__manifest__.py | 2 +- stock_secondary_unit/models/stock_move.py | 49 +++++++++++++------ .../report/report_deliveryslip.xml | 13 ++++- .../tests/test_stock_secondary_unit.py | 45 +++++++---------- stock_secondary_unit/views/product_views.xml | 38 +++++++++----- .../views/stock_move_views.xml | 22 ++++----- .../views/stock_picking_views.xml | 26 ++-------- 7 files changed, 105 insertions(+), 90 deletions(-) diff --git a/stock_secondary_unit/__manifest__.py b/stock_secondary_unit/__manifest__.py index 7ab1a7c760bb..71f0bf7192fd 100644 --- a/stock_secondary_unit/__manifest__.py +++ b/stock_secondary_unit/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Stock Secondary Unit", "summary": "Get product quantities in a secondary unit", - "version": "15.0.2.2.0", + "version": "17.0.1.0.0", "development_status": "Production/Stable", "category": "stock", "website": "https://github.com/OCA/stock-logistics-warehouse", diff --git a/stock_secondary_unit/models/stock_move.py b/stock_secondary_unit/models/stock_move.py index 16580bf47b53..1ef50537f5ec 100644 --- a/stock_secondary_unit/models/stock_move.py +++ b/stock_secondary_unit/models/stock_move.py @@ -12,16 +12,36 @@ class StockMove(models.Model): } product_uom_qty = fields.Float( - store=True, readonly=False, compute="_compute_product_uom_qty", copy=True + store=True, + readonly=False, + compute="_compute_product_uom_qty", + copy=True, + precompute=True, ) @api.depends("secondary_uom_qty", "secondary_uom_id") def _compute_product_uom_qty(self): self._compute_helper_target_field_qty() - @api.onchange("product_uom") - def onchange_product_uom_for_secondary(self): - self._onchange_helper_product_uom_for_secondary() + @api.depends("product_id") + def _compute_product_uom(self): + res = super()._compute_product_uom() + for move in self: + move._onchange_helper_product_uom_for_secondary() + return res + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + product = self.env["product.product"].browse(vals.get("product_id", False)) + if product: + vals.update( + { + "secondary_uom_id": product.stock_secondary_uom_id.id + or product.product_tmpl_id.stock_secondary_uom_id.id, + } + ) + return super().create(vals_list) @api.model def _prepare_merge_moves_distinct_fields(self): @@ -40,17 +60,16 @@ def _prepare_extra_move_vals(self, qty): class StockMoveLine(models.Model): _inherit = ["stock.move.line", "product.secondary.unit.mixin"] _name = "stock.move.line" - _secondary_unit_fields = {"qty_field": "qty_done", "uom_field": "product_uom_id"} + _secondary_unit_fields = {"qty_field": "quantity", "uom_field": "product_uom_id"} - qty_done = fields.Float(store=True, readonly=False, compute="_compute_qty_done") + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + move = self.env["stock.move"].browse(vals.get("move_id", False)) + if move.secondary_uom_id: + vals["secondary_uom_id"] = move.secondary_uom_id.id + return super().create(vals_list) - @api.model - def create(self, vals): - move = self.env["stock.move"].browse(vals.get("move_id", False)) - if move.secondary_uom_id: - vals["secondary_uom_id"] = move.secondary_uom_id.id - return super().create(vals) - - @api.depends("secondary_uom_id", "secondary_uom_qty") - def _compute_qty_done(self): + @api.depends("secondary_uom_id", "secondary_uom_qty", "quant_id") + def _compute_quantity(self): self._compute_helper_target_field_qty() diff --git a/stock_secondary_unit/report/report_deliveryslip.xml b/stock_secondary_unit/report/report_deliveryslip.xml index 31e4afaf708e..461adf39ca86 100644 --- a/stock_secondary_unit/report/report_deliveryslip.xml +++ b/stock_secondary_unit/report/report_deliveryslip.xml @@ -22,7 +22,7 @@ @@ -41,4 +41,15 @@ + diff --git a/stock_secondary_unit/tests/test_stock_secondary_unit.py b/stock_secondary_unit/tests/test_stock_secondary_unit.py index 3251db343360..1a3ea1227d7a 100644 --- a/stock_secondary_unit/tests/test_stock_secondary_unit.py +++ b/stock_secondary_unit/tests/test_stock_secondary_unit.py @@ -148,15 +148,14 @@ def test_03_stock_picking_secondary_unit(self): delivery_order = StockPicking.create(do_vals) delivery_order.action_confirm() # Move is merged into 1 line for both stock.move and stock.move.line - self.assertEqual(len(delivery_order.move_lines), 1) self.assertEqual(len(delivery_order.move_line_ids), 1) - # Qty merged to 20, and secondary unit qty is 40line - uom_qty = sum(delivery_order.move_lines.mapped("product_uom_qty")) + # Qty merged to 20, and secondary unit qty is 40 line + uom_qty = sum(delivery_order.move_ids.mapped("product_uom_qty")) secondary_uom_qty = sum( delivery_order.move_line_ids.mapped("secondary_uom_qty") ) self.assertEqual(uom_qty, 20.0) - self.assertEqual(secondary_uom_qty, 0.0) + self.assertEqual(secondary_uom_qty, 40.0) def test_picking_secondary_unit(self): product = self.product_template.product_variant_ids[0] @@ -182,23 +181,9 @@ def test_picking_secondary_unit(self): move.secondary_uom_id = product.product_tmpl_id.secondary_uom_ids[2] self.assertEqual(move.product_uom_qty, 10) move.product_uom = self.product_uom_ton - self.assertAlmostEqual(move.secondary_uom_qty, 1000, 2) - + self.assertAlmostEqual(move.secondary_uom_qty, 1, 2) picking = picking_form.save() picking.action_confirm() - with Form(picking) as picking_form: - # Test detail operations - with picking_form.move_line_ids_without_package.new() as move: - move.product_id = product - move.secondary_uom_qty = 1 - move.secondary_uom_id = product.product_tmpl_id.secondary_uom_ids[0] - self.assertEqual(move.qty_done, 0.5) - move.secondary_uom_qty = 2 - self.assertEqual(move.qty_done, 1) - move.secondary_uom_id = product.product_tmpl_id.secondary_uom_ids[1] - self.assertEqual(move.qty_done, 1.8) - move.qty_done = 5 - self.assertAlmostEqual(move.secondary_uom_qty, 5.56, 2) def test_secondary_unit_merge_move_diff_uom(self): product = self.product_template.product_variant_ids[0] @@ -211,14 +196,18 @@ def test_secondary_unit_merge_move_diff_uom(self): with picking_form.move_ids_without_package.new() as move: move.product_id = product move.secondary_uom_qty = 1 - move.secondary_uom_id = product.product_tmpl_id.secondary_uom_ids[0] with picking_form.move_ids_without_package.new() as move: move.product_id = product move.secondary_uom_qty = 1 - move.secondary_uom_id = product.product_tmpl_id.secondary_uom_ids[1] picking = picking_form.save() + picking.move_ids[ + 0 + ].secondary_uom_id = product.product_tmpl_id.secondary_uom_ids[0] + picking.move_ids[ + 1 + ].secondary_uom_id = product.product_tmpl_id.secondary_uom_ids[1] picking.action_confirm() - self.assertEqual(len(picking.move_lines), 2) + self.assertEqual(len(picking.move_ids), 2) def test_secondary_unit_merge_move_same_uom(self): product = self.product_template.product_variant_ids[0] @@ -231,12 +220,16 @@ def test_secondary_unit_merge_move_same_uom(self): with picking_form.move_ids_without_package.new() as move: move.product_id = product move.secondary_uom_qty = 1 - move.secondary_uom_id = product.product_tmpl_id.secondary_uom_ids[0] with picking_form.move_ids_without_package.new() as move: move.product_id = product move.secondary_uom_qty = 1 - move.secondary_uom_id = product.product_tmpl_id.secondary_uom_ids[0] picking = picking_form.save() + picking.move_ids[ + 0 + ].secondary_uom_id = product.product_tmpl_id.secondary_uom_ids[0] + picking.move_ids[ + 1 + ].secondary_uom_id = product.product_tmpl_id.secondary_uom_ids[0] picking.action_confirm() - self.assertEqual(len(picking.move_lines), 1) - self.assertEqual(picking.move_lines.secondary_uom_qty, 2) + self.assertEqual(len(picking.move_ids), 1) + self.assertEqual(picking.move_ids.secondary_uom_qty, 2) diff --git a/stock_secondary_unit/views/product_views.xml b/stock_secondary_unit/views/product_views.xml index 2f9b234aa14a..fd0e65dda59a 100644 --- a/stock_secondary_unit/views/product_views.xml +++ b/stock_secondary_unit/views/product_views.xml @@ -6,13 +6,13 @@ Product template Secondary Unit product.template - @@ -24,15 +24,18 @@ name="inherit_id" ref="stock.product_template_form_view_procurement_button" /> - - +