diff --git a/models/res_partner.py b/models/res_partner.py index 10e79788f4bbef169259374568ec1f9d8375143b..7bed4c57aae7eb0454b601e11a1001c541bd2539 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -2,6 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import api, models +from odoo.exceptions import UserError from odoo.addons.cmis_field import fields ALFRESCO_TRACKED_FIELDS = ['name', 'id', 'siret', 'member_number', 'ur_id'] @@ -59,21 +60,19 @@ class AlfodooResPartner(models.Model): 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')) + change_fields = vals.keys() + # check intersection + is_alfresco_field = [ + value for value in change_fields if value in ALFRESCO_TRACKED_FIELDS] + + # 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]: + if is_alfresco_field: backend = self._fields['partner_cmis_folder'] properties = self._get_folder_properties( record, backend).get(record.id) @@ -90,5 +89,22 @@ class AlfodooResPartner(models.Model): backend = self._fields['partner_cmis_folder'] folder = backend.get_cmis_object(partner) folder.delete() + partner.partner_cmis_folder = False return super(AlfodooResPartner, self).unlink() + + # ------------------------------------------------------ + # Common Functions + # ------------------------------------------------------ + @api.multi + def create_cmis_folder(self): + for partner in self: + if partner.partner_cmis_folder: + raise UserError("Le partenaire a déjà un dossier Alfresco associé") + else: + try: + partner._fields['partner_cmis_folder'].create_value( + partner) + return partner.partner_cmis_folder + except Exception as e: + return e.name \ No newline at end of file