summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2024-10-25 08:47:36 +0700
committerit-fixcomart <it@fixcomart.co.id>2024-10-25 08:47:36 +0700
commit9fa80c62cdffec5b91aaf2a2899d70d0f507c2e4 (patch)
tree93ae8d82f774345f650bc8d072dea759c6e33363 /indoteknik_api/controllers
parenta21c5fe37529b2d2259d3b86d8e98730b2bc8513 (diff)
parenta7be93f4825967807f12e6bfbebcf090af8500fa (diff)
Merge branch 'production' into iman/switch-account
# Conflicts: # indoteknik_api/controllers/api_v1/user.py # indoteknik_custom/models/user_company_request.py
Diffstat (limited to 'indoteknik_api/controllers')
-rw-r--r--indoteknik_api/controllers/api_v1/__init__.py3
-rw-r--r--indoteknik_api/controllers/api_v1/city.py12
-rw-r--r--indoteknik_api/controllers/api_v1/partner.py7
-rw-r--r--indoteknik_api/controllers/api_v1/product.py1
-rw-r--r--indoteknik_api/controllers/api_v1/state.py24
-rw-r--r--indoteknik_api/controllers/api_v1/user.py43
6 files changed, 68 insertions, 22 deletions
diff --git a/indoteknik_api/controllers/api_v1/__init__.py b/indoteknik_api/controllers/api_v1/__init__.py
index 2d774071..6f27eec5 100644
--- a/indoteknik_api/controllers/api_v1/__init__.py
+++ b/indoteknik_api/controllers/api_v1/__init__.py
@@ -28,4 +28,5 @@ from . import midtrans
from . import wati
from . import courier
from . import voucher
-from . import stock_picking \ No newline at end of file
+from . import stock_picking
+from . import state \ No newline at end of file
diff --git a/indoteknik_api/controllers/api_v1/city.py b/indoteknik_api/controllers/api_v1/city.py
index 6e0e3edb..afe92c4a 100644
--- a/indoteknik_api/controllers/api_v1/city.py
+++ b/indoteknik_api/controllers/api_v1/city.py
@@ -15,10 +15,16 @@ class City(controller.Controller):
name = '%' + name.replace(' ', '%') + '%'
parameters.append(('name', 'ilike', name))
- cities = request.env['vit.kota'].search(parameters)
+ state_id = kw.get('state_id')
+ if state_id:
+ parameters.append(('state_id', '=', int(state_id)))
+
+ districts = request.env['vit.kota'].search(parameters)
data = []
- for city in cities:
- data.append({ 'id': city.id, 'name': city.name })
+ for district in districts:
+ data.append({ 'id': district.id, 'name': district.name })
return self.response(data)
+
+
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py
index d1a41739..4189330c 100644
--- a/indoteknik_api/controllers/api_v1/partner.py
+++ b/indoteknik_api/controllers/api_v1/partner.py
@@ -13,6 +13,7 @@ class Partner(controller.Controller):
partner_child_ids = [x['id'] for x in partner.child_ids] + [partner.id]
if partner.parent_id:
partner_child_ids = [x['id'] for x in partner.parent_id.child_ids]
+ partner_child_ids += [partner.parent_id.id]
return partner_child_ids
@http.route(prefix + 'partner/<id>/list/site', auth='public', methods=['GET', 'OPTIONS'])
@@ -68,6 +69,7 @@ class Partner(controller.Controller):
'mobile': ['required'],
'phone': [''],
'street': ['required'],
+ 'state_id': ['required', 'number', 'alias:state_id'],
'city_id': ['required', 'number', 'alias:kota_id'],
'district_id': ['number', 'alias:kecamatan_id'],
'sub_district_id': ['number', 'alias:kelurahan_id', 'exclude_if_null'],
@@ -81,7 +83,7 @@ class Partner(controller.Controller):
partner = request.env[self._name].search([('id', '=', params['value']['id'])], limit=1)
if not partner:
return self.response(code=404, description='User not found')
-
+
partner.write(params['value'])
return self.response({
@@ -99,10 +101,11 @@ class Partner(controller.Controller):
'mobile': ['required'],
'phone': [''],
'street': ['required'],
+ 'state_id': ['required', 'number', 'alias:state_id'],
'city_id': ['required', 'number', 'alias:kota_id'],
'district_id': ['number', 'alias:kecamatan_id'],
'sub_district_id': ['number', 'alias:kelurahan_id', 'exclude_if_null'],
- 'zip': ['required'],
+ 'zip': ['required']
})
if not params['valid']:
diff --git a/indoteknik_api/controllers/api_v1/product.py b/indoteknik_api/controllers/api_v1/product.py
index e779e623..9673b3ef 100644
--- a/indoteknik_api/controllers/api_v1/product.py
+++ b/indoteknik_api/controllers/api_v1/product.py
@@ -74,7 +74,6 @@ class Product(controller.Controller):
if qty_available > 0:
qty = qty_available + total_adem + total_excell
- sla_date = '1 Hari'
elif qty_altama > 0 or qty_vendor > 0:
qty = total_adem if qty_altama > 0 else total_excell
sla_date = '2-4 Hari'
diff --git a/indoteknik_api/controllers/api_v1/state.py b/indoteknik_api/controllers/api_v1/state.py
new file mode 100644
index 00000000..598ef70b
--- /dev/null
+++ b/indoteknik_api/controllers/api_v1/state.py
@@ -0,0 +1,24 @@
+from .. import controller
+from odoo import http
+from odoo.http import request
+
+class District(controller.Controller):
+ prefix = '/api/v1/'
+
+ @http.route(prefix + 'state', auth='public', methods=['GET', 'OPTIONS'])
+ @controller.Controller.must_authorized()
+ def get_state(self, **kw):
+ parameters = []
+
+ name = kw.get('name')
+ if name:
+ name = '%' + name.replace(' ', '%') + '%'
+ parameters.append(('name', 'ilike', name))
+
+ states = request.env['res.country.state'].search(parameters)
+ data = []
+ for state in states:
+ data.append({ 'id': state.id, 'name': state.name })
+
+ return self.response(data)
+
diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py
index c490500c..e06a099f 100644
--- a/indoteknik_api/controllers/api_v1/user.py
+++ b/indoteknik_api/controllers/api_v1/user.py
@@ -94,7 +94,13 @@ class User(controller.Controller):
user = request.env['res.users'].create(user_data)
user.partner_id.email = email
-
+ user.partner_id.customer_type = 'nonpkp'
+ user.partner_id.npwp = '00.000.000.0-000.000'
+ user.partner_id.sppkp = '-'
+ user.partner_id.nama_wajib_pajak = user.name
+ user.partner_id.user_id = 3222
+ user.partner_id.property_account_receivable_id = 395
+ user.partner_id.property_account_payable_id = 438
data = {
'is_auth': True,
'user': self.response_with_token(user)
@@ -149,6 +155,7 @@ class User(controller.Controller):
'name': name,
'login': email,
'mobile': phone,
+ 'phone': phone,
'password': password,
'active': False,
'sel_groups_1_9_10': 9
@@ -158,20 +165,26 @@ class User(controller.Controller):
user.partner_id.email = email
user.partner_id.mobile = phone
- if type_acc == 'business':
- parameter = [
- ('company_type', '=', 'company'),
- ('name', 'ilike', business_name)
- ]
- match_company = request.env['res.partner'].search(parameter, limit=1)
- match_ratio = 0
- if match_company:
- match_ratio = SequenceMatcher(None, match_company.name, business_name).ratio()
- if match_ratio > 0.8:
+ if type_acc == 'business' and business_name:
+ # Eksekusi query SQL menggunakan Levenshtein distance
+ query = """
+ SELECT name, levenshtein(name::text, %s) AS distance
+ FROM res_partner
+ WHERE levenshtein(name::text, %s) < 3
+ ORDER BY distance ASC
+ """
+ params = (business_name, business_name)
+ request.env.cr.execute(query, params)
+ result = request.env.cr.fetchone()
+
+ if result:
+ match_company_name = result[0]
+ match_company_id = result[2]
+
# Create a user company request
request.env['user.company.request'].create({
'user_id': user.partner_id.id,
- 'user_company_id': match_company.id,
+ 'user_company_id': match_company_id,
'user_input': business_name
})
else:
@@ -235,7 +248,7 @@ class User(controller.Controller):
if type_acc == 'individu':
user.partner_id.customer_type = 'nonpkp'
- user.partner_id.npwp = '0.000.000.0-000.000'
+ user.partner_id.npwp = '00.000.000.0-000.000'
user.partner_id.sppkp = '-'
user.partner_id.nama_wajib_pajak = name
user.partner_id.user_id = 3222
@@ -255,7 +268,7 @@ class User(controller.Controller):
'activation_request': False,
'reason': None
}
-
+
user = self.get_user_by_email(email)
if not user:
response['reason'] = 'NOT_FOUND'
@@ -769,4 +782,4 @@ class User(controller.Controller):
response['status'] = False
# If no attachment is found, return status False
- return self.response(response)
+ return self.response(response) \ No newline at end of file