Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 2e7fd8437c97c18043786f413135eb1027943dec
  • 14.0 par défaut
  • 12.0 protégée
  • 13.0
4 résultats

res_partner.py

Blame
  • 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.")