summaryrefslogtreecommitdiff
path: root/fixco_api/controllers/api_v1/sale.py
blob: cb60249f19c6b7b8ee6c3f0bfecd5499c06f59b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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)