summaryrefslogtreecommitdiff
path: root/fixco_api/controllers/api_v1/sale.py
blob: abc853d0af9e2ece3f0175e7ce067151670d328d (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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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)

    @http.route(prefix + 'sale/create', auth='public', methods=['POST', 'OPTIONS'], csrf=False)
    @controller.Controller.must_authorized()
    def create_sale_order(self, **kw):
        partner_id = int(kw.get('partner_id'), 0)
        ref = kw.get('ref')
        params = {
            'partner_id': partner_id,
            'partner_shipping_id': partner_id,
            'partner_invoice_id': partner_id,
            'client_order_ref': ref,
            'company_id': 4,
            'currency_id': 12,
            'user_id': 8,
            'team_id': 6,
            'warehouse_id': 4,
            'state': 'draft',
            'picking_policy': 'direct'
        }
        sale_order = request.env['sale.order'].create(params)
        return self.response({
            'id': sale_order.id,
            'name': sale_order.name
        })