Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • bdc0d3a747aeea35a4defb88f8402d95131db162
  • 12.0-evo-202003 par défaut
  • 14-RV-20250324
  • 14-RV-20240830
  • 14-RV-20231222
  • 12-RV-Bug_ecrasement_date_radiation
  • 12-RV-revision-staff
  • 12-RV-copadev
  • 12-RV-Correctif-open-instagram
  • 12-RV-Tree-Coop-Ajout-effectif
  • 12.0-RV-Instagram
  • 12.0-RV-segment_visibility
  • 12.0 protégée
  • 12.0-RV-Abonnements
14 résultats

res_partner.py

Blame
  • Bifurcation depuis Le Filament / Confédération Générale des SCOP / cgscop_partner
    Le projet source a une visibilité limitée.
    res_partner.py 3,35 Kio
    # 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 api, models
    from odoo.addons.cmis_field import fields
    
    ALFRESCO_TRACKED_FIELDS = ['name', 'id', 'siret', 'member_number', 'ur_id']
    
    
    class AlfodooResPartner(models.Model):
        _name = 'res.partner'
        _inherit = ['res.partner', 'cgscop.alfresco']
    
        partner_cmis_folder = fields.CmisFolder(
            allow_create=True,
            allow_delete=False,
            create_parent_get='_get_parent_path',
            create_properties_get='_get_folder_properties',
        )
    
        # ------------------------------------------------------
        # Override Alfodoo
        # ------------------------------------------------------
        def _get_parent_path(self, records, backend):
            """
                Défini le répertoire parent :
                le répertoire configuré par défaut dans le backend
            """
            path_parts = backend.initial_directory_write.split('/')
            parent_cmis_object = backend.get_folder_by_path_parts(
                path_parts, create_if_not_found=True)
            path = dict.fromkeys(self.ids, parent_cmis_object)
            return path
    
        def _get_folder_properties(self, records, backend):
            """
                Ajoute les propriétés au dossier lors de la création dans Alfresco
            """
            return {
                self.id: {
                    'cmis:secondaryObjectTypeIds': [
                        'P:crm:organisme', 'P:up:UploadFolder', 'P:cm:titled'
                    ],
                    'up:allowedTypes': 'crm:document',
                    'crm:raisonSociale': self.name,
                    'crm:siret': self.siret if self.siret else '',
                    'crm:numAdherent': self.member_number if self.member_number else '',
                    'crm:id': str(self.id),
                    'crm:ur': str(self.ur_id.id),
                }
            }
    
        # ------------------------------------------------------
        # 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()