Contributors mailing list archives


Re: Partner unicity

Elico Corp, Eric Caudal
- 17/04/2018 23:14:51


Thanks Alexis for bringing up the topic.

Uniqueness is a difficult one and relies on the user ability to separate false unique partners. VAT uniqueness should be implemented (on active partners) but other constraints looks "impossible".

Warnings are important to help but IMO fuzzy display of existing partner names while typing name/email/phone is a very good tool to improve data quality.

Eric Caudal [Founder and CEO]
Skype: elico.corp. Phone: + 86 186 2136 1670 (Cell), + 86 21 6211 8017/27/37 (Office)
Elico Shanghai (Hong Kong/Shenzhen/Singapore)
Odoo Gold Partner // Best Odoo Partner APAC 2014 and 2016
On 04/18/2018 01:02 AM, Frederik Kramer wrote:
Hi Alexis, 

this is indeed a hard nut to crack. Just a quick idea. As you said no one measure can provide
a very convincing solution for that problem alone i guess, but what i often thought of 
in that regard was a kind of fuzzy matching (on strings for instance) over more than one dimension?
But that i technically and performance-wise for sure harder to implement

Best Frederik

Am Dienstag, den 17.04.2018, 16:32 +0000 schrieb Alexis de Lattre:

> Dear OCA friends,


> As you know, it is often difficult to keep a database without duplicate entries in the partner table. Odoo users often create a new customer/supplier in the database without prior search to see if

> this customer/supplier already exists. I know that the CRM module has a tool to merge partners, but I'd like to work on technical solutions that would help prevent duplicates, instead of trying to

> fix them after they occur. I'm not trying to find a perfect solution that avoid all duplicates because I think it's impossible, but I'd like to find pragmatic solutions that would block as many

> duplicates as possible.


> I have several ideas for this ; each idea could be a module to develop in the OCA :


> * partner_email_unique :

> Would add an sql constraint on the email field. To make it more efficient, this module could also inherit create to strip() and lower() the email field, so that the constraint is more efficient.


> * partner_mobile_unique :

> Would add an sql constraint on the mobile field. To make it more efficient, it would depend on base_phone, so that we are sure that the phone fields are "clean" and written in the standard E.164

> format (+33 4 72 08 08 87).


> * partner_vat_unique :

> Would add a constraint on the vat field... but unfortunately the 'vat' field is synchronised between parent and child partners (cf

>, so we cannot just add an SQL constraint... We would also need to have "clean" VAT numbers (inherit create to strip(), upper() and replace(' ', '')). Ideas are welcomed to find

> another option than SQL constraint without too much performance impact.


> This could be extended to country-specific company numbers via localization modules...


> Obviously, it is not possible to put a unique constraint on the phone nor fax field (in the same company/family, several people may share the same fixed phone or fax number). It would also be

> stupid to put a constraint on the name field, as several people can have the same name.


> SQL constraint should certainly include the 'company_id' field (i.e. "unique(email, company_id)"), because, in multi-company environments, partners are sometimes not shared between companies.


> All ideas and experiences are welcomed before I start to write modules on this topic. I haven't searched deeply if there are existing OCA modules on this topic, so please mention them if you know

> some.


> Regards,


Dr.-Ing. Frederik Kramer
initOS GmbH
An der Eisenbahn 1
21224 Rosengarten
Phone:  +49 4105 56156-12
Fax:    +49 4105 56156-10
Mobil:  +49 179 3901819
Dr.-Ing. Frederik Kramer & Dipl.-Ing. (FH) Torsten Francke

Sitz der Gesellschaft: Rosengarten – Klecken
Amtsgericht Tostedt, HRB 205226
Steuer-Nr: 15/200/53247
USt-IdNr.: DE815580155

Post to: