summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/user_company_request.py
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-10-02 15:10:46 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-10-02 15:10:46 +0700
commit27a603a8bc4750dcacd295e07144c5ce2621783c (patch)
treeef5f18bb29eb9defb3246b43a88f4afd6cc5fb4d /indoteknik_custom/models/user_company_request.py
parenta2d93b35cc849d742e851f5d876557ac18c1a9e1 (diff)
cr estimated shipping price + cr user company request
Diffstat (limited to 'indoteknik_custom/models/user_company_request.py')
-rw-r--r--indoteknik_custom/models/user_company_request.py34
1 files changed, 33 insertions, 1 deletions
diff --git a/indoteknik_custom/models/user_company_request.py b/indoteknik_custom/models/user_company_request.py
index d540b0f6..1b3434b1 100644
--- a/indoteknik_custom/models/user_company_request.py
+++ b/indoteknik_custom/models/user_company_request.py
@@ -1,4 +1,4 @@
-from odoo import models, fields
+from odoo import models, fields, api
from odoo.exceptions import UserError
from odoo.http import request
@@ -13,6 +13,38 @@ class UserCompanyRequest(models.Model):
('approved', 'Approve'),
('rejected', 'Reject'),
], string='Approval')
+ similar_company_ids = fields.Many2many('res.partner', compute="_compute_similar_companies", string="Similar Companies")
+
+ @api.depends('user_input')
+ def _compute_similar_companies(self):
+ for record in self:
+ if record.user_input:
+ record.similar_company_ids = [(6, 0, self.get_similar_companies(record.user_input))]
+ else:
+ record.similar_company_ids = [(6, 0, [])]
+
+ def get_similar_companies(self, user_input):
+ query = """
+ SELECT id
+ FROM res_partner
+ WHERE levenshtein(name::text, %s) < 3
+ ORDER BY levenshtein(name::text, %s) ASC
+ """
+ self.env.cr.execute(query, (user_input, user_input))
+ return [row[0] for row in self.env.cr.fetchall()]
+
+ def get_similar_companies(self, user_input):
+ query = """
+ SELECT id
+ FROM res_partner
+ WHERE name ILIKE %s OR levenshtein(name::text, %s) < 3
+ ORDER BY levenshtein(name::text, %s) ASC
+ """
+ # Using '%' to match the partial company name
+ self.env.cr.execute(query, ('%' + user_input + '%', user_input, user_input))
+ company_ids = [row[0] for row in self.env.cr.fetchall()]
+ return company_ids
+
def write(self, vals):
user = self.get_user_by_email(self.user_id.email)