diff options
| author | IT Fixcomart <it@fixcomart.co.id> | 2024-03-12 04:56:55 +0000 |
|---|---|---|
| committer | IT Fixcomart <it@fixcomart.co.id> | 2024-03-12 04:56:55 +0000 |
| commit | f43c76e2e7fb1a2e46f6e698afb1da74961cad50 (patch) | |
| tree | 18b80d3d6dd74022f01d0663d4a349be6c662193 /indoteknik_api/controllers | |
| parent | 41056a3fcf9cf80ac3609ab32223ffbac5b3ad83 (diff) | |
| parent | b7b71be97a73f454f2df9fd9a37f5017c82192ae (diff) | |
Merged in feature/web-sale-approval (pull request #136)
Feature/web sale approval
Diffstat (limited to 'indoteknik_api/controllers')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/sale_order.py | 74 |
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): |
