diff options
Diffstat (limited to 'indoteknik_api/controllers/api_v1/sale_order.py')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/sale_order.py | 66 |
1 files changed, 26 insertions, 40 deletions
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index adc89f66..ef4c2688 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -295,59 +295,45 @@ class SaleOrder(controller.Controller): if params['value']['type'] == 'sale_order': parameters['approval_status'] = 'pengajuan1' sale_order = request.env['sale.order'].create([parameters]) - parameters = [] user_id = params['value']['user_id'] user_cart = request.env['website.user.cart'] source = params['value']['source'] - products = user_cart.get_product_by_user(user_id=user_id, selected=True, source=source) - for product in products: - total_qty = product['quantity'] - price_unit = product['price']['price'] - price_discount =product['price']['discount_percentage'] - if product['program'] and product['program']['type']['value'] != 'special_price': - total_qty += sum(x['quantity'] for x in product['program']['items']) - price_unit = product['subtotal'] / total_qty - price_discount = 0 - - param = { - 'company_id': 1, - 'order_id': sale_order.id, - 'price_unit': price_unit, - 'discount': price_discount - } - - primary_product = { - **param, - 'product_id': product['id'], - 'product_uom_qty': product['quantity'] - } - if product['program']: - primary_product.update({ - 'program_line_id': product['program']['id'] + carts = user_cart.get_product_by_user(user_id=user_id, selected=True, source=source) + + order_lines = [] + promotions = [] + for cart in carts: + if cart['cart_type'] == 'product': + order_lines.append({ + 'company_id': 1, + 'order_id': sale_order.id, + 'price_unit': cart['price']['price'], + 'discount': cart['price']['discount_percentage'], + 'product_id': cart['id'], + 'product_uom_qty': cart['quantity'] }) - parameters.append(primary_product) - - if not product['program']: - continue - - for item in product['program']['items']: - parameters.append({ - **param, - 'product_id': item['id'], - 'product_uom_qty': item['quantity'], + elif cart['cart_type'] == 'promotion': + promotions.append({ + 'order_id': sale_order.id, + 'program_line_id': cart['id'], + 'quantity': cart['quantity'] }) - request.env['sale.order.line'].create(parameters) + request.env['sale.order.line'].create(order_lines) + request.env['sale.order.promotion'].create(promotions) + + if len(promotions) > 0: + sale_order.apply_promotion_program() voucher_code = params['value']['voucher'] voucher = request.env['voucher'].search([('code', '=', voucher_code)]) - if voucher: + if voucher and len(promotions) == 0: sale_order.voucher_id = voucher.id sale_order.apply_voucher() - cart_ids = [x['cart_id'] for x in products] - user_cart.browse(cart_ids).unlink() + cart_ids = [x['cart_id'] for x in carts] + # user_cart.browse(cart_ids).unlink() return self.response({ 'id': sale_order.id, 'name': sale_order.name |
