summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2024-06-28 06:52:12 +0000
committerIT Fixcomart <it@fixcomart.co.id>2024-06-28 06:52:12 +0000
commit9b1be7941edeb9faefa5e88ce10c1041d19c2ed0 (patch)
tree4f0ae35efb9be97f531e57903f1757eab341a9a6
parent0346d579b0db5969bf3a4e475cf8abb1b788cdd2 (diff)
parentec4aefc64a9f42d1b40d03048fc384e158191218 (diff)
Merged in dev/request-by-abl (pull request #148)
Dev/request by abl
-rw-r--r--indoteknik_api/controllers/api_v1/partner.py36
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py11
-rw-r--r--indoteknik_api/models/res_users.py1
3 files changed, 43 insertions, 5 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py
index e61c98c1..a6e14a19 100644
--- a/indoteknik_api/controllers/api_v1/partner.py
+++ b/indoteknik_api/controllers/api_v1/partner.py
@@ -7,6 +7,42 @@ class Partner(controller.Controller):
_name = 'res.partner'
prefix = '/api/v1/'
+ def get_partner_child_ids(self, partner_id):
+ partner = request.env[self._name].search([('id', '=', partner_id)], limit=1)
+ if not partner.parent_id:
+ 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]
+ return partner_child_ids
+
+ @http.route(prefix + 'partner/<id>/list/site', auth='public', methods=['GET', 'OPTIONS'])
+ @controller.Controller.must_authorized()
+ def get_list_partner_by_id(self, **kw):
+ params = self.get_request_params(kw, {
+ 'id': ['required', 'number']
+ })
+
+ if not params['valid']:
+ return self.response(code=400, description=params)
+
+ partner_id = params['value']['id']
+
+ partner_child_ids = self.get_partner_child_ids(partner_id)
+
+ partners = request.env['res.partner'].search([('id', 'in', partner_child_ids)])
+
+ site_names = set()
+ for partner in partners:
+ if partner.site_id:
+ site_names.add(partner.site_id.name)
+
+ data = {
+ 'sites': list(site_names)
+ }
+
+ return self.response(data)
+
+
@http.route(prefix + 'partner/<id>/address', auth='public', methods=['GET', 'OPTIONS'])
@controller.Controller.must_authorized()
def get_partner_address_by_id(self, **kw):
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index 1e5e8a66..f17e736f 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -52,6 +52,7 @@ class SaleOrder(controller.Controller):
params = self.get_request_params(kw, {
'partner_id': ['number'],
'name': [],
+ 'site': [],
'limit': ['default:0', 'number'],
'offset': ['default:0', 'number'],
'context': []
@@ -80,11 +81,11 @@ class SaleOrder(controller.Controller):
('partner_purchase_order_name', 'ilike', '%' + name + '%')
]
- # if params['value']['site']:
- # site = params['value']['site'].replace(' ', '%')
- # domain += [
- # ('partner_id.site_id.name', 'ilike', '%' + site + '%')
- # ]
+ if params['value']['site']:
+ site = params['value']['site'].replace(' ', '%')
+ domain += [
+ ('partner_id.site_id.name', 'ilike', '%' + site + '%')
+ ]
sale_orders = request.env['sale.order'].search(
domain, offset=offset, limit=limit)
diff --git a/indoteknik_api/models/res_users.py b/indoteknik_api/models/res_users.py
index 2124cd2e..d5dff876 100644
--- a/indoteknik_api/models/res_users.py
+++ b/indoteknik_api/models/res_users.py
@@ -19,6 +19,7 @@ class ResUsers(models.Model):
'id': res_user.id,
'parent_id': res_user.parent_id.id or None,
'parent_name': res_user.parent_id.name or None,
+ 'site': partner.site_id.name or None,
'partner_id': partner.id,
'name': res_user.name,
'email': res_user.login,