summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py97
1 files changed, 82 insertions, 15 deletions
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index a8c5bacc..d69f40a4 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -5,18 +5,84 @@ import json
class SaleOrder(controller.Controller):
prefix = '/api/v1/'
+ PREFIX_PARTNER = prefix + 'partner/<partner_id>/'
- @http.route(prefix + 'sale_order/checkout', auth='public', method=['POST', 'OPTIONS'], csrf=False)
- def create_sale_order(self, **kw):
- if not self.authenticate():
- return self.response(code=401, description='Unauthorized')
+ @http.route(PREFIX_PARTNER + 'sale_order', auth='public', method=['GET', 'OPTIONS'])
+ def get_partner_sale_order(self, **kw):
+ user_token = self.authenticate()
+ if not user_token:
+ return self.unauthorized_response()
+
+ params = self.get_request_params(kw, {
+ 'partner_id': ['number'],
+ 'name': [],
+ 'limit': ['default:0', 'number'],
+ 'offset': ['default:0', 'number'],
+ })
+ limit = params['value']['limit']
+ offset = params['value']['offset']
+ if not user_token['partner_id'] == params['value']['partner_id']:
+ return self.unauthorized_response()
+ if not params['valid']:
+ return self.response(code=400, description=params)
+
+ partner_child_ids = self.get_partner_child_ids(params['value']['partner_id'])
+ domain = [('partner_id', 'in', partner_child_ids)]
+ 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'])
+ def partner_get_sale_order_detail(self, **kw):
+ user_token = self.authenticate()
+ if not user_token:
+ return self.unauthorized_response()
+
+ params = self.get_request_params(kw, {
+ 'partner_id': ['number'],
+ 'id': ['number']
+ })
+ if not user_token['partner_id'] == params['value']['partner_id']:
+ return self.unauthorized_response()
+ if not params['valid']:
+ return self.response(code=400, description=params)
+
+ partner_child_ids = self.get_partner_child_ids(params['value']['partner_id'])
+ domain = [
+ ('id', '=', params['value']['id']),
+ ('partner_id', 'in', partner_child_ids)
+ ]
+ sale_order = request.env['sale.order'].search(domain)
+
+ return
+
+ @http.route(PREFIX_PARTNER + 'sale_order/checkout', auth='public', method=['POST', 'OPTIONS'], csrf=False)
+ def create_partner_sale_order(self, **kw):
+ user_token = self.authenticate()
+ if not user_token:
+ return self.unauthorized_response()
product_pricelist_default_discount_id = request.env['ir.config_parameter'].get_param('product.pricelist.default_discount_id')
product_pricelist_default_discount_id = int(product_pricelist_default_discount_id)
+
+ params = self.get_request_params(kw, {
+ 'partner_id': ['number'],
+ 'partner_shipping_id': ['required', 'number'],
+ 'partner_invoice_id': ['required', 'number'],
+ 'order_line': ['required', 'default:[]'],
+ 'po_number': [],
+ 'po_file': [],
+ })
+
+ if not user_token['partner_id'] == params['value']['partner_id']:
+ return self.unauthorized_response()
- partner_id = kw.get('partner_id')
- partner_shipping_id = kw.get('partner_shipping_id')
- partner_invoice_id = kw.get('partner_invoice_id')
+ if not params['valid']:
+ return self.response(code=400, description=params)
+
parameters = {
'warehouse_id': 8,
'carrier_id': 1,
@@ -28,15 +94,16 @@ class SaleOrder(controller.Controller):
'currency_id': 12,
'state': 'draft',
'picking_policy': 'direct',
- 'partner_id': partner_id,
- 'partner_shipping_id': partner_shipping_id,
- 'real_shipping_id': partner_shipping_id,
- 'partner_invoice_id': partner_invoice_id
+ 'partner_id': params['value']['partner_id'],
+ 'partner_shipping_id': params['value']['partner_shipping_id'],
+ 'real_shipping_id': params['value']['partner_shipping_id'],
+ 'partner_invoice_id': params['value']['partner_invoice_id'],
+ 'partner_purchase_order_name': params['value']['po_number'],
+ 'partner_purchase_order_file': params['value']['po_file']
}
sale_order = request.env['sale.order'].create([[parameters]])
- order_line = kw.get('order_line', "[]")
- order_line = json.loads(order_line)
+ order_line = json.loads(params['value']['order_line'])
parameters = []
for line in order_line:
price = request.env['product.pricelist'].compute_price(product_pricelist_default_discount_id, line['product_id'])
@@ -57,7 +124,7 @@ class SaleOrder(controller.Controller):
@http.route('/api/sale_order/invoiced', auth='public', methods=['GET'])
def get_sale_order_invoiced_by_partner_id(self, **kw):
if not self.authenticate():
- return self.response(code=401, description='Unauthorized')
+ return self.unauthorized_response()
partner_id = kw.get('partner_id')
if not partner_id:
@@ -102,7 +169,7 @@ class SaleOrder(controller.Controller):
@http.route('/api/sale_order/invoiced/detail', auth='public', methods=['GET'])
def get_sale_order_invoiced_detail_by_partner(self, **kw):
if not self.authenticate():
- return self.response(code=401, description='Unauthorized')
+ return self.unauthorized_response()
id = kw.get('id')
partner_id = kw.get('partner_id')