summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1/sale_order.py
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_api/controllers/api_v1/sale_order.py')
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py58
1 files changed, 57 insertions, 1 deletions
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index 05946f77..5604a86c 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -1,9 +1,65 @@
from .. import controller
from odoo import http
from odoo.http import request
-
+import json
class SaleOrder(controller.Controller):
+ prefix = '/api/v1/'
+
+ @http.route(prefix + 'sale_order/checkout', auth='public', method=['POST', 'OPTIONS'], csrf=False)
+ def create_sale_order(self, **kw):
+ if not self.authenticate():
+ return self.response(code=401, description='Unauthorized')
+
+ user_id = kw.get('user_id')
+
+ is_verify = self.verify_user_token(user_id)
+ if not is_verify:
+ return self.response(code=401, description='Unauthorized')
+
+ product_pricelist_default_discount_id = request.env['ir.config_parameter'].get_param('product.pricelist.default_discount_id')
+ product_pricelist_default_discount_id = int(product_pricelist_default_discount_id)
+
+ partner_id = kw.get('partner_id')
+ partner_shipping_id = kw.get('partner_shipping_id')
+ partner_invoice_id = kw.get('partner_invoice_id')
+ parameters = {
+ 'warehouse_id': 8,
+ 'carrier_id': 1,
+ 'sales_tax_id': 23,
+ 'pricelist_id': product_pricelist_default_discount_id,
+ 'payment_term_id': 26,
+ 'team_id': 2,
+ 'company_id': 1,
+ 'currency_id': 12,
+ 'state': 'draft',
+ 'picking_policy': 'direct',
+ 'partner_id': partner_id,
+ 'partner_shipping_id': partner_shipping_id,
+ 'real_shipping_id': partner_shipping_id,
+ 'partner_invoice_id': partner_invoice_id
+ }
+ sale_order = request.env['sale.order'].create([[parameters]])
+
+ order_line = kw.get('order_line', "[]")
+ order_line = json.loads(order_line)
+ parameters = []
+ for line in order_line:
+ price = request.env['product.pricelist'].compute_price(product_pricelist_default_discount_id, line['product_id'])
+ parameters.append({
+ 'company_id': 1,
+ 'order_id': sale_order.id,
+ 'product_id': line['product_id'],
+ 'product_uom_qty': line['quantity'],
+ 'price_subtotal': price['price'],
+ 'discount': price['discount_percentage']
+ })
+ request.env['sale.order.line'].create(parameters)
+ return self.response({
+ 'id': sale_order.id,
+ 'name': sale_order.name
+ })
+
@http.route('/api/sale_order/invoiced', auth='public', methods=['GET'])
def get_sale_order_invoiced_by_partner_id(self, **kw):
if not self.authenticate():