From 3fdb5bef6111041121a3f34885a30adbb3583283 Mon Sep 17 00:00:00 2001 From: Benjamin <benjamin@le-filament.com> Date: Mon, 20 Apr 2020 12:01:47 +0200 Subject: [PATCH] [cgscop #107] validation sur les effectifs > 0 sauf pour inport depuis LM + obligatoire saisie type sauf questionnaire depuis inteface --- models/scop_partner_staff.py | 33 +++++++++++++++++++++++++++++++-- views/res_partner.xml | 12 ++++++------ 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/models/scop_partner_staff.py b/models/scop_partner_staff.py index b108d22..abee3fa 100644 --- a/models/scop_partner_staff.py +++ b/models/scop_partner_staff.py @@ -1,7 +1,8 @@ # © 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 +from odoo import models, fields, api +from odoo.exceptions import ValidationError class ScopPartnerStaff(models.Model): @@ -30,7 +31,8 @@ class ScopPartnerStaff(models.Model): ('regul_cg', 'Régularisation CG'), ('regul_diane', 'Régularisation Diane')], string="Type", - default='regul_ur') + default='regul_ur', + required=True,) effective_date = fields.Date( string="Date", default=fields.Date.today(), @@ -43,3 +45,30 @@ class ScopPartnerStaff(models.Model): string='Questionnaire', ondelete='cascade') comment = fields.Char('Commentaire') + + # ------------------------------------------------------ + # OnChange + # ------------------------------------------------------ + @api.onchange('type_entry') + def _onchange_type_entry(self): + """ + Interdit la sélection questionnaire ou questionnaire inscription + sur l'interface + """ + if self.type_entry in ('questionnaire', 'questionnaire_inscription'): + raise ValidationError( + 'Vous ne pouvez choisir que des types "Régularisation".') + + # ------------------------------------------------------ + # Contrains + # ------------------------------------------------------ + @api.constrains('staff_count') + def _check_staff_count(self): + """ + Interdit de créer une ligne à 0 sauf lorsque + cette ligne vient de la liste ministère + """ + for record in self: + if record.staff_count == 0 and record.type_entry not in ('questionnaire', 'questionnaire_inscription'): + raise ValidationError( + "L'effectif renseigné doit être supérieur à 0.") diff --git a/views/res_partner.xml b/views/res_partner.xml index 0a184c6..a4bde09 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -740,13 +740,13 @@ </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}"> + <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"/> - <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="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="comment" /> <field name="user_id" readonly="1"/> </tree> -- GitLab