Skip to content
Extraits de code Groupes Projets
scop_membership_period_wizard.py 2,08 ko
Newer Older
  • Learn to ignore specific revisions
  • Rémi - Le Filament's avatar
    Rémi - Le Filament a validé
    # © 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
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament a validé
    from odoo.exceptions import ValidationError
    
    
    class ScopMembershipPeriodWizard(models.TransientModel):
    
        _name = "scop.membership.period.wizard"
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament a validé
        _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)
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament a validé
        type_id = fields.Many2one(
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament a validé
            string="Type d'adhésion",
    
    Benjamin - Le Filament's avatar
    Benjamin - Le Filament a validé
        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)
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament a validé
    
        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")
                    )
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament a validé
                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,
                        }
                    )