Пример #1
0
def checkout(request, step=0):
    if (request.method == 'POST'):
        if request.user.is_authenticated():
            now = datetime.datetime.utcnow().replace(tzinfo=utc)
            current_user = request.user
            current_order = Order(date_time=now, user=current_user)
            current_order.save()
            for i in range(1, 6):
                print(request.POST)
                try:
                    item_quantity = int(request.POST['item_quantity_' +
                                                     str(i)])
                except:
                    item_quantity = None
                if not item_quantity is None:
                    item_id = request.POST['item_options_' +
                                           str(i)].split(' ')[1]
                    print(item_id)
                    current_sticker = Sticker.objects.get(pk=int(item_id))
                    print(current_sticker)
                    order_item = OrderItem(order=current_order,
                                           sticker=current_sticker,
                                           quantity=item_quantity)
                    order_item.save()
    return redirect('/order/' + str(current_order.id) + '/1')
Пример #2
0
def create_order(request, transaction_id):
    order = Order()
    checkout_form = CheckoutForm(request.POST, instance = order)
    order = checkout_form.save(commit = False)
    order.transaction_id = transaction_id
    order.ip_address = request.META.get('REMOTE_ADDR')
    if request.user.is_authenticated():
        order.user = request.user
    order.status = Order.SUBMITTED
    order.save()
    # if the order save succeeded
    if order.pk:
        cart_items = shoppingcart.get_cart_items(request)
        for ci in cart_items:
            # create order item for each cart item
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price
            oi.product = ci.product
            oi.save()
        # all set, empty card
        shoppingcart.empty_cart(request)
        # save profile info for future orders
        if request.user.is_authenticated():
            from accounts import profile
            profile.set(request)
    # return the new order object
    return order
Пример #3
0
def create_order(request):
    """ function that takes a POST request and adds a product instance to the current customer's shopping cart """
    print('create_order!!!!')
    post_data = request.POST.copy()

    cart_items = cart.get_cart_items(request)
    order = Order()
    username = request.session['username']
    custom_user = Customer.objects.get(
                    user = User.objects.get(
                            username = request.session['username']))
    order.user = custom_user
    order.email = post_data.get('email',1)
    order.phone = post_data.get('phone',1)
    order.ip_address = request.META.get('REMOTE_ADDR')

    order.save()

    for cart_item in cart_items:
        product = OrderItem()
        product.order = order
        product.product = cart_item.product
        product.quantity = cart_item.quantity

        product.save()

    cart.empty_cart(request)

    print_order(order.id)
    
    return order
Пример #4
0
def changeOrderItemStatus(request):
    data = request.POST
    pk = data['pk'];
    instock = int(data['instock']);
    orderitem = OrderItem.objects.get(pk = pk);
    order = orderitem.order
    orderitem.status = 'I'

    if instock < orderitem.quantity:
        new_order_item = OrderItem()
        new_order_item.quantity = orderitem.quantity - instock
        new_order_item.category = orderitem.category
        new_order_item.description = orderitem.description
        new_order_item.status = 'P'
        new_order_item.order = orderitem.order
        new_order_item.save()
        inform_purchase_agent(subject='سفارش نیازمند خرید است',message=render_to_string('mail/buy_orderitem.html',{'orderitem' : new_order_item}))

    if instock == 0:
        orderitem.delete()
    else:
        orderitem.quantity = instock
        orderitem.save()
        inner_q = Good.objects.filter(category=orderitem.category,user=None)[:instock]
        Good.objects.filter(pk__in = inner_q).update(user=order.user)
        inform_user(user=order.user, message=render_to_string('mail/orderitem_available.html', {'orderitem': orderitem}),
                    subject='سفارش شما در انبار موجود است')
    #check and change the status of the order
    if OrderItem.objects.filter(order= order,status='N').count() == 0:
        return HttpResponse('order_changed')
    return HttpResponse("success")
