diff --git a/__manifest__.py b/__manifest__.py index 73eb049d13aae85b47a7634c6b956b42fb82293a..c17d1f59901c78e7ebba8aec3a1362f69e76f583 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 b4be6c9b4dbaff74c54b4446536597c6373c8e65..940c1b218f7f577c7ab7958855e7ba268acc3adc 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()