diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-10-05 10:07:40 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-10-05 10:07:40 +0700 |
| commit | c452ac57ec1266452d04bbf4c38191aaa6630186 (patch) | |
| tree | 9fa8cf32c6d7ffb40a34877ef962b16f6cbfd499 | |
| parent | b2c16c315455f5f1f7cc60c474435c6b9e965e40 (diff) | |
Add price context for get product price API
| -rw-r--r-- | indoteknik_api/controllers/api_v1/cart.py | 2 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/sale_order.py | 2 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/voucher.py | 2 | ||||
| -rw-r--r-- | indoteknik_api/controllers/controller.py | 12 | ||||
| -rw-r--r-- | indoteknik_api/models/product_product.py | 12 | ||||
| -rw-r--r-- | indoteknik_custom/models/solr/product_product.py | 2 | ||||
| -rw-r--r-- | indoteknik_custom/models/solr/product_template.py | 2 |
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 = [] |
