예제 #1
0
def cria_pedido_pda(request):
    pizzas = Pizza.objects.filter(personalizada=False)
    bebidas = Bebida.objects.all()
    if request.method == 'POST': # If the form has been submitted...
        form = PedidoFormPDA(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            cliente = form.cleaned_data['cliente']
            pedido = Pedido(cliente=cliente, status='A', pagamento=0)
            pedido.save()
            vazio = True
            for pizza in pizzas:
                quantidade = request.POST.get(pizza.nome + '_qtde')
                quantidade = int(quantidade)
                if quantidade != 0:
                    s = StatusItemPedido(pedido=pedido, item_cardapio=pizza, quantidade=quantidade,
                                         tipo_de_item=1)
                    s.save()
                    pedido.pagamento += s.item_cardapio.preco * s.quantidade
                    pedido.save()
                    vazio = False
            for bebida in bebidas:
                quantidade = request.POST.get(bebida.nome + '_qtde')
                quantidade = int(quantidade)
                if quantidade != 0:
                    if bebida.quantidade - quantidade < 0:
                        pedido.delete()
                        return render_to_response('pda_erro_estoque.html', {'bebida': bebida})
                    else:
                        s = StatusItemPedido(pedido=pedido, item_cardapio=bebida, quantidade=quantidade,
                                             tipo_de_item=2)
                        s.save()
                        bebida.quantidade -= quantidade
                        bebida.save()
                        pedido.pagamento += s.item_cardapio.preco * s.quantidade
                        pedido.save()
            if vazio:
                pedido.delete()
                return render_to_response('pda_erro_vazio.html', context_instance=RequestContext(request))
            return HttpResponseRedirect('/pizzer/') # Redirect after POST
    else:
        form = PedidoFormPDA() # An unbound form
    return render_to_response('pda_criacao_pedido.html', {'form': form, 'bebidas': bebidas, 'pizzas': pizzas}, context_instance=RequestContext(request))
예제 #2
0
def cria_pedido(request):
    redirect_url = '/pizzer/'
    user = request.user
    if user.groups.all():
        grupo = user.groups.all()[0].name
        if grupo == 'cliente':
            cliente = user.cliente_set.all()[0]
            pizzas = Pizza.objects.filter(Q(personalizada=False) | Q(inventor=cliente))
        else:
            redirect_url = '/pizzer/pedidos/'
            pizzas = Pizza.objects.filter(Q(personalizada=False) | Q(inventor__nome='Personalizadas'))
    elif user.is_authenticated():
        grupo = 'admin'
        pizzas = Pizza.objects.filter(personalizada=False)
    else:
        grupo = u'anônimo'
        pizzas = Pizza.objects.filter(personalizada=False)
    bebidas = Bebida.objects.all()
    if request.method == 'POST':
        if grupo == 'cliente':
            form = PedidoFormParaCliente(request.POST)
        else:
            form = PedidoForm(request.POST)
        if form.is_valid():
            if grupo != 'cliente':
                cliente = form.cleaned_data['cliente']
            pagamento = form.cleaned_data['pagamento']
            observacoes = form.cleaned_data['observacoes']
            pedido = Pedido(cliente=cliente, status='A', pagamento=pagamento, observacoes=observacoes)
            pedido.save()
            total = 0
            vazio = True
            for pizza in pizzas:
                quantidade = request.POST.get(pizza.nome + '_qtde')
                quantidade = int(quantidade)
                if quantidade != 0:
                    s = StatusItemPedido(pedido=pedido, item_cardapio=pizza, quantidade=quantidade,
                                         tipo_de_item=1)
                    s.save()
                    total += s.item_cardapio.preco * s.quantidade
                    vazio = False
            for bebida in bebidas:
                quantidade = request.POST.get(bebida.nome + '_qtde')
                quantidade = int(quantidade)
                if quantidade != 0:
                    if bebida.quantidade - quantidade < 0:
                        pedido.delete()
                        return render_to_response('erro_estoque.html', {'bebida': bebida}, context_instance=RequestContext(request))
                    else:
                        s = StatusItemPedido(pedido=pedido, item_cardapio=bebida, quantidade=quantidade,
                                             tipo_de_item=2)
                        s.save()
                        bebida.quantidade -= quantidade
                        bebida.save()
                        total += s.item_cardapio.preco * s.quantidade
            if vazio or (pagamento < total):
                pedido.delete()
            return HttpResponseRedirect(redirect_url)
    else:
        if grupo == 'cliente':
            form = PedidoFormParaCliente(initial={'pagamento': '0.00'})
        else:
            form = PedidoForm(initial={'pagamento': '0.00'})
    return render_to_response('criacao_pedido.html', {'form': form, 'bebidas': bebidas, 'pizzas': pizzas}, context_instance=RequestContext(request))