# © 2019 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 class ScopQuestionnaire(models.Model): _name = "scop.questionnaire" _description = "Questionnaire" _rec_name = 'year' partner_id = fields.Many2one( comodel_name='res.partner', string='Organisme', domain=[('is_company', '=', True)], ondelete='cascade', index=True) id_riga = fields.Integer("ID RIGA") year = fields.Char("Année", index=True) type_id = fields.Many2one( 'scop.questionnaire.type', string="Type de questionnaire", ondelete='restrict', index=True) effective_date = fields.Date("Date d'effet du questionnaire") staff_count = fields.Integer("Effectif (EF)") staff_shareholder_count = fields.Integer("Eff. Sociétaires (ES)") staff_average = fields.Integer("Eff. Moyen (EM)") # ------------------------------------------------------ # Override ORM # ------------------------------------------------------ # Création d'un ligne d'effectif @api.model_create_multi def create(self, vals_list): questionnaire = super(ScopQuestionnaire, self).create(vals_list) quest_type = self.env.ref('cgscop_partner.questionnaire_type_1') if questionnaire.effective_date: staff_values = { 'partner_id': questionnaire.partner_id.id, 'user_id': self.env.uid, 'type_entry': 'questionnaire' if questionnaire.type_id != quest_type else 'questionnaire_inscription', 'effective_date': questionnaire.effective_date, 'staff_count': questionnaire.staff_count, 'staff_shareholder_count': questionnaire.staff_shareholder_count, 'staff_average': questionnaire.staff_average, 'questionnaire_id': questionnaire.id, } self.env['scop.partner.staff'].create(staff_values) return questionnaire # Mise à jour du questionnaire lors de la modification @api.multi def write(self, vals): questionnaire = super(ScopQuestionnaire, self).write(vals) quest_type = self.env.ref('cgscop_partner.questionnaire_type_1') staff = self.env['scop.partner.staff'].search([ ('questionnaire_id', '=', self.id)]) if staff: if self.effective_date: staff_values = { 'partner_id': self.partner_id.id, 'user_id': self.env.uid, 'type_entry': 'questionnaire' if questionnaire.type_id != quest_type else 'questionnaire_inscription', 'effective_date': self.effective_date, 'staff_count': self.staff_count, 'staff_shareholder_count': self.staff_shareholder_count, 'staff_average': self.staff_average, } staff.write(staff_values) return questionnaire class ScopQuestionnaireType(models.Model): _name = "scop.questionnaire.type" _description = "Type de Questionnaire" name = fields.Char('Type de Questionnaire')