diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2024-10-25 08:47:36 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2024-10-25 08:47:36 +0700 |
| commit | 9fa80c62cdffec5b91aaf2a2899d70d0f507c2e4 (patch) | |
| tree | 93ae8d82f774345f650bc8d072dea759c6e33363 /indoteknik_api/controllers/api_v1 | |
| parent | a21c5fe37529b2d2259d3b86d8e98730b2bc8513 (diff) | |
| parent | a7be93f4825967807f12e6bfbebcf090af8500fa (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/api_v1')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/__init__.py | 3 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/city.py | 12 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/partner.py | 7 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/product.py | 1 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/state.py | 24 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/user.py | 43 |
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 |
