Skip to content
Extraits de code Groupes Projets
Valider 186dc57a rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[cgscop #107] ajout de la table effectif et modification des fonctions questionnaires

parent b585022d
Branches
Aucune étiquette associée trouvée
1 requête de fusion!412.0 rv ajout champ et reorg contact
......@@ -10,6 +10,7 @@ from . import scop_contribution
from . import scop_federation_activity
from . import scop_liasse_fiscale
from . import scop_membership
from . import scop_partner_staff
from . import scop_period
from . import scop_questionnaire
from . import scop_revision
......
......@@ -304,6 +304,12 @@ class ScopPartner(models.Model):
is_up_to_date_ur = fields.Boolean("A jour cotisation UR")
# Questionnaire
# Effectifs
staff_ids = fields.One2many(
comodel_name='scop.partner.staff',
inverse_name='partner_id',
string='Effectifs',)
# Liste Ministère
direccte_id = fields.Many2one(
'res.partner',
......@@ -713,12 +719,12 @@ class ScopPartner(models.Model):
else:
return False
@api.depends('questionnaire_ids', 'questionnaire_ids.staff_count',
'questionnaire_ids.effective_date')
@api.depends('staff_ids', 'staff_ids.staff_count',
'staff_ids.effective_date')
@api.multi
def _compute_last_effective(self):
for partner in self:
lm = partner.questionnaire_ids.search(
lm = partner.staff_ids.search(
[['partner_id', '=', partner.id], ['staff_count', '>', 0]],
limit=1,
order='effective_date desc')
......
# © 2020 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, fields
class ScopPartnerStaff(models.Model):
_name = "scop.partner.staff"
_description = "Contributions"
_rec_name = 'partner_id'
_order = 'effective_date, partner_id'
partner_id = fields.Many2one(
comodel_name='res.partner',
string='Organisme',
domain=[('is_coopeartive', '=', True)],
ondelete='restrict',
required=True,
index=True)
user_id = fields.Many2one(
comodel_name='res.users',
string='Utilisateur',
ondelete='set null',
required=True,
default=lambda self: self.env.uid)
type_entry = fields.Selection([
('manual', 'Manuel'),
('ministry_list', 'Liste Ministère')],
string="Type",
default='manual')
effective_date = fields.Date(
string="Date",
default=fields.Date.today(),
required=True,)
staff_count = fields.Integer("Effectif (EF)", required=True,)
staff_shareholder_count = fields.Integer("Eff. Sociétaires (ES)")
staff_average = fields.Integer("Eff. Moyen (EM)")
questionnaire_id = fields.Many2one(
comodel_name='scop.questionnaire',
string='Questionnaire',
ondelete='cascade')
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from datetime import date
from odoo import models, fields, api
class ScopQuestionnaire(models.Model):
_name = "scop.questionnaire"
_description = "Questionnaire"
_rec_name = 'year'
partner_id = fields.Many2one(
comodel_name='res.partner',
......@@ -25,6 +25,47 @@ class ScopQuestionnaire(models.Model):
staff_shareholder_count = fields.Integer("Eff. Sociétaires (ES)")
staff_average = fields.Integer("Eff. Moyen (EM)")
# ------------------------------------------------------
# Override ORM
# ------------------------------------------------------
# Création d'un ligne d'effectif
@api.model_create_multi
def create(self, vals_list):
questionnaire = super(ScopQuestionnaire, self).create(vals_list)
if questionnaire.effective_date:
staff_values = {
'partner_id': questionnaire.partner_id.id,
'user_id': self.env.uid,
'type_entry': 'ministry_list',
'effective_date': questionnaire.effective_date,
'staff_count': questionnaire.staff_count,
'staff_shareholder_count': questionnaire.staff_shareholder_count,
'staff_average': questionnaire.staff_average,
'questionnaire_id': questionnaire.id,
}
self.env['scop.partner.staff'].create(staff_values)
return questionnaire
# Mise à jour du questionnaire lors de la modification
@api.multi
def write(self, vals):
questionnaire = super(ScopQuestionnaire, self).write(vals)
staff = self.env['scop.partner.staff'].search([
('questionnaire_id', '=', self.id)])
if staff:
if self.effective_date:
staff_values = {
'partner_id': self.partner_id.id,
'user_id': self.env.uid,
'type_entry': 'ministry_list',
'effective_date': self.effective_date,
'staff_count': self.staff_count,
'staff_shareholder_count': self.staff_shareholder_count,
'staff_average': self.staff_average,
}
staff.write(staff_values)
return questionnaire
class ScopQuestionnaireType(models.Model):
_name = "scop.questionnaire.type"
......
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_contribution_group_user,access_contribution_group_user,model_scop_contribution,base.group_user,1,0,0,0
access_liasse_fiscale_group_user,access_liasse_fiscale_group_user,model_scop_liasse_fiscale,base.group_user,1,0,0,0
access_questionnaire_group_user,access_questionnaire_group_user,model_scop_questionnaire,base.group_user,1,1,1,1
access_questionnaire_group_user,access_questionnaire_group_user,model_scop_questionnaire,base.group_user,1,0,0,0
access_res_partner_certification,access_res_partner_certification,model_res_partner_certification,base.group_user,1,0,0,0
access_res_partner_company_type,access_res_partner_company_type,model_res_partner_company_type,base.group_user,1,0,0,0
access_res_partner_cooperative_form,access_res_partner_cooperative_form,model_res_partner_cooperative_form,base.group_user,1,0,0,0
......@@ -54,6 +54,8 @@ admin_scop_membership_period,admin_scop_membership_period,model_scop_membership_
admin_scop_membership_reason_end,admin_scop_membership_reason_end,model_scop_membership_reason_end,group_cg_administrator,1,1,1,1
admin_scop_membership_type,admin_scop_membership_type,model_scop_membership_type,group_cg_administrator,1,1,1,1
admin_scop_period,admin_scop_period,model_scop_period,group_cg_administrator,1,1,1,1
administrative_scop_questionnaire,administrative_scop_questionnaire,model_scop_questionnaire,group_cg_administrative,1,1,1,1
admin_scop_questionnaire,admin_scop_questionnaire,model_scop_questionnaire,group_cg_administrator,1,1,1,1
admin_scop_questionnaire_type,admin_scop_questionnaire_type,model_scop_questionnaire_type,group_cg_administrator,1,1,1,1
admin_scop_revision_format,admin_scop_revision_format,model_scop_revision_format,group_cg_administrator,1,1,1,1
admin_union_regionale,admin_union_regionale,model_union_regionale,group_cg_administrator,1,1,1,1
......@@ -69,3 +71,5 @@ access_scop_federation_com_activity,access_scop_federation_com_activity,model_sc
admin_scop_federation_com_activity,admin_scop_federation_com_activity,model_scop_federation_com_activity,group_federation_com,1,1,1,1
access_scop_federation_indus_activity,access_scop_federation_indus_activity,model_scop_federation_indus_activity,base.group_user,1,0,0,0
admin_scop_federation_indus_activity,admin_scop_federation_indus_activity,model_scop_federation_indus_activity,group_federation_indus,1,1,1,1
access_scop_partner_staff,access_scop_partner_staff,model_scop_partner_staff,base.group_user,1,1,1,0
admin_scop_partner_staff,admin_scop_partner_staff,model_scop_partner_staff,group_cg_administrator,1,1,1,1
......@@ -738,6 +738,18 @@
</tree>
</field>
</page>
<page name='scop_staff' string="Effectifs" attrs="{'invisible': [('project_status', '!=', '6_suivi')]}">
<field name="staff_ids" mode="tree" context="{'default_partner_id': active_id}">
<tree delete="false" default_order="effective_date desc" editable="top">
<field name="effective_date"/>
<field name="type_entry" readonly="1"/>
<field name="staff_count" attrs="{'readonly':[('type_entry','=','ministry_list')]}"/>
<field name="staff_shareholder_count" attrs="{'readonly':[('type_entry','=','ministry_list')]}"/>
<field name="staff_average" attrs="{'readonly':[('type_entry','=','ministry_list')]}"/>
<field name="user_id" readonly="1"/>
</tree>
</field>
</page>
<page name='scop_questionnaire' string="Listes Ministère" attrs="{'invisible': [('project_status', '!=', '6_suivi')]}">
<group>
<field name="direccte_id" widget="res_partner_many2one" options="{'no_create': True}"/>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter