summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-10-05 10:07:40 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-10-05 10:07:40 +0700
commitc452ac57ec1266452d04bbf4c38191aaa6630186 (patch)
tree9fa8cf32c6d7ffb40a34877ef962b16f6cbfd499
parentb2c16c315455f5f1f7cc60c474435c6b9e965e40 (diff)
Add price context for get product price API
-rw-r--r--indoteknik_api/controllers/api_v1/cart.py2
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py2
-rw-r--r--indoteknik_api/controllers/api_v1/voucher.py2
-rw-r--r--indoteknik_api/controllers/controller.py12
-rw-r--r--indoteknik_api/models/product_product.py12
-rw-r--r--indoteknik_custom/models/solr/product_product.py2
-rw-r--r--indoteknik_custom/models/solr/product_template.py2
7 files changed, 23 insertions, 11 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..9668b63e 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -236,7 +236,7 @@ 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)
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 = {
diff --git a/indoteknik_api/models/product_product.py b/indoteknik_api/models/product_product.py
index f01c4ed1..bcba8cfc 100644
--- a/indoteknik_api/models/product_product.py
+++ b/indoteknik_api/models/product_product.py
@@ -58,7 +58,8 @@ class ProductProduct(models.Model):
return True if len(product_promotions) > 0 else False
def calculate_website_price(self, pricelist=False):
- pricelist = pricelist or self.env.user_pricelist
+ price_for = self.env.context.get('price_for', 'odoo')
+ pricelist = pricelist or self.env.context.get('user_pricelist')
default_price_tier = '1_v2'
price_tier = pricelist.get_tier_level()
@@ -68,10 +69,15 @@ class ProductProduct(models.Model):
discount_key = f'discount_tier{price_tier}'
price_key = f'price_tier{price_tier}'
-
- price = self._v2_get_website_price_exclude_tax()
+
discount_percentage = pricelist.get(discount_key, 0)
price_discount = pricelist.get(price_key, 0)
+
+ if price_for == 'web':
+ discount_percentage = 0
+ price = price_discount
+ else:
+ price = self._v2_get_website_price_include_tax()
flashsale = self._get_flashsale_price()
flashsale_price = flashsale.get('flashsale_price', 0)
diff --git a/indoteknik_custom/models/solr/product_product.py b/indoteknik_custom/models/solr/product_product.py
index 16135e5e..20a68b47 100644
--- a/indoteknik_custom/models/solr/product_product.py
+++ b/indoteknik_custom/models/solr/product_product.py
@@ -134,7 +134,7 @@ class ProductProduct(models.Model):
def solr_results(self):
solr_model = self.env['apache.solr']
- pricelist = self.env.user_pricelist
+ pricelist = self.env.context.get('user_pricelist')
price_tier = pricelist.get_tier_name()
results = []
diff --git a/indoteknik_custom/models/solr/product_template.py b/indoteknik_custom/models/solr/product_template.py
index e39530a7..30c3b3c5 100644
--- a/indoteknik_custom/models/solr/product_template.py
+++ b/indoteknik_custom/models/solr/product_template.py
@@ -157,7 +157,7 @@ class ProductTemplate(models.Model):
def solr_results(self, detail=False):
solr_model = self.env['apache.solr']
- pricelist = self.env.user_pricelist
+ pricelist = self.env.context.get('user_pricelist')
price_tier = pricelist.get_tier_name()
results = []