diff --git a/models/scop_partner_staff.py b/models/scop_partner_staff.py index b108d2298b90a950ba8b1d1101cfcb97d1ebb17d..abee3fa46ff4d8321294c78ca12be8fc01fbbca9 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 0a184c604481d33fd603425d3979acea2d1764c6..a4bde090cd8b44f2a5e79486ddade5d0789ad75a 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>