Skip to content

Commit c66774c

Browse files
[MIG] maintenance_equipment_sequence: Migration to 18.0
1 parent 05a15ae commit c66774c

File tree

8 files changed

+148
-35
lines changed

8 files changed

+148
-35
lines changed

maintenance_equipment_sequence/README.rst

+4-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Maintenance Equipment Sequence
77
!! This file is generated by oca-gen-addon-readme !!
88
!! changes will be overwritten. !!
99
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10-
!! source digest: sha256:0961f01d04702ea5589459b97ebc32b4c47bf93df77150b4fcbf5fce3e91375d
10+
!! source digest: sha256:1d6390a49a54f9532ef01f333c3ca20d10005c239f0d61cd3c6e0595c82b3c04
1111
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1212
1313
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -60,6 +60,9 @@ Contributors
6060
- Adria Gil Sorribes <adria.gil@forgeflow.com>
6161
- Núria Martín Xifré <nuria.martin@forgeflow.com>
6262
- Bernat Puig Font <bernat.puig@forgeflow.com>
63+
- `Heliconia Solutions Pvt. Ltd. <https://www.heliconia.io>`__
64+
65+
- Bhavesh Heliconia
6366

6467
Maintainers
6568
-----------

maintenance_equipment_sequence/__manifest__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"summary": """
77
Adds sequence to maintenance equipment defined in the equipment's
88
category""",
9-
"version": "16.0.1.0.2",
9+
"version": "18.0.1.0.0",
1010
"license": "AGPL-3",
1111
"author": "ForgeFlow S.L.," "Odoo Community Association (OCA)",
1212
"maintainers": ["AdriaGForgeFlow"],

maintenance_equipment_sequence/i18n/maintenance_equipment_sequence.pot

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#
55
msgid ""
66
msgstr ""
7-
"Project-Id-Version: Odoo Server 16.0\n"
7+
"Project-Id-Version: Odoo Server 17.0\n"
88
"Report-Msgid-Bugs-To: \n"
99
"Last-Translator: \n"
1010
"Language-Team: \n"

maintenance_equipment_sequence/models/maintenance.py

+13-12
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def create(self, vals_list):
7474
self.env["ir.sequence"].browse(vals["sequence_id"]).prefix
7575
)
7676
result = super().create(vals_list)
77-
result._compute_equipment_code()
77+
self._compute_equipment_code()
7878
return result
7979

8080
def write(self, vals):
@@ -108,17 +108,18 @@ def _compute_equipment_code(self):
108108
class MaintenanceEquipment(models.Model):
109109
_inherit = "maintenance.equipment"
110110

111-
@api.model
112-
def create(self, vals):
113-
equipment = super().create(vals)
114-
if equipment.category_id and not equipment.serial_no:
115-
sequence_id = (
116-
self.env["maintenance.equipment.category"]
117-
.browse(vals["category_id"])
118-
.sequence_id
119-
)
120-
if sequence_id:
121-
equipment.serial_no = sequence_id._next()
111+
@api.model_create_multi
112+
def create(self, vals_list):
113+
equipment = super().create(vals_list)
114+
for vals in vals_list:
115+
if equipment.category_id and not equipment.serial_no:
116+
sequence_id = (
117+
self.env["maintenance.equipment.category"]
118+
.browse(vals["category_id"])
119+
.sequence_id
120+
)
121+
if sequence_id:
122+
equipment.serial_no = sequence_id._next()
122123
return equipment
123124

124125
def write(self, vals):
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
- Adria Gil Sorribes \<<adria.gil@forgeflow.com>\>
22
- Núria Martín Xifré \<<nuria.martin@forgeflow.com>\>
33
- Bernat Puig Font \<<bernat.puig@forgeflow.com>\>
4+
- [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io)
5+
- Bhavesh Heliconia

maintenance_equipment_sequence/static/description/index.html

