Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 9005cc4af854d9ce7fac82d6c9a585c9851fd42d
  • 14.0 par défaut
  • 13.0
  • 12.0 protégée
4 résultats

project.py

Blame
  • scop_partner_staff.py 3,53 Kio
    # © 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')],
            string="Type",
            default='regul_ur',
            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("Eff. Moyen (EM)", required=True,)
        questionnaire_id = fields.Many2one(
            comodel_name='scop.questionnaire',
            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.one
        @api.constrains('staff_count', 'staff_shareholder_count', 'staff_average')
        def _check_staff(self):
            """
                Interdit de créer une ligne à 0 sauf lorsque
                cette ligne vient de la liste ministère
            """
            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.")
    
        @api.constrains('effective_date')
        def _check_effective_date(self):
            """
                Interdit la création de deux lignes à une même date
                pour un même partenaire sauf pour LM
            """
            for record in self:
                doublon = self.search([
                    ('partner_id', '=', record.partner_id.id),
                    ('effective_date', '=', record.effective_date)
                ])
                if (len(doublon) > 1
                        and record.type_entry not in ('questionnaire', 'questionnaire_inscription')):
                    raise ValidationError(
                        "Vous ne pouvez pas créer 2 ajustements à la même date.")