Files
Odoo-18.0-20251222/account_asset_number/tests/test_account_asset_number.py
tocmo0nlord adbe430761
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
tests / Detect unreleased dependencies (push) Has been cancelled
tests / test with OCB (push) Has been cancelled
tests / test with Odoo (push) Has been cancelled
Initial commit: Odoo 18.0-20251222 extra-addons
2026-03-13 20:43:25 +00:00

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."
)