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))
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))