Пример #5
0
def create_order(request ,transaction_id):
    order = Order()
    checkout_form = CheckoutForm(request.POST , instance=order)
    order = checkout_form.save(commit=False)
    order.transaction_id = transaction_id
    order.user = None
    if request.user.is_authenticated():
        order.user = request.user
    order.status = Order.SUBMITTED
    order.save()

    # if the order saved succeeded
    if order.pk:

        cart_items =cart.get_cart_items(request)
        for ci in cart_items:
            # create order item for each cart item
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price() # now using @property
            oi.product = ci.product
            oi.save()
        # all set empty cart
        cart.deduct_quantity(request)


    # save the profile for future orders
    if request.user.is_authenticated():
        from accounts import profile
        profile.set(request)
    # return the new order object
    return order
Пример #6
0
def checkout(request, step=0):
    if (request.method == 'POST'):
        if request.user.is_authenticated():
            now = datetime.datetime.utcnow().replace(tzinfo=utc)
            current_user = request.user
            current_order = Order(date_time=now, user=current_user)
            current_order.save()
            for i in range(1, 6):
                print(request.POST)
                try:
                    item_quantity = int(
                        request.POST['item_quantity_' + str(i)])
                except:
                    item_quantity = None
                if not item_quantity is None:
                    item_id = request.POST['item_options_' +
                                           str(i)].split(' ')[1]
                    print(item_id)
                    current_sticker = Sticker.objects.get(pk=int(item_id))
                    print(current_sticker)
                    order_item = OrderItem(
                        order=current_order,
                        sticker=current_sticker,
                        quantity=item_quantity)
                    order_item.save()
    return redirect('/order/' + str(current_order.id) + '/1')
Пример #7
0
def create_order(request,transaction_id):
    order = Order()
    checkout_form = CheckoutForm(request.POST, instance=order)
    order = checkout_form.save(commit=False)
    order.transaction_id = transaction_id 
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.status = Order.SUBMITTED
    order.user = None
    if request.user.is_authenticated():
        order.user = request.user 
    order.save()
    
    # if the order save succeeded 
    if order.pk:
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            # create order item for each cart item
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price() # now using @property
            oi.product = ci.product
            oi.save()
        # all set, empty cart
        cart.empty_cart(request)
        # save profile info for future orders
    if request.user.is_authenticated():
        from accounts import profile
        profile.set(request)
    # return the new order object
    return order    
     
Пример #8
0
def create_order(request,transaction_id):
    order = Order()
    checkout_form = CheckoutForm(request.POST, instance=order)
    order = checkout_form.save(commit=False)
    order.transaction_id = transaction_id
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.user = None
    if request.user.is_authenticated():
        order.user = request.user
    order.status = Order.SUBMITTED
    order.save()
    
    if order.pk:
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price
            oi.product = ci.product
            oi.save()
        cart.empty_cart(request)
        if request.user.is_authenticated():
            from accounts import profile
            profile.set(request)
    return order
    
Пример #9
0
def create_order(request, order_total, transaction_id):
    order = Order()
    checkout_form = CheckoutForm(request.POST, instance=order)
    order = checkout_form.save(commit=False)
    order.transaction_id = transaction_id
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.status = Order.SUBMITTED
    order.user = None
    # order.order_total = order_total
    order_total.purchased = True

    if request.user.is_authenticated():
        order.user = request.user
        from accounts import profile

        user_profile = profile.get_profile(request)
        # verificar si campos requeridos estan vacios, si lo estan crear un user_profile para este usuario desde
        # aqui, asi no tendria q escribirlo en el form UserProfileForm
        if not user_profile.email or not user_profile.shipping_name or user_profile.shipping_city == 0:
            profile.set_profile(request)
    order.save()
    order_total.order = order
    order_total.save()
    # if the order save succeeded
    if order.pk:
        # verificar si el usuario tuvo la promo4, para eliminarla
        try:
            promo4_id = request.session['promo4_id']
            del request.session['promo4_id']
            promo4 = Promo4.objects.get(id=promo4_id)
            promo4.active = False
            promo4.save()
        except KeyError:
            pass
        try:  # eliminar el codigo de promoion para el usuario
            promo_id = request.session['promo3_id']
            del request.session['promo3_id']
            Promo3.objects.get(id=promo_id).delete()
        except KeyError:
            pass
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            # create order item for each cart item
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price()  # now using @property
            oi.product = ci.product
            # disminuir del almacen la cant disponible para este prod
            ci.product.quantity -= ci.quantity
            ci.product.save()
            oi.save()
            # all set, empty cart
        cart.empty_cart(request)
        # utils.send_email("Leoshop", "Gracias por preferirnos", user_profile.email)
    # return the new order object
    return order
