Newer
Older
# © 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
class ScopDecesWizard(models.TransientModel):

Benjamin - Le Filament
a validé
_name = "scop.deces.wizard"
_description = "Décès"
# Default functions
@api.model
def _default_partner_id(self):

Benjamin - Le Filament
a validé
return self.env.context.get("active_id")
@api.model
def _default_last_period_id(self):

Benjamin - Le Filament
a validé
return (
self.env["scop.period"]
.search(
[
("partner_id", "=", self.env.context.get("active_id")),
("end", "=", False),
],
limit=1,
)
.id
)

Benjamin - Le Filament
a validé
partner_id = fields.Integer("Partner", default=_default_partner_id)
last_period_id = fields.Integer(default=_default_last_period_id)
end = fields.Date("Fin de validité", required=True, default=lambda self: fields.Date.today())
dissolution_reason_id = fields.Many2one(

Benjamin - Le Filament
a validé
"res.partner.dissolution.reason",
string="Motif Décès",

Benjamin - Le Filament
a validé
ondelete="restrict",
required=True,
)
comments = fields.Text("Commentaires")
def deces_action(self):
# Close previous period

Benjamin - Le Filament
a validé
last_period = self.env["scop.period"].browse(period.last_period_id)
if last_period:
if period.end >= last_period.start:

Benjamin - Le Filament
a validé
last_period.write(
{
"end": period.end,
"end_reason": "deces",
"dissolution_reason_id": period.dissolution_reason_id.id,
"comments": period.comments,
}
)
"La date de fin doit être postérieure à la date de "
+ "début de la dernière période: "
)

Benjamin - Le Filament
a validé
+ str(last_period.start)
)

Benjamin - Le Filament
a validé
partner = self.env["res.partner"].browse(period.partner_id)
partner.write(
{
"dissolution_date": period.end,
"dissolution_reason_id": period.dissolution_reason_id.id,

Benjamin - Le Filament
a validé
}
)
# HS 08/04/2020
# On procède à la radiation à la même date
# Lecture du motif de radiation type décès

Benjamin - Le Filament
a validé
motif = self.env.ref("cgscop_partner.reason_end_membership_5")
# Mise à jour des périodes d'adhésions
if motif:

Benjamin - Le Filament
a validé
adh_period = self.env["scop.membership.period"].search(
[
("partner_id", "=", period.partner_id),
("end", "=", False),
]
)
for adh in adh_period:
adh.write({"end": period.end, "end_reason_id": motif.id})
raise ValidationError(_("Il n'existe pas de période à fermer."))