diff options
| author | IT Fixcomart <it@fixcomart.co.id> | 2022-11-17 11:15:09 +0700 |
|---|---|---|
| committer | IT Fixcomart <it@fixcomart.co.id> | 2022-11-17 11:15:09 +0700 |
| commit | 7f08a09863e6bd8771e1de943228abdaf019a698 (patch) | |
| tree | 00f69ced1fe6897d83ec51ddcbc5842ba09beb06 | |
| parent | 0195aeb8b16a46792eabc3491e186ee869b814ee (diff) | |
fallback pricelist and product solr by name
| -rw-r--r-- | indoteknik_api/controllers/api_v1/login.py | 2 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/product.py | 19 | ||||
| -rw-r--r-- | indoteknik_api/models/product_pricelist.py | 34 |
3 files changed, 31 insertions, 24 deletions
diff --git a/indoteknik_api/controllers/api_v1/login.py b/indoteknik_api/controllers/api_v1/login.py index cc440d26..5c6251ae 100644 --- a/indoteknik_api/controllers/api_v1/login.py +++ b/indoteknik_api/controllers/api_v1/login.py @@ -15,7 +15,7 @@ class Cart(controller.Controller): email = kw.get('email') password = kw.get('password') if not email or not password: - return self.response(code=400, description='username and password is required') + return self.response(code=400, description='email and password is required') try: uid = request.session.authenticate(config.get('db_name'), email, password) diff --git a/indoteknik_api/controllers/api_v1/product.py b/indoteknik_api/controllers/api_v1/product.py index 667347d4..09ea459d 100644 --- a/indoteknik_api/controllers/api_v1/product.py +++ b/indoteknik_api/controllers/api_v1/product.py @@ -79,7 +79,7 @@ class Product(controller.Controller): if not self.authenticate(): return self.response(code=401, description='Unauthorized') - query = [('sale_ok', '=', True)] + name = kw.get('name') solr_flag = kw.get('flag') limit = int(kw.get('limit', 0)) offset = int(kw.get('offset', 0)) @@ -87,16 +87,17 @@ class Product(controller.Controller): if not solr_flag: return self.response(code=400, description='flag is required') - if solr_flag: - query.append(('solr_flag', '=', int(solr_flag))) - - product_variants = request.env['product.product'].search(query) - product_variant_ids = [x.id for x in product_variants] query = [ - '|', - ('solr_flag', '=', int(solr_flag)), - ('product_variant_ids', 'in', product_variant_ids) + ('sale_ok', '=', True), + ('solr_flag', '=', int(solr_flag)) ] + if name: + name = '%' + name.replace(' ', '%') + '%' + query += [ + '|', + ('default_code', 'ilike', name), + ('name', 'ilike', name), + ] product_templates = request.env['product.template'].search(query, limit=limit, offset=offset) data = { 'product_total': request.env['product.template'].search_count(query), diff --git a/indoteknik_api/models/product_pricelist.py b/indoteknik_api/models/product_pricelist.py index 6a011934..e2bb58e5 100644 --- a/indoteknik_api/models/product_pricelist.py +++ b/indoteknik_api/models/product_pricelist.py @@ -5,21 +5,10 @@ from datetime import datetime class ProductPricelist(models.Model): _inherit = 'product.pricelist' - - def compute_price(self, pricelist_id: int, product_id: int): - """ - Compute price with tax, discount formula, and fixed_price - @param pricelist_id: id of product.pricelist - @param product_id: id of product.product - @return: returns price value from pricelist. - """ + + def get_product_price(self, pricelist_id: int, product_id: int): price = 0 discounts = [] - - is_flash_sale_product = self.is_flash_sale_product(product_id) - if is_flash_sale_product: - pricelist_id = is_flash_sale_product - is_compute_formula = True while is_compute_formula: pricelist = self.env['product.pricelist.item'].search([ @@ -35,7 +24,24 @@ class ProductPricelist(models.Model): is_compute_formula = False else: is_compute_formula = False - + return price, discounts + + def compute_price(self, pricelist_id: int, product_id: int): + """ + Compute price with tax, discount formula, and fixed_price + @param pricelist_id: id of product.pricelist + @param product_id: id of product.product + @return: returns price value from pricelist. + """ + is_flash_sale_product = self.is_flash_sale_product(product_id) + if is_flash_sale_product: + pricelist_id = is_flash_sale_product + + price, discounts = self.get_product_price(pricelist_id, product_id) + if price == 0: + product_pricelist_fallback_discount_id = self.env['ir.config_parameter'].get_param('product.pricelist.fallback_discount_id') + price, discounts = self.get_product_price(int(product_pricelist_fallback_discount_id), product_id) + price_discount = price discount_percentage = 0 if price > 0: |