Пример #10
0
def addOrder(request):
    c = request.POST
    tableData = json.loads( c['tableData']);

    today = jDateField();
    today = today.to_python(datetime.datetime.now())

    order = Order(submitDate=today)


    status = OrderItem.ORDER_ITEM_STATUS_CHOICES[0][0]
    order.user = request.user
    isforall = 'isforall' in request.POST and request.POST['isforall']
    if request.user.is_superuser:
        order.status = 'A'
        if isforall:
            status = 'P'
            order.user = None



    order.save()
    #print tableData
    for order_item in tableData:
         #print order_item[2]
         if order_item[3] == '':
             category = None
         else:
             category = Category.objects.filter(pk=order_item[3])[0]

         orderitem=OrderItem(order=order,
                               category=category,
                               quantity=int(order_item[1]),
                               description = order_item[4],
                               status= status  #if it's admin and the order belongs to the public ..., if it's admin the order is accepted
         )
         orderitem.save()
         if request.user.is_superuser and isforall:
             inform_purchase_agent(subject='سفارش نیازمند خرید است',message=render_to_string('mail/buy_orderitem.html',{'orderitem' : orderitem}))

    c = {'rlink' : '../../myorders/' , 'success' : "سفارش شما با موفقیت ثبت شد تا لحظاتی دیگر به فهرست سفارشاتتان خواهید رفت"}

    if request.user.is_superuser:
        if not isforall :
            inform_warehouse_manager( message=render_to_string('mail/order_warehouse_manager.html', {'order': order}),
                                      subject='سفارش نیازمند بررسی است')

    else:
        inform_admin('سفارش جدید', render_to_string('mail/order_added.html', {'order': order}))
    return render_to_response("success.html",c);
Пример #11
0
    def post(self, request, *args, **kwargs):

        try:
            restaurant = Restaurant.objects.get(pk=kwargs['pk'])
            # cookie = COOKIES.get('dishes')

        except ObjectDoesNotExist:
            return render(request,'Customer/restaurant_detail.html') 
            # return HttpResponse('NO restaurant found.', status=status.HTTP_404_NOT_FOUND)

        dishNameList = request.POST.getlist("dishName")
        dishPriceList = request.POST.getlist("dishPrice")
        dishQuantityList = request.POST.getlist("dishQ")

        tempOrderList = []
        totalPrice = 0
        for i in range(0, len(dishNameList)):
            if(int(str(dishQuantityList[i])) > 0):
                oneDish = {}
                oneDish['dishName'] = str(dishNameList[i])
                oneDish['dishPrice'] = float(str(dishPriceList[i])[1:])
                oneDish['dishQuantity'] = int(str(dishQuantityList[i]))
                totalPrice = totalPrice + float(str(dishPriceList[i])[1:]) * int(str(dishQuantityList[i]))
                tempOrderList.append(oneDish)


        location = request.POST.get("location")

        deli_type = 1
        if(location == ""):
            deli_type = 0


        order = Order(restaurant = Restaurant.objects.get(pk=kwargs['pk']), buyer = request.user, time = datetime.datetime.now(), location = location, delivery_type = deli_type, total_price = totalPrice, discount = 0, paid = False)
        order.save()

        for item in tempOrderList:
            orderItem = OrderItem(Order = order, Dish = Dish.objects.get(name = item['dishName']), restaurant = Restaurant.objects.get(pk=kwargs['pk']), number = item['dishQuantity'])
            orderItem.save()

        response =  HttpResponseRedirect('/%d/complete' %restaurant.pk)
        response.delete_cookie('dishes')
        return response
