Initial commit: Odoo 18.0-20251222 extra-addons
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

This commit is contained in:
tocmo0nlord
2026-03-13 20:43:25 +00:00
parent 36e847a7df
commit adbe430761
9472 changed files with 1265727 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from . import common
from . import test_ir_sequence_option

View File

@@ -0,0 +1,33 @@
# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo import api, fields, models
class BaseSequenceTester(models.Model):
_name = "base.sequence.tester"
_description = "Base Sequence Tester"
name = fields.Char(default="/")
test_type = fields.Selection(selection=[("a", "A"), ("b", "B")])
@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
seq = self.env["ir.sequence.option.line"].get_sequence(self.new(vals))
if (
seq
): # use sequence from sequence.option, instead of base.sequence.tester
self = self.with_context(sequence_option_id=seq.id)
new_seq = self.env["ir.sequence"].next_by_code("base.sequence.tester")
vals["name"] = new_seq
return super().create(vals_list)
class IrSequenceOption(models.Model):
_inherit = "ir.sequence.option"
model = fields.Selection(
selection_add=[("base.sequence.tester", "base.sequence.tester")],
ondelete={"base.sequence.tester": "cascade"},
)

View File

@@ -0,0 +1,93 @@
# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo_test_helper import FakeModelLoader
from odoo.tests import common
class CommonBaseSequenceOption(common.TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.loader = FakeModelLoader(cls.env, cls.__module__)
cls.loader.backup_registry()
from .base_sequence_tester import BaseSequenceTester, IrSequenceOption
cls.loader.update_registry((BaseSequenceTester, IrSequenceOption))
cls.test_model = cls.env[BaseSequenceTester._name]
cls.tester_model = cls.env["ir.model"].search(
[("model", "=", "base.sequence.tester")]
)
# Access record:
cls.env["ir.model.access"].create(
{
"name": "access.tester",
"model_id": cls.tester_model.id,
"perm_read": 1,
"perm_write": 1,
"perm_create": 1,
"perm_unlink": 1,
}
)
# Create sequence for type A and type B
cls.ir_sequence_obj = cls.env["ir.sequence"]
cls.ir_sequence_obj.create(
{
"name": "Default Sequence",
"code": "base.sequence.tester",
"padding": 5,
"prefix": "DEF/",
}
)
seq_a = cls.ir_sequence_obj.create(
{
"name": "Type A",
"padding": 5,
"prefix": "TYPE-A/",
}
)
seq_b = cls.ir_sequence_obj.create(
{
"name": "Type B",
"padding": 5,
"prefix": "TYPE-B/",
}
)
# Create sequence options for model base.sequence.tester:
cls.base_sequence_obj = cls.env["ir.sequence.option"]
cls.base_seq = cls.base_sequence_obj.create(
{
"name": "Test Model",
"model": "base.sequence.tester",
"use_sequence_option": True,
}
)
cls.sequence_obj = cls.env["ir.sequence.option.line"]
cls.sequence_obj.create(
{
"base_id": cls.base_seq.id,
"name": "Option 1",
"filter_domain": [("test_type", "=", "a")],
"sequence_id": seq_a.id,
}
)
cls.sequence_obj.create(
{
"base_id": cls.base_seq.id,
"name": "Option 1",
"filter_domain": [("test_type", "=", "b")],
"sequence_id": seq_b.id,
}
)
@classmethod
def tearDownClass(cls):
cls.loader.restore_registry()
return super().tearDownClass()

View File

@@ -0,0 +1,30 @@
# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo.tests.common import tagged
from .common import CommonBaseSequenceOption
@tagged("post_install", "-at_install")
class TestBaseSequenceTester(CommonBaseSequenceOption):
def test_sequence_options(self):
"""
Test 3 cases,
1. Default
2. Sequence Type A
3. Sequence Type B
"""
# 1. Default
rec = self.test_model.create({})
self.assertIn("DEF/", rec.name)
# 2. Type A
rec = self.test_model.create({"test_type": "a"})
self.assertIn("TYPE-A/", rec.name)
# 3. Type B
rec = self.test_model.create({"test_type": "b"})
self.assertIn("TYPE-B/", rec.name)
# Not useing the sequence
self.base_seq.use_sequence_option = False
rec = self.test_model.create({"test_type": "b"})
self.assertIn("DEF/", rec.name)