summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-04-17 15:01:33 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-04-17 15:01:33 +0700
commit456d4b07e52c3664fd2c22e2b7748cbb2912539d (patch)
treecd0f87350a09fd6b89ce29a87922d4f3f321e5d3
parent015ca8f0ae8ecdaaf388ee08420af54a84fb2d0c (diff)
api checkout so with pricelist tier
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py31
-rw-r--r--indoteknik_api/models/product_product.py18
2 files changed, 43 insertions, 6 deletions
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index e019b325..e237ebaa 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -213,8 +213,10 @@ class SaleOrder(controller.Controller):
@http.route(PREFIX_PARTNER + 'sale_order/checkout', auth='public', method=['POST', 'OPTIONS'], csrf=False)
@controller.Controller.must_authorized(private=True, private_key='partner_id')
def create_partner_sale_order(self, **kw):
- product_pricelist_default_discount_id = request.env['ir.config_parameter'].get_param('product.pricelist.default_discount_id')
- product_pricelist_default_discount_id = int(product_pricelist_default_discount_id)
+ product_pricelist_default_discount_id = int(request.env['ir.config_parameter'].get_param('product.pricelist.default_discount_id'))
+ product_pricelist_tier1 = int(request.env['ir.config_parameter'].get_param('product.pricelist.tier1'))
+ product_pricelist_tier2 = int(request.env['ir.config_parameter'].get_param('product.pricelist.tier2'))
+ product_pricelist_tier3 = int(request.env['ir.config_parameter'].get_param('product.pricelist.tier3'))
params = self.get_request_params(kw, {
'partner_id': ['number'],
@@ -252,15 +254,38 @@ class SaleOrder(controller.Controller):
sale_order = request.env['sale.order'].create([parameters])
order_line = json.loads(params['value']['order_line'])
parameters = []
+
+ partner = request.env['res.partner'].browse(params['value']['partner_id'])
+ partner_pricelist = partner.property_product_pricelist
for line in order_line:
product = request.env['product.product'].search([('id', '=', line['product_id'])], limit=1)
+ discount = product._get_website_disc(0)
+
+ price_tier = False
+ pricelist = {
+ 'tier1': product._get_pricelist_tier1,
+ 'tier2': product._get_pricelist_tier2,
+ 'tier3': product._get_pricelist_tier3,
+ }
+ if partner_pricelist.id == product_pricelist_tier1:
+ price_tier = 'tier1'
+ if partner_pricelist.id == product_pricelist_tier2:
+ price_tier = 'tier2'
+ if partner_pricelist.id == product_pricelist_tier3:
+ price_tier = 'tier3'
+
+ if price_tier:
+ price = pricelist[price_tier]()
+ discount_key = 'discount_%s' % price_tier
+ if price[discount_key] > 0: discount = price[discount_key]
+
parameters.append({
'company_id': 1,
'order_id': sale_order.id,
'product_id': line['product_id'],
'product_uom_qty': line['quantity'],
'price_unit': product._get_website_price_exclude_tax(),
- 'discount': product._get_website_disc(0)
+ 'discount': discount
})
request.env['sale.order.line'].create(parameters)
return self.response({
diff --git a/indoteknik_api/models/product_product.py b/indoteknik_api/models/product_product.py
index 32bd7c21..9c59040f 100644
--- a/indoteknik_api/models/product_product.py
+++ b/indoteknik_api/models/product_product.py
@@ -134,9 +134,13 @@ class ProductProduct(models.Model):
return math.floor(res)
def _get_pricelist_tier1(self):
+ product_pricelist_tier1 = int(self.env['ir.config_parameter'].get_param('product.pricelist.tier1'))
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)
+ pricelist_item = self.env['product.pricelist.item'].search([
+ ('pricelist_id', '=', product_pricelist_tier1),
+ ('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()
@@ -152,9 +156,13 @@ class ProductProduct(models.Model):
return data
def _get_pricelist_tier2(self):
+ product_pricelist_tier2 = int(self.env['ir.config_parameter'].get_param('product.pricelist.tier2'))
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)
+ pricelist_item = self.env['product.pricelist.item'].search([
+ ('pricelist_id', '=', product_pricelist_tier2),
+ ('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()
@@ -170,9 +178,13 @@ class ProductProduct(models.Model):
return data
def _get_pricelist_tier3(self):
+ product_pricelist_tier3 = int(self.env['ir.config_parameter'].get_param('product.pricelist.tier3'))
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)
+ pricelist_item = self.env['product.pricelist.item'].search([
+ ('pricelist_id', '=', product_pricelist_tier3),
+ ('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()