diff --git a/models/scop_partner_staff.py b/models/scop_partner_staff.py index 84584f6f6e99d45322573199a6bb38359c52a60c..0c5e3090cd85986fa09af23ffdb302712ff26b18 100644 --- a/models/scop_partner_staff.py +++ b/models/scop_partner_staff.py @@ -20,6 +20,8 @@ class ScopPartnerStaff(models.Model): index=True) partner_city = fields.Char("Ville", related='partner_id.city') partner_siret = fields.Char("SIRET", related='partner_id.siret') + cooperative_form_id = fields.Many2one( + related='partner_id.cooperative_form_id') user_id = fields.Many2one( comodel_name='res.users', string='Utilisateur', @@ -34,14 +36,15 @@ class ScopPartnerStaff(models.Model): ('regul_diane', 'Régularisation Diane')], string="Type", default='regul_ur', - required=True,) + required=True, ) 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)", required=True,) - staff_average = fields.Integer("Equivalent temps plein (ETP)", required=True,) + required=True, ) + staff_count = fields.Integer("Effectif (EF)", required=True, ) + staff_shareholder_count = fields.Integer("Eff. Sociétaires (ES)") + staff_average = fields.Integer("Equivalent temps plein (ETP)", + required=True, ) staff_men = fields.Integer("Eff. salariés hommes") staff_women = fields.Integer("Eff. salariés femmes") staff_shareholder_men = fields.Integer("Sociétaires salariés hommes") @@ -64,7 +67,7 @@ class ScopPartnerStaff(models.Model): """ if self.type_entry in ('questionnaire', 'questionnaire_inscription') \ and not self.env.user.has_group( - 'cgscop_partner.group_cg_administrative'): + 'cgscop_partner.group_cg_administrative'): raise ValidationError( 'Vous ne pouvez choisir que des types "Régularisation".') @@ -77,13 +80,23 @@ class ScopPartnerStaff(models.Model): """ Interdit de créer une ligne à 0 sauf lorsque cette ligne vient de la liste ministère + ou si ligne associés pour les SCIC """ - if ((self.staff_count == 0 - or self.staff_shareholder_count == 0 - or self.staff_average == 0) - and self.type_entry not in ('questionnaire', 'questionnaire_inscription')): - raise ValidationError( - "Tous les effectifs doivent être renseignés et supérieurs à 0.") + if self.type_entry \ + not in ('questionnaire', 'questionnaire_inscription'): + if self.cooperative_form_id.id == self.env.ref( + 'cgscop_partner.form_scic').id: + if self.staff_count == 0 or self.staff_average == 0: + raise ValidationError( + "Les effectifs et les équivalents temps plein doivent" + " être renseignés et supérieurs à 0.") + else: + if self.staff_shareholder_count == 0 \ + or self.cooperative_form_id == 0 \ + or self.staff_average == 0: + raise ValidationError( + "Tous les effectifs doivent" + " être renseignés et supérieurs à 0.") @api.constrains('effective_date') def _check_effective_date(self): @@ -97,7 +110,8 @@ class ScopPartnerStaff(models.Model): ('effective_date', '=', record.effective_date) ]) if (len(doublon) > 1 - and record.type_entry not in ('questionnaire', 'questionnaire_inscription')): + and record.type_entry not in ( + 'questionnaire', 'questionnaire_inscription')): raise ValidationError( "Vous ne pouvez pas créer 2 ajustements à la même date.") diff --git a/views/res_partner.xml b/views/res_partner.xml index 22e014b148aa1ceb87c696b49e015846851aaa08..72a53a704e1ca05211e9d2c82725f0493d6591f4 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -696,11 +696,12 @@ <page name='scop_staff' string="Effectifs" attrs="{'invisible': ['|','&', ('is_cooperative', '=', True), ('project_status', '!=', '6_suivi'),'&',('is_cooperative', '=', False),('organization_subtype_id','!=', %(cgscop_partner.riga_11528)d)]}"> <field name="staff_ids" mode="tree" context="{'default_partner_id': active_id, 'default_type_entry': 'regul_ur'}"> <tree delete="false" default_order="effective_date desc" editable="top"> - <field name="effective_date" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> - <field name="type_entry" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> + <field name="cooperative_form_id" invisible="1"/> + <field name="effective_date" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> + <field name="type_entry" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> <field name="staff_count" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> - <field name="staff_shareholder_count" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> - <field name="staff_average" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> + <field name="staff_shareholder_count" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))], 'required':[('cooperative_form_id', '!=', %(cgscop_partner.form_scic)d)]}"/> + <field name="staff_average" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> <field name="comment" /> <field name="user_id" readonly="1"/> <button name="edit_staff" type="object" icon="fa-pencil-square-o"/> diff --git a/views/scop_partner_staff.xml b/views/scop_partner_staff.xml index 93eef7aee5fd4a3488a90e76e5e1ce3570ef0bc8..42f5cade2e33fe5f42bfc84098ff95815b2c520f 100644 --- a/views/scop_partner_staff.xml +++ b/views/scop_partner_staff.xml @@ -18,13 +18,15 @@ <field name="partner_siret"/> </group> <group name="infos_entry"> - <field name="user_id"/> + <field name="user_id" readonly="1"/> <field name="type_entry"/> <field name="effective_date" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> </group> <group name="staff_stats"> + <field name="cooperative_form_id" invisible="1"/> <field name="staff_count" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> - <field name="staff_shareholder_count" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> + <field name="staff_shareholder_count" + attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))], 'required':[('cooperative_form_id', '!=', %(cgscop_partner.form_scic)d)]}"/> <field name="staff_average" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> </group> <group name="staff_stats">