Exemplo n.º 1
0
 def create(self, validated_data):
     if (self.context['address_id']):
         address = validated_data.pop('address')
         order = Order(**validated_data)
         order.user = self.context['request'].user
         order.address = Address.objects.get(id=self.context['address_id'])
         order.save()
     else:
         address = validated_data.pop('address')
         ad = Address.objects.create(**address)
         order = Order(**validated_data)
         order.user = self.context['request'].user
         order.address = ad
         order.save()
     # order_created(order.id)
     # self.context['request'].session['order_id'] = order.id
     for cartitem in self.context['cartitems']:
         if cartitem.quantity < cartitem.item.quantity:
             OrderItem.objects.create(order=order,
                                      item=cartitem.item,
                                      quantity=cartitem.quantity)
         else:
             raise serializers.ValidationError({'status': 'quantity error'})
     order.total = order.get_total_cost()
     order.save()
     return order
Exemplo n.º 2
0
def create_order(data):
    order = Order()

    order.address = data['Address']
    order.delivery = load_delivery(data['Dostavka'])
    #normalized_name = normalize.name(data['Name'])
    #order.full_name = normalized_name if normalized_name else data["Name"]
    #order.first_name = get_full_name_part(normalized_name, FIRST_NAME_PART)
    #order.middle_name = get_full_name_part(normalized_name, MIDDLE_NAME_PART)
    #order.last_name = get_full_name_part(normalized_name, LAST_NAME_PART)
    order.first_name = data['name']
    order.middle_name = data['name']
    order.last_name = data['name']

    order.phone = data['Phone']
    order.email = data['Email']
    order.comment = data.get('Comment', '')
    order.is_payed = is_payed(data['paymentsystem'])
    order.payment_system = data['paymentsystem']
    order.total = data['payment']['amount']
    order.payment_id = data['payment']['orderid']
    order.promo_code = data.get('Промокод', '')

    order.save()
    order.refresh_from_db()
    return order
Exemplo n.º 3
0
def orderproduct(request):
    current_user = request.user
    form = OrderForm(request.POST or None)
    shopcart = ShopCart.objects.filter(user_id=current_user.id)
    total = 0
    numItems = 0
    subtotal = []
    for item in shopcart:
        numItems += 1
        total += item.quantity * item.product.price
    for item in shopcart:
        subtotal.append(item.quantity * item.product.price)
    if request.method == 'POST':
        if form.is_valid():
            data = Order()
            data.first_name = form.cleaned_data['first_name']
            data.last_name = form.cleaned_data['last_name']
            data.address = form.cleaned_data['address']
            data.city = form.cleaned_data['city']
            data.email = form.cleaned_data['email']
            data.phone = form.cleaned_data['phone']
            data.user_id = current_user.id
            data.total = total
            data.save()

            for item in shopcart:
                detail = OrderDetail()
                detail.order_id = data.id
                detail.user_id = current_user.id
                detail.product_id = item.product_id
                detail.quantity = item.quantity
                detail.price = item.product.price
                detail.total = item.amount
                detail.save()
            ShopCart.objects.filter(user_id=current_user.id).delete()
            messages.success(request, "Thanks for purchases")
            return HttpResponseRedirect(reverse("orderproduct", args=None))
    context = {
        'total': total,
        'numItems': numItems,
        'shopcart': shopcart,
        'subtotal': subtotal,
        'form': form,
    }
    template = "orders/orderproduct.html"
    return render(request, template, context)