+5-1
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ <h1 class="title">Maintenance Equipment Sequence</h1>
367367
!! This file is generated by oca-gen-addon-readme !!
368368
!! changes will be overwritten. !!
369369
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370-
!! source digest: sha256:0961f01d04702ea5589459b97ebc32b4c47bf93df77150b4fcbf5fce3e91375d
370+
!! source digest: sha256:1d6390a49a54f9532ef01f333c3ca20d10005c239f0d61cd3c6e0595c82b3c04
371371
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
372372
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/maintenance/tree/18.0/maintenance_equipment_sequence"><img alt="OCA/maintenance" src="https://img.shields.io/badge/github-OCA%2Fmaintenance-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/maintenance-18-0/maintenance-18-0-maintenance_equipment_sequence"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/maintenance&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
373373
<p>This module introduces a sequence to the maintenance equipment managed
@@ -406,6 +406,10 @@ <h2><a class="toc-backref" href="#toc-entry-4">Contributors</a></h2>
406406
<li>Adria Gil Sorribes &lt;<a class="reference external" href="mailto:adria.gil&#64;forgeflow.com">adria.gil&#64;forgeflow.com</a>&gt;</li>
407407
<li>Núria Martín Xifré &lt;<a class="reference external" href="mailto:nuria.martin&#64;forgeflow.com">nuria.martin&#64;forgeflow.com</a>&gt;</li>
408408
<li>Bernat Puig Font &lt;<a class="reference external" href="mailto:bernat.puig&#64;forgeflow.com">bernat.puig&#64;forgeflow.com</a>&gt;</li>
409+
<li><a class="reference external" href="https://www.heliconia.io">Heliconia Solutions Pvt. Ltd.</a><ul>
410+
<li>Bhavesh Heliconia</li>
411+
</ul>
412+
</li>
409413
</ul>
410414
</div>
411415
<div class="section" id="maintainers">

maintenance_equipment_sequence/tests/test_maintenance_equipment_sequence.py

+97-14
Original file line numberDiff line numberDiff line change
@@ -60,26 +60,109 @@ def test_01_maintenance_equipment_sequence(self):
6060
equipment_1.write({"serial_no": False})
6161
self.assertEqual(equipment_1.serial_no, "TTC0002")
6262

