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