def verificar_estoque(request,produto,quantidade,tamanho): if request.is_ajax(): try: carrinho = Carrinho(request) produto = Produto.ativo.get(id=produto) tam = tamanho quantidade_item = carrinho.verificar_quantidade(produto,tam) tamanho = produto.tamanhos.get(sigla=tam) output = {'ok':''} if (int(quantidade) > tamanho.quantidade_estoque) or ((int(quantidade) + quantidade_item) > tamanho.quantidade_estoque): output = {'error':"quantidade indisponivel em estoque"} except: pass data = simplejson.dumps(output, indent=2, ensure_ascii=False) return HttpResponse(data, mimetype='text/javascript; charset=utf-8')
def finalizar_pagamento_resumo(request): if request.method == "POST": cliente = get_object_or_404(Cliente, user=request.user) endereco_form = EnderecoForm(request.POST) if endereco_form.is_valid(): endereco, created = Endereco.objects.get_or_create( cliente=cliente, **endereco_form.cleaned_data) else: return render_to_response( 'carrinho/finalizar_pagamento_escolher_endereco.html', { 'enderecos': Endereco.objects.filter(cliente__user=request.user), 'form': endereco_form, }, context_instance=RequestContext(request)) request.session['endereco'] = endereco.id carrinho = Carrinho(request) return render_to_response('carrinho/finalizar_pagamento_resumo.html', { 'endereco': endereco, }, context_instance=RequestContext(request)) else: return HttpResponseRedirect( reverse('carrinho:finalizar_pagamento_escolher_endereco'))
def verificar_estoque(request, produto, quantidade, tamanho): if request.is_ajax(): try: carrinho = Carrinho(request) produto = Produto.ativo.get(id=produto) tam = tamanho quantidade_item = carrinho.verificar_quantidade(produto, tam) tamanho = produto.tamanhos.get(sigla=tam) output = {'ok': ''} if (int(quantidade) > tamanho.quantidade_estoque) or ( (int(quantidade) + quantidade_item) > tamanho.quantidade_estoque): output = {'error': "quantidade indisponivel em estoque"} except: pass data = simplejson.dumps(output, indent=2, ensure_ascii=False) return HttpResponse(data, mimetype='text/javascript; charset=utf-8')
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, }