diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2025-02-06 13:14:25 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2025-02-06 13:14:25 +0700 |
| commit | 11ef44bdb2695125048fe7fcfea25dbf459a3d9e (patch) | |
| tree | af354af3e67e82ff2d688e23ab4ba62cf1986505 | |
| parent | ca7134968517df39a25950b4749f5b320f8e04ef (diff) | |
add levenshtein to duplikat name contact alert
| -rw-r--r-- | indoteknik_custom/models/res_partner.py | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index 3c5e0e05..844d47f9 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -188,14 +188,17 @@ class ResPartner(models.Model): def _check_duplicate_name(self): for record in self: if record.name: - # Mencari partner lain yang memiliki nama sama (case-insensitive) - existing_partner = self.env['res.partner'].search([ - ('id', '!=', record.id), # Hindari mencocokkan diri sendiri - ('name', 'ilike', record.name) # Case-insensitive search - ], limit=1) - - if existing_partner: - raise ValidationError(f"Nama '{record.name}' sudah digunakan oleh partner lain!") + query = """ + SELECT name FROM res_partner + WHERE id != %s + AND levenshtein(lower(name), lower(%s)) <= 1 + LIMIT 1 + """ + self.env.cr.execute(query, (record.id, record.name)) + duplicate = self.env.cr.fetchone() + + if duplicate: + raise ValidationError(f"Nama '{record.name}' mirip dengan '{duplicate[0]}', harap gunakan nama yang unik!") def write(self, vals): # Fungsi rekursif untuk meng-update semua child, termasuk child dari child |
