def cart(request): cart = request.session.get('cart', {}) entries = [Entry(product=Product.objects.get(pk=pk), quantity=cart[pk]) for pk in cart] if request.method == 'POST': form = OrderForm(request.POST) if form.is_valid(): order = Order(customer=request.user) order.address = form.cleaned_data['address'] order.save() for entry in entries: entry.order = order Entry.objects.bulk_create(entries) messages.add_message(request, 777, f'Thanks for shopping! Your order was created with ID: {order.pk}.') request.session['cart'] = {} return redirect('profile:profile') else: data = {'name': request.user.name, 'phone': request.user.phone} form = OrderForm(initial=data) total_price = sum(entry.price for entry in entries) context = { 'entries': entries, 'total_price': total_price, 'form': form, 'cart': sum(request.session.get('cart', {}).values()), } return render(request, 'cart.html', context)
def completeOrder(request): request.session.set_expiry(0) cart = request.session['cart'] order = Order() order.first_name = request.POST['first_name'] order.last_name = request.POST['last_name'] order.address = request.POST['address'] order.city = request.POST['city'] order.payment_method = request.POST['payment'] order.payment_data = request.POST['payment_data'] order.save() order.items = genItemsList(cart) request.session['cart'] = [] return render(request, "complete_order.html", None)
def completeOrder(request): request.session.set_expiry(0) cart = request.session['cart'] ctx = {'cart': cart} order = Order() order.first_name = request.POST['first_name'] order.last_name = request.POST['last_name'] order.address = request.POST['address'] order.city = request.POST['city'] order.payment_method = request.POST['payment'] order.payment_data = request.POST['payment_data'] order.items = genItemsList(cart) order.fulfilled = False order.save() request.session['cart'] = [] return render(request, 'store/complete_order.html', ctx)
def completeOrder(request): cart = request.session['cart'] request.session.set_expiry(0) ctx = { 'cart': cart, 'cart_size': len(cart), 'cart_items': cartItems(cart), 'total_price': priceCart(cart) } order = Order() order.items = genItemsList(cart) order.first_name = request.POST['first_name'] order.last_name = request.POST['last_name'] order.address = request.POST['address'] order.city = request.POST['city'] order.payment_data = request.POST['payment_data'] order.fulfill = False order.payment_method = request.POST['payment'] order.save() request.session['cart'] = [] return render(request, "complete_order.html", ctx)
def checkOutView(request, coupon_id): total = 0 counter = 0 cart_items = None discount_price = None new_total = None add_coupon = False coupon = None try: cart = Cart.objects.get(cart_id=_cart_id(request)) #ดึงตะกร้า cart_items = CartItem.objects.filter( cart=cart, active=True) #ดึงข้อมูลสินค้าในตะกร้า for item in cart_items: total += (item.product.price * item.quantity) counter += (item.quantity) except Exception as e: pass form = CheckOutForm(request.POST) if request.method == 'POST': if 'confirm' in request.POST: print('Uppppppppppppppppppppppppppppppppp') if coupon_id == 0: new_total = total else: coupon = Coupon.objects.get(id=coupon_id) new_total = total - coupon.discount add_coupon = True else: print('Downnnnnnnnnnnnnnnnnnnnnnnnnnnnnn') if coupon_id == 0: new_total = total else: coupon = Coupon.objects.get(id=coupon_id) new_total = total - coupon.discount add_coupon = True form = CheckOutForm(request.POST) if form.is_valid(): now = timezone.now() data = Order() data.first_name = form.cleaned_data['first_name'] data.last_name = form.cleaned_data['last_name'] data.phone = form.cleaned_data['phone'] data.user_id = request.user.username data.address = form.cleaned_data.get('address') data.city = form.cleaned_data.get('city') data.district = form.cleaned_data.get('district') data.subdistrict = form.cleaned_data.get('subdistrict') data.postcode = form.cleaned_data.get('postcode') data.total = new_total data.status = 'รอชำระเงิน' if coupon_id != 0: data.code = coupon.code data.save() for item in cart_items: order_item = OrderItem.objects.create( product=item.product.name, quantity=item.quantity, price=item.product.price, order=data) order_item.save() #ลดจำนวนstock product = Product.objects.get(id=item.product.id) product.stock = int(item.product.stock - order_item.quantity) product.save() item.delete() order = Order.objects.get(id=data.id) return redirect(order.get_url()) else: form = CheckOutForm() new_total = total return render( request, "checkout.html", dict(cart_items=cart_items, total=total, counter=counter, form=form, new_total=new_total, coupon=coupon, add_coupon=add_coupon, coupon_id=coupon_id))