From df56af6cde9dbf2e6944c40ec5310d89a2b9a7df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 18 Mar 2023 00:47:46 +0100 Subject: [PATCH] Set analytic lines on account move from asset update Closes #12131 --- modules/account_asset/asset.py | 5 +++-- modules/analytic_invoice/__init__.py | 4 ++++ modules/analytic_invoice/asset.py | 9 +++++++++ .../tests/scenario_analytic_invoice_asset.rst | 13 +++++++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/modules/account_asset/asset.py b/modules/account_asset/asset.py index d5b27f790e..e016f4b0fc 100644 --- a/modules/account_asset/asset.py +++ b/modules/account_asset/asset.py @@ -887,13 +887,15 @@ class UpdateAsset(Wizard): Period = pool.get('account.period') Move = pool.get('account.move') period = Period.find(asset.company, self.show_move.date) - return Move( + move = Move( company=asset.company, origin=asset, journal=asset.account_journal.id, period=period, date=self.show_move.date, ) + move.lines = self.get_move_lines(asset) + return move def get_move_lines(self, asset): MoveLine = Pool().get('account.move.line') @@ -918,7 +920,6 @@ class UpdateAsset(Wizard): if not (latest_move_date <= self.show_move.date <= next_date): raise ValueError('The update move date is invalid') move = self.get_move(self.record) - move.lines = self.get_move_lines(self.record) move.save() self.model.write([self.record], { 'update_moves': [('add', [move.id])], diff --git a/modules/analytic_invoice/__init__.py b/modules/analytic_invoice/__init__.py index d628e0cec8..e5b724200d 100644 --- a/modules/analytic_invoice/__init__.py +++ b/modules/analytic_invoice/__init__.py @@ -15,3 +15,7 @@ def register(): asset.Asset, module='analytic_invoice', type_='model', depends=['account_asset']) + Pool.register( + asset.UpdateAsset, + module='analytic_invoice', type_='wizard', + depends=['account_asset']) diff --git a/modules/analytic_invoice/asset.py b/modules/analytic_invoice/asset.py index f7a71a45d5..4175058051 100644 --- a/modules/analytic_invoice/asset.py +++ b/modules/analytic_invoice/asset.py @@ -57,3 +57,12 @@ class Asset(AnalyticMixin, metaclass=PoolMeta): analytic_lines.extend( entry.get_analytic_lines(line, move.date)) line.analytic_lines = analytic_lines + + +class UpdateAsset(metaclass=PoolMeta): + __name__ = 'account.asset.update' + + def get_move(self, asset): + move = super().get_move(asset) + asset.set_analytic_lines(move, self.show_move.counterpart_account) + return move diff --git a/modules/analytic_invoice/tests/scenario_analytic_invoice_asset.rst b/modules/analytic_invoice/tests/scenario_analytic_invoice_asset.rst index 591050e011..132d49169b 100644 --- a/modules/analytic_invoice/tests/scenario_analytic_invoice_asset.rst +++ b/modules/analytic_invoice/tests/scenario_analytic_invoice_asset.rst @@ -132,6 +132,19 @@ Create Moves for 1 month:: >>> analytic_account.credit Decimal('0.00') +Update the asset:: + + >>> update = Wizard('account.asset.update', [asset]) + >>> update.form.value = Decimal('950.00') + >>> update.execute('update_asset') + >>> update.form.date = update.form.next_depreciation_date + >>> update.execute('create_move') + >>> analytic_account.reload() + >>> analytic_account.debit + Decimal('150.00') + >>> analytic_account.credit + Decimal('0.00') + Close the asset:: >>> asset.click('close')