diff --git a/modules/account_asset/asset.py b/modules/account_asset/asset.py index c3cc954294..a4a3cc5c4e 100644 --- a/modules/account_asset/asset.py +++ b/modules/account_asset/asset.py @@ -606,7 +606,10 @@ class Asset(Workflow, ModelSQL, ModelView): square_amount = asset_line.credit - depreciation_line.debit if square_amount: if not account: - account = self.product.account_revenue_used + if square_amount < 0: + account = self.product.account_revenue_used + else: + account = self.product.account_expense_used counter_part_line = MoveLine( debit=square_amount if square_amount > 0 else 0, credit=-square_amount if square_amount < 0 else 0, @@ -860,12 +863,24 @@ class UpdateAsset(Wizard): return min(next_dates) def default_show_move(self, fields): + amount = self.start.value - self.record.value + if amount <= 0: + depreciation_account = ( + self.record.product.account_depreciation_used) + counterpart_account = self.record.product.account_expense_used + else: + if self.record.supplier_invoice_line: + account_asset = ( + self.record.supplier_invoice_line.account.current()) + else: + account_asset = self.record.product.account_asset_used + depreciation_account = account_asset + counterpart_account = self.record.product.account_revenue_used return { - 'amount': self.start.value - self.record.value, + 'amount': amount, 'date': datetime.date.today(), - 'depreciation_account': ( - self.record.product.account_depreciation_used.id), - 'counterpart_account': self.record.product.account_expense_used.id, + 'depreciation_account': depreciation_account, + 'counterpart_account': counterpart_account, 'latest_move_date': self.get_latest_move_date(self.record), 'next_depreciation_date': self.get_next_depreciation_date( self.record), diff --git a/modules/account_asset/tests/scenario_account_asset.rst b/modules/account_asset/tests/scenario_account_asset.rst index 99a75133b8..019cdf723b 100644 --- a/modules/account_asset/tests/scenario_account_asset.rst +++ b/modules/account_asset/tests/scenario_account_asset.rst @@ -191,14 +191,24 @@ Update the asset:: Decimal('42.30') >>> depreciation_account.reload() >>> depreciation_account.debit - Decimal('100.00') + Decimal('0.00') >>> depreciation_account.credit Decimal('112.50') + >>> asset_account.reload() + >>> asset_account.debit + Decimal('1100.00') + >>> asset_account.credit + Decimal('0.00') + >>> revenue.reload() + >>> revenue.debit + Decimal('0.00') + >>> revenue.credit + Decimal('100.00') >>> expense.reload() >>> expense.debit Decimal('112.50') >>> expense.credit - Decimal('100.00') + Decimal('0.00') Create Moves for 3 other months:: @@ -206,16 +216,21 @@ Create Moves for 3 other months:: >>> create_moves.form.date = (supplier_invoice.invoice_date ... + relativedelta(months=6)) >>> create_moves.execute('create_moves') + >>> asset_account.reload() + >>> asset_account.debit + Decimal('1100.00') + >>> asset_account.credit + Decimal('0.00') >>> depreciation_account.reload() >>> depreciation_account.debit - Decimal('100.00') + Decimal('0.00') >>> depreciation_account.credit Decimal('239.28') >>> expense.reload() >>> expense.debit Decimal('239.28') >>> expense.credit - Decimal('100.00') + Decimal('0.00') Sale the asset:: @@ -233,18 +248,19 @@ Sale the asset:: 'posted' >>> asset.reload() >>> assertEqual(asset.customer_invoice_line, customer_invoice.lines[0]) + >>> revenue.reload() >>> revenue.debit Decimal('860.72') >>> revenue.credit - Decimal('600.00') + Decimal('700.00') >>> asset_account.reload() >>> asset_account.debit - Decimal('1000.00') + Decimal('1100.00') >>> asset_account.credit Decimal('1100.00') >>> depreciation_account.reload() >>> depreciation_account.debit - Decimal('339.28') + Decimal('239.28') >>> depreciation_account.credit Decimal('239.28') diff --git a/modules/account_asset/tests/scenario_account_asset_depreciated.rst b/modules/account_asset/tests/scenario_account_asset_depreciated.rst index e95604cf4e..0c24965bf7 100644 --- a/modules/account_asset/tests/scenario_account_asset_depreciated.rst +++ b/modules/account_asset/tests/scenario_account_asset_depreciated.rst @@ -128,8 +128,13 @@ Close the asset:: Decimal('612.50') >>> depreciation_account.credit Decimal('112.50') + >>> expense.reload() + >>> expense.debit + Decimal('1000.00') + >>> expense.credit + Decimal('0.00') >>> revenue.reload() >>> revenue.debit - Decimal('887.50') + Decimal('0.00') >>> revenue.credit Decimal('0.00')