summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-02-06 13:14:25 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-02-06 13:14:25 +0700
commit11ef44bdb2695125048fe7fcfea25dbf459a3d9e (patch)
treeaf354af3e67e82ff2d688e23ab4ba62cf1986505
parentca7134968517df39a25950b4749f5b320f8e04ef (diff)
add levenshtein to duplikat name contact alert
-rw-r--r--indoteknik_custom/models/res_partner.py19
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