summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2024-03-12 04:56:55 +0000
committerIT Fixcomart <it@fixcomart.co.id>2024-03-12 04:56:55 +0000
commitf43c76e2e7fb1a2e46f6e698afb1da74961cad50 (patch)
tree18b80d3d6dd74022f01d0663d4a349be6c662193 /indoteknik_api/controllers/api_v1
parent41056a3fcf9cf80ac3609ab32223ffbac5b3ad83 (diff)
parentb7b71be97a73f454f2df9fd9a37f5017c82192ae (diff)
Merged in feature/web-sale-approval (pull request #136)
Feature/web sale approval
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py74
1 files changed, 70 insertions, 4 deletions
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index 62f20ed8..53a9b127 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -79,12 +79,14 @@ class SaleOrder(controller.Controller):
('name', 'ilike', '%' + name + '%'),
('partner_purchase_order_name', 'ilike', '%' + name + '%')
]
+
sale_orders = request.env['sale.order'].search(
domain, offset=offset, limit=limit)
data = {
'sale_order_total': request.env['sale.order'].search_count(domain),
'sale_orders': [request.env['sale.order'].api_v1_single_response(x) for x in sale_orders]
}
+
return self.response(data)
@http.route(PREFIX_PARTNER + 'sale_order/<id>', auth='public', method=['GET', 'OPTIONS'])
@@ -102,8 +104,7 @@ class SaleOrder(controller.Controller):
data = {}
sale_order = request.env['sale.order'].search(domain)
if sale_order:
- data = request.env['sale.order'].api_v1_single_response(
- sale_order, context='with_detail')
+ data = request.env['sale.order'].api_v1_single_response(sale_order, context='with_detail')
return self.response(data)
@@ -117,8 +118,7 @@ class SaleOrder(controller.Controller):
if not params['valid']:
return self.response(code=400, description=params)
- partner_child_ids = self.get_partner_child_ids(
- params['value']['partner_id'])
+ partner_child_ids = self.get_partner_child_ids(params['value']['partner_id'])
domain = [
('id', '=', params['value']['id']),
('partner_id', 'in', partner_child_ids)
@@ -131,6 +131,72 @@ class SaleOrder(controller.Controller):
sale_order, context='with_detail')
return self.response(data)
+
+ @http.route(PREFIX_PARTNER + 'sale_order/<id>/approve', auth='public', method=['POST', 'OPTIONS'], csrf=False)
+ @controller.Controller.must_authorized(private=True, private_key='partner_id')
+ def partner_approve_sale_order_by_id(self, **kw):
+ params = self.get_request_params(kw, {
+ 'partner_id': ['number'],
+ 'id': ['number']
+ })
+
+ if not params['valid']:
+ return self.response(code=400, description=params)
+
+ value = params['value']
+ partner_child_ids = self.get_partner_child_ids(value['partner_id'])
+
+ sale_order = request.env['sale.order'].search([
+ ('id', '=', value['id']),
+ ('partner_id', 'in', partner_child_ids)
+ ])
+ if not sale_order:
+ return self.response(code=404, description='Sale Order not found')
+
+ partner = request.env['res.partner'].browse(value['partner_id'])
+ if not partner.web_role:
+ return self.response(code=400, description='Unauthorized')
+
+ if partner.web_role:
+ sale_order.web_approval = 'cust_%s' % partner.web_role
+
+ if sale_order.web_approval == 'cust_director':
+ sale_order.approval_status = 'pengajuan1'
+
+ return self.response('success')
+
+ @http.route(PREFIX_PARTNER + 'sale_order/<id>/reject', auth='public', method=['POST', 'OPTIONS'], csrf=False)
+ @controller.Controller.must_authorized(private=True, private_key='partner_id')
+ def partner_reject_sale_order_by_id(self, **kw):
+ params = self.get_request_params(kw, {
+ 'partner_id': ['number'],
+ 'id': ['number']
+ })
+
+ if not params['valid']:
+ return self.response(code=400, description=params)
+
+ value = params['value']
+ partner_child_ids = self.get_partner_child_ids(value['partner_id'])
+
+ sale_order = request.env['sale.order'].search([
+ ('id', '=', value['id']),
+ ('partner_id', 'in', partner_child_ids)
+ ])
+ if not sale_order:
+ return self.response(code=404, description='Sale Order not found')
+
+ partner = request.env['res.partner'].browse(value['partner_id'])
+ if not partner.web_role:
+ return self.response(code=400, description='Unauthorized')
+
+ if partner.web_role:
+ sale_order.web_approval = 'cust_%s' % partner.web_role
+
+ sale_order.state = 'cancel'
+ sale_order.approval_status = False
+
+ return self.response('success')
@http.route(PREFIX_PARTNER + 'sale_order/<id>/upload_po', auth='public', method=['POST', 'OPTIONS'], csrf=False)
def partner_upload_po_sale_order(self, **kw):