diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2024-05-29 14:56:48 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2024-05-29 14:56:48 +0700 |
| commit | f6bb7e8c0236c4a3b3c89101d13ca593d7170283 (patch) | |
| tree | 2a50f25903873a91a6a6ca76cc30800e69969db1 /fixco_api | |
| parent | 0f700ade1d878e3b7031c8abc5f7d1bdb6ccaaf7 (diff) | |
add api get sale order
Diffstat (limited to 'fixco_api')
| -rw-r--r-- | fixco_api/controllers/api_v1/__init__.py | 3 | ||||
| -rw-r--r-- | fixco_api/controllers/api_v1/partner.py | 2 | ||||
| -rw-r--r-- | fixco_api/controllers/api_v1/sale.py | 35 | ||||
| -rw-r--r-- | fixco_api/models/__init__.py | 1 | ||||
| -rw-r--r-- | fixco_api/models/sale.py | 25 |
5 files changed, 64 insertions, 2 deletions
diff --git a/fixco_api/controllers/api_v1/__init__.py b/fixco_api/controllers/api_v1/__init__.py index 3f4a5ff..30fb10d 100644 --- a/fixco_api/controllers/api_v1/__init__.py +++ b/fixco_api/controllers/api_v1/__init__.py @@ -1 +1,2 @@ -from . import partner
\ No newline at end of file +from . import partner +from . import sale diff --git a/fixco_api/controllers/api_v1/partner.py b/fixco_api/controllers/api_v1/partner.py index 66e9db4..fa68c76 100644 --- a/fixco_api/controllers/api_v1/partner.py +++ b/fixco_api/controllers/api_v1/partner.py @@ -10,7 +10,7 @@ class Partner(controller.Controller): @http.route(prefix + 'partner/address/', auth='public', methods=['GET', 'OPTIONS']) @controller.Controller.must_authorized() def get_partner_address_by_id(self, **kw): - partner = request.env[self._name].search([('id', '=', 14)]) + partner = request.env['res.partner'].search([('id', '=', 14)]) # return self.response(partner) return self.response({ 'id': partner.id, diff --git a/fixco_api/controllers/api_v1/sale.py b/fixco_api/controllers/api_v1/sale.py new file mode 100644 index 0000000..cb60249 --- /dev/null +++ b/fixco_api/controllers/api_v1/sale.py @@ -0,0 +1,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) diff --git a/fixco_api/models/__init__.py b/fixco_api/models/__init__.py new file mode 100644 index 0000000..8a0dc04 --- /dev/null +++ b/fixco_api/models/__init__.py @@ -0,0 +1 @@ +from . import sale diff --git a/fixco_api/models/sale.py b/fixco_api/models/sale.py new file mode 100644 index 0000000..4c81fad --- /dev/null +++ b/fixco_api/models/sale.py @@ -0,0 +1,25 @@ +from odoo import models + + +class SaleOrder(models.Model): + _inherit = 'sale.order.line' + + def api_single_response(self, line): + tax = 0 + for taxes in line.tax_id: + tax = taxes.name + data = { + 'product_id': line.product_id.id, + 'product_name': line.product_id.name, + 'qty': line.product_uom_qty, + 'tax': tax, + 'price_unit': line.price_unit, + 'price_subtotal': line.price_subtotal, + 'price_tax': line.price_tax, + 'price_total': line.price_total, + 'price_reduce': line.price_reduce, + 'price_reduce_taxinc': line.price_reduce_taxinc, + 'price_reduce_taxexcl': line.price_reduce_taxexcl, + 'discount': line.discount, + } + return data |