Exemplo n.º 4
0
def place_order(request, total=0, quantity=0):
    current_user = request.user
    cart_items = CartItem.objects.filter(user=current_user)
    cart_count = cart_items.count()
    if cart_count <= 0:
        return redirect('store')

    delivery = 2000
    for cart_item in cart_items:
        total += (cart_item.product.price * cart_item.quantity)
        quantity += cart_item.quantity
    if total > 50000:
        delivery = 0
    grand_total = delivery + total

    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            data = Order()
            data.user = current_user
            data.first_name = form.cleaned_data['first_name']
            data.last_name = form.cleaned_data['last_name']
            data.phone = form.cleaned_data['phone']
            data.email = form.cleaned_data['email']
            data.address = form.cleaned_data['address']
            data.country = form.cleaned_data['country']
            data.state = form.cleaned_data['state']
            data.city = form.cleaned_data['city']
            data.order_note = form.cleaned_data['order_note']
            data.order_total = grand_total
            data.delivery = delivery
            data.ip = request.META.get('REMOTE_ADDR')
            data.save()

            yr = int(datetime.date.today().strftime('%Y'))
            dt = int(datetime.date.today().strftime('%d'))
            mt = int(datetime.date.today().strftime('%m'))
            d = datetime.date(yr, mt, dt)
            current_date = d.strftime('%Y%m%d')
            order_number = current_date + str(data.id)
            data.order_number = order_number
            data.save()

            # Код без оплаты, оформление заказа
            order = Order.objects.get(user=request.user, is_ordered=False, order_number=order_number)

            payment = Payment(
                user=request.user,
                payment_id=order.id,
                payment_method='Оплата курьеру',
                amount_paid=grand_total,
                status='В заказе',
            )
            payment.save()
            order.payment = payment
            order.is_ordered = True
            order.save()

            cart_items = CartItem.objects.filter(user=request.user)
            for item in cart_items:
                order_product = OrderProduct()
                order_product.order_id = order.id
                order.payment = payment
                order_product.user_id = request.user.id
                order_product.size = item.size
                order_product.product_id = item.product_id
                order_product.quantity = item.quantity
                order_product.product_price = item.product.price
                order_product.ordered = True
                order_product.save()

                # уменьшение колличества товара
                size = Size.objects.get(product=item.product_id, size=item.size)
                size.stock -= item.quantity
                size.save()

            # очистка корзины
            CartItem.objects.filter(user=request.user).delete()

            # отправка письма
            mail_subject = 'Спасибо за покупку!'
            message = render_to_string('orders/order_received_email.html', {
                'user': current_user,
                'order': order,
            })
            to_email = request.user.email
            send_email = EmailMessage(mail_subject, message, to=[to_email])
            send_email.send()
            order_email(order.id)
            return redirect('order_complete')
        else:
            return redirect('checkout')
Exemplo n.º 5
0
def check_in(request):
    cart = Cart(request)
    template = "check/check_in.html"
    address_placeholders = dict(ADDRESS_PLACEHOLDERS)
    if request.method == "POST":
        form = CheckInForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            order = Order()
            order.surname = cd.get("surname")
            order.name = cd.get("name")
            order.pay_way = cd.get("pay_way")
            order.delivery_by = cd.get("delivery_by")
            order.phone = cd.get("phone")
            order.email = cd.get("email")
            order.address = cd.get("address")
            order.sum = cart.cart.total_sum
            order.comment = cd.get("user_comment")
            order.save()
            for item in cart:
                OrderItem(
                    order=order,
                    product=item.product,
                    product_name=item.product.name,
                    amount=item.quantity,
                    price=item.unit_price,
                    sum=item.total_price,
                ).save()
            # close cart
            if not can_proceed(order.confirm):
                raise PermissionDenied
            order.confirm()
            order.save()
            cart.cart.checked_out = True
            cart.cart.save()
            # save order data in session
            order_data = {
                ORDER_NAME: order.name,
                ORDER_SURNAME: order.surname,
                ORDER_PHONE: order.phone,
                ORDER_EMAIL: order.email,
                ORDER_ADDRESS: order.address,
            }
            request.session[ORDER_DATA] = order_data
            request.session[ORDER_ID] = order.pk
            to = reverse("cart-order-preview")
            if request.is_ajax():
                return JsonResponse({"success": True, "location": to})
            return redirect(to)
        else:
            if request.is_ajax():
                errors = dict([(k, force_text(v[0])) for k, v in form.errors.items()])
                return JsonResponse({"success": False, "errors": errors})
    else:
        order_data = request.session.get(ORDER_DATA)
        initial = {}
        if order_data:
            initial["surname"] = order_data.get(ORDER_SURNAME)
            initial["name"] = order_data.get(ORDER_NAME)
            initial["phone"] = order_data.get(ORDER_PHONE)
            initial["email"] = order_data.get(ORDER_EMAIL)
            initial["address"] = order_data.get(ORDER_ADDRESS)
        if initial:
            form = CheckInForm(initial=initial)
        else:
            form = CheckInForm()
        ctx = {"cart": cart, "form": form, "address_placeholders": address_placeholders}
        return render(request, template, ctx)
Exemplo n.º 6
0
from urllib.request import urlopen
from xml.etree import cElementTree as et
from orders.models import Order

url = 'http://test.lengow.io/orders-test.xml'

dom = et.parse(urlopen(url))
root = dom.getroot()

for node in root[1]:
    order = Order()
    for element in node:
        if element.tag =='marketplace' and element.tag != 'None':
            order.marketplace = element.text
        if element.tag == 'order_amount' and element.tag != 'None':
            order.amount = float(element.text)
        if element.tag == 'order_shipping' and element.tag != 'None':
            order.shipping = float(element.text)
        if element.tag == 'billing_address':
            for child in element:
                if child.tag == 'billing_address' and child.text != 'None':
                    order.address = child.text
                if child.tag == 'billing_lastname' and child.text != 'None':
                    order.last_name = child.text
                if child.tag == 'billing_city' and child.text != 'None':
                    order.city = child.text
    order.save()