Skip to content

Commit f6ad943

Browse files
committed
[IMP] l10n_it_asset_management: Generate Code from Sequence
1 parent 9076c72 commit f6ad943

File tree

7 files changed

+92
-2
lines changed

7 files changed

+92
-2
lines changed

l10n_it_asset_management/models/asset.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ def get_default_company_id(self):
3131
code = fields.Char(
3232
default="",
3333
)
34+
code_sequence_id = fields.Many2one(
35+
related="category_id.code_sequence_id",
36+
)
3437

3538
company_id = fields.Many2one(
3639
"res.company",
@@ -114,6 +117,9 @@ def create(self, vals_list):
114117
asset = super().create(vals)
115118
if create_deps_from_categ:
116119
asset.onchange_category_id()
120+
code_sequence = asset.code_sequence_id
121+
if code_sequence and not asset.code:
122+
asset.code = code_sequence.next_by_id()
117123
assets |= asset
118124
return assets
119125

l10n_it_asset_management/models/asset_category.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@ def get_default_type_ids(self):
9494
" printing assets' reports.",
9595
)
9696

97+
code_sequence_id = fields.Many2one(
98+
comodel_name="ir.sequence",
99+
help="Sequence to generate the Code of new assets.",
100+
)
101+
97102
tag_ids = fields.Many2many(
98103
"asset.tag",
99104
string="Tag",

l10n_it_asset_management/tests/test_assets_management.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1014,3 +1014,22 @@ def test_override_journal(self):
10141014
# Assert
10151015
account_move = asset.depreciation_ids.line_ids.move_id
10161016
self.assertEqual(account_move.journal_id, depreciate_asset_wizard.journal_id)
1017+
1018+
def test_create_category_code_sequence(self):
1019+
"""If the category has a "Code Sequence",
1020+
it is used for created assets."""
1021+
# Arrange
1022+
category = self.asset_category_1
1023+
sequence = self.env["ir.sequence"].create(
1024+
{
1025+
"name": "Test Sequence",
1026+
}
1027+
)
1028+
sequence_next = sequence.number_next
1029+
category.code_sequence_id = sequence
1030+
1031+
# Act
1032+
asset = self._create_asset()
1033+
1034+
# Assert
1035+
self.assertEqual(asset.code, str(sequence_next))

l10n_it_asset_management/views/asset.xml

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,37 @@
8282
name="category_id"
8383
attrs="{'readonly': [('state', '!=', 'non_depreciated')]}"
8484
/>
85-
<field name="code" />
85+
<field
86+
name="code"
87+
attrs="{
88+
'invisible': [
89+
'&amp;',
90+
('code_sequence_id', '!=', False),
91+
('id', '=', False),
92+
],
93+
}"
94+
/>
95+
<!-- Invisibility domain of `code_sequence_details` could be simpler,
96+
but like this it is easier to maintain and more obvious that it is
97+
the opposite of `code`'s invisibility domain. -->
98+
<div
99+
name="code_sequence_details"
100+
class="text-muted"
101+
colspan="2"
102+
attrs="{
103+
'invisible': [
104+
'!',
105+
'&amp;',
106+
('code_sequence_id', '!=', False),
107+
('id', '=', False),
108+
],
109+
}"
110+
>
111+
The Code will be generated from the Category's Code Sequence <field
112+
name="code_sequence_id"
113+
class="d-inline"
114+
/>
115+
</div>
86116
<field
87117
name="used"
88118
attrs="{'readonly': [('state', '!=', 'non_depreciated')]}"

l10n_it_asset_management/views/asset_category.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
<group>
7070
<group>
7171
<field name="tag_ids" widget="many2many_tags" />
72+
<field name="code_sequence_id" />
7273
</group>
7374
<group>
7475
<field name="print_by_default" />

l10n_it_asset_management/wizard/account_move_manage_asset.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ def get_default_move_ids(self):
3333
code = fields.Char(
3434
default="",
3535
)
36+
code_sequence_id = fields.Many2one(
37+
related="category_id.code_sequence_id",
38+
)
3639

3740
company_id = fields.Many2one(
3841
"res.company",

l10n_it_asset_management/wizard/account_move_manage_asset_view.xml

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,33 @@
7373
options="{'no_create': True}"
7474
attrs="{'required': [('management_type', '=', 'create')]}"
7575
/>
76-
<field name="code" />
76+
<field
77+
name="code"
78+
attrs="{
79+
'invisible': [
80+
('code_sequence_id', '!=', False),
81+
],
82+
}"
83+
/>
84+
<!-- Invisibility domain of `code_sequence_details` could be simpler,
85+
but like this it is easier to maintain and more obvious that it is
86+
the opposite of `code`'s invisibility domain. -->
87+
<div
88+
name="code_sequence_details"
89+
class="text-muted"
90+
colspan="2"
91+
attrs="{
92+
'invisible': [
93+
'!',
94+
('code_sequence_id', '!=', False),
95+
],
96+
}"
97+
>
98+
The Code will be generated from the Category's Code Sequence <field
99+
name="code_sequence_id"
100+
class="d-inline"
101+
/>
102+
</div>
77103
<field name="used" />
78104
</group>
79105
<group>

0 commit comments

Comments
 (0)