Skip to content
Snippets Groups Projects
res_partner.py 1.87 KiB
Newer Older
  • Learn to ignore specific revisions
  • # © 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
    
    ALFRESCO_TRACKED_FIELDS = ['name', 'id', 'siret', 'member_number']
    
    
    
    class AlfrescoPartner(models.Model):
        _name = 'res.partner'
    
    Benjamin's avatar
    Benjamin committed
        _inherit = ['res.partner', 'cgscop.alfresco']
    
    
        id_alfresco = fields.Char('ID Dossier Alfresco')
    
    
        # ------------------------------------------------------
    
        # ------------------------------------------------------
        @api.multi
        def write(self, vals):
            """ Surcharge la fonction write() pour mettre à jour
            la raison sociale, le nom, le siret, l'id Odoo ou le
            num adhérent
            """
            tracked_fields = self.fields_get(ALFRESCO_TRACKED_FIELDS)
            # Dict des valeurs initiales des champs présents dans TRACKED_FIELDS
            initial_values = dict(
                (record.id, dict(
                    (key, getattr(record, key)) for key in tracked_fields)) for record in self.filtered('is_cooperative'))
            # Ecriture des nouvelles valeurs
            result = super(AlfrescoPartner, self).write(vals)
            # Dict des nouvelles valeurs
            new_values = dict(
                (record.id, dict(
                    (key, getattr(record, key)) for key in tracked_fields)) for record in self.filtered('is_cooperative'))
            # Check des modifications sur les coopératives présentes dans RIGA
            for record in self:
                if record.is_cooperative and record.id_alfresco:
                    if new_values[record.id] != initial_values[record.id]:
                        self.alfresco_update_organism(record)
            return result
    
        @api.multi
        def unlink(self):
            for partner in self:
                if partner.id_alfresco:
                    partner.alfresco_remove(partner.id_alfresco)
    
                return super(AlfrescoPartner, self).unlink()