Exemple #1
0
 def new(self, request, loja_id):
     carrinho = Pedido(data_criacao=datetime.datetime.now(),
                       loja = Loja.objects.get(id=loja_id), status = "ABERTO")
     carrinho.save()
     request.session[ID_CARRINHO] = carrinho.id
     print "Criado novo carrinho de id "+ str(carrinho.id)
     return carrinho
Exemple #2
0
def finalizar_compra(request, pagamento, observacao=""):
    loja = request.session['loja'].nome_curto
    cidade = request.session['cidade']
    usuario = get_usuario(request)
    if usuario is None:
        return HttpResponseRedirect("/")
    try:
        carrinho = Carrinho.objects.get(comprador=usuario,
                                        loja=Loja.objects.get(nome_curto=loja,
                                                              endereco__cidade=cidade))
    except Carrinho.DoesNotExist:
        return redireciona_usuario(request)
    pedido = Pedido(comprador=usuario,
                    loja=request.session['loja'],
                    data_criacao=datetime.datetime.now(),
                    status="ABERTO",
                    total_pago=carrinho.total_pago,
                    pagamento=pagamentos[pagamento],
                    observacao=observacao)
    pedido.save()
    for produto_carrinho in carrinho.produtos_carrinho.all():
        produto = ProdutosPedido(pedido=pedido,
                                 produto=produto_carrinho.produto,
                                 quantidade=produto_carrinho.quantidade,
                                 valor=produto_carrinho.valor)
        produto.save()
    utils.enviar_pedido_loja(pedido, Loja.objects.get(nome_curto=loja,
                                                      endereco__cidade=cidade))
    carrinho.delete()
    return HttpResponseRedirect("/painel/historico/")
Exemple #3
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))
Exemple #4
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))