Example #1
0
def cartAdd(request, product_id):
    cart = requestCurCart(request)
    try:
        product = Product.objects.get(id=product_id,isActive=True)
        amount = 1
        if request.method == 'POST':
            form = CartAddForm(request.POST)
            if form.is_valid():
                amount = form.cleaned_data['amount']
        cartproduct = CartProduct.objects.get(cart=cart,product=product)
        if product.max_order_amount == -1 or (cartproduct.amount + amount) < product.max_order_amount:
            cartproduct.amount += amount
        else:
            cartproduct.amount = product.max_order_amount
            cartproduct.save()
            msg = 'Das Produkt ist auf %s Bestellung(en) limitiert.' % product.max_order_amount
            return render_to_response('error.html', {
                        'errormsg': msg,
                        'caption' : 'Hinweis',
                    },context_instance=RequestContext(request))
    except CartProduct.DoesNotExist:
        cartproduct = CartProduct()
        cartproduct.cart = cart
        cartproduct.product = product
        cartproduct.amount = amount
    except (TypeError, ValueError, KeyError):
        return HttpResponseRedirect(request.META['HTTP_REFERER'])
    cartproduct.save()
    context = RequestContext(request, {
        'product':cartproduct.product,
        })
    return render_to_response('shop/cart_added.html', context)
Example #2
0
def orderOverview(request):
    cart = requestCurCart(request)
    if int(cart.get_item_count()) > 0:
        try:
            order = Order.objects.get(id=request.session['order_id'], user=request.user,order_date__isnull=True)
            # Wurde Bestellung abgeschickt?
            if request.method == 'POST':
                order.order_date = datetime.datetime.now()
                # copy the current shipping fee
                order.shipping_cost = decimal.Decimal('%s' % order.cart.get_shipping_fee())
                order.save()
                order.billnumber()
                #Speichern, dass Cart bestellt wurde
                order.cart.isActive = False
                order.cart.isOrdered = True
                order.cart.save()
                # Kopie anlegen, wenn Cart einen Namen hat
                # ansonsten kann ein Cart doppelt bestellt werden
                if order.cart.name:
                    # neuen Cart mit alten Cart-Daten erstellen
                    newcart = Cart()
                    newcart.name = order.cart.name
                    newcart.user = order.cart.user
                    newcart.save()
                    # Produkte aus altem Cart in neuen legen
                    for cp in CartProduct.objects.filter(cart=order.cart):
                        newcp = CartProduct(cart=newcart)
                        newcp.product = cp.product
                        newcp.amount = cp.amount
                        newcp.save()
                    # MixedProdukte aus altem Cart in neuen legen
                    for mcp in CartProduct.objects.filter(cart=order.cart):
                        newmcp = CartMixProduct(cart=newcart)
                        newmcp.product = mcp.product
                        newmcp.amount = mcp.amount
                        newmcp.save()
                # Die verwendeten Gutscheine entwerten
                ccs = CartCoupon.objects.filter(cart=order.cart)
                for cc in ccs:
                    # ist der Gutschein ein einmaliger Gutschein?
                    if cc.coupon.isgift == True:
                        cc.coupon.isValid = False
                        cc.coupon.valid_to = datetime.datetime.now()
                        cc.coupon.save()
                # Restguthaben von Gutscheinen dem Guthabenkonto gutschreiben
                if decimal.Decimal(order.cart.get_total_with_fee()) < decimal.Decimal('0.00'):
                    try:
                        cacc = CouponAccount.objects.get(user=request.user)
                    except CouponAccount.DoesNotExist:
                        cacc = CouponAccount(user=request.user,
                                             balance=0
                                             )
                        cacc.save()

                    ctrans = CouponAccountTransaction(cacc=cacc)
                    ctrans.amount = decimal.Decimal(order.cart.get_total_with_fee()) * -1
                    ctrans.message = 'Restguthaben von Bestellung %s' % order.billnumber()
                    ctrans.isValid = False
                    ctrans.save()
                    cacc.balance += decimal.Decimal(order.cart.get_total_with_fee()) * -1
                    cacc.save()
                
                sendOrderMail(order)
                sendOrderMailAdmin(order)
                if order.paymenttype.code == 'bill':
                    return HttpResponseRedirect(reverse('shoppy_order_thanks'))
                else:
                    return HttpResponseRedirect(reverse('shoppy_custom_order_view',args=[order.id]))
            cart = order.cart
            cartitems = CartProduct.objects.all().filter(cart=cart)
            cartmixitems = CartMixProduct.objects.all().filter(cart=cart)
            cartcoupon = CartCoupon.objects.all().filter(cart=cart)
            couponmoney = decimal.Decimal('0.00')
            for cc in cartcoupon:
                couponmoney += cc.coupon.valueMoney
            couponmoney = moneyfmt(couponmoney, places=2, dp=',', sep='.')
            return render_to_response('shop/overview.html',{
                                    'order': order,
                                    'couponmoney': couponmoney,
                                    'cartitems': cartitems,
                                    'cartmixitems': cartmixitems,
                                    'hideRightNavi':True,
                                    'hideLeftNavi':True
                                    },context_instance=RequestContext(request))
        except Order.DoesNotExist, KeyError:
            return render_to_response('error.html', {
                    'errormsg': 'Oooops. Da lief wohl was falsch!',
                },context_instance=RequestContext(request))