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

acc_actu.py

Blame
  • scop_period.py 3,90 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 models, fields, api
    
    
    class ScopPeriod(models.Model):
        _name = "scop.period"
        _description = "SCOP Period"
        _order = "partner_id, start desc"
    
        # Infos générales
        partner_id = fields.Many2one(
            comodel_name='res.partner',
            string='Organisme',
            domain=[('is_cooperative', '=', True)],
            ondelete='cascade', required=True, index=True)
        id_riga = fields.Integer("ID RIGA")
        start = fields.Date('Début de validité', required=True,
                            default=fields.Date.today(), index=True)
        end = fields.Date('Fin de validité')
        end_reason = fields.Selection(
            [('juri', "Modification de la forme juridique"),
             ('form', "Changement de forme coopérative"),
             ('acti', "Changement d'activité (NAF)"),
             ('adr', "Changement d'adresse"),
             ('nom', "Changement de dénomination sociale"),
             ('dreets', "Radiation DREETS"),
             ('deces', 'Décès'),
             ('autr', "Autres")],
            string='Motif de fin de validité')
        comments = fields.Text('Commentaires')
        name = fields.Char('Raison Sociale', required=True, index=True)
        cooperative_form_id = fields.Many2one(
            'res.partner.cooperative.form',
            string="Cooperative form",
            on_delete='restrict')
        partner_company_type_id = fields.Many2one(
            comodel_name='res.partner.company.type',
            string='Legal Form',
            track_visibility='onchange',
            on_delete='restrict')
        siret = fields.Char(string='SIRET', size=14)
        street = fields.Char()
        street2 = fields.Char()
        street3 = fields.Char()
        zip = fields.Char()
        zip_id = fields.Many2one('res.city.zip', 'ZIP Location')
        city = fields.Char()
        cedex = fields.Char()
        state_id = fields.Many2one(
            "res.country.state",
            string='State',
            ondelete='restrict',
            domain="[('country_id', '=?', country_id)]")
        country_id = fields.Many2one(
            'res.country', string='Country', ondelete='restrict')
        naf_id = fields.Many2one(
            'res.partner.naf',
            string='Code NAF',
            on_delete='restrict')
        cae = fields.Boolean("CAE")
        dissolution_reason_id = fields.Many2one(
            'res.partner.dissolution.reason',
            string="Motif Décès",
            on_delete='restrict',
            track_visibility='onchange')
        number = fields.Char(
            string="No adhérent",
            related='partner_id.member_number',
            store=False)
    
    
        # ------------------------------------------------------
        # Override ORM
        # ------------------------------------------------------
        @api.multi
        def write(self, vals):
            for period in self:
                if period == period.partner_id.scop_period_ids[0]:
                    partner_vals = dict(vals)
                    # Suppression des valeurs à ne pas remonter à l'organisme
                    partner_vals.pop('partner_id', False)
                    partner_vals.pop('id_riga', False)
                    partner_vals.pop('start', False)
                    partner_vals.pop('comments', False)
    
                    # Si la date de fin est modifiée et que l'organisme est décédé
                    # on remonte la date de décès
                    if 'end' in partner_vals:
                        if partner_vals.get('end_reason', False) == 'deces' or period.end_reason == 'deces':
                            partner_vals.update({
                                'dissolution_date': partner_vals.get('end')
                            })
                        if not partner_vals.get('end'):
                            partner_vals.update({
                                'dissolution_date': None
                            })
    
                    partner_vals.pop('end', False)
    
                    # Update partner
                    period.partner_id.write(partner_vals)
            return super(ScopPeriod, self).write(vals)