Skip to content

Commit e39ac50

Browse files
committed
ADD] maintenance_plan_meter_mode: plan search view, demo data and tests
1 parent 67d675a commit e39ac50

8 files changed

Lines changed: 193 additions & 5 deletions

File tree

maintenance_plan_meter_mode/__manifest__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,8 @@
1818
"data": [
1919
"views/maintenance_views.xml",
2020
],
21+
'demo': [
22+
'data/demo_maintenance_plan_meter_mode.xml',
23+
],
2124
'installable': True,
2225
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<odoo>
3+
<data noupdate="1">
4+
<!-- Maintenance kinds -->
5+
<record id="maintenance_kind_every_x_copies" model="maintenance.kind">
6+
<field name="name">Every X copies</field>
7+
<field name="active" eval="True" />
8+
</record>
9+
10+
<!-- Maintenance plans -->
11+
<record id="maintenance_plan_every_1000_copies_printer1" model="maintenance.plan">
12+
<field name="name">Every 1,000 copies</field>
13+
<field name="equipment_id" ref="maintenance.equipment_printer1" />
14+
<field name="maintenance_kind_id" ref="maintenance_kind_every_x_copies" />
15+
<field name="meter_mode" eval="True"/>
16+
<field name="meter_autoinc_value">50</field>
17+
<field name="meter_autoinc_unit" ref="uom.product_uom_unit"/>
18+
<field name="meter_autoinc_maxvalue">1000</field>
19+
</record>
20+
21+
</data>
22+
</odoo>

maintenance_plan_meter_mode/i18n/es.po

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ msgstr ""
1515
"Content-Transfer-Encoding: \n"
1616
"Plural-Forms: \n"
1717

18+
#. module: maintenance_plan_meter_mode
19+
#: model_terms:ir.ui.view,arch_db:maintenance_plan_meter_mode.maintenance_plan_view_search
20+
msgid "Classic Plans"
21+
msgstr "Planes clásicos"
22+
1823
#. module: maintenance_plan_meter_mode
1924
#: model:ir.model.fields,field_description:maintenance_plan_meter_mode.field_maintenance_plan__meter_current_value
2025
msgid "Current value"
@@ -26,7 +31,12 @@ msgid "Date of last revision"
2631
msgstr "Fecha de última revisión"
2732

2833
#. module: maintenance_plan_meter_mode
29-
#: code:addons/maintenance_plan_meter_mode/models/maintenance.py:55
34+
#: model:maintenance.kind,name:maintenance_plan_meter_mode.maintenance_kind_every_x_copies
35+
msgid "Every X copies"
36+
msgstr "Cada X copias"
37+
38+
#. module: maintenance_plan_meter_mode
39+
#: code:addons/maintenance_plan_meter_mode/models/maintenance.py:72
3040
#, python-format
3141
msgid "It can´t be Self-increase mode without Maximum amount since the last revision"
3242
msgstr "No puede ser modo auto-incrementable sin cantidad máxima desde la última revisión"
@@ -52,6 +62,11 @@ msgstr "Plan de mantenimiento"
5262
msgid "Maximum value since the last revision to generate another"
5363
msgstr "Valor máximo desde la última revisión para generar otra"
5464

65+
#. module: maintenance_plan_meter_mode
66+
#: model_terms:ir.ui.view,arch_db:maintenance_plan_meter_mode.maintenance_plan_view_search
67+
msgid "Self-increase Plans"
68+
msgstr "Planes autoincrementables"
69+
5570
#. module: maintenance_plan_meter_mode
5671
#: model:ir.model.fields,field_description:maintenance_plan_meter_mode.field_maintenance_plan__meter_mode
5772
msgid "Self-increase mode"

maintenance_plan_meter_mode/i18n/maintenance_plan_meter_mode.pot

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,20 @@ msgid ""
66
msgstr ""
77
"Project-Id-Version: Odoo Server 12.0\n"
88
"Report-Msgid-Bugs-To: \n"
9-
"POT-Creation-Date: 2020-06-15 11:05+0000\n"
10-
"PO-Revision-Date: 2020-06-15 11:05+0000\n"
9+
"POT-Creation-Date: 2020-08-19 11:16+0000\n"
10+
"PO-Revision-Date: 2020-08-19 11:16+0000\n"
1111
"Last-Translator: <>\n"
1212
"Language-Team: \n"
1313
"MIME-Version: 1.0\n"
1414
"Content-Type: text/plain; charset=UTF-8\n"
1515
"Content-Transfer-Encoding: \n"
1616
"Plural-Forms: \n"
1717

