diff --git a/models/scop_partner_staff.py b/models/scop_partner_staff.py index 0c5e3090cd85986fa09af23ffdb302712ff26b18..bc08dee0b755dc72b36c73eb5b805b96b0bf1706 100644 --- a/models/scop_partner_staff.py +++ b/models/scop_partner_staff.py @@ -22,6 +22,10 @@ class ScopPartnerStaff(models.Model): partner_siret = fields.Char("SIRET", related='partner_id.siret') cooperative_form_id = fields.Many2one( related='partner_id.cooperative_form_id') + naf_id = fields.Many2one(related='partner_id.naf_id') + is_partner_in_tracked_naf = fields.Boolean( + 'Coop dans les NAF marqués', + compute='_compute_is_partner_in_tracked_naf') user_id = fields.Many2one( comodel_name='res.users', string='Utilisateur', @@ -43,8 +47,7 @@ class ScopPartnerStaff(models.Model): 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_average = fields.Integer("Equivalent temps plein (ETP)") 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") @@ -56,6 +59,23 @@ class ScopPartnerStaff(models.Model): ondelete='cascade') comment = fields.Char('Commentaire') + # ------------------------------------------------------ + # Compute + # ------------------------------------------------------ + @api.multi + def _compute_is_partner_in_tracked_naf(self): + naf_90_01Z = self.env.ref('lefilament_naf.naf_90_01Z').id + naf_90_02Z = self.env.ref('lefilament_naf.naf_90_02Z').id + naf_78_20Z = self.env.ref('lefilament_naf.naf_78_20Z').id + naf_82_11Z = self.env.ref('lefilament_naf.naf_82_11Z').id + naf_78_10Z = self.env.ref('lefilament_naf.naf_78_10Z').id + for r in self: + if r.naf_id.id in (naf_90_01Z, naf_90_02Z, naf_78_20Z, + naf_82_11Z, naf_78_10Z): + r.is_partner_in_tracked_naf = True + else: + r.is_partner_in_tracked_naf = False + # ------------------------------------------------------ # OnChange # ------------------------------------------------------ @@ -81,6 +101,7 @@ 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 + ou si ligne ETP pour les 'tracked naf' """ if self.type_entry \ not in ('questionnaire', 'questionnaire_inscription'): @@ -88,8 +109,13 @@ class ScopPartnerStaff(models.Model): '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.") + "Les colonnes Effectif (EF) et Equivalents temps plein" + " (ETP) doivent être renseignés et supérieurs à 0.") + elif self.is_partner_in_tracked_naf: + if self.staff_count == 0 or self.staff_shareholder_count == 0: + raise ValidationError( + "Les colonnes Effectif (EF) et Eff. Sociétaires (ES)" + " doivent être renseignés et supérieurs à 0.") else: if self.staff_shareholder_count == 0 \ or self.cooperative_form_id == 0 \ diff --git a/views/res_partner.xml b/views/res_partner.xml index 72a53a704e1ca05211e9d2c82725f0493d6591f4..a6ab78075e998f7964d35076367a549ecc02e920 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -697,11 +697,12 @@ <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="cooperative_form_id" invisible="1"/> + <field name="is_partner_in_tracked_naf" 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'))], 'required':[('cooperative_form_id', '!=', %(cgscop_partner.form_scic)d)]}"/> - <field name="staff_average" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> + <field name="staff_average" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))], 'required':[('is_partner_in_tracked_naf', '!=', True)]}"/> <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 42f5cade2e33fe5f42bfc84098ff95815b2c520f..b0637ca9168c74ab109f1e5946ce184acf8b990a 100644 --- a/views/scop_partner_staff.xml +++ b/views/scop_partner_staff.xml @@ -24,10 +24,12 @@ </group> <group name="staff_stats"> <field name="cooperative_form_id" invisible="1"/> + <field name="is_partner_in_tracked_naf" 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'))], 'required':[('cooperative_form_id', '!=', %(cgscop_partner.form_scic)d)]}"/> - <field name="staff_average" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"/> + <field name="staff_average" + attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))], 'required':[('is_partner_in_tracked_naf', '!=', True)]}"/> </group> <group name="staff_stats"> <field name="staff_men"/>