summaryrefslogtreecommitdiff
path: root/indoteknik_api
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-06-23 14:19:38 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-06-23 14:19:38 +0700
commit3ed54712ca9856f3be937f8325db030d0796532e (patch)
treea0e96a3a10f59bde060113b941b681addca43f73 /indoteknik_api
parent23014336a1fe1fe5ef54fad30cf6c3d9cc59b2d8 (diff)
Refactor pricelist on product price
Diffstat (limited to 'indoteknik_api')
-rw-r--r--indoteknik_api/controllers/api_v1/cart.py7
-rw-r--r--indoteknik_api/controllers/api_v1/product_variant.py3
-rw-r--r--indoteknik_api/controllers/api_v1/promotion.py4
-rw-r--r--indoteknik_api/controllers/api_v2/product.py4
-rw-r--r--indoteknik_api/controllers/api_v2/product_variant.py4
-rw-r--r--indoteknik_api/controllers/controller.py1
-rw-r--r--indoteknik_api/models/product_product.py8
-rw-r--r--indoteknik_api/models/product_template.py6
8 files changed, 17 insertions, 20 deletions
diff --git a/indoteknik_api/controllers/api_v1/cart.py b/indoteknik_api/controllers/api_v1/cart.py
index 93d7b2f1..035a40b7 100644
--- a/indoteknik_api/controllers/api_v1/cart.py
+++ b/indoteknik_api/controllers/api_v1/cart.py
@@ -10,14 +10,15 @@ class Cart(controller.Controller):
@http.route(PREFIX_USER + 'cart', auth='public', methods=['GET', 'OPTIONS'])
@controller.Controller.must_authorized()
def get_cart_by_user_id(self, user_id, **kw):
+ user_cart = request.env['website.user.cart']
user_id = int(user_id)
limit = int(kw.get('limit', 0))
offset = int(kw.get('offset', 0))
query = [('user_id', '=', user_id)]
- carts = request.env['website.user.cart'].search(query, limit=limit, offset=offset, order='create_date desc')
+ carts = user_cart.search(query, limit=limit, offset=offset, order='create_date desc')
data = {
- 'product_total': request.env['website.user.cart'].search_count(query),
- 'products': [cart.get_product() for cart in carts]
+ 'product_total': user_cart.search_count(query),
+ 'products': carts.get_products()
}
return self.response(data)
diff --git a/indoteknik_api/controllers/api_v1/product_variant.py b/indoteknik_api/controllers/api_v1/product_variant.py
index 06ce5d3c..8de4669e 100644
--- a/indoteknik_api/controllers/api_v1/product_variant.py
+++ b/indoteknik_api/controllers/api_v1/product_variant.py
@@ -26,10 +26,9 @@ class ProductVariant(controller.Controller):
def get_product_variant_promotions(self, product_id):
product_id = int(product_id)
user_data = self.verify_user_token()
- pricelist = self.user_pricelist()
program_line = request.env['promotion.program.line']
program_lines = program_line.get_active_promotions(product_id)
- program_lines = program_lines.res_format(user=user_data, pricelist=pricelist)
+ program_lines = program_lines.res_format(user=user_data)
return self.response(program_lines)
diff --git a/indoteknik_api/controllers/api_v1/promotion.py b/indoteknik_api/controllers/api_v1/promotion.py
index a3dbf0ba..68a23ef2 100644
--- a/indoteknik_api/controllers/api_v1/promotion.py
+++ b/indoteknik_api/controllers/api_v1/promotion.py
@@ -62,10 +62,10 @@ class Promotion(controller.Controller):
('promotion_type', '=', 'special_price'),
('program_id', '=', int(id))
])
- pricelist = self.user_pricelist()
+
data = []
for line in program_lines:
- product = request.env['product.product'].v2_api_single_response(line.product_id, pricelist=pricelist)
+ product = request.env['product.product'].v2_api_single_response(line.product_id)
product_template = line.product_id.product_tmpl_id
product.update({
diff --git a/indoteknik_api/controllers/api_v2/product.py b/indoteknik_api/controllers/api_v2/product.py
index d9b43bda..19a97dec 100644
--- a/indoteknik_api/controllers/api_v2/product.py
+++ b/indoteknik_api/controllers/api_v2/product.py
@@ -12,12 +12,10 @@ class V2Product(controller.Controller):
if not id:
return self.response(code=400, description='id is required')
- pricelist = self.user_pricelist()
-
data = []
id = [int(x) for x in id.split(',')]
product_templates = request.env['product.template'].search([('id', 'in', id)])
if product_templates:
- data = [request.env['product.template'].v2_api_single_response(x, pricelist=pricelist, with_detail='DEFAULT') for x in product_templates]
+ data = [request.env['product.template'].v2_api_single_response(x, with_detail='DEFAULT') for x in product_templates]
return self.response(data) \ No newline at end of file
diff --git a/indoteknik_api/controllers/api_v2/product_variant.py b/indoteknik_api/controllers/api_v2/product_variant.py
index 8a5bbeb1..b74e4936 100644
--- a/indoteknik_api/controllers/api_v2/product_variant.py
+++ b/indoteknik_api/controllers/api_v2/product_variant.py
@@ -12,13 +12,11 @@ class V2ProductVariant(controller.Controller):
if not id:
return self.response(code=400, description='id is required')
- pricelist = self.user_pricelist()
-
data = []
id = [int(x) for x in id.split(',')]
product_products = request.env['product.product'].search([('id', 'in', id)])
if product_products:
- data = [request.env['product.product'].v2_api_single_response(x, pricelist=pricelist) for x in product_products]
+ data = [request.env['product.product'].v2_api_single_response(x) for x in product_products]
return self.response(data)
diff --git a/indoteknik_api/controllers/controller.py b/indoteknik_api/controllers/controller.py
index 90bc50ed..a9ad2724 100644
--- a/indoteknik_api/controllers/controller.py
+++ b/indoteknik_api/controllers/controller.py
@@ -21,6 +21,7 @@ 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()
if private:
diff --git a/indoteknik_api/models/product_product.py b/indoteknik_api/models/product_product.py
index 9e218565..1740f992 100644
--- a/indoteknik_api/models/product_product.py
+++ b/indoteknik_api/models/product_product.py
@@ -27,7 +27,7 @@ class ProductProduct(models.Model):
}
return data
- def v2_api_single_response(self, product_product, pricelist=False):
+ def v2_api_single_response(self, product_product):
product_template = product_product.product_tmpl_id
data = {
'id': product_product.id,
@@ -38,7 +38,7 @@ class ProductProduct(models.Model):
},
'code': product_product.default_code or '',
'name': product_product.display_name,
- 'price': product_product.calculate_website_price(pricelist),
+ 'price': product_product.calculate_website_price(),
'stock': product_product.qty_stock_vendor,
'weight': product_product.weight,
'attributes': [x.name for x in product_product.product_template_attribute_value_ids],
@@ -46,7 +46,9 @@ class ProductProduct(models.Model):
}
return data
- def calculate_website_price(self, pricelist):
+ def calculate_website_price(self):
+ pricelist = self.env.user_pricelist
+
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'))
diff --git a/indoteknik_api/models/product_template.py b/indoteknik_api/models/product_template.py
index 1a345967..68ab79c2 100644
--- a/indoteknik_api/models/product_template.py
+++ b/indoteknik_api/models/product_template.py
@@ -51,9 +51,7 @@ class ProductTemplate(models.Model):
data.update(data_with_detail)
return data
- def v2_api_single_response(self, product_template, pricelist=False, with_detail=''):
- product_pricelist_default_discount_id = self.env['ir.config_parameter'].get_param('product.pricelist.default_discount_id')
- product_pricelist_default_discount_id = int(product_pricelist_default_discount_id)
+ def v2_api_single_response(self, product_template, with_detail=''):
data = {
'id': product_template.id,
'image': self.env['ir.attachment'].api_image('product.template', 'image_128', product_template.id),
@@ -67,7 +65,7 @@ class ProductTemplate(models.Model):
}
if with_detail != '':
- variants = [self.env['product.product'].v2_api_single_response(variant, pricelist=pricelist) for variant in product_template.product_variant_ids]
+ variants = [self.env['product.product'].v2_api_single_response(variant) for variant in product_template.product_variant_ids]
lowest_price = variants[0]['price']
for variant in variants:
if variant["price"]["price_discount"] < lowest_price["price_discount"]: