Skip to content

Commit 9cbb9b1

Browse files
[MIG] okr: Migration to 17.0
1 parent 93e56d6 commit 9cbb9b1

13 files changed

+329
-0
lines changed

okr/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
notas.txt

okr/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import models

okr/__manifest__.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
'name': "OKR",
3+
'version': "17.0.1.0.0",
4+
'category': 'OKR',
5+
'summary': "Gestión de OKR",
6+
'license': 'LGPL-3',
7+
'description': """
8+
Gestión de OKR
9+
""",
10+
'author': "Pablo Montenegro",
11+
'depends': ['base', 'hr'],
12+
'data': ['data/ir_module_category_data.xml',
13+
'security/ir.model.access.csv',
14+
'views/okr_key_result.xml',
15+
'views/okr_objective.xml',
16+
'views/kr_ppal.xml',
17+
],
18+
'demo': [
19+
'demo/kr_ppal_data.xml',
20+
],
21+
'application': True,
22+
'installable': True,
23+
'auto_install': False,
24+
}

okr/data/ir_module_category_data.xml

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<odoo>
3+
<data>
4+
<!-- categorias -->
5+
<record model="ir.module.category" id="module_category_okr">
6+
<field name="name">OKR</field>
7+
<field name="description">OKR</field>
8+
<field name="sequence">1</field>
9+
</record>
10+
<record model="ir.module.category" id="module_okr_permisos">
11+
<field name="name">Permisos</field>
12+
<field name="sequence">1</field>
13+
<field name="parent_id" ref="okr.module_category_okr"/>
14+
</record>
15+
<!-- grupos -->
16+
<record id="group_okr_user" model="res.groups">
17+
<field name="name">User</field>
18+
<field name="users" eval="[Command.link(ref('base.user_root')), Command.link(ref('base.user_admin'))]"/>
19+
<field name="category_id" ref="module_okr_permisos"/>
20+
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
21+
</record>
22+
<record id="group_okr_manager" model="res.groups">
23+
<field name="name">Manager</field>
24+
<field name="users" eval="[Command.link(ref('base.user_root')), Command.link(ref('base.user_admin'))]"/>
25+
<field name="category_id" ref="module_okr_permisos"/>
26+
<field name="implied_ids" eval="[(4, ref('okr.group_okr_user'))]"/>
27+
</record>
28+
<record id="okr_manager_objectives_rule" model="ir.rule">
29+
<field name="name">OKR manager can modify all key results</field>
30+
<field name="model_id" ref="model_okr_key_result"/>
31+
<field name="domain_force">[(1, '=', 1)]</field>
32+
<field name="groups" eval="[(4, ref('okr.group_okr_manager'))]"/>
33+
</record>
34+
</data>
35+
</odoo>

okr/demo/kr_ppal_data.xml

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<odoo noupdate="1">
3+
4+
<record model='kr.ppal' id='kr_1'>
5+
<field name='code'>01</field>
6+
<field name='description'>Crecer</field>
7+
</record>
8+
9+
<record model='kr.ppal' id='kr_2'>
10+
<field name='code'>02</field>
11+
<field name='description'>Internacionalizar</field>
12+
</record>
13+
14+
<record model='kr.ppal' id='kr_3'>
15+
<field name='code'>03</field>
16+
<field name='description'>Agregar valor al cliente</field>
17+
</record>
18+
19+
<record model='kr.ppal' id='kr_4'>
20+
<field name='code'>04</field>
21+
<field name='description'>Producto robusto</field>
22+
</record>
23+
24+
<record model='kr.ppal' id='kr_5'>
25+
<field name='code'>05</field>
26+
<field name='description'>Equipo motivado y feliz</field>
27+
</record>
28+
29+
</odoo>

okr/models/__init__.py

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from . import kr_ppal
2+
from . import okr_key_result
3+
from . import okr_objective

okr/models/kr_ppal.py

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from odoo import models, fields
2+
3+
4+
class KrPPal(models.Model):
5+
_name = "kr.ppal"
6+
_description = "Kr ppal"
7+
_rec_name = 'description'
8+
9+
code = fields.Char(required=True)
10+
description = fields.Char(required=True)

