diff options
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/sale_order.py | 97 |
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') |
