summaryrefslogtreecommitdiff
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
parenta2d93b35cc849d742e851f5d876557ac18c1a9e1 (diff)
cr estimated shipping price + cr user company request
-rw-r--r--indoteknik_api/controllers/api_v1/user.py2
-rw-r--r--indoteknik_custom/models/res_partner.py4
-rwxr-xr-xindoteknik_custom/models/sale_order.py5
-rw-r--r--indoteknik_custom/models/user_company_request.py34
-rw-r--r--indoteknik_custom/views/user_company_request.xml5
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"