18+
#. module: maintenance_plan_meter_mode
19+
#: model_terms:ir.ui.view,arch_db:maintenance_plan_meter_mode.maintenance_plan_view_search
20+
msgid "Classic Plans"
21+
msgstr ""
22+
1823
#. module: maintenance_plan_meter_mode
1924
#: model:ir.model.fields,field_description:maintenance_plan_meter_mode.field_maintenance_plan__meter_current_value
2025
msgid "Current value"
@@ -26,13 +31,18 @@ msgid "Date of last revision"
2631
msgstr ""
2732

2833
#. module: maintenance_plan_meter_mode
29-
#: code:addons/maintenance_plan_meter_mode/models/maintenance.py:55
34+
#: model:maintenance.kind,name:maintenance_plan_meter_mode.maintenance_kind_every_x_copies
35+
msgid "Every X copies"
36+
msgstr ""
37+
38+
#. module: maintenance_plan_meter_mode
39+
#: code:addons/maintenance_plan_meter_mode/models/maintenance.py:72
3040
#, python-format
3141
msgid "It can´t be Self-increase mode without Maximum amount since the last revision"
3242
msgstr ""
3343

3444
#. module: maintenance_plan_meter_mode
35-
#: code:addons/maintenance_plan_meter_mode/models/maintenance.py:51
45+
#: code:addons/maintenance_plan_meter_mode/models/maintenance.py:68
3646
#, python-format
3747
msgid "It can´t be Self-increase mode without Value to self-increase per day"
3848
msgstr ""
@@ -52,6 +62,11 @@ msgstr ""
5262
msgid "Maximum value since the last revision to generate another"
5363
msgstr ""
5464

65+
#. module: maintenance_plan_meter_mode
66+
#: model_terms:ir.ui.view,arch_db:maintenance_plan_meter_mode.maintenance_plan_view_search
67+
msgid "Self-increase Plans"
68+
msgstr ""
69+
5570
#. module: maintenance_plan_meter_mode
5671
#: model:ir.model.fields,field_description:maintenance_plan_meter_mode.field_maintenance_plan__meter_mode
5772
msgid "Self-increase mode"

