diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2024-10-02 15:10:46 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2024-10-02 15:10:46 +0700 |
| commit | 27a603a8bc4750dcacd295e07144c5ce2621783c (patch) | |
| tree | ef5f18bb29eb9defb3246b43a88f4afd6cc5fb4d /indoteknik_custom/models/user_company_request.py | |
| parent | a2d93b35cc849d742e851f5d876557ac18c1a9e1 (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.py | 34 |
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) |
