summaryrefslogtreecommitdiff
path: root/indoteknik_api
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_api')
-rw-r--r--indoteknik_api/controllers/api_v1/partner.py57
-rw-r--r--indoteknik_api/controllers/api_v1/user.py32
-rw-r--r--indoteknik_api/models/res_users.py7
-rw-r--r--indoteknik_api/models/sale_order.py4
4 files changed, 93 insertions, 7 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py
index 09b3caa0..8c7dbd57 100644
--- a/indoteknik_api/controllers/api_v1/partner.py
+++ b/indoteknik_api/controllers/api_v1/partner.py
@@ -81,3 +81,60 @@ class Partner(controller.Controller):
'id': partner.id,
})
+ @http.route(prefix + 'partner/<id>', auth='public', methods=['PUT', 'OPTIONS'], csrf=False)
+ def write_partner_by_id(self, **kw):
+ if not self.authenticate():
+ return self.response(code=401, description='Unauthorized')
+
+ params = self.get_request_params(kw, {
+ 'id': ['required', 'number'],
+ 'name': [],
+ 'company_type_id': ['number'],
+ 'industry_id': ['number'],
+ 'tax_name': ['alias:nama_wajib_pajak'],
+ 'npwp': [],
+ })
+
+ if not params['valid']:
+ return self.response(code=400, description=params)
+
+ 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({
+ 'id': partner.id
+ })
+
+ @http.route(prefix + 'partner/industry', auth='public', methods=['GET', 'OPTIONS'])
+ def get_partner_industry(self):
+ if not self.authenticate():
+ return self.response(code=401, description='Unauthorized')
+
+ partner_industry = request.env['res.partner.industry'].search([])
+ data = []
+ for industry in partner_industry:
+ data.append({
+ 'id': industry.id,
+ 'name': industry.name
+ })
+
+ return self.response(data)
+
+ @http.route(prefix + 'partner/company_type', auth='public', methods=['GET', 'OPTIONS'])
+ def get_partner_company_type(self):
+ if not self.authenticate():
+ return self.response(code=401, description='Unauthorized')
+
+ partner_company_type = request.env['res.partner.company_type'].search([])
+ data = []
+ for company_type in partner_company_type:
+ data.append({
+ 'id': company_type.id,
+ 'name': company_type.name
+ })
+
+ return self.response(data)
+
diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py
index 17bc931e..800f6bf1 100644
--- a/indoteknik_api/controllers/api_v1/user.py
+++ b/indoteknik_api/controllers/api_v1/user.py
@@ -3,6 +3,7 @@ from odoo import http
from odoo.http import request
from odoo.tools.config import config
import random, string
+from difflib import SequenceMatcher
class User(controller.Controller):
@@ -62,20 +63,43 @@ class User(controller.Controller):
return self.response(code=400, description='email, name and password is required')
user = self.get_user_by_email(email)
-
if user:
return self.response({
'register': False,
'reason': 'EMAIL_USED'
})
-
- user = request.env['res.users'].create({
+
+ user_data = {
'name': name,
'login': email,
'password': password,
'active': False,
'sel_groups_1_9_10': 9
- })
+ }
+
+ user = request.env['res.users'].create(user_data)
+
+ company = kw.get('company', False)
+ if company:
+ parameter = [
+ ('company_type', '=', 'company'),
+ ('name', 'ilike', company)
+ ]
+ match_company = request.env['res.partner'].search(parameter, limit=1)
+ match_ratio = 0
+ if match_company:
+ match_ratio = SequenceMatcher(None, match_company.name, company).ratio()
+ if match_ratio > 0.7:
+ request.env['user.company.request'].create({
+ 'user_id': user.partner_id.id,
+ 'user_company_id': match_company.id,
+ 'user_input': company
+ })
+ else:
+ new_company = request.env['res.partner'].create({
+ 'name': company
+ })
+ user.parent_id = new_company.id
return self.response({'register': True})
diff --git a/indoteknik_api/models/res_users.py b/indoteknik_api/models/res_users.py
index 99a3838d..5032f3af 100644
--- a/indoteknik_api/models/res_users.py
+++ b/indoteknik_api/models/res_users.py
@@ -7,6 +7,7 @@ class ResUsers(models.Model):
def api_single_response(self, res_user, with_detail=''):
data = {
'id': res_user.id,
+ 'parent_id': res_user.parent_id.id or False,
'partner_id': res_user.partner_id.id,
'name': res_user.name,
'email': res_user.login,
@@ -32,7 +33,11 @@ class ResUsers(models.Model):
'city': None,
'district': None,
'sub_district': None,
- 'zip': user.zip or ''
+ 'zip': user.zip or '',
+ 'company_type_id': user.company_type_id.id or None,
+ 'industry_id': user.industry_id.id or None,
+ 'tax_name': user.nama_wajib_pajak or '',
+ 'npwp': user.npwp or '',
}
if user.kota_id:
diff --git a/indoteknik_api/models/sale_order.py b/indoteknik_api/models/sale_order.py
index 66ef27fa..ca6baff0 100644
--- a/indoteknik_api/models/sale_order.py
+++ b/indoteknik_api/models/sale_order.py
@@ -33,9 +33,9 @@ class SaleOrder(models.Model):
picking_count['assigned'] += 1
if picking.state == 'done':
picking_count['done'] += 1
- if picking_count['assigned'] > 0:
+ if picking_count['done'] > 0:
data['status'] = 'shipping'
- if picking_count['done'] > 0:
+ if picking_count['assigned'] > 0:
data['status'] = 'partial_shipping'
if sale_order.state == 'done':
data['status'] = 'done'