Sélectionner une révision Git
account_payment_order.py
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."))