Sélectionner une révision Git
-
Hervé Silvant - CGScop a rédigé
Ajout d'une notion de temps estimé vs temps réalisé sur les projet d'accompagnement + détails temps facturé spécifique AURA
Hervé Silvant - CGScop a rédigéAjout d'une notion de temps estimé vs temps réalisé sur les projet d'accompagnement + détails temps facturé spécifique AURA
scop_deces_wizard.py 3,21 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",
on_delete='restrict',
required=True)
comments = fields.Text('Commentaires')
@api.multi
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
})
#.........................................
# 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['scop.membership.reason.end'].search([
('name', '=', 'Mort économique')], limit=1)
# 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:
adh.write({
'end': period.end,
'end_reason_id': motif.id
})
else:
raise ValidationError(
"Il n'existe pas de période à fermer.")