def finalizar_pagamento(request): if verificar_estoque_produtos(request) > 0: return HttpResponseRedirect(reverse('carrinho:estoque_indisponivel')) if not request.session.get('endereco',False): return HttpResponseRedirect(reverse('carrinho:finalizar_pagamento_escolher_endereco')) opcao_pagamento = request.POST.get('opcao-pagamento',None) if not opcao_pagamento: return retornar_escolha_pagamento(request,u"Ocorreu algum problema no pagamento. Por favor tente realizar o pagamento novamente.") carrinho = Carrinho(request) endereco = get_object_or_404(Endereco, id=request.session['endereco']) frete_valor, frete_tipo, frete_tipo_nome = request.session['frete'].split("/") valor_compra = Decimal(frete_valor) + carrinho.preco_total() valor_compra = str(valor_compra).replace(",",".") if opcao_pagamento == "cielo": bandeira = request.POST['bandeira'] prestacoes = int(request.POST['prestacoes']) pedido,created = Pedido.objects.get_or_create(cliente=Cliente.objects.get(user=request.user),carrinho=carrinho,endereco=endereco,tipo_frete=frete_tipo,frete=frete_valor,tipo_pagamento=opcao_pagamento,para_presente=para_presente,presente_de=presente_de,presente_para=presente_para) if created: atualizar_estoque(pedido) payment = PaymentAttempt() if prestacoes > 1: transaction = 2 else: transaction = 1 try: return redirect(payment.transaction(total=Decimal(valor_compra),card_type=bandeira,order=pedido,installments=prestacoes,transaction=transaction,url_retorno="http://www.miniature.com.br/carrinho/compra-finalizada/cielo/?p=%s" % pedido.numero)) except: messages.error(request,"Ocorreu algum problema na tentativa de pagamento com cartão de crédito através da Cielo. Por favor tente realizar o pagamento novamente.") return render_to_response('carrinho/finalizar_pagamento_escolher_forma_pagamento.html', { 'valor_compra':valor_compra.replace(".",','), },context_instance=RequestContext(request))
def finalizar_pagamento_escolher_forma_pagamento(request): if verificar_estoque_produtos(request) > 0: return HttpResponseRedirect(reverse('carrinho:estoque_indisponivel')) if not request.session.get('endereco',False): return HttpResponseRedirect(reverse('carrinho:finalizar_pagamento_escolher_endereco')) frete_valor,frete_tipo,frete_tipo_nome = request.POST.get('tipo-frete',None).split("/") request.session['frete'] = request.POST.get('tipo-frete',None) carrinho = Carrinho(request) valor_compra = Decimal(frete_valor) + carrinho.preco_total() return render_to_response('carrinho/finalizar_pagamento_escolher_forma_pagamento.html', { 'valor_compra':valor_compra, },context_instance=RequestContext(request))
def verificar_estoque_produtos(request): carrinho = Carrinho(request) for item in carrinho: quantidade_estoque = item.produto.tamanhos.get(sigla=item.tamanho).quantidade_estoque quantidade_carrinho = item.quantidade if quantidade_carrinho > quantidade_estoque: messages.error(request, u'O produto "%s" não possui %s unidade(s) em estoque. Possui %s unidade(s).' % (item.produto.nome,quantidade_carrinho,quantidade_estoque)) if quantidade_estoque == 0: carrinho.remove(item.produto,item.tamanho) else: carrinho.update(item.produto,item.tamanho,quantidade_estoque) return len(messages.get_messages(request)._queued_messages)
def finalizar_pagamento_escolher_forma_pagamento(request): if verificar_estoque_produtos(request) > 0: return HttpResponseRedirect(reverse('carrinho:estoque_indisponivel')) if not request.session.get('endereco', False): return HttpResponseRedirect( reverse('carrinho:finalizar_pagamento_escolher_endereco')) frete_valor, frete_tipo, frete_tipo_nome = request.POST.get( 'tipo-frete', None).split("/") request.session['frete'] = request.POST.get('tipo-frete', None) carrinho = Carrinho(request) valor_compra = Decimal(frete_valor) + carrinho.preco_total() return render_to_response( 'carrinho/finalizar_pagamento_escolher_forma_pagamento.html', { 'valor_compra': valor_compra, }, context_instance=RequestContext(request))
def verificar_estoque_produtos(request): carrinho = Carrinho(request) for item in carrinho: quantidade_estoque = item.produto.tamanhos.get( sigla=item.tamanho).quantidade_estoque quantidade_carrinho = item.quantidade if quantidade_carrinho > quantidade_estoque: messages.error( request, u'O produto "%s" não possui %s unidade(s) em estoque. Possui %s unidade(s).' % (item.produto.nome, quantidade_carrinho, quantidade_estoque)) if quantidade_estoque == 0: carrinho.remove(item.produto, item.tamanho) else: carrinho.update(item.produto, item.tamanho, quantidade_estoque) return len(messages.get_messages(request)._queued_messages)
def atualizar_carrinho(request, produto_id, tamanho, quantidade): redirect_to = request.GET.get('next', request.META.get('HTTP_REFERER', '')) produto = get_object_or_404(Produto, id=produto_id) carrinho = Carrinho(request) carrinho.update(produto, tamanho, quantidade) return HttpResponseRedirect(redirect_to)
def remover_item(request, produto_id, tamanho): produto = Produto.objects.get(id=produto_id) carrinho = Carrinho(request) carrinho.remove(produto, tamanho) return HttpResponseRedirect(reverse('carrinho:exibir'))
def adicionar_item(request, produto_id, quantidade, tamanho): produto = get_object_or_404(Produto, id=produto_id) carrinho = Carrinho(request) carrinho.add(produto, tamanho, quantidade) return direct_to_template( request, template='carrinho/confirmacao_item_adicionado.html')
def finalizar_pagamento(request): if verificar_estoque_produtos(request) > 0: return HttpResponseRedirect(reverse('carrinho:estoque_indisponivel')) if not request.session.get('endereco', False): return HttpResponseRedirect( reverse('carrinho:finalizar_pagamento_escolher_endereco')) opcao_pagamento = request.POST.get('opcao-pagamento', None) if not opcao_pagamento: return retornar_escolha_pagamento( request, u"Ocorreu algum problema no pagamento. Por favor tente realizar o pagamento novamente." ) carrinho = Carrinho(request) endereco = get_object_or_404(Endereco, id=request.session['endereco']) frete_valor, frete_tipo, frete_tipo_nome = request.session['frete'].split( "/") valor_compra = Decimal(frete_valor) + carrinho.preco_total() valor_compra = str(valor_compra).replace(",", ".") if opcao_pagamento == "cielo": bandeira = request.POST['bandeira'] prestacoes = int(request.POST['prestacoes']) pedido, created = Pedido.objects.get_or_create( cliente=Cliente.objects.get(user=request.user), carrinho=carrinho, endereco=endereco, tipo_frete=frete_tipo, frete=frete_valor, tipo_pagamento=opcao_pagamento, para_presente=para_presente, presente_de=presente_de, presente_para=presente_para) if created: atualizar_estoque(pedido) payment = PaymentAttempt() if prestacoes > 1: transaction = 2 else: transaction = 1 try: return redirect( payment.transaction( total=Decimal(valor_compra), card_type=bandeira, order=pedido, installments=prestacoes, transaction=transaction, url_retorno= "http://www.miniature.com.br/carrinho/compra-finalizada/cielo/?p=%s" % pedido.numero)) except: messages.error( request, "Ocorreu algum problema na tentativa de pagamento com cartão de crédito através da Cielo. Por favor tente realizar o pagamento novamente." ) return render_to_response( 'carrinho/finalizar_pagamento_escolher_forma_pagamento.html', { 'valor_compra': valor_compra.replace(".", ','), }, context_instance=RequestContext(request))
def carrinho(request): carrinho = Carrinho(request) return { 'carrinho_qtd_itens': carrinho.quantidade(), 'carrinho':carrinho, }
def atualizar_carrinho(request, produto_id, tamanho, quantidade): redirect_to = request.GET.get('next', request.META.get('HTTP_REFERER', '') ) produto = get_object_or_404(Produto,id=produto_id) carrinho = Carrinho(request) carrinho.update(produto, tamanho, quantidade) return HttpResponseRedirect(redirect_to)
def adicionar_item(request, produto_id, quantidade, tamanho): produto = get_object_or_404(Produto,id=produto_id) carrinho = Carrinho(request) carrinho.add(produto, tamanho, quantidade) return direct_to_template(request,template='carrinho/confirmacao_item_adicionado.html')