from .. import controller from odoo import http from odoo.http import request class Sales(controller.Controller): _name = 'sale.order' prefix = '/api/v1/' @http.route(prefix + 'sale/', auth='public', methods=['GET', 'OPTIONS']) @controller.Controller.must_authorized() def get_sale_order(self, **kw): sale_id = int(kw.get('id', '0')) ref = str(kw.get('ref', '0')) if sale_id == 0 and ref == '0': return self.response(code=500, description='Internal Server Error') if sale_id > 0: query = [('id', '=', sale_id)] else: query = [('client_order_ref', '=', ref)] sale_order = request.env['sale.order'].search(query) data = [] for sale in sale_order: data.append({ 'id': sale.id, 'name': sale.name, 'partner_id': sale.partner_id.id, 'partner_name': sale.partner_id.name, 'date_order': str(sale.date_order), 'ref': sale.client_order_ref, 'details': [request.env['sale.order.line'].api_single_response(x) for x in sale.order_line] }) return self.response(data)