From 972a7b1e6a4d0ec33f183b7a194f1592fb3c3031 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 3 Oct 2023 11:52:59 +0700 Subject: Update get product price for website --- indoteknik_api/models/product_product.py | 23 +++++++++-------------- indoteknik_custom/models/product_pricelist.py | 23 ++++++++++++++--------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/indoteknik_api/models/product_product.py b/indoteknik_api/models/product_product.py index fdc90533..b49c419c 100644 --- a/indoteknik_api/models/product_product.py +++ b/indoteknik_api/models/product_product.py @@ -59,23 +59,18 @@ class ProductProduct(models.Model): def calculate_website_price(self, pricelist=False): pricelist = pricelist or self.env.user_pricelist + default_price_tier = '1_v2' - discount_percentage = self._get_website_disc(0) - price_discount = self._get_website_price_after_disc_and_tax() + price_tier = pricelist.get_tier_level() + price_tier = price_tier if price_tier else default_price_tier - pricelists = { - 'tier1': self._get_pricelist_tier1, - 'tier2': self._get_pricelist_tier2, - 'tier3': self._get_pricelist_tier3, - } + price = self._get_pricelist_tier(price_tier) + + discount_key = f'discount_tier{price_tier}' + price_key = f'price_tier{price_tier}' - price_tier = pricelist.get_tier_name() - if price_tier: - price = pricelists[price_tier]() - discount_key = 'discount_%s' % price_tier - price_key = 'price_%s' % price_tier - if price[discount_key] > 0: discount_percentage = price[discount_key] - if price[price_key] > 0: price_discount = price[price_key] + discount_percentage = price.get(discount_key, 0) + price_discount = price.get(price_key, 0) flashsale = self._get_flashsale_price() flashsale_price = flashsale.get('flashsale_price', 0) diff --git a/indoteknik_custom/models/product_pricelist.py b/indoteknik_custom/models/product_pricelist.py index 026977f8..384d1353 100644 --- a/indoteknik_custom/models/product_pricelist.py +++ b/indoteknik_custom/models/product_pricelist.py @@ -24,17 +24,22 @@ class ProductPricelist(models.Model): remaining_time = round(remaining_time) return max(remaining_time, 0) - def get_tier_name(self): + def get_tier_level(self): config = self.env['ir.config_parameter'] - product_pricelist_tier1 = int(config.get_param('product.pricelist.tier1', 0)) - product_pricelist_tier2 = int(config.get_param('product.pricelist.tier2', 0)) - product_pricelist_tier3 = int(config.get_param('product.pricelist.tier3', 0)) + tier_keys = ['1', '2', '3', '1_v2', '2_v2', '3_v2', '4_v2', '5_v2'] + + for tier in tier_keys: + tier_id = config.get_param('product.pricelist.tier' + tier, 0) + if self.id == int(tier_id): + return tier - price_tier = None - if self.id == product_pricelist_tier1: price_tier = 'tier1' - if self.id == product_pricelist_tier2: price_tier = 'tier2' - if self.id == product_pricelist_tier3: price_tier = 'tier3' - return price_tier + return None + + def get_tier_name(self): + tier_level = self.get_tier_level() + tier_name = f'tier{tier_level}' if tier_level else None + + return tier_name class ProductPricelistItem(models.Model): _inherit = 'product.pricelist.item' -- cgit v1.2.3 From 49c16dcc5209642b7d5aa44eeefb859224e70964 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 3 Oct 2023 12:03:55 +0700 Subject: Update default price discount to price on calc web price --- indoteknik_api/models/product_product.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/indoteknik_api/models/product_product.py b/indoteknik_api/models/product_product.py index b49c419c..559ad35c 100644 --- a/indoteknik_api/models/product_product.py +++ b/indoteknik_api/models/product_product.py @@ -79,10 +79,11 @@ class ProductProduct(models.Model): price_discount = flashsale_price discount_percentage = flashsale_discount + price = self._get_website_price_exclude_tax() return { - 'price': self._get_website_price_exclude_tax(), + 'price': price, 'discount_percentage': discount_percentage, - 'price_discount': price_discount + 'price_discount': price_discount if price_discount > 0 else price } def api_manufacture(self, product_template): -- cgit v1.2.3 From d58dbe6fb235570d1b9ca0824556847baea108ef Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 4 Oct 2023 09:07:18 +0700 Subject: Fixing calculate website price on product --- indoteknik_api/models/product_product.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/indoteknik_api/models/product_product.py b/indoteknik_api/models/product_product.py index 559ad35c..e3de8f86 100644 --- a/indoteknik_api/models/product_product.py +++ b/indoteknik_api/models/product_product.py @@ -64,22 +64,22 @@ class ProductProduct(models.Model): price_tier = pricelist.get_tier_level() price_tier = price_tier if price_tier else default_price_tier - price = self._get_pricelist_tier(price_tier) + pricelist = self._get_pricelist_tier(price_tier) discount_key = f'discount_tier{price_tier}' price_key = f'price_tier{price_tier}' - - discount_percentage = price.get(discount_key, 0) - price_discount = price.get(price_key, 0) - + + price = self._v2_get_website_price_exclude_tax() + discount_percentage = pricelist.get(discount_key, 0) + price_discount = pricelist.get(price_key, 0) + flashsale = self._get_flashsale_price() flashsale_price = flashsale.get('flashsale_price', 0) flashsale_discount = flashsale.get('flashsale_discount', 0) if flashsale_price > 0 and flashsale_price < price_discount: price_discount = flashsale_price discount_percentage = flashsale_discount - - price = self._get_website_price_exclude_tax() + return { 'price': price, 'discount_percentage': discount_percentage, -- cgit v1.2.3 From aaf2b91b6e888a30d12f123ccc91ed9061167763 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 4 Oct 2023 09:36:16 +0700 Subject: Fix get base price flash sale --- indoteknik_api/models/product_product.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indoteknik_api/models/product_product.py b/indoteknik_api/models/product_product.py index e3de8f86..f01c4ed1 100644 --- a/indoteknik_api/models/product_product.py +++ b/indoteknik_api/models/product_product.py @@ -258,7 +258,7 @@ class ProductProduct(models.Model): if not item: return result - base_price = self._get_website_price_exclude_tax() + base_price = self._v2_get_website_price_exclude_tax() discount = 0 price_flashsale = 0 if item.price_discount > 0: -- cgit v1.2.3 From 0d48eb39e2804780ca38a53090cd6ef46a5d346b Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 4 Oct 2023 11:50:40 +0700 Subject: Fix get pricelist tier on user login API --- indoteknik_api/models/res_users.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/indoteknik_api/models/res_users.py b/indoteknik_api/models/res_users.py index 0fe9008b..4bc1e995 100644 --- a/indoteknik_api/models/res_users.py +++ b/indoteknik_api/models/res_users.py @@ -6,16 +6,9 @@ class ResUsers(models.Model): def api_single_response(self, res_user, with_detail=''): config = self.env['ir.config_parameter'] - product_pricelist_tier1 = int(config.get_param('product.pricelist.tier1')) - product_pricelist_tier2 = int(config.get_param('product.pricelist.tier2')) - product_pricelist_tier3 = int(config.get_param('product.pricelist.tier3')) user_pricelist = res_user.property_product_pricelist - user_pricelist_id = user_pricelist.id if user_pricelist else False - pricelist_tier = False - if user_pricelist_id == product_pricelist_tier1: pricelist_tier = 'tier1' - if user_pricelist_id == product_pricelist_tier2: pricelist_tier = 'tier2' - if user_pricelist_id == product_pricelist_tier3: pricelist_tier = 'tier3' + pricelist_tier = user_pricelist.get_tier_name() data = { 'id': res_user.id, -- cgit v1.2.3 From f8ae554ea2fe3d9dcce59811941f63c58fdaae3c Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 4 Oct 2023 13:02:36 +0700 Subject: Fix permission resource on login user API --- indoteknik_api/models/res_users.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indoteknik_api/models/res_users.py b/indoteknik_api/models/res_users.py index 4bc1e995..f331321f 100644 --- a/indoteknik_api/models/res_users.py +++ b/indoteknik_api/models/res_users.py @@ -8,7 +8,7 @@ class ResUsers(models.Model): config = self.env['ir.config_parameter'] user_pricelist = res_user.property_product_pricelist - pricelist_tier = user_pricelist.get_tier_name() + pricelist_tier = user_pricelist.sudo().get_tier_name() data = { 'id': res_user.id, -- cgit v1.2.3 From b2c16c315455f5f1f7cc60c474435c6b9e965e40 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 4 Oct 2023 13:56:18 +0700 Subject: Remove locale for currency format --- indoteknik_custom/models/voucher.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/indoteknik_custom/models/voucher.py b/indoteknik_custom/models/voucher.py index 8486fca0..a40f8c42 100644 --- a/indoteknik_custom/models/voucher.py +++ b/indoteknik_custom/models/voucher.py @@ -1,7 +1,6 @@ from odoo import models, fields, api from datetime import datetime, timedelta from odoo.exceptions import ValidationError -import locale class Voucher(models.Model): @@ -229,9 +228,8 @@ class Voucher(models.Model): def generate_detail_tnc(self): def format_currency(amount): - locale.setlocale(locale.LC_ALL, 'id_ID') - formatted_amount = locale.format("%d", amount, grouping=True) - return f'Rp{formatted_amount}' + formatted_number = '{:,.0f}'.format(amount).replace(',', '.') + return f'Rp{formatted_number}' tnc = [] if self.apply_type == 'all': -- cgit v1.2.3 From c452ac57ec1266452d04bbf4c38191aaa6630186 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Thu, 5 Oct 2023 10:07:40 +0700 Subject: Add price context for get product price API --- indoteknik_api/controllers/api_v1/cart.py | 2 +- indoteknik_api/controllers/api_v1/sale_order.py | 2 +- indoteknik_api/controllers/api_v1/voucher.py | 2 +- indoteknik_api/controllers/controller.py | 12 +++++++++--- indoteknik_api/models/product_product.py | 12 +++++++++--- indoteknik_custom/models/solr/product_product.py | 2 +- 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 = [] -- cgit v1.2.3 From 2391bd57ea6f64b20301db81217f0b4810e9dabf Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Thu, 5 Oct 2023 11:55:52 +0700 Subject: Fix sale order API for new pricelist --- indoteknik_api/controllers/api_v1/sale_order.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index 9668b63e..df11546f 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -243,7 +243,8 @@ class SaleOrder(controller.Controller): @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, -- cgit v1.2.3 From d860aa7969e27717dd4f838961024a909fa016c8 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Thu, 5 Oct 2023 11:56:47 +0700 Subject: Update to delete cart on checkout API --- indoteknik_api/controllers/api_v1/sale_order.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index df11546f..1f098252 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -334,7 +334,7 @@ class SaleOrder(controller.Controller): sale_order.apply_voucher() cart_ids = [x['cart_id'] for x in carts] - # user_cart.browse(cart_ids).unlink() + user_cart.browse(cart_ids).unlink() return self.response({ 'id': sale_order.id, 'name': sale_order.name -- cgit v1.2.3 From 7f9971a4c838b84fb1223845ccdb8256eb08b72d Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Thu, 5 Oct 2023 14:08:02 +0700 Subject: Fix bug apply voucher on create sale order API --- indoteknik_api/controllers/api_v1/sale_order.py | 6 ++++-- indoteknik_custom/models/sale_order.py | 10 ++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index 1f098252..b17c2231 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -321,7 +321,9 @@ class SaleOrder(controller.Controller): 'quantity': cart['quantity'] }) - request.env['sale.order.line'].create(order_lines) + lines = request.env['sale.order.line'].create(order_lines) + for line in lines: + line.product_id_change() request.env['sale.order.promotion'].create(promotions) if len(promotions) > 0: @@ -334,7 +336,7 @@ class SaleOrder(controller.Controller): sale_order.apply_voucher() cart_ids = [x['cart_id'] for x in carts] - user_cart.browse(cart_ids).unlink() + # user_cart.browse(cart_ids).unlink() return self.response({ 'id': sale_order.id, 'name': sale_order.name diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index e201496a..728c0bba 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -421,8 +421,8 @@ class SaleOrder(models.Model): order.grand_total = order.amount_total def action_apply_voucher(self): - for order in self.order_line: - if order.program_line_id: + for line in self.order_line: + if line.order_promotion_id: raise UserError('Voucher tidak dapat digabung dengan promotion program') voucher = self.voucher_id @@ -472,8 +472,10 @@ class SaleOrder(models.Model): line_contribution = line.price_subtotal / used_total line_voucher = used_discount * line_contribution line_voucher_item = line_voucher / line.product_uom_qty - line_discount_item = line.price_unit * line.discount / 100 + line_voucher_item - line_voucher_item = line_discount_item / line.price_unit * 100 + + line_price_unit = line.price_unit / 1.11 if any(tax.id == 23 for tax in line.tax_id) else line.price_unit + line_discount_item = line_price_unit * line.discount / 100 + line_voucher_item + line_voucher_item = line_discount_item / line_price_unit * 100 line.amount_voucher_disc = line_voucher line.discount = line_voucher_item -- cgit v1.2.3 From c6c1e26d35327b61a88b247ef94cfff9257b492a Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Thu, 5 Oct 2023 16:48:43 +0700 Subject: Add computed_price field on product pricelist --- indoteknik_custom/models/product_pricelist.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/indoteknik_custom/models/product_pricelist.py b/indoteknik_custom/models/product_pricelist.py index 026977f8..144b8689 100644 --- a/indoteknik_custom/models/product_pricelist.py +++ b/indoteknik_custom/models/product_pricelist.py @@ -40,5 +40,4 @@ class ProductPricelistItem(models.Model): _inherit = 'product.pricelist.item' manufacture_id = fields.Many2one('x_manufactures', string='Manufacture') - - \ No newline at end of file + computed_price = fields.Float(string='Computed Price') \ No newline at end of file -- cgit v1.2.3 From 2fa15330d221cb68e5b9acdb4379aa82764f46f0 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 6 Oct 2023 11:17:53 +0700 Subject: Update flashsale calculation price for web and odoo --- indoteknik_api/controllers/api_v1/sale_order.py | 12 +++++------- indoteknik_api/models/product_product.py | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index b17c2231..8209c751 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -302,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, @@ -321,9 +322,6 @@ class SaleOrder(controller.Controller): 'quantity': cart['quantity'] }) - lines = request.env['sale.order.line'].create(order_lines) - for line in lines: - line.product_id_change() request.env['sale.order.promotion'].create(promotions) if len(promotions) > 0: diff --git a/indoteknik_api/models/product_product.py b/indoteknik_api/models/product_product.py index bcba8cfc..d370e52b 100644 --- a/indoteknik_api/models/product_product.py +++ b/indoteknik_api/models/product_product.py @@ -251,6 +251,7 @@ class ProductProduct(models.Model): return data def _get_flashsale_price(self): + price_for = self.env.context.get('price_for', 'odoo') result = {} current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') @@ -264,7 +265,16 @@ class ProductProduct(models.Model): if not item: return result - base_price = self._v2_get_website_price_exclude_tax() + tier1_id = self.env['ir.config_parameter'].get_param('product.pricelist.tier1_v2', 0) + base_pricelist = self.env['product.pricelist.item'].search([ + ('pricelist_id', '=', int(tier1_id)), + ('product_id', '=', self.id) + ], limit=1) + + base_price = 0 + if base_pricelist: + base_price = base_pricelist.computed_price + discount = 0 price_flashsale = 0 if item.price_discount > 0: @@ -274,6 +284,10 @@ class ProductProduct(models.Model): price_flashsale = item.fixed_price # ask darren for include or exclude discount = (base_price - price_flashsale) // base_price * 100 + if price_for == 'odoo': + base_price = self._v2_get_website_price_include_tax() + discount = (base_price - price_flashsale) / base_price * 100 + jkt_tz = pytz.timezone('Asia/Jakarta') result.update({ 'flashsale_id': item.pricelist_id.id, -- cgit v1.2.3 From 1b1285582285d0701f41e2f2e1b778d372cd470a Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 6 Oct 2023 11:41:29 +0700 Subject: Fix flashsale price on calculate web price API --- indoteknik_api/models/product_product.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indoteknik_api/models/product_product.py b/indoteknik_api/models/product_product.py index d370e52b..aa9e0ad7 100644 --- a/indoteknik_api/models/product_product.py +++ b/indoteknik_api/models/product_product.py @@ -273,7 +273,7 @@ class ProductProduct(models.Model): base_price = 0 if base_pricelist: - base_price = base_pricelist.computed_price + base_price = base_pricelist.computed_price / 1.11 discount = 0 price_flashsale = 0 @@ -285,7 +285,7 @@ class ProductProduct(models.Model): discount = (base_price - price_flashsale) // base_price * 100 if price_for == 'odoo': - base_price = self._v2_get_website_price_include_tax() + base_price = self._v2_get_website_price_exclude_tax() discount = (base_price - price_flashsale) / base_price * 100 jkt_tz = pytz.timezone('Asia/Jakarta') -- cgit v1.2.3 From 8737ffba70651633d06f5185659f4429b26bd18b Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 6 Oct 2023 13:36:09 +0700 Subject: Update pricelist domain on voucher xml --- indoteknik_custom/views/voucher.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indoteknik_custom/views/voucher.xml b/indoteknik_custom/views/voucher.xml index a2f5557a..b8489942 100755 --- a/indoteknik_custom/views/voucher.xml +++ b/indoteknik_custom/views/voucher.xml @@ -35,7 +35,7 @@ - + -- cgit v1.2.3 From 7a23a18a45fbd38fabc33f4e1a74d9f31e86cd60 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 6 Oct 2023 14:11:15 +0700 Subject: Fix get flash sale price on sync to solr --- indoteknik_custom/models/solr/product_product.py | 2 +- indoteknik_custom/models/solr/product_template.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/indoteknik_custom/models/solr/product_product.py b/indoteknik_custom/models/solr/product_product.py index 20a68b47..31a0026d 100644 --- a/indoteknik_custom/models/solr/product_product.py +++ b/indoteknik_custom/models/solr/product_product.py @@ -84,7 +84,7 @@ class ProductProduct(models.Model): price_excl_after_disc = variant._get_website_price_after_disc_and_tax() tax = variant._get_website_tax() discount = variant._get_website_disc(0) - flashsale_data = variant._get_flashsale_price() + flashsale_data = variant.with_context(price_for="web")._get_flashsale_price() price_excl_v2 = variant._v2_get_website_price_exclude_tax() price_excl_after_disc_v2 = variant._v2_get_website_price_after_disc_and_tax() diff --git a/indoteknik_custom/models/solr/product_template.py b/indoteknik_custom/models/solr/product_template.py index 30c3b3c5..d7439bcb 100644 --- a/indoteknik_custom/models/solr/product_template.py +++ b/indoteknik_custom/models/solr/product_template.py @@ -103,7 +103,7 @@ class ProductTemplate(models.Model): tier_data = {} for variant in template.product_variant_ids: - variant_flashsale = variant._get_flashsale_price() + variant_flashsale = variant.with_context(price_for="web")._get_flashsale_price() variant_flashsale_price = variant_flashsale.get('flashsale_price', 0) flashsale_data_price = flashsale_data.get('flashsale_price', 0) -- cgit v1.2.3