Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • d9131c9830b3db7806e216f48ed3a5c8b188c364
  • 12.0-evo-202003 par défaut
  • 14-RV-20250324
  • 14-RV-20240830
  • 14-RV-20231222
  • 12-RV-Bug_ecrasement_date_radiation
  • 12-RV-revision-staff
  • 12-RV-copadev
  • 12-RV-Correctif-open-instagram
  • 12-RV-Tree-Coop-Ajout-effectif
  • 12.0-RV-Instagram
  • 12.0-RV-segment_visibility
  • 12.0 protégée
  • 12.0-RV-Abonnements
14 résultats

scop_deces_wizard.py

Blame
  • Bifurcation depuis Le Filament / Confédération Générale des SCOP / cgscop_partner
    Le projet source a une visibilité limitée.
    scop_deces_wizard.py 3,44 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 ScopDecesWizard(models.TransientModel):
        _name = "scop.deces.wizard"
        _description = "Décès"
    
        # 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
            )
    
        # Fields common
        partner_id = fields.Integer("Partner", default=_default_partner_id)
    
        # Fields previous period
        last_period_id = fields.Integer(default=_default_last_period_id)
        end = fields.Date("Fin de validité", required=True, default=fields.Date.today())
        dissolution_reason_id = fields.Many2one(
            "res.partner.dissolution.reason",
            string="Motif Décès",
            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: "
                            )
                            + str(last_period.start)
                        )
    
                    # 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,
                            "project_status": "6_decede",
                        }
                    )
    
                    #
                    # HS 08/04/2020
                    # On procède à la radiation à la même date
                    #
                    # 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),
                            ]
                        )
                        for adh in adh_period:
                            if not adh.end:
                                adh.write({"end": period.end, "end_reason_id": motif.id})
    
                else:
                    raise ValidationError(_("Il n'existe pas de période à fermer."))