142 lines
4.4 KiB
Python
Executable File
142 lines
4.4 KiB
Python
Executable File
# Copyright 2022 Ecosoft Co., Ltd. (http://ecosoft.co.th)
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
import time
|
|
|
|
from odoo.tests import tagged
|
|
|
|
from odoo.addons.account_asset_management.tests.test_account_asset_management import (
|
|
TestAssetManagement,
|
|
)
|
|
|
|
|
|
@tagged("post_install", "-at_install")
|
|
class TestAssetNumber(TestAssetManagement):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
"""Setup."""
|
|
super().setUpClass()
|
|
cls.sequence_asset = cls.env["ir.sequence"].create(
|
|
{
|
|
"name": "Asset Number Test",
|
|
"code": "account.asset.sequence",
|
|
"implementation": "standard",
|
|
"prefix": "AC",
|
|
"padding": 5,
|
|
}
|
|
)
|
|
|
|
def test_01_asset_number(self):
|
|
"""Test asset creation with a sequence."""
|
|
|
|
self.car5y.write(
|
|
{
|
|
"use_sequence": True,
|
|
"sequence_id": self.sequence_asset.id,
|
|
}
|
|
)
|
|
asset = self.asset_model.create(
|
|
{
|
|
"name": "test asset",
|
|
"profile_id": self.car5y.id,
|
|
"purchase_value": 1000,
|
|
"salvage_value": 0,
|
|
"date_start": time.strftime("%Y-07-07"),
|
|
"method_time": "year",
|
|
"method": "degr-linear",
|
|
"method_progress_factor": 0.40,
|
|
"method_number": 5,
|
|
"method_period": "year",
|
|
"prorata": False,
|
|
}
|
|
)
|
|
asset.compute_depreciation_board()
|
|
asset.invalidate_recordset()
|
|
# check number in the asset
|
|
self.assertFalse(asset.number)
|
|
asset.validate()
|
|
self.assertTrue(asset.number)
|
|
self.assertEqual(asset.number[:2], "AC")
|
|
|
|
def test_02_asset_number_without_sequence(self):
|
|
"""Test asset creation without a sequence."""
|
|
self.car5y.write(
|
|
{
|
|
"use_sequence": False,
|
|
"sequence_id": self.sequence_asset.id,
|
|
}
|
|
)
|
|
|
|
asset = self.asset_model.create(
|
|
{
|
|
"name": "test asset without sequence",
|
|
"profile_id": self.car5y.id,
|
|
"purchase_value": 1500,
|
|
"salvage_value": 100,
|
|
"date_start": time.strftime("%Y-08-01"),
|
|
"method_time": "year",
|
|
"method": "degr-linear",
|
|
"method_number": 5,
|
|
"method_period": "year",
|
|
"prorata": False,
|
|
}
|
|
)
|
|
|
|
asset.validate()
|
|
|
|
self.assertFalse(
|
|
asset.number,
|
|
"The asset number should not be generated when sequence is disabled.",
|
|
)
|
|
|
|
def test_03_xls_fields(self):
|
|
"""Test XLS fields include the number field."""
|
|
acquisition_fields = self.env["account.asset"]._xls_acquisition_fields()
|
|
active_fields = self.env["account.asset"]._xls_active_fields()
|
|
removal_fields = self.env["account.asset"]._xls_removal_fields()
|
|
|
|
self.assertIn(
|
|
"number",
|
|
acquisition_fields,
|
|
"The number field should be included in acquisition fields.",
|
|
)
|
|
self.assertIn(
|
|
"number",
|
|
active_fields,
|
|
"The number field should be included in active fields.",
|
|
)
|
|
self.assertIn(
|
|
"number",
|
|
removal_fields,
|
|
"The number field should be included in removal fields.",
|
|
)
|
|
|
|
def test_04_profile_barcode_type_onchange(self):
|
|
"""Test the onchange logic for barcode_type."""
|
|
self.ict3Y.write(
|
|
{
|
|
"barcode_width": 350,
|
|
"barcode_height": 75,
|
|
}
|
|
)
|
|
|
|
self.ict3Y.barcode_type = "qr"
|
|
self.ict3Y._onchange_barcode_type()
|
|
self.assertEqual(
|
|
self.ict3Y.barcode_width, 150, "QR barcode width should default to 150."
|
|
)
|
|
self.assertEqual(
|
|
self.ict3Y.barcode_height,
|
|
75,
|
|
"Barcode height should remain unchanged for QR.",
|
|
)
|
|
|
|
self.ict3Y.barcode_type = "barcode"
|
|
self.ict3Y._onchange_barcode_type()
|
|
self.assertEqual(
|
|
self.ict3Y.barcode_width, 300, "Barcode width should default to 300."
|
|
)
|
|
self.assertEqual(
|
|
self.ict3Y.barcode_height, 75, "Barcode height should default to 75."
|
|
)
|