Пример #12
0
def add_order(request):
    #TODO: do a create order
    if request.method == 'POST':
        if 'payment_type' in request.POST:
            if request.POST['payment_type'] == 'card':
                summ = request.POST['total']
                template = loader.get_template("add_order.html")
                context = RequestContext(request, {'summary': summ})
                return HttpResponse(template.render(context))
        elif 'order' in request.POST:
            baskets = Basket.objects.filter(
                basket_id=request.session.session_key)
            order = Orders()
            if request.user.is_authenticated():
                order.owner = request.user
            order.order_id = baskets[0].order_number
            order.total_cost = float(request.POST['total'])
            order.address = request.POST['address']
            order.comments = request.POST['comments']
            order.billing_card = request.POST['billing_card']
            order.billing_number = request.POST['billing_number']
            order.billing_name = request.POST['billing_name']
            order.billing_date_mm = request.POST['billing_date_mm']
            order.billing_date_yy = request.POST['billing_date_yy']
            order.billing_cvv = request.POST['billing_cvv']
            order.save()
            for basket in baskets:
                orderitems = OrderItem()
                orderitems.order_id_id = order.order_id
                orderitems.order_sess = basket.basket_id
                orderitems.goods = basket.item
                orderitems.quantity = basket.quantity
                orderitems.total_price_per_goods = basket.sum_total
                orderitems.partnumber = basket.partnumber
                order.orderitem_set.add(orderitems)
                orderitems.save()
            order.save()
            template = loader.get_template("order_success.html")
            context = RequestContext(request, {'order_id': order.pk})
            return HttpResponse(template.render(context))
Пример #13
0
def add_order(request):
    #TODO: do a create order
    if request.method == 'POST':
        if 'payment_type' in request.POST:
            if request.POST['payment_type'] == 'card':
                summ = request.POST['total']
                template = loader.get_template("add_order.html")
                context = RequestContext(request, {'summary': summ})
                return HttpResponse(template.render(context))
        elif 'order' in request.POST:
            baskets = Basket.objects.filter(basket_id=request.session.session_key)
            order = Orders()
            if request.user.is_authenticated():
                order.owner = request.user
            order.order_id = baskets[0].order_number
            order.total_cost = float(request.POST['total'])
            order.address = request.POST['address']
            order.comments = request.POST['comments']
            order.billing_card = request.POST['billing_card']
            order.billing_number = request.POST['billing_number']
            order.billing_name = request.POST['billing_name']
            order.billing_date_mm = request.POST['billing_date_mm']
            order.billing_date_yy = request.POST['billing_date_yy']
            order.billing_cvv = request.POST['billing_cvv']
            order.save()
            for basket in baskets:
                orderitems = OrderItem()
                orderitems.order_id_id = order.order_id
                orderitems.order_sess = basket.basket_id
                orderitems.goods = basket.item
                orderitems.quantity = basket.quantity
                orderitems.total_price_per_goods = basket.sum_total
                orderitems.partnumber = basket.partnumber
                order.orderitem_set.add(orderitems)
                orderitems.save()
            order.save()
            template = loader.get_template("order_success.html")
            context = RequestContext(request, {'order_id': order.pk})
            return HttpResponse(template.render(context))
