summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2023-10-06 14:22:12 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2023-10-06 14:22:12 +0700
commit5f9c6e2837c8201ca8132f3d3d71627bf799fb6d (patch)
treedf2b9d4d0b52a6cf8d45d153dff977e04785abb2 /indoteknik_api/controllers
parentbb3c3c6cac4382220ae8a521e8c2162a5fe3d3e9 (diff)
parent7a23a18a45fbd38fabc33f4e1a74d9f31e86cd60 (diff)
Merge branch 'production' of bitbucket.org:altafixco/indoteknik-addons into production
Diffstat (limited to 'indoteknik_api/controllers')
-rw-r--r--indoteknik_api/controllers/api_v1/cart.py2
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py19
-rw-r--r--indoteknik_api/controllers/api_v1/voucher.py2
-rw-r--r--indoteknik_api/controllers/controller.py12
4 files changed, 21 insertions, 14 deletions
diff --git a/indoteknik_api/controllers/api_v1/cart.py b/indoteknik_api/controllers/api_v1/cart.py
index cb0f5a99..88fa9f88 100644
--- a/indoteknik_api/controllers/api_v1/cart.py
+++ b/indoteknik_api/controllers/api_v1/cart.py
@@ -18,7 +18,7 @@ class Cart(controller.Controller):
carts = user_cart.search(query, limit=limit, offset=offset, order='create_date desc')
data = {
'product_total': user_cart.search_count(query),
- 'products': carts.get_products()
+ 'products': carts.with_context(price_for="web").get_products()
}
return self.response(data)
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index ef4c2688..8209c751 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -236,14 +236,15 @@ class SaleOrder(controller.Controller):
voucher_code = kw.get('voucher')
source = kw.get('source')
voucher = request.env['voucher'].search([('code', '=', voucher_code)], limit=1)
- result = cart.get_user_checkout(user_id, voucher, source)
+ result = cart.with_context(price_for="web").get_user_checkout(user_id, voucher, source)
return self.response(result)
@http.route(PREFIX_PARTNER + 'sale_order/checkout', auth='public', method=['POST', 'OPTIONS'], csrf=False)
@controller.Controller.must_authorized(private=True, private_key='partner_id')
def create_partner_sale_order(self, **kw):
config = request.env['ir.config_parameter']
- product_pricelist_default_discount_id = int(config.get_param('product.pricelist.default_discount_id'))
+ product_pricelist_default_discount_id = int(config.get_param('product.pricelist.tier1_v2'))
+ user_pricelist = request.env.context.get('user_pricelist').id or False
params = self.get_request_params(kw, {
'user_id': ['number'],
@@ -268,8 +269,8 @@ class SaleOrder(controller.Controller):
parameters = {
'warehouse_id': 8,
'carrier_id': 1,
- 'sales_tax_id': 20,
- 'pricelist_id': product_pricelist_default_discount_id,
+ 'sales_tax_id': 23,
+ 'pricelist_id': user_pricelist or product_pricelist_default_discount_id,
'payment_term_id': 26,
'team_id': 2,
'company_id': 1,
@@ -301,18 +302,19 @@ class SaleOrder(controller.Controller):
source = params['value']['source']
carts = user_cart.get_product_by_user(user_id=user_id, selected=True, source=source)
- order_lines = []
promotions = []
for cart in carts:
if cart['cart_type'] == 'product':
- order_lines.append({
+ order_line = request.env['sale.order.line'].create({
'company_id': 1,
'order_id': sale_order.id,
- 'price_unit': cart['price']['price'],
- 'discount': cart['price']['discount_percentage'],
'product_id': cart['id'],
'product_uom_qty': cart['quantity']
})
+ order_line.product_id_change()
+ order_line.onchange_vendor_id()
+ order_line.price_unit = cart['price']['price']
+ order_line.discount = cart['price']['discount_percentage']
elif cart['cart_type'] == 'promotion':
promotions.append({
'order_id': sale_order.id,
@@ -320,7 +322,6 @@ class SaleOrder(controller.Controller):
'quantity': cart['quantity']
})
- request.env['sale.order.line'].create(order_lines)
request.env['sale.order.promotion'].create(promotions)
if len(promotions) > 0:
diff --git a/indoteknik_api/controllers/api_v1/voucher.py b/indoteknik_api/controllers/api_v1/voucher.py
index dfe9ceba..3c056ecd 100644
--- a/indoteknik_api/controllers/api_v1/voucher.py
+++ b/indoteknik_api/controllers/api_v1/voucher.py
@@ -20,7 +20,7 @@ class Voucher(controller.Controller):
if code:
visibility.append('private')
parameter += [('code', '=', code)]
- user_pricelist = request.env.user_pricelist
+ user_pricelist = request.env.context.get('user_pricelist')
if user_pricelist:
parameter += [('excl_pricelist_ids', 'not in', [user_pricelist.id])]
diff --git a/indoteknik_api/controllers/controller.py b/indoteknik_api/controllers/controller.py
index 08b3084e..12305d92 100644
--- a/indoteknik_api/controllers/controller.py
+++ b/indoteknik_api/controllers/controller.py
@@ -21,9 +21,12 @@ class Controller(http.Controller):
def inner_wrapper(*args, **kwargs):
self = args[0]
auth = self.authenticate()
- request.env.user_pricelist = self.user_pricelist()
+
if not auth:
return self.unauthorized_response()
+
+ self.set_user_pricelist_ctx()
+
if private:
auth_key = int(auth[private_key])
param_key = int(kwargs.get(private_key, -1))
@@ -56,13 +59,16 @@ class Controller(http.Controller):
result = user_token
return result
- def user_pricelist(self):
+ def set_user_pricelist_ctx(self):
user_token = self.authenticate()
pricelist = request.env['product.pricelist'].new()
if isinstance(user_token, dict):
partner = request.env['res.partner'].browse(user_token['partner_id'])
if partner: pricelist = partner.property_product_pricelist
- return pricelist
+
+ context = request.env.context.copy()
+ context.update({'user_pricelist': pricelist})
+ request.env.context = context
def get_request_params(self, kw, queries):
result = {