# © 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' _inherit = ['res.partner', 'cgscop.alfresco'] id_alfresco = fields.Char('ID Dossier Alfresco') # ------------------------------------------------------ # Override ORM # ------------------------------------------------------ @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()