Пример #14
0
def create_order(request, postdata):
    order = Order()

    # order.user = None
    # if request.user.is_authenticated():
    # order.user = request.user

    # данные с формы
    data = {
        u"Имя": postdata["first-name"],
        u"Фамилия": postdata["last-name"],
        u"Email": postdata["email"],
        u"Телефон": postdata["phone"],
        u"Время звонка": postdata["call-time"],
        u"Область": postdata["region"],
        u"Город": postdata["city"],
        u"Улица": postdata["street"],
        u"Дом": postdata["building"],
        u"Квартира": postdata["flat"],
        u"Способ доставки": postdata["ship-method"],
        u"Номер склада (адрес офиса)": postdata["warehouse"],
        u"Комментарий к заказу": postdata["comment"],
        u"Дополнительная информация": postdata["additional_info"],
    }

    # добавление данных в модель заказа
    order.first_name = data[u"Имя"]
    order.last_name = data[u"Фамилия"]
    order.email = data[u"Email"]
    order.phone = data[u"Телефон"]
    order.call_time = data[u"Время звонка"]
    order.region = data[u"Область"]
    order.city = data[u"Город"]
    order.street = data[u"Улица"]
    order.building = data[u"Дом"]
    order.flat = data[u"Квартира"]
    order.ship_method = data[u"Способ доставки"]
    order.office = data[u"Номер склада (адрес офиса)"]
    order.additional_info = data[u"Дополнительная информация"]
    order.comment = data[u"Комментарий к заказу"]
    order.ip_address = request.META.get("REMOTE_ADDR")
    order = Order(**data)
    order.status = order.SUBMITTED
    order.save()
    # отправка почты менеджеру
    send_mail_manager(data, order)
    # отправка почты заказчкику
    if data[u"Email"] != "":
        send_mail_customer(data, order)
    # if the order save succeeded
    if order.pk:
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            # create order item for each cart item
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price  # now using @property
            oi.product = ci.product
            oi.save()
        # all set, empty cart
        cart.empty_cart(request)
Пример #15
0
	def test_order_item(self):
		orderItem = OrderItem(sticker=self.sticker, order=self.order)
		orderItem.save()

		self.assertEqual(orderItem, OrderItem.objects.get(order=self.order.id))
Пример #16
0
def checkout():
    form = OrderForm(request.form)
    if request.method == 'POST' and form.validate():
        tran = Transaction()
        form.populate_obj(tran)
        tran.type = 'order'
        tran.total_amount = session['all_total_price']
        tran.payment_status = 'unpaid'
        tran.save()

        tran.generate_txn_number()
        if 'discount_id' in session:
            tran.discount_id = session['discount_id']
            tran.discounted_amount = session['discounted_price']
        tran.save()

        # save order items
        for key, product in session['cart_item'].items():
            # check if there is an existing order
            order = Order.query.filter_by(
                transaction_id=tran.id,
                registry_id=product['registry_id'],
                registry_type=product['registry_type']).first()

            if not order:
                order = Order()
                order.registry_id = product['registry_id']
                order.registry_type = product['registry_type']
                order.transaction_id = tran.id
                order.status = 'pending'
                order.save()

                order.generate_order_number()
                order.save()

            item = OrderItem(order_id=order.id,
                             reg_product_id=key,
                             quantity=product['quantity'],
                             unit_price=product['unit_price'],
                             total_price=product['total_price'])
            item.save()

        # initialize payments
        paystack = PaystackPay()
        amount = tran.discounted_amount if tran.discounted_amount else tran.total_amount
        response = paystack.fetch_authorization_url(email=tran.email,
                                                    amount=amount)

        if response.status_code == 200:
            json_response = response.json()

            tran.update(payment_txn_number=json_response['data']['reference'])
            return redirect(json_response['data']['authorization_url'])
        else:
            flash('Something went wrong. Please try again', 'error')
            return redirect(url_for('.checkout'))

    products = session['cart_item']
    return render_template('frontend/checkout.html',
                           form=form,
                           products=products)