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 | |
| parent | a2d93b35cc849d742e851f5d876557ac18c1a9e1 (diff) | |
cr estimated shipping price + cr user company request
| -rw-r--r-- | indoteknik_api/controllers/api_v1/user.py | 2 | ||||
| -rw-r--r-- | indoteknik_custom/models/res_partner.py | 4 | ||||
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 5 | ||||
| -rw-r--r-- | indoteknik_custom/models/user_company_request.py | 34 | ||||
| -rw-r--r-- | indoteknik_custom/views/user_company_request.xml | 5 |
5 files changed, 42 insertions, 8 deletions
diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py index 529873c0..52d773e2 100644 --- a/indoteknik_api/controllers/api_v1/user.py +++ b/indoteknik_api/controllers/api_v1/user.py @@ -163,7 +163,7 @@ class User(controller.Controller): query = """ SELECT name, levenshtein(name::text, %s) AS distance FROM res_partner - WHERE levenshtein(name::text, %s) < 3 + WHERE levenshtein(name::text, %s) < 3 ORDER BY distance ASC """ params = (business_name, business_name) diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index 2846c14b..25db16d0 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -18,8 +18,8 @@ class ResPartner(models.Model): ('pkp', 'PKP'), ('nonpkp', 'Non PKP') ]) - sppkp = fields.Char(string="SPPKP", tracking=3) - npwp = fields.Char(string="NPWP", tracking=3) + sppkp = fields.Char(string="SPPKP", tracking=True) + npwp = fields.Char(string="NPWP", tracking=True) counter = fields.Integer(string="Counter", default=0) leadtime = fields.Integer(string="Leadtime", default=0) digital_invoice_tax = fields.Boolean(string="Digital Invoice & Faktur Pajak") diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index 8c506c47..2b20a533 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -145,8 +145,9 @@ class SaleOrder(models.Model): missing_weight_products.append(line.product_id.name) if missing_weight_products: - product_names = ', '.join(missing_weight_products) - self.message_post(body=f"Produk berikut tidak memiliki berat: {product_names}") + product_names = '\n'.join(missing_weight_products) + self.message_post(body=f"Produk berikut tidak memiliki berat: \n{product_names}") + if total_weight == 0: raise UserError("Tidak dapat mengestimasi ongkir tanpa berat yang valid.") 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) diff --git a/indoteknik_custom/views/user_company_request.xml b/indoteknik_custom/views/user_company_request.xml index c9edd3f8..38340081 100644 --- a/indoteknik_custom/views/user_company_request.xml +++ b/indoteknik_custom/views/user_company_request.xml @@ -4,7 +4,7 @@ <field name="name">user.company.request.tree</field> <field name="model">user.company.request</field> <field name="arch" type="xml"> - <tree create="0" default_order="create_date desc"> + <tree create="1" default_order="create_date desc"> <field name="user_id"/> <field name="user_company_id"/> <field name="user_input"/> @@ -28,7 +28,8 @@ <group> <group> <field name="user_id" readonly="1"/> - <field name="user_company_id" readonly="1"/> + <field name="similar_company_ids" invisible="1"/> + <field name="user_company_id" domain="[('id', 'in', similar_company_ids)]"/> <field name="user_input" readonly="1"/> <field name="is_approve" |
