# © 2019 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import _, api, fields, models from odoo.exceptions import ValidationError class ScopMembershipPeriodWizard(models.TransientModel): _name = "scop.membership.period.wizard" _description = "Création d'une nouvelle période d'adhésion" # Default functions @api.model def _default_partner_id(self): return self.env.context.get("active_id") @api.model def _default_number(self): partner_id = self.env["res.partner"].browse(self.env.context.get("active_id")) number = partner_id.member_number if partner_id.member_number else "" return number partner_id = fields.Integer("Partner", default=_default_partner_id) type_id = fields.Many2one( "scop.membership.type", string="Type d'adhésion", ondelete="restrict", required=True, ) start = fields.Date("Début d’adhésion", required=True, default=lambda self: fields.Date.today()) number = fields.Char("No adhérent", required=True, default=_default_number) note = fields.Text("Commentaires") def create_period(self): for period in self: # Raise validation error if previous period exists if self.env["scop.membership.period"].search( [ ("partner_id", "=", period.partner_id), ("end", "=", False), ("type_id", "=", period.type_id.id), ], limit=1, ): raise ValidationError( _("Une période d'adhésion existe déjà pour ce type") ) else: self.env["scop.membership.period"].create( { "partner_id": period.partner_id, "type_id": period.type_id.id, "start": period.start, "number": period.number, "note": period.note, } )