basic gn_career relational structure with missions and tasks

This commit is contained in:
Florian du Garage Num 2024-03-02 23:07:56 +01:00
parent ee789ff122
commit dcc055981b
11 changed files with 92 additions and 22 deletions

View File

@ -15,4 +15,4 @@ Module de gestion des fiches de postes et des évolutions de carrière
## Issues
- []
- [] Add menuentries and views in Analyse section for missions and tasks (cf issue #)

View File

@ -13,6 +13,9 @@
"gn_cc",
],
"data": [
"views/gn_career.xml",
"data/gn_career_menus.xml",
"security/ir.model.access.csv",
],
"license": "LGPL-3",
}

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<menuitem
id="gn_career.careers_menu"
name="Fiches de poste"
parent="hr.menu_hr_employee_payroll"
sequence="300"
action="gn_career.careers_configuration"
groups="hr.group_hr_manager"/>
<menuitem
id="gn_career.career_configuration_menu_group"
name="Analyse du poste"
parent="hr.menu_human_resources_configuration"
sequence="300"
groups="hr.group_hr_manager"/>
<menuitem
id="gn_career.missions_configuration_menu"
name="Missions"
parent="gn_career.career_configuration_menu_group"
sequence="100"
action="gn_career.missions_configuration"
groups="hr.group_hr_manager"/>
<menuitem
id="gn_career.tasks_configuration_menu"
name="Tâches"
parent="gn_career.career_configuration_menu_group"
sequence="200"
action="gn_career.tasks_configuration"
groups="hr.group_hr_manager"/>
</odoo>

View File

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models, api
import logging
_logger = logging.getLogger(__name__)
class GnCareer(models.Model):
_name = "gn_career.career"
_description = "Analyse du poste"
_order = 'start_date'
start_date = fields.Date('From', required=True, default=lambda self: fields.Date.today())
contract_id = fields.Many2one('hr.contract', string="Contrat ou Avenant associé")
mission_ids = fields.Many2many('gn_career.mission', 'career_ids', string="Missions effectuées")
mission_rel_ids = fields.One2many('gn_career.mission_career_rel', 'career_id', string="Mission Relations")
class GnCareerMissionCareerRel(models.Model):
_name = 'gn_career.mission_career_rel'
_description = "Répartition des missions au sein d'une analyse de poste"
mission_id = fields.Many2one('gn_career.mission', string="Mission")
career_id = fields.Many2one('gn_career.career', string="Fiche de poste")
percentage = fields.Float("Temps occupé par la mission en %")

View File

@ -6,6 +6,6 @@ from odoo import fields, models, api
class GnCareerContract(models.Model):
_inherit = "hr.contract"
career_ids = fields.One2many("gn_career.career", inverse_name='contract_id',
string="Évolution du poste")
career_ids = fields.One2many("gn_career.career", 'contract_id',
string="Analyse du poste")

View File

@ -18,5 +18,7 @@ class GnCareerMission(models.Model):
name = fields.Char("Nom de la mission")
description = fields.Text("Description de la mission")
task_ids = fields.Many2many('gn_career.task', string="Tâches incluses dans la mission")
task_ids = fields.Many2many('gn_career.task', string="Tâches pouvant être incluses dans la mission")
career_ids = fields.Many2many('gn_career.career', 'mission_ids', string="Fiches de poste incluant cette mission")
career_mission_ids = fields.One2many('gn_career.mission_career_rel', 'mission_id', string="Répartition des missions au sein du poste")

View File

@ -0,0 +1,9 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_gn_career_career_user,gn_career_career_user,model_gn_career_career,base.group_user,1,0,0,0
access_gn_career_career_admin,gn_career_career_admin,model_gn_career_career,hr_contract.group_hr_contract_manager,1,1,1,1
access_gn_career_mission_career_rel_user,gn_career_mission_career_rel_user,model_gn_career_mission_career_rel,base.group_user,1,0,0,0
access_gn_career_mission_career_rel_admin,gn_career_mission_career_rel_admin,model_gn_career_mission_career_rel,hr_contract.group_hr_contract_manager,1,1,1,1
access_gn_career_task_user,gn_career_task_user,model_gn_career_task,base.group_user,1,0,0,0
access_gn_career_task_admin,gn_career_task_admin,model_gn_career_task,hr_contract.group_hr_contract_manager,1,1,1,1
access_gn_career_mission_user,gn_career_mission_user,model_gn_career_mission,base.group_user,1,0,0,0
access_gn_career_mission_admin,gn_career_mission_admin,model_gn_career_mission,hr_contract.group_hr_contract_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_gn_career_career_user gn_career_career_user model_gn_career_career base.group_user 1 0 0 0
3 access_gn_career_career_admin gn_career_career_admin model_gn_career_career hr_contract.group_hr_contract_manager 1 1 1 1
4 access_gn_career_mission_career_rel_user gn_career_mission_career_rel_user model_gn_career_mission_career_rel base.group_user 1 0 0 0
5 access_gn_career_mission_career_rel_admin gn_career_mission_career_rel_admin model_gn_career_mission_career_rel hr_contract.group_hr_contract_manager 1 1 1 1
6 access_gn_career_task_user gn_career_task_user model_gn_career_task base.group_user 1 0 0 0
7 access_gn_career_task_admin gn_career_task_admin model_gn_career_task hr_contract.group_hr_contract_manager 1 1 1 1
8 access_gn_career_mission_user gn_career_mission_user model_gn_career_mission base.group_user 1 0 0 0
9 access_gn_career_mission_admin gn_career_mission_admin model_gn_career_mission hr_contract.group_hr_contract_manager 1 1 1 1

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="gn_career.missions_configuration" model="ir.actions.act_window">
<field name="name">Missions</field>
<field name="res_model">gn_career.mission</field>
<field name="view_mode">tree,form</field>
</record>
<record id="gn_career.tasks_configuration" model="ir.actions.act_window">
<field name="name">Tâches</field>
<field name="res_model">gn_career.task</field>
<field name="view_mode">tree,form</field>
</record>
<record id="gn_career.careers_configuration" model="ir.actions.act_window">
<field name="name">Analyses de poste</field>
<field name="res_model">gn_career.career</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models, api
import logging
_logger = logging.getLogger(__name__)
class ContractCareer(models.Model):
_name = "gn_career.career"
_description = "Analyse du poste"
_order = 'start_date, employee_id'
start_date = fields.Date('From', required=True, default=lambda self: fields.Date.today())
previous_contract_id = fields.Many2one('gn_career.hr.contract', 'career_id', string="Précédent Contrat ou Avenant corrigé par cette analyse")
next_contract_id = fields.Many2one('gn_career.hr.contract', 'career_id')