Beispiel #1
0
def checkout(request):
    cart = []

    if request.POST:
        cj = request.POST.get("cart")
    else:
        cj = request.GET.get("cart")
        # Open cash drawer

    fail = False
    for f in json.loads(cj):
        try:
            product = Product.objects.get(pk=f['id'])
            if f['num'] > product.stocked:
                fail = True
            cart.append({
                'product': product,
                'amount': f['num'],
                'price': f['num'] * product.price,
            })
        except Product.DoesNotExist:
            continue

    if request.POST:
        purchase = Purchase()
        purchase.salesperson = request.user
        purchase.total = sum([i['product'].price * i['amount'] for i in cart])
        purchase.save()
        for i in cart:
            i['product'].stocked -= i['amount']
            i['product'].save()
            ProductPurchase.objects.create(
                purchase=purchase,
                product=i['product'],
                amount=i['amount'])
        template = loader.get_template('cashdesk/bon.txt')
        context = RequestContext(
            request,
            {
                'purchase': purchase,
                'productpurchases': ProductPurchase.objects.filter(
                    purchase=purchase),
            }
        )
        bon = template.render(context)
        printer.print_and_cut(
            request.session['printer'],
            bon, True)
        return HttpResponseRedirect("/")

    ctx = {
        'cart': cart,
        'fail': fail,
        'cartjson': request.GET.get("cart"),
        'total': sum([i['product'].price * i['amount'] for i in cart]),
    }
    return render(request, 'cashdesk/checkout.html', ctx)
Beispiel #2
0
def update_order(purchase_id):
    # -------------------------
    # Update data of order
    # -------------------------
    if request.form.get('_method') != 'PUT':
        app.logger.Info(
            'Cannot perform this action. Please contact administrator')
        abort(405)

    purchase = Purchase(id=purchase_id)

    try:
        purchase = purchase.list_one_or_none_purchase()

        if purchase_id is None:
            app.logger.info(
                f'No data with Purchase ID =\
                    {purchase_id} could be found!')
            abort(422)
    except BaseException:
        app.logger.info(
            f'An error occurred. No data with Purchase ID\
                 = {purchase_id} could be found!')
        abort(422)

    purchase.id = purchase_id
    product_name = request.form.get('product')
    purchase.quantity = request.form.get('quantity', purchase.quantity)
    customer_name = request.form.get('customer_id')

    purchase.purchase_date = request.form.get(
        'purchase_date', purchase.purchase_date)

    purchase.total = request.form.get('total', purchase.total)

    product = Product.query.filter(
        Product.name == product_name).one_or_none()
    customer = Customer.query.filter(
        Customer.name == customer_name).one_or_none()

    purchase.product_id = product.product_id
    purchase.customer_id = customer.customer_id

    try:
        purchase.update_purchase_in_database()
        flash(
            f'Purchase {purchase_id} was successfully updated!',
            'success')
    except BaseException:
        app.log.info(f'An error occurred. Purchase {purchase_id} \
            could not be updated!')
        abort(422)

    return redirect(url_for('purchases'))