From 9d9371273d084bb7f3a604bb3f4d912e0e6a5301 Mon Sep 17 00:00:00 2001 From: Aungkokolin1997 Date: Tue, 30 Apr 2024 07:12:01 +0000 Subject: [PATCH] [IMP] stock_analytic: make analytic distribution consistent between move and move line --- stock_analytic/models/stock_move.py | 6 ++++++ stock_analytic/tests/test_stock_picking.py | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/stock_analytic/models/stock_move.py b/stock_analytic/models/stock_move.py index 989ca9599a..4c6362c12b 100644 --- a/stock_analytic/models/stock_move.py +++ b/stock_analytic/models/stock_move.py @@ -72,6 +72,7 @@ def _action_done(self, cancel_backorder=False): "company_id": move.company_id.id, } ) + move.move_line_ids.analytic_distribution = move.analytic_distribution return super()._action_done(cancel_backorder=cancel_backorder) @@ -89,3 +90,8 @@ def _prepare_stock_move_vals(self): if self.analytic_distribution: res.update({"analytic_distribution": self.analytic_distribution}) return res + + def write(self, vals): + if "analytic_distribution" in vals: + self.move_id.analytic_distribution = vals["analytic_distribution"] + return super().write(vals) diff --git a/stock_analytic/tests/test_stock_picking.py b/stock_analytic/tests/test_stock_picking.py index c917686e03..c568961fa7 100644 --- a/stock_analytic/tests/test_stock_picking.py +++ b/stock_analytic/tests/test_stock_picking.py @@ -158,6 +158,12 @@ def _check_no_analytic_account(self, picking): line_count = self.env["account.move.line"].search_count(criteria2) self.assertEqual(line_count, 0) + def _check_analytic_consistency(self, picking): + for move_line in picking.move_line_ids: + self.assertEqual( + move_line.analytic_distribution, move_line.move_id.analytic_distribution + ) + def test_outgoing_picking_with_analytic(self): picking = self._create_picking( self.location, @@ -170,6 +176,7 @@ def test_outgoing_picking_with_analytic(self): self._picking_done_no_error(picking) self._check_account_move_no_error(picking) self._check_analytic_account_no_error(picking) + self._check_analytic_consistency(picking) def test_outgoing_picking_without_analytic_optional(self): picking = self._create_picking( @@ -182,6 +189,7 @@ def test_outgoing_picking_without_analytic_optional(self): self._picking_done_no_error(picking) self._check_account_move_no_error(picking) self._check_no_analytic_account(picking) + self._check_analytic_consistency(picking) def test_outgoing_picking_without_analytic_mandatory(self): self.analytic_applicability.write({"applicability": "mandatory"}) @@ -207,6 +215,7 @@ def test_incoming_picking_with_analytic(self): self._picking_done_no_error(picking) self._check_account_move_no_error(picking) self._check_analytic_account_no_error(picking) + self._check_analytic_consistency(picking) def test_picking_add_extra_move_line(self): picking = self._create_picking(