diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-04-17 15:01:33 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-04-17 15:01:33 +0700 |
| commit | 456d4b07e52c3664fd2c22e2b7748cbb2912539d (patch) | |
| tree | cd0f87350a09fd6b89ce29a87922d4f3f321e5d3 /indoteknik_api/controllers/api_v1 | |
| parent | 015ca8f0ae8ecdaaf388ee08420af54a84fb2d0c (diff) | |
api checkout so with pricelist tier
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/sale_order.py | 31 |
1 files changed, 28 insertions, 3 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({ |
