from datetime import date from odoo.tests.common import TransactionCase from odoo.tests import tagged @tagged('post_install', '-at_install') class TestFusionAssetDisposal(TransactionCase): def setUp(self): super().setUp() self.asset = self.env['fusion.asset'].create({ 'name': 'Disposable Asset', 'cost': 10000, 'salvage_value': 0, 'acquisition_date': date(2026, 1, 1), 'method': 'straight_line', 'useful_life_years': 5, }) def test_create_minimal_sale(self): d = self.env['fusion.asset.disposal'].create({ 'asset_id': self.asset.id, 'disposal_type': 'sale', 'sale_amount': 7000, 'book_value_at_disposal': 6000, }) self.assertEqual(d.gain_loss_amount, 1000) self.assertEqual(d.company_id, self.asset.company_id) def test_sale_at_loss(self): d = self.env['fusion.asset.disposal'].create({ 'asset_id': self.asset.id, 'disposal_type': 'sale', 'sale_amount': 4000, 'book_value_at_disposal': 6000, }) self.assertEqual(d.gain_loss_amount, -2000) def test_scrap_full_loss(self): d = self.env['fusion.asset.disposal'].create({ 'asset_id': self.asset.id, 'disposal_type': 'scrap', 'sale_amount': 0, 'book_value_at_disposal': 6000, }) self.assertEqual(d.gain_loss_amount, -6000) def test_donation_ignores_sale_amount(self): d = self.env['fusion.asset.disposal'].create({ 'asset_id': self.asset.id, 'disposal_type': 'donation', 'sale_amount': 999, 'book_value_at_disposal': 6000, }) self.assertEqual(d.gain_loss_amount, -6000)