Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 677c40b8c3ae707988a30e84f7392bfa6e773bae
  • 16.0 par défaut protégée
  • 18.0
  • 17.0
  • 14.0 protégée
  • 15.0 protégée
  • 12.0 protégée
  • 10.0 protégée
8 résultats

12.0.Dockerfile

Blame
  • scop_membership_out_wizard.py 3,68 Kio
    # © 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 ScopMembershipOutWizard(models.TransientModel):
        _name = "scop.membership.out.wizard"
        _description = "Radiation"
    
        # Default functions
        @api.model
        def _default_partner_id(self):
            return self.env.context.get("active_id")
    
        partner_id = fields.Many2one(
            comodel_name="res.partner",
            string="Partner",
            default=_default_partner_id
        )
        type_all = fields.Boolean(string="Tous types d'adhésion", default=True)
        type_id = fields.Many2one(
            "scop.membership.type", string="Type d'adhésion", ondelete="restrict"
        )
        end = fields.Date("Fin d'adhésion", required=True, default=fields.Date.today())
        end_reason_id = fields.Many2one(
            "scop.membership.reason.end",
            string="Motif de fin d’adhésion",
            ondelete="restrict",
            required=True,
        )
        note = fields.Text("Commentaires")
    
        # ............................................................
        # Fermeture des périodes
        # ............................................................
        def member_out(self):
            for period in self:
                # On veut cloture toute les périodes
                if period.type_all:
                    last_periods = self.env["scop.membership.period"].search(
                        [
                            ("partner_id", "=", period.partner_id),
                            ("end", "=", False),
                        ]
                    )
                    for lp in last_periods:
                        period_type_id = lp.type_id.id
                        period.member_out_period(
                            period.partner_id,
                            period_type_id,
                            period.end,
                            period.end_reason_id.id,
                            period.note,
                        )
                # On ne veut cloturer qu'une seule période
                else:
                    period_type_id = period.type_id.id
                    period.member_out_period(
                        period.partner_id,
                        period_type_id,
                        period.end,
                        period.end_reason_id.id,
                        period.note,
                    )
            self.partner_id.write({"membership_status": "out"})
            return
    
        # ............................................................
        # Fermeture d'une période
        # ............................................................
        def member_out_period(self, partner_id, period_type_id, end, end_reason_id, note):
    
            # Lecture de la dernière période active
            last_period = self.env["scop.membership.period"].search(
                [
                    ("partner_id", "=", partner_id),
                    ("end", "=", False),
                    ("type_id", "=", period_type_id),
                ],
                limit=1,
            )
            if last_period:
                if end >= last_period.start:
                    last_period.write(
                        {
                            "end": end,
                            "end_reason_id": end_reason_id,
                            "note": note,
                        }
                    )
                else:
                    raise ValidationError(
                        _(
                            "La date de fin doit être postèrieure à la date de "
                            + "début de la dernière période: "
                        )
                        + str(last_period.start)
                    )
            else:
                raise ValidationError(
                    _("Il n'existe pas de période avec ce type à fermer.")
                )
    
            return