summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2023-04-12 15:33:33 +0700
committerstephanchrst <stephanchrst@gmail.com>2023-04-12 15:33:33 +0700
commitfe8f1c997224aa2c6cdd01e14562668d7cbffaf5 (patch)
tree11ebb7c50536608ce821828d110643e1814b68d1
parent9fd01a2999a88973b583a86f52f120a41571d7d7 (diff)
prepare for tiering price api solr
-rw-r--r--indoteknik_api/models/product_product.py54
-rw-r--r--indoteknik_custom/models/apache_solr.py31
2 files changed, 76 insertions, 9 deletions
diff --git a/indoteknik_api/models/product_product.py b/indoteknik_api/models/product_product.py
index 39cc9b28..32bd7c21 100644
--- a/indoteknik_api/models/product_product.py
+++ b/indoteknik_api/models/product_product.py
@@ -133,6 +133,60 @@ class ProductProduct(models.Model):
res = price_after_disc * default_percent_tax / 100
return math.floor(res)
+ def _get_pricelist_tier1(self):
+ default_divide_tax = float(1.11)
+ base_price = discount = price = 0
+ pricelist_item = self.env['product.pricelist.item'].search([('pricelist_id', '=', 15037), ('product_id', '=', self.id)], limit=1)
+ if pricelist_item:
+ # base_price = self._get_website_price_exclude_tax()
+ base_price_incl = self._get_website_price_include_tax()
+ discount = pricelist_item.price_discount
+ price = base_price_incl - (base_price_incl * discount / 100)
+ price = price / default_divide_tax
+ price = math.floor(price)
+ data = {
+ # 'base_price_tier1': base_price or 0,
+ 'discount_tier1': discount or 0,
+ 'price_tier1': price or 0
+ }
+ return data
+
+ def _get_pricelist_tier2(self):
+ default_divide_tax = float(1.11)
+ base_price = discount = price = 0
+ pricelist_item = self.env['product.pricelist.item'].search([('pricelist_id', '=', 15038), ('product_id', '=', self.id)], limit=1)
+ if pricelist_item:
+ # base_price = self._get_website_price_exclude_tax()
+ base_price_incl = self._get_website_price_include_tax()
+ discount = pricelist_item.price_discount
+ price = base_price_incl - (base_price_incl * discount / 100)
+ price = price / default_divide_tax
+ price = math.floor(price)
+ data = {
+ # 'base_price_tier2': base_price or 0,
+ 'discount_tier2': discount or 0,
+ 'price_tier2': price or 0
+ }
+ return data
+
+ def _get_pricelist_tier3(self):
+ default_divide_tax = float(1.11)
+ base_price = discount = price = 0
+ pricelist_item = self.env['product.pricelist.item'].search([('pricelist_id', '=', 15039), ('product_id', '=', self.id)], limit=1)
+ if pricelist_item:
+ # base_price = self._get_website_price_exclude_tax()
+ base_price_incl = self._get_website_price_include_tax()
+ discount = pricelist_item.price_discount
+ price = base_price_incl - (base_price_incl * discount / 100)
+ price = price / default_divide_tax
+ price = math.floor(price)
+ data = {
+ # 'base_price_tier3': base_price or 0,
+ 'discount_tier3': discount or 0,
+ 'price_tier3': price or 0
+ }
+ return data
+
def _get_flashsale_price(self):
# must get active pricelist
active_flash_sale = self.env['product.pricelist'].get_active_flash_sale()
diff --git a/indoteknik_custom/models/apache_solr.py b/indoteknik_custom/models/apache_solr.py
index fe31906f..ee166002 100644
--- a/indoteknik_custom/models/apache_solr.py
+++ b/indoteknik_custom/models/apache_solr.py
@@ -13,8 +13,8 @@ class ApacheSolr(models.Model):
_order = 'id desc'
def _sync_product_to_solr(self, limit = 500):
- _solr = pysolr.Solr('http://10.148.0.5:8983/solr/product/', always_commit=True, timeout=30)
- # _solr = pysolr.Solr('http://192.168.23.5:8983/solr/product/', always_commit=True, timeout=30)
+ # _solr = pysolr.Solr('http://10.148.0.5:8983/solr/product/', always_commit=True, timeout=30)
+ _solr = pysolr.Solr('http://192.168.23.5:8983/solr/product/', always_commit=True, timeout=30)
start_time = time.time()
_logger.info('run sync to solr...')
query = ["&","&",("type","=","product"),("active","=",True),"|",("solr_flag","=",0),("solr_flag","=",2)]
@@ -26,24 +26,28 @@ class ApacheSolr(models.Model):
counter += 1
price_excl_after_disc = price_excl = discount = tax = 0
variants_name = variants_code = ''
+ flashsale_data = tier1 = tier2 = tier3 = {}
if template.product_variant_count > 1:
for variant in template.product_variant_ids:
- flashsale_data = variant._get_flashsale_price()
- if price_excl_after_disc == 0:
+ if price_excl_after_disc == 0 or variant._get_website_price_after_disc_and_tax() < price_excl_after_disc:
price_excl = variant._get_website_price_exclude_tax()
price_excl_after_disc = variant._get_website_price_after_disc_and_tax()
discount = variant._get_website_disc(0)
tax = variant._get_website_tax()
- elif variant._get_website_price_after_disc_and_tax() < price_excl_after_disc:
- price_excl_after_disc = variant._get_website_price_after_disc_and_tax()
- price_excl = variant._get_website_price_exclude_tax()
- discount = variant._get_website_disc(0)
- tax = variant._get_website_tax()
+ flashsale_data = variant._get_flashsale_price()
+ # add price tiering for base price, discount, and price after discount (tier 1 - 3)
+ tier1 = variant._get_pricelist_tier1()
+ tier2 = variant._get_pricelist_tier2()
+ tier3 = variant._get_pricelist_tier3()
else:
price_excl_after_disc = price_excl_after_disc
price_excl = price_excl
discount = discount
tax = tax
+ flashsale_data = flashsale_data
+ tier1 = tier1
+ tier2 = tier2
+ tier3 = tier3
variants_name += variant.display_name or ''+', '
variants_code += variant.default_code or ''+', '
else:
@@ -52,6 +56,9 @@ class ApacheSolr(models.Model):
price_excl_after_disc = template.product_variant_id._get_website_price_after_disc_and_tax()
tax = template.product_variant_id._get_website_tax()
flashsale_data = template.product_variant_id._get_flashsale_price()
+ tier1 = template.product_variant_id._get_pricelist_tier1()
+ tier2 = template.product_variant_id._get_pricelist_tier2()
+ tier3 = template.product_variant_id._get_pricelist_tier3()
category_id = ''
category_name = ''
@@ -91,6 +98,12 @@ class ApacheSolr(models.Model):
'flashsale_base_price_f': flashsale_data['flashsale_base_price'] or 0,
'flashsale_discount_f': flashsale_data['flashsale_discount'] or 0,
'flashsale_price_f': flashsale_data['flashsale_price'] or 0,
+ 'discount_tier1_f': tier1['discount_tier1'] or 0,
+ 'price_tier1_f': tier1['price_tier1'] or 0,
+ 'discount_tier2_f': tier2['discount_tier2'] or 0,
+ 'price_tier2_f': tier2['price_tier2'] or 0,
+ 'discount_tier3_f': tier3['discount_tier3'] or 0,
+ 'price_tier3_f': tier3['price_tier3'] or 0
}
documents.append(document)
template.solr_flag = 1