Skip to content
Extraits de code Groupes Projets
scop_deces_wizard.py 3,45 ko
Newer Older
  • Learn to ignore specific revisions
  • # © 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 ScopDecesWizard(models.TransientModel):
    
    
        # Default functions
        @api.model
        def _default_partner_id(self):
    
            return self.env.context.get("active_id")
    
    
        @api.model
        def _default_last_period_id(self):
    
            return (
                self.env["scop.period"]
                .search(
                    [
                        ("partner_id", "=", self.env.context.get("active_id")),
                        ("end", "=", False),
                    ],
                    limit=1,
                )
                .id
            )
    
        partner_id = fields.Integer("Partner", default=_default_partner_id)
    
    
        # Fields previous period
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament a validé
        last_period_id = fields.Integer(default=_default_last_period_id)
    
    Benjamin - Le Filament's avatar
    Benjamin - Le Filament a validé
        end = fields.Date("Fin de validité", required=True, default=lambda self: fields.Date.today())
    
        dissolution_reason_id = fields.Many2one(
    
            ondelete="restrict",
            required=True,
        )
        comments = fields.Text("Commentaires")
    
    
        def deces_action(self):
            # Close previous period
    
            for period in self:
    
                last_period = self.env["scop.period"].browse(period.last_period_id)
    
                if last_period:
                    if period.end >= last_period.start:
    
                        last_period.write(
                            {
                                "end": period.end,
                                "end_reason": "deces",
                                "dissolution_reason_id": period.dissolution_reason_id.id,
                                "comments": period.comments,
                            }
                        )
    
                    else:
                        raise ValidationError(
    
                                "La date de fin doit être postérieure à la date de "
    
                                + "début de la dernière période: "
                            )
    
    
                    # Update partner
    
                    partner = self.env["res.partner"].browse(period.partner_id)
                    partner.write(
                        {
                            "dissolution_date": period.end,
                            "dissolution_reason_id": period.dissolution_reason_id.id,
    
    Juliana's avatar
    Juliana a validé
                            "project_status": "6_decede",
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament a validé
                    #
    
                    # HS 08/04/2020
                    # On procède à la radiation à la même date
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament a validé
                    #
    
                    # Lecture du motif de radiation type décès
    
                    motif = self.env.ref("cgscop_partner.reason_end_membership_5")
    
    
                    # Mise à jour des périodes d'adhésions
                    if motif:
    
                        adh_period = self.env["scop.membership.period"].search(
                            [
                                ("partner_id", "=", period.partner_id),
                                ("end", "=", False),
                            ]
                        )
    
                            if not adh.end:
    
                                adh.write({"end": period.end, "end_reason_id": motif.id})
    
                    raise ValidationError(_("Il n'existe pas de période à fermer."))