summaryrefslogtreecommitdiff
path: root/fixco_api
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2024-05-29 14:56:48 +0700
committerstephanchrst <stephanchrst@gmail.com>2024-05-29 14:56:48 +0700
commitf6bb7e8c0236c4a3b3c89101d13ca593d7170283 (patch)
tree2a50f25903873a91a6a6ca76cc30800e69969db1 /fixco_api
parent0f700ade1d878e3b7031c8abc5f7d1bdb6ccaaf7 (diff)
add api get sale order
Diffstat (limited to 'fixco_api')
-rw-r--r--fixco_api/controllers/api_v1/__init__.py3
-rw-r--r--fixco_api/controllers/api_v1/partner.py2
-rw-r--r--fixco_api/controllers/api_v1/sale.py35
-rw-r--r--fixco_api/models/__init__.py1
-rw-r--r--fixco_api/models/sale.py25
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