From dd3cfd2a1147ba5954313fcf0ea612b13776889a Mon Sep 17 00:00:00 2001 From: Benjamin <benjamin@le-filament.com> Date: Thu, 8 Oct 2020 14:50:13 +0200 Subject: [PATCH] =?UTF-8?q?[add]=20fonctions=20partner=20pour=20mise=20?= =?UTF-8?q?=C3=A0=20jour=20metadonnees=20Alfresco?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __manifest__.py | 2 +- models/res_partner.py | 41 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/__manifest__.py b/__manifest__.py index 73eb049..c17d1f5 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -1,5 +1,5 @@ { - 'name': "CG Scop - Partner Alfresco", + 'name': "CG Scop - Alfodoo Partner", 'summary': "Connexion Alfodoo pour les Coopératives", 'author': "Le Filament", 'website': "https://www.le-filament.com", diff --git a/models/res_partner.py b/models/res_partner.py index b4be6c9..940c1b2 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -1,14 +1,51 @@ # Copyright 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 +from odoo import api, models from odoo.addons.cmis_field import fields +ALFRESCO_TRACKED_FIELDS = ['name', 'id', 'siret', 'member_number'] + class AlfodooResPartner(models.Model): - _inherit = "res.partner" + _name = 'res.partner' + _inherit = ['res.partner', 'cgscop.alfresco'] partner_cmis_folder = fields.CmisFolder( allow_create=False, allow_delete=False ) + + # ------------------------------------------------------ + # 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(AlfodooResPartner, 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.partner_cmis_folder: + 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.partner_cmis_folder: + partner.alfresco_remove(partner.partner_cmis_folder) + return super(AlfodooResPartner, self).unlink() -- GitLab