account_asset_management: Add unit test for invoices with multiple assets
This commit is contained in:
parent
886abfe610
commit
08907b0b1d
@ -90,6 +90,26 @@ class TestAssetManagement(SavepointCase):
|
|||||||
'journal_id': cls.journal.id,
|
'journal_id': cls.journal.id,
|
||||||
'invoice_line_ids': [(4, cls.invoice_line.id)]})
|
'invoice_line_ids': [(4, cls.invoice_line.id)]})
|
||||||
|
|
||||||
|
cls.invoice_line_2 = cls.account_invoice_line.create({
|
||||||
|
'name': 'test 2',
|
||||||
|
'account_id': cls.account_payable.id,
|
||||||
|
'price_unit': 10000.00,
|
||||||
|
'quantity': 1,
|
||||||
|
'product_id': cls.product.id})
|
||||||
|
cls.invoice_line_3 = cls.account_invoice_line.create({
|
||||||
|
'name': 'test 3',
|
||||||
|
'account_id': cls.account_payable.id,
|
||||||
|
'price_unit': 20000.00,
|
||||||
|
'quantity': 1,
|
||||||
|
'product_id': cls.product_id})
|
||||||
|
|
||||||
|
cls.invoice_2 = cls.account_invoice.create({
|
||||||
|
'partner_id': cls.partner.id,
|
||||||
|
'account_id': cls.account_recv.id,
|
||||||
|
'journal_id': cls.journal.id,
|
||||||
|
'invoice_line_ids': [(4, cls.invoice_line_2.id),
|
||||||
|
(4, cls.invoice_line_3.id)]})
|
||||||
|
|
||||||
def test_01_nonprorata_basic(self):
|
def test_01_nonprorata_basic(self):
|
||||||
"""Basic tests of depreciation board computations and postings."""
|
"""Basic tests of depreciation board computations and postings."""
|
||||||
#
|
#
|
||||||
@ -467,3 +487,31 @@ class TestAssetManagement(SavepointCase):
|
|||||||
# I check that the new asset has the correct purchase value
|
# I check that the new asset has the correct purchase value
|
||||||
self.assertAlmostEqual(
|
self.assertAlmostEqual(
|
||||||
asset.purchase_value, -line.price_unit, places=2)
|
asset.purchase_value, -line.price_unit, places=2)
|
||||||
|
|
||||||
|
def test_11_assets_from_invoice(self):
|
||||||
|
all_assets = self.env['account.asset'].search([])
|
||||||
|
invoice = self.invoice_2
|
||||||
|
asset_profile = self.env.ref(
|
||||||
|
'account_asset_management.account_asset_profile_car_5Y')
|
||||||
|
asset_profile.asset_product_item = True
|
||||||
|
# Compute depreciation lines on invoice validation
|
||||||
|
asset_profile.open_asset = True
|
||||||
|
|
||||||
|
self.assertTrue(len(invoice.invoice_line_ids) == 2)
|
||||||
|
invoice.invoice_line_ids.write({
|
||||||
|
'quantity': 1,
|
||||||
|
'asset_profile_id': asset_profile.id,
|
||||||
|
})
|
||||||
|
invoice.action_invoice_open()
|
||||||
|
# Retrieve all assets after invoice validation
|
||||||
|
current_assets = self.env['account.asset'].search([])
|
||||||
|
# What are the new assets?
|
||||||
|
new_assets = current_assets - all_assets
|
||||||
|
self.assertEqual(len(new_assets), 2)
|
||||||
|
|
||||||
|
for asset in new_assets:
|
||||||
|
dlines = asset.depreciation_line_ids.filtered(
|
||||||
|
lambda l: l.type == 'depreciate')
|
||||||
|
dlines = dlines.sorted(key=lambda l: l.line_date)
|
||||||
|
self.assertAlmostEqual(dlines[0].depreciated_value, 0.0)
|
||||||
|
self.assertAlmostEqual(dlines[-1].remaining_value, 0.0)
|
||||||
|
Loading…
Reference in New Issue
Block a user