okr/models/okr_key_result.py

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from odoo import models, api, fields, _
2+
from odoo.exceptions import ValidationError
3+
4+
5+
class OkrObjetivoLine(models.Model):
6+
_name = "okr.key_result"
7+
_description = "OKR key result"
8+
_check_company_auto = True
9+
10+
name = fields.Char(required=True)
11+
description = fields.Char(required=True)
12+
progress = fields.Integer(default=0, store=True)
13+
weight = fields.Integer()
14+
comments = fields.Char()
15+
objective = fields.Many2one('okr.objective')
16+
target = fields.Integer()
17+
result = fields.Integer()
18+
user_id = fields.Many2one('res.users', string="Responsible")
19+
plan_de_accion = fields.Char()
20+
interdependencies = fields.Many2many('hr.department')
21+
realizado_en_el_q = fields.Char()
22+
notas_proximo_q = fields.Char()

okr/models/okr_objective.py

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from odoo import models, api, fields
2+
import time
3+
from odoo.exceptions import UserError
4+
5+
6+
class OkrObjetivo(models.Model):
7+
_name = "okr.objective"
8+
_description = "OKR Objective"
9+
_inherit = ['mail.thread', 'mail.activity.mixin']
10+
_check_company_auto = True
11+
_rec_name = 'name'
12+
13+
name = fields.Many2one('kr.ppal', required=True)
14+
description = fields.Char(required=True)
15+
department_id = fields.Many2one('hr.department')
16+
progress = fields.Integer(compute='_compute_progress',help="Progress from zero knowledge (0%) to fully mastered (100%).", default=0, store=True)
17+
weight = fields.Selection([('inspiracional', 'Inspiracional'), ('commitment', 'Commitment')])
18+
comments = fields.Char()
19+
key_result_ids = fields.One2many('okr.key_result', 'objective')
20+
period = fields.Selection([('q1', 'Q1'), ('q2', 'Q2'), ('q3', 'Q3'), ('q4', 'Q4')], required=True)
21+
year = fields.Char(
22+
required=True,
23+
default=time.strftime('%Y'),
24+
)
25+
user_id = fields.Many2one('res.users', string="Responsible")
26+
company_id = fields.Many2one(
27+
'res.company', default=lambda self: self.env.company,
28+
help="Company for whose invoices the mandate can be used.")
29+
30+
@api.depends('key_result_ids')
31+
def _compute_progress(self):
32+
sumatory = sum(self.key_result_ids.mapped('progress')) or 0
33+
self.progress = sumatory
34+
if sumatory > 100:
35+
raise UserError("The sum of the objectives progress can´t be higher than 100")

okr/security/ir.model.access.csv

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
2+
access_kr_ppal_user,access_kr_ppal_user,model_kr_ppal,group_okr_user,1,1,1,1
3+
access_kr_ppal_manager,access_kr_ppal_manager,model_kr_ppal,group_okr_manager,1,1,1,1
4+
access_okr_key_result_user,access_okr_key_result_user,model_okr_key_result,group_okr_user,1,1,0,0
5+
access_okr_key_result_manager,access_okr_key_result_manager,model_okr_key_result,group_okr_manager,1,1,1,1
6+
access_okr_objective_user,access_okr_objective_user,model_okr_objective,group_okr_user,1,1,0,0
7+
access_okr_objective_manager,access_okr_objective_manager,model_okr_objective,group_okr_manager,1,1,1,1

okr/views/kr_ppal.xml

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<odoo>
3+
4+
<record id="kr_ppal_view_tree" model="ir.ui.view">
5+
<field name="name">kr.principales.tree</field>
6+
<field name="model">kr.ppal</field>
7+
<field name="arch" type="xml">
8+
<tree>
9+
<field name="code"/>
10+
<field name="description"/>
11+
</tree>
12+
</field>
13+
</record>
14+
15+
<record id="kr_ppal_view_form" model="ir.ui.view">
16+
<field name="name">kr.principales.form</field>
17+
<field name="model">kr.ppal</field>
18+
<field name="arch" type="xml">
19+
<form>
20+
<field name="code"/>
21+
<field name="description"/>
22+
</form>
23+
</field>
24+
</record>
25+
26+
<record model="ir.actions.act_window" id="action_kr_ppal">
27+
<field name="name">KR ppales</field>
28+
<field name="res_model">kr.ppal</field>
29+
<field name="view_mode">tree,form</field>
30+
</record>
31+
32+
<menuitem id="menu_okr_config" name="Objetivos ppales" parent="okr.objetivo_base_menu" sequence="5"/>
33+
<menuitem action="action_kr_ppal" id="menu_kr_ppal" sequence="7" parent="okr.menu_okr_config"/>
34+
35+
</odoo>