63-
def test_02_maintenance_equipment_sequence(self):
64-
"""Create an equipment category linked to a default sequence with a prefix,
65-
and verify that the category correctly inherits the sequence prefix.
66-
"""
67-
# Create a sequence
68-
seq_1 = self.sequence_obj.create(
63+
def test_02_compute_seq_number_next(self):
64+
"""Test Compute 'sequence_number_next' according to the current sequence in use,
65+
an ir.sequence or an ir.sequence.date_range."""
66+
67+
sequence = self.sequence_obj.create(
6968
{
7069
"name": "Test Sequence",
71-
"implementation": "no_gap",
72-
"prefix": "TTC_TEST",
73-
"padding": 4,
70+
"prefix": "TST",
71+
"padding": 3,
72+
"number_next": 5,
73+
"use_date_range": False,
74+
}
75+
)
76+
77+
category = self.maintenance_equipment_categ_obj.create(
78+
{
79+
"name": "Test Category with Sequence",
80+
"sequence_id": sequence.id,
81+
}
82+
)
83+
84+
category._compute_seq_number_next()
85+
self.assertEqual(category.sequence_number_next, 5)
86+
87+
sequence.write({"number_next_actual": 10})
88+
category._compute_seq_number_next()
89+
self.assertEqual(category.sequence_number_next, 10)
90+
91+
category_no_seq = self.maintenance_equipment_categ_obj.create(
92+
{
93+
"name": "Test Category without Sequence",
94+
}
95+
)
96+
97+
category_no_seq._compute_seq_number_next()
98+
self.assertEqual(category_no_seq.sequence_number_next, 1)
99+
100+
def test_03_create_with_existing_sequence(self):
101+
"""Test def create(self, vals):"""
102+
103+
existing_sequence = self.sequence_obj.create(
104+
{
105+
"name": "Existing Sequence",
106+
"prefix": "EXS",
107+
"padding": 3,
74108
"number_increment": 1,
75109
"use_date_range": False,
76110
}
77111
)
78-
# Create an equipment category linked to the sequence
79-
categ_1 = self.maintenance_equipment_categ_obj.create(
112+
113+
category_with_seq = self.maintenance_equipment_categ_obj.create(
80114
{
81-
"name": "Test Category 0",
82-
"sequence_id": seq_1.id,
115+
"name": "Category with Existing Sequence",
116+
"sequence_id": existing_sequence.id,
83117
}
84118
)
85-
self.assertEqual(categ_1.sequence_prefix, seq_1.prefix)
119+
120+
self.assertEqual(category_with_seq.sequence_prefix, "EXS")
121+
self.assertEqual(category_with_seq.sequence_id.id, existing_sequence.id)
122+
123+
def test_04_compute_equipment_code(self):
124+
"""Test def _compute_equipment_code(self):"""
125+
126+
seq_01 = self.sequence_obj.create(
127+
{
128+
"name": "Test Sequence",
129+
"prefix": "TST",
130+
"padding": 3,
131+
"number_increment": 1,
132+
"use_date_range": False,
133+
}
134+
)
135+
136+
cat_01 = self.maintenance_equipment_categ_obj.create(
137+
{"name": "Test Category", "sequence_id": seq_01.id}
138+
)
139+
140+
equipment_01 = self.env["maintenance.equipment"].create(
141+
{
142+
"name": "Test Equipment 1",
143+
"category_id": cat_01.id,
144+
"serial_no": False,
145+
}
146+
)
147+
148+
equipment_02 = self.env["maintenance.equipment"].create(
149+
{
150+
"name": "Test Equipment 2",
151+
"category_id": cat_01.id,
152+
"serial_no": False,
153+
}
154+
)
155+
156+
equipment_03 = self.env["maintenance.equipment"].create(
157+
{
158+
"name": "Test Equipment 3",
159+
"category_id": False,
160+
"serial_no": False,
161+
}
162+
)
163+
self.assertEqual(equipment_01.serial_no, "TST001")
164+
self.assertEqual(equipment_02.serial_no, "TST002")
165+
self.assertFalse(equipment_03.serial_no)
166+
167+
equipment_03.write({"category_id": cat_01.id})
168+
self.assertEqual(equipment_03.serial_no, "TST003")

maintenance_equipment_sequence/views/maintenance_views.xml

+25-5
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,40 @@
88
<field name="arch" type="xml">
99
<group name="group_alias" position="after">
1010
<group>
11-
<field
12-
name="sequence_prefix"
13-
attrs="{'readonly': [('sequence_id', '!=', False)]}"
14-
/>
11+
<field name="sequence_prefix" readonly="sequence_id != False" />
1512
<field
1613
name="sequence_number_next"
1714
style="padding-right: 1.0em"
18-
attrs="{'readonly': [('sequence_id', '!=', False)], 'invisible': [('sequence_prefix', '=', False)]}"
15+
readonly="sequence_id != False"
16+
invisible="sequence_prefix == False"
1917
/>
2018
<field name="sequence_id" required="0" />
2119
</group>
2220
</group>
2321
</field>
2422
</record>
23+
24+
<record id="hr_equipment_category_view_tree" model="ir.ui.view">
25+
<field name="name">equipment.category.tree</field>
26+
<field name="model">maintenance.equipment.category</field>
27+
<field name="inherit_id" ref="maintenance.hr_equipment_category_view_tree" />
28+
<field name="arch" type="xml">
29+
<field name="company_id" position="after">
30+
<field name="sequence_prefix" optional="show" />
31+
</field>
32+
</field>
33+
</record>
34+
35+
<record id="hr_equipment_category_view_search" model="ir.ui.view">
36+
<field name="name">equipment.category.search</field>
37+
<field name="model">maintenance.equipment.category</field>
38+
<field name="inherit_id" ref="maintenance.hr_equipment_category_view_search" />
39+
<field name="arch" type="xml">
40+
<field name="name" position="after">
41+
<field name="sequence_prefix" />
42+
</field>
43+
</field>
44+
</record>
2545
<!-- equiment : views -->
2646
<record id="hr_equipment_view_form" model="ir.ui.view">
2747
<field name="name">equipment.form</field>

0 commit comments

Comments
 (0)