Skip to content
Extraits de code Groupes Projets
scop_partner_staff.py 2,71 ko
Newer Older
  • Learn to ignore specific revisions
  • # © 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, api
    from odoo.exceptions import ValidationError
    
    
    
    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([
    
            ('questionnaire', 'Questionnaire'),
            ('questionnaire_inscription', 'Questionnaire Inscription'),
    
            ('regul_ur', 'Régularisation UR'),
            ('regul_cg', 'Régularisation CG'),
            ('regul_diane', 'Régularisation Diane')],
    
        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')
    
    
        # ------------------------------------------------------
        # 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.")