Newer
Older

Benjamin - Le Filament
a validé
# © 2020 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

Benjamin - Le Filament
a validé
from odoo import models, fields, api
from odoo.exceptions import ValidationError

Benjamin - Le Filament
a validé
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'),

Benjamin - Le Filament
a validé
('regul_ur', 'Régularisation UR'),
('regul_cg', 'Régularisation CG'),
('regul_diane', 'Régularisation Diane')],

Benjamin - Le Filament
a validé
string="Type",

Benjamin - Le Filament
a validé
default='regul_ur',
required=True,)

Benjamin - Le Filament
a validé
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')

Benjamin - Le Filament
a validé
comment = fields.Char('Commentaire')

Benjamin - Le Filament
a validé
# ------------------------------------------------------
# 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.")