Empêcher la création d'un contact avec le même email

8 mai 2024 par
Nexelans, Emmanuel Chaumery
| Aucun commentaire pour l'instant

Introduction

Quand on a un site web avec des tiers qui se connectent automatiquement, Odoo, nativement, n'empêche pas de créer plusieurs comptes avec la même adresse courriel. Dans certains cas, ça peut devenir rapidement embêtant, obligeant notamment à fusionner des contacts (ce qui est possible et même simple avec Odoo ;) ).

 Mais pour l'empêcher, il va falloir mettre un peu les mains à la pâte, même si on est en SAAS.

 ⚠️ Toute création de code Python a une incidence potentielle (facturation de frais de maintenance, documentation obligatoire et suivi du code pour en tenir compte pendant les migrations etc...), vous suivez ce tuto en connaissance de cause sinon, ne le faîtes pas !

 

Action !

Nous allons donc créer une action automatisée en V17 :

➡️Depuis le module Contacts, entrez dans Studio et cliquez sur l'onglet Automatisations. Si vous ne savez pas faire cette première action, n'allez pas plus loin et demandez à un consultant Odoo de vous aider (appelez nous par exemple 😉)

➡️Cliquez sur Nouveau pour créer une nouvelle action automatisée

​▶️Nom : ce que vous voulez mais soyez explicite

​▶️Modèle : Contact

​▶️Déclencher : Lors de l'enregistrement (C'est le plus simple)

​⏯️Pas d'autre changement en haut de cette page, passons aux actions à effectuer

​▶️Cliquez sur Ajouter une action et sélectionner "Execute Code"

 

Dès lors, il va falloir taper le code Python suivant en respectant l'indentation :

	if record.email:
    ​existing_contact=record.env['res.partner'].search([('id','!=',record.id),('email','=',record.email)])
    ​if existing_contact:
        ​raise UserError("Compte existant") 

La première ligne  vérifie qu'on a rempli le champ email de la fiche contact

La seconde ligne va vérifier s'il y a une autre fiche contact avec la même adresse dans la base et si c'est le cas, la variable existing_contact sera vraie

La troisième ligne teste la variable existing_contact et la quatrième ligne affiche un message d'erreur si c'est le cas, n'hésitez pas à personnaliser ce message. 

Il restera à l'utilisateur à trouver une autre adresse mail s'il veut enregistrer ce contact, sinon, voici ce qui s'affichera.

Affichage erreur

Se connecter pour laisser un commentaire.