okr/views/okr_key_result.xml

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<odoo>
3+
4+
<record id="objective_line_view_tree" model="ir.ui.view">
5+
<field name="name">Objetivo</field>
6+
<field name="model">okr.key_result</field>
7+
<field name="arch" type="xml">
8+
<tree>
9+
<field name="name"/>
10+
<field name="description"/>
11+
<field name="progress"/>
12+
<field name="weight"/>
13+
<field name="comments"/>
14+
<field name="target"/>
15+
<field name="result"/>
16+
<field name="user_id"/>
17+
<field name="plan_de_accion"/>
18+
<field name="comments"/>
19+
<field name="interdependencies" string="Interdependencies" widget="many2many_tags"/>
20+
<field name="realizado_en_el_q"/>
21+
<field name="notas_proximo_q"/>
22+
</tree>
23+
</field>
24+
</record>
25+
26+
</odoo>

okr/views/okr_objective.xml

+101
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<odoo>
3+
4+
<record id="objetivo_view_form" model="ir.ui.view">
5+
<field name="name">Objetivo</field>
6+
<field name="model">okr.objective</field>
7+
<field name="arch" type="xml">
8+
<form>
9+
<sheet>
10+
<group>
11+
<group>
12+
<field name="name"/>
13+
<field name="description"/>
14+
<field name="user_id"/>
15+
<field name="progress"/>
16+
<field name="weight"/>
17+
<field name="comments"/>
18+
<field name="department_id"/>
19+
</group>
20+
<group>
21+
<field name="period"/>
22+
<field name="year"/>
23+
<field name="company_id" groups="base.group_multi_company" required="1"/>
24+
</group>
25+
</group>
26+
<notebook>
27+
<page id="line_tab"
28+
name="line_tab"
29+
string="Okr Lines">
30+
<field name="key_result_ids">
31+
<tree editable="bottom" string="Okr Lines" default_order="progress">
32+
<field name="name"/>
33+
<field name="description"/>
34+
<field name="progress"/>
35+
<field name="weight"/>
36+
<field name="comments"/>
37+
<field name="objective"/>
38+
<field name="target"/>
39+
<field name="result"/>
40+
<field name="user_id"/>
41+
<field name="plan_de_accion"/>
42+
<field name="realizado_en_el_q"/>
43+
<field name="notas_proximo_q"/>
44+
<field name="interdependencies" widget="many2many_tags"/>
45+
</tree>
46+
</field>
47+
</page>
48+
</notebook>
49+
</sheet>
50+
<div class="oe_chatter">
51+
<field name="message_follower_ids" widget="mail_followers"/>
52+
<field name="activity_ids" widget="mail_activity"/>
53+
<field name="message_ids" widget="mail_thread"/>
54+
</div>
55+
</form>
56+
</field>
57+
</record>
58+
59+
<record id="objetivo_view_tree" model="ir.ui.view">
60+
<field name="name">Objetivo</field>
61+
<field name="model">okr.objective</field>
62+
<field name="arch" type="xml">
63+
<tree default_order="progress">
64+
<field name="name"/>
65+
<field name="description"/>
66+
<field name="user_id"/>
67+
<field name="progress"/>
68+
<field name="weight"/>
69+
<field name="comments"/>
70+
<field name="department_id"/>
71+
<field name="period"/>
72+
<field name="year"/>
73+
<field name="company_id" groups="base.group_multi_company" required="1"/>
74+
</tree>
75+
</field>
76+
</record>
77+
78+
<record model="ir.ui.view" id="view_objetive_search">
79+
<field name="name">okr.objective.search</field>
80+
<field name="model">okr.objective</field>
81+
<field name="arch" type="xml">
82+
<search>
83+
<field name="department_id"/>
84+
<filter name="group_by_department_id" string="Group by department_id" context="{'group_by': 'department_id'}"/>
85+
</search>
86+
</field>
87+
</record>
88+
89+
<record id='objective_book_action' model="ir.actions.act_window">
90+
<field name="name">Objective</field>
91+
<field name="res_model">okr.objective</field>
92+
<field name="view_mode">tree,form</field>
93+
<field name="search_view_id" ref="view_objetive_search"/>
94+
<field name="context">{'search_default_group_by_department_id': True}</field>
95+
</record>
96+
97+
<menuitem name="OKR" id="objetivo_base_menu" sequence="0"/>
98+
<menuitem name="Objetivo" id="objetivo_principal_menu"
99+
parent="objetivo_base_menu" action="objective_book_action" sequence="2"/>
100+
101+
</odoo>

0 commit comments

Comments
 (0)