Skip to content

Commit 1b6716b

Browse files
committed
[ADD] okr: new module
1 parent acded81 commit 1b6716b

File tree

9 files changed

+193
-0
lines changed

9 files changed

+193
-0
lines changed

okr/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import models

okr/__manifest__.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
'name': 'okr',
3+
'version' : '16.0.1.0',
4+
'author' : 'ced',
5+
'license' : 'AGPL-3',
6+
'depends': ['base', 'hr'],
7+
'data': [
8+
'security/ir.model.access.csv',
9+
'views/okr_objective_views.xml',
10+
'views/okr_key_result_views.xml',
11+
'views/okr_menu.xml',
12+
],
13+
'demo': [],
14+
'application': True,
15+
'installable': True,
16+
'auto_install': False
17+
18+
19+
}

okr/models/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from . import okr_key_result
2+
from . import okr_objective

okr/models/okr_key_result.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
from odoo import models, fields, api
2+
3+
class OkrKeyResult(models.Model):
4+
_name = 'okr.key_result'
5+
_description = 'OKR Key Result'
6+
7+
name = fields.Char(required=True)
8+
description = fields.Text(required=True)
9+
department_id = fields.Many2one('hr.department')
10+
user_id = fields.Many2one('res.users', string= 'Responsible')
11+
objective_id = fields.Many2one('okr.objective')
12+
weight = fields.Integer()
13+
target = fields.Integer()
14+
result = fields.Integer()
15+
progress = fields.Float(compute = 'compute_progress', store=True, default=0)
16+
# state?
17+
# interdependencias
18+
# plan de acción
19+
# comentarios
20+
21+
@api.depends('result','target')
22+
def _compute_progress(self):
23+
for rec in self:
24+
if rec.target !=0:
25+
rec.progress = (rec.result)/(rec.target)*100
26+
else:
27+
rec.progress = 0.0
28+
29+
30+

okr/models/okr_objective.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from odoo import models, fields
2+
3+
class OkrObjective(models.Model):
4+
_name = 'okr.objective'
5+
_description = 'OKR Objectives'
6+
7+
name = fields.Char(required=True)
8+
description = fields.Text(required=True)
9+
user_id = fields.Many2one('res.users', string= 'Responsible')
10+
progress = fields.Integer(default = 0)
11+
type = fields.Selection([('commitment', 'Commitment'),('inspirational', 'Inspirational')])
12+
quarter = fields.Selection([('q1', 'Q1'),('q2', 'Q2'),('q3', 'Q3'),('q4', 'Q4')])
13+
department_id = fields.Many2one('hr.department', required=True)
14+
key_result_ids = fields.One2many('okr.key_result', 'objective_id')
15+
notes = fields.Text()
16+
# state
17+
#compute = 'compute_progress'
18+
19+
20+
21+
22+
23+

okr/security/ir.model.access.csv

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
2+
okr.access_okr_objective,access_okr_objective,okr.model_okr_objective,base.group_user,1,1,1,0
3+
okr.access_okr_key_result,access_okr_key_result,okr.model_okr_key_result,base.group_user,1,1,1,0

okr/views/okr_key_result_views.xml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<odoo>
2+
<record id="view_okr_key_result_tree" model="ir.ui.view">
3+
<field name="name">okr.key_result.tree</field>
4+
<field name="model">okr.key_result</field>
5+
<field name="arch" type="xml">
6+
<tree>
7+
<field name="name"/>
8+
<field name="description"/>
9+
<field name="department_id"/>
10+
<field name="user_id"/>
11+
<field name="objective_id"/>
12+
<field name="progress"/>
13+
<field name="weight"/>
14+
<field name="target"/>
15+
<field name="result"/>
16+
</tree>
17+
</field>
18+
</record>
19+
20+
<record id="view_okr_key_result_form" model="ir.ui.view">
21+
<field name="name">okr.key_result.form</field>
22+
<field name="model">okr.key_result</field>
23+
<field name="arch" type="xml">
24+
<form>
25+
<sheet>
26+
<group>
27+
<field name="name"/>
28+
<field name="description"/>
29+
<field name="department_id"/>
30+
<field name="user_id"/>
31+
<field name="objective_id"/>
32+
<field name="progress"/>
33+
<field name="weight"/>
34+
<field name="target"/>
35+
<field name="result"/>
36+
</group>
37+
</sheet>
38+
</form>
39+
</field>
40+
</record>
41+
42+
<record id="okr_key_result_action" model="ir.actions.act_window">
43+
<field name="name">OKR Key Result</field>
44+
<field name="res_model">okr.key_result</field>
45+
<field name='view_mode'>tree,form</field>
46+
</record>
47+
48+
</odoo>
49+

okr/views/okr_menu.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<odoo>
3+
4+
<menuitem id="okr_menu" name="OKR Management"/>
5+
<!-- groups="group_okr_objective" -->
6+
<menuitem id="okr_objective_menu" name="OKR Objectives" action="okr_objective_action" parent="okr_menu"/>
7+
<!-- groups="group_okr_key_result" -->
8+
<!-- web_icon="fa fa-info,#f1c40f,#34495e" -->
9+
<menuitem id="okr_key_result_menu" name="OKR Key Results" action="okr_key_result_action" parent = "okr_menu"/>
10+
11+
</odoo>
12+

okr/views/okr_objective_views.xml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<odoo>
2+
<record id="view_okr_objective_tree" model="ir.ui.view">
3+
<field name="name">okr.objective.tree</field>
4+
<field name="model">okr.objective</field>
5+
<field name="arch" type="xml">
6+
<tree>
7+
<field name="name"/>
8+
<field name="description"/>
9+
<field name="department_id"/>
10+
<field name="user_id"/>
11+
<field name="type"/>
12+
<field name="progress"/>
13+
<field name="quarter"/>
14+
</tree>
15+
</field>
16+
</record>
17+
18+
<record id="view_okr_objective_form" model="ir.ui.view">
19+
<field name="name">okr.objective.form</field>
20+
<field name="model">okr.objective</field>
21+
<field name="arch" type="xml">
22+
<form>
23+
<sheet>
24+
<group>
25+
<field name="name"/>
26+
<field name="description"/>
27+
<field name="department_id"/>
28+
<field name="user_id"/>
29+
<field name="type"/>
30+
<field name="progress"/>
31+
<field name="quarter"/>
32+
</group>
33+
</sheet>
34+
</form>
35+
</field>
36+
</record>
37+
38+
<record id="view_okr_objective_search" model="ir.ui.view">
39+
<field name="name">okr.objective.search</field>
40+
<field name="model">okr.objective</field>
41+
<field name="arch" type="xml">
42+
<search>
43+
<field name="name" />
44+
</search>
45+
</field>
46+
</record>
47+
48+
<record id="okr_objective_action" model="ir.actions.act_window">
49+
<field name="name">OKR Objective</field>
50+
<field name="res_model">okr.objective</field>
51+
<field name='view_mode'>tree,form</field>
52+
</record>
53+
54+
</odoo>

0 commit comments

Comments
 (0)