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