maintenance_plan_meter_mode/models/maintenance.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# © 2020 Solvos Consultoría Informática (<http://www.solvos.es>)
2+
# License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html
3+
14
from odoo import api, models, fields, _
25
from odoo.exceptions import ValidationError
36

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import test_maintenance_plan_meter_mode
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
# © 2020 Solvos Consultoría Informática (<http://www.solvos.es>)
2+
# License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html
3+
4+
import odoo.tests.common as test_common
5+
from odoo import fields, _
6+
from datetime import timedelta
7+
from dateutil.relativedelta import relativedelta
8+
9+
10+
class TestMaintenancePlan(test_common.TransactionCase):
11+
12+
def setUp(self):
13+
super().setUp()
14+
15+
self.maintenance_request_obj = self.env["maintenance.request"]
16+
self.maintenance_kind_obj = self.env["maintenance.kind"]
17+
self.maintenance_equipment_obj = self.env["maintenance.equipment"]
18+
self.maintenance_plan_obj = self.env["maintenance.plan"]
19+
self.cron = self.env.ref('maintenance.maintenance_requests_cron')
20+
self.today_date = fields.Date.today()
21+
22+
self.meter_mode_kind = self.maintenance_kind_obj.create({
23+
"name": "Every X usages plan kind",
24+
"active": True,
25+
})
26+
27+
self.equipment_1 = self.maintenance_equipment_obj.create({
28+
"name": "A machine that needs revision every X usages",
29+
})
30+
self.maintenance_plan_1 = self.maintenance_plan_obj.create({
31+
"name": "Every 1,000 usages",
32+
"equipment_id": self.equipment_1.id,
33+
"maintenance_kind_id": self.meter_mode_kind.id,
34+
"meter_mode": True,
35+
"meter_autoinc_value": 50,
36+
"meter_autoinc_unit": self.env.ref("uom.product_uom_unit").id,
37+
"meter_autoinc_maxvalue": 1000,
38+
"start_maintenance_date": self.today_date - timedelta(days=1)
39+
})
40+
41+
def __setUp(self):
42+
super().setUp()
43+
self.maintenance_request_obj = self.env['maintenance.request']
44+
self.maintenance_plan_obj = self.env['maintenance.plan']
45+
self.maintenance_equipment_obj = self.env['maintenance.equipment']
46+
self.cron = self.env.ref('maintenance.maintenance_requests_cron')
47+
self.weekly_kind = self.env.ref(
48+
'maintenance_plan.maintenance_kind_weekly'
49+
)
50+
51+
self.equipment_1 = self.maintenance_equipment_obj.create({
52+
'name': 'Laptop 1',
53+
})
54+
self.maintenance_plan_1 = self.maintenance_plan_obj.create({
55+
'equipment_id': self.equipment_1.id,
56+
'interval': 1,
57+
'interval_step': 'month',
58+
'maintenance_plan_horizon': 2,
59+
'planning_step': 'month'
60+
})
61+
self.maintenance_plan_2 = self.maintenance_plan_obj.create({
62+
'equipment_id': self.equipment_1.id,
63+
'maintenance_kind_id': self.weekly_kind.id,
64+
'interval': 1,
65+
'interval_step': 'week',
66+
'maintenance_plan_horizon': 2,
67+
'planning_step': 'month'
68+
})
69+
self.maintenance_plan_3 = self.maintenance_plan_obj.create({
70+
'name': 'My custom plan',
71+
'equipment_id': self.equipment_1.id,
72+
'interval': 2,
73+
'interval_step': 'week',
74+
'maintenance_plan_horizon': 2,
75+
'planning_step': 'month'
76+
})
77+
self.maintenance_plan_4 = self.maintenance_plan_obj.create({
78+
'name': 'Plan without equipment',
79+
'maintenance_kind_id': self.weekly_kind.id,
80+
'interval': 1,
81+
'interval_step': 'week',
82+
'maintenance_plan_horizon': 2,
83+
'planning_step': 'month'
84+
})
85+
86+
today = fields.Date.today()
87+
self.today_date = fields.Date.from_string(today)
88+
89+
def test_meter_mode(self):
90+
my_domain = [('maintenance_plan_id', '=', self.maintenance_plan_1.id)]
91+
92+
meter_initial_value = 975
93+
self.maintenance_plan_1.meter_current_value = meter_initial_value
94+
self.cron.method_direct_trigger()
95+
generated_requests = self.maintenance_request_obj.search(my_domain)
96+
self.assertEqual(len(generated_requests), 0)
97+
self.assertEqual(
98+
self.maintenance_plan_1.meter_current_value,
99+
meter_initial_value)
100+
self.assertEqual(
101+
self.maintenance_plan_1.meter_autoinc_lastupdate,
102+
self.today_date)
103+
104+
self.maintenance_plan_1.meter_autoinc_lastupdate -= timedelta(days=1)
105+
self.cron.method_direct_trigger()
106+
generated_requests = self.maintenance_request_obj.search(my_domain)
107+
self.assertEqual(len(generated_requests), 1)
108+
self.assertEqual(
109+
self.maintenance_plan_1.meter_current_value,
110+
meter_initial_value + self.maintenance_plan_1.meter_autoinc_value)
111+
self.assertEqual(
112+
self.maintenance_plan_1.meter_autoinc_lastvalue,
113+
self.maintenance_plan_1.meter_current_value)

maintenance_plan_meter_mode/views/maintenance_views.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
<odoo>
22
<data>
3+
4+
<record id="maintenance_plan_view_search" model="ir.ui.view">
5+
<field name="name">maintenance.plan.search</field>
6+
<field name="model">maintenance.plan</field>
7+
<field name="inherit_id" ref="maintenance_plan.maintenance_plan_view_search"/>
8+
<field name="arch" type="xml">
9+
<filter name="under_maintenance" position="after">
10+
<separator/>
11+
<filter string="Classic Plans" name="plan_classic"
12+
domain="[('meter_mode', '=', False)]"/>
13+
<filter string="Self-increase Plans" name="plan_meter"
14+
domain="[('meter_mode', '=', True)]"/>
15+
</filter>
16+
</field>
17+
</record>
18+
319
<record id="maintenance_plan_view_tree" model="ir.ui.view">
420
<field name="name">maintenance.plan.tree</field>
521
<field name="model">maintenance.plan</field>

0 commit comments

Comments
 (0)