Example #1
0
def relatorioAReceber(request):
    user = request.user

    if (request.method == 'POST'):
        inicio = request.POST['inicio']
        fim = request.POST['fim']
        status = request.POST['status']

        #converte as datas em objetos datetime para fazer o filtro
        data_inicio = datetime.strptime(inicio, "%d/%m/%Y")
        data_fim = datetime.strptime(fim, "%d/%m/%Y")

        if (status == 'abertas'):
            contas = ContasAReceber.objects.filter(
                data__gte=data_inicio,
                data__lte=data_fim).filter(user=user).filter(recebido=False)
        elif (status == 'recebidas'):
            contas = ContasAReceber.objects.filter(
                data__gte=data_inicio,
                data__lte=data_fim).filter(user=user).filter(recebido=True)
        elif (status == 'vencidas'):
            contas = ContasAReceber.objects.filter(
                data__gte=data_inicio, data__lt=datetime.now()).filter(
                    user=user).filter(recebido=False)

        contasJson = serializers.serialize('json',
                                           contas,
                                           use_natural_foreign_keys=True,
                                           use_natural_primary_keys=True)

        return HttpResponse(contasJson, content_type="application/json")

    template = 'relatorio/relatorio_contas_a_receber.html'
    contexto = {}

    #busca o saldo de Caixa do usuario e atribui ao contexto
    saldoC = SaldoCaixa.objects.get(user=user)
    contexto['saldoCaixa'] = saldoC.saldoAtual

    #para saldo de cada agencia
    agencias = ContaBanco.objects.filter(user=user)
    contexto['agencias'] = agencias

    #para adicionar lancamento
    formCaixa = LancamentosForm()
    formCaixa.getAddLancamentoForm(request)
    contexto['formLancCaixa'] = formCaixa

    formBanco = LancamentosBancoForm()
    formBanco.getAddLancamentoForm(request, 'banco')
    contexto['formLancBanco'] = formBanco

    formCredito = LancamentosBancoForm()
    formCredito.getAddLancamentoForm(request, 'credito')
    contexto['formLancCredito'] = formCredito

    userProfile = UsuarioProfile.objects.get(user=request.user)
    contexto['profile'] = userProfile

    return render(request, template, contexto)
Example #2
0
def lancamentos(request):
    #id do usuario logado
    id_user = request.user.id

    if (request.method == 'POST'):
        mes = request.POST.get('mes')
        ano = request.POST.get('ano')

        lancamentos = LancamentosCaixa.objects.filter(data__month=mes).filter(
            data__year=ano).filter(user_id=id_user)

        if (len(lancamentos) != 0):
            lancJson = serializers.serialize('json',
                                             lancamentos,
                                             use_natural_foreign_keys=True,
                                             use_natural_primary_keys=True)
            return HttpResponse(lancJson, content_type="application/json")
        else:
            return HttpResponseServerError("Nenhum lançamento foi encontrado.")

    #armazena a data atual
    hoje = datetime.today()
    saldo = 0
    template = 'caixa/caixa.html'

    #seleciona os lancamentos do mes atual
    lancamentos = LancamentosCaixa.objects.filter(
        data__month=hoje.month).filter(data__year=hoje.year).filter(
            user_id=id_user)

    contexto = {'lancamentos': lancamentos}

    #busca o saldo de Caixa do usuario e atribui ao contexto
    saldoC = SaldoCaixa.objects.get(user=request.user)
    contexto['saldoCaixa'] = saldoC.saldoAtual

    #para saldo de cada agencia
    agencias = ContaBanco.objects.filter(user=request.user)
    contexto['agencias'] = agencias

    #para adicionar lancamento
    formCaixa = LancamentosForm()
    formCaixa.getAddLancamentoForm(request)
    contexto['formLancCaixa'] = formCaixa

    formBanco = LancamentosBancoForm()
    formBanco.getAddLancamentoForm(request, 'banco')
    contexto['formLancBanco'] = formBanco

    formCredito = LancamentosBancoForm()
    formCredito.getAddLancamentoForm(request, 'credito')
    contexto['formLancCredito'] = formCredito

    userProfile = UsuarioProfile.objects.get(user=request.user)
    contexto['profile'] = userProfile

    return render(request, template, contexto)
Example #3
0
def categoria(request):
    form = CategoriaForm()

    if (request.method == 'POST'):
        form = CategoriaForm(request.POST)
        if (form.is_valid()):
            categoria = form.save(commit=False)
            categoria.user = request.user
            categoria.save()
            messages.success(
                request, "Categoria " + categoria.descricao +
                " adicionada com sucesso!")
            return HttpResponseRedirect(reverse('caixa:categoria'))
        else:
            messages.warning(request, "Formulário inválido")

    user = request.user
    template = 'caixa/categoria.html'
    catEntrada = Categoria.objects.filter(tipo=1).filter(user=user)
    catSaida = Categoria.objects.filter(tipo=2).filter(user=user)

    contexto = {'catEntrada': catEntrada, 'catSaida': catSaida, 'form': form}

    #busca o saldo de Caixa do usuario e atribui ao contexto
    saldoC = SaldoCaixa.objects.get(user=user)
    contexto['saldoCaixa'] = saldoC.saldoAtual

    #para saldo de cada agencia
    agencias = ContaBanco.objects.filter(user=user)
    contexto['agencias'] = agencias

    #para adicionar lancamento
    formCaixa = LancamentosForm()
    formCaixa.getAddLancamentoForm(request)
    contexto['formLancCaixa'] = formCaixa

    formBanco = LancamentosBancoForm()
    formBanco.getAddLancamentoForm(request, 'banco')
    contexto['formLancBanco'] = formBanco

    formCredito = LancamentosBancoForm()
    formCredito.getAddLancamentoForm(request, 'credito')
    contexto['formLancCredito'] = formCredito

    userProfile = UsuarioProfile.objects.get(user=user)
    contexto['profile'] = userProfile

    return render(request, template, contexto)
Example #4
0
def cadastroBanco(request):
    user = request.user
    form_agencia = ContaBancoForm()

    if (request.method == 'POST'):
        form_agencia = ContaBancoForm(request.POST)

        if (form_agencia.is_valid()):
            bancos = form_agencia.save(commit=False)
            bancos.user = user
            bancos.save()
            messages.success(request, 'Agência cadastrada com sucesso.')
            return HttpResponseRedirect(reverse('banco:agencia'))
        else:
            messages.warning(request, "Formulário inválido")

    template = 'banco/agencia.html'
    agencias = ContaBanco.objects.filter(user=user).exclude(
        tipo=ContaBanco.CARTAO_DE_CREDITO)
    credito = ContaBanco.objects.filter(user=user).filter(
        tipo=ContaBanco.CARTAO_DE_CREDITO)
    contexto = {'form': form_agencia, 'agencias': agencias, 'credito': credito}

    #busca o saldo de Caixa do usuario e atribui ao contexto
    saldoC = SaldoCaixa.objects.get(user=user)
    contexto['saldoCaixa'] = saldoC.saldoAtual

    userProfile = UsuarioProfile.objects.get(user=user)
    contexto['profile'] = userProfile

    #para adicionar lancamento
    formCaixa = LancamentosForm()
    formCaixa.getAddLancamentoForm(request)
    contexto['formLancCaixa'] = formCaixa

    formBanco = LancamentosBancoForm()
    formBanco.getAddLancamentoForm(request, 'banco')
    contexto['formLancBanco'] = formBanco

    formCredito = LancamentosBancoForm()
    formCredito.getAddLancamentoForm(request, 'credito')
    contexto['formLancCredito'] = formCredito

    return render(request, template, contexto)
Example #5
0
def contasAPagar(request):
	user = request.user
	form = ContasAPagarForm()

	if(request.method == 'POST'):
		form = ContasAPagarForm(request.POST)
		
		try:
			parcelas = int(request.POST.get('parcelas'))
		except ValueError as error:
			messages.warning(request, 'A quantidade de parcelas é inválida.')
			return HttpResponseRedirect(reverse('contas_a_pagar:index'))

		if(parcelas < 1 or parcelas > form.PARCELAS):
			messages.warning(request, 'A quantidade de parcelas é inválida.')
			return HttpResponseRedirect(reverse('contas_a_pagar:index'))

		if(form.is_valid()):
			contaPagar 		= form.save(commit = False)
			contaPagar.user = request.user
			contaPagar.paga = False
			parcela1 		= ""
			mensagem 		= contaPagar.descricao
			
			if(parcelas > 1):
				parcela1 = " 1/" + str(parcelas)

				for x in range(1, parcelas):
					novaParcela 			= ContasAPagar()
					novaParcela.data 		= contaPagar.data + datedelta.datedelta(months = x)
					novaParcela.categoria 	= contaPagar.categoria
					novaParcela.descricao 	= contaPagar.descricao + " " + str(x + 1) + "/" + str(parcelas)
					novaParcela.valor 		= contaPagar.valor
					novaParcela.paga 		= False
					novaParcela.user 		= request.user
					novaParcela.save()
					
			contaPagar.descricao += parcela1 
			contaPagar.save()
			messages.success(request, "Conta " + mensagem + " adicionada com sucesso!")
			return HttpResponseRedirect(reverse('contas_a_pagar:index'))
		else:
			messages.warning(request, "Formulário inválido")

	template 	= 'contas_a_pagar/contas_a_pagar.html'	
	contas 		= ContasAPagar.getCurrentMmonthAccounts(user)
	form.getAddCPForm(request)
	
	context = {'contPagar': contas, 'contPagarForm': form}

	#busca o saldo na carteira do usuario e atribui ao contexto
	saldoC = SaldoCaixa.objects.get(user = user)
	context['saldoCaixa'] = saldoC.saldoAtual

	#para saldo de cada agencia
	agencias = ContaBanco.objects.filter(user = user)
	context['agencias'] = agencias
	
	#para adicionar lancamento
	formCaixa = LancamentosForm()
	formCaixa.getAddLancamentoForm(request)
	context['formLancCaixa'] = formCaixa

	formBanco = LancamentosBancoForm()
	formBanco.getAddLancamentoForm(request, 'banco')
	context['formLancBanco'] = formBanco

	formCredito = LancamentosBancoForm()
	formCredito.getAddLancamentoForm(request, 'credito')
	context['formLancCredito'] = formCredito

	userProfile = UsuarioProfile.objects.get(user = user)
	context['profile'] = userProfile

	return render(request, template, context)
Example #6
0
def config(request):
    id_user = request.user.id
    template = 'config/config.html'
    contexto = {}

    user = User.objects.get(pk=id_user)
    formSenha = PasswordChangeForm(user=request.user)
    formDados = EditAccountsForm(instance=request.user)

    formUser = UsuarioProfileForm()
    contexto['formUser'] = formUser
    #Editar
    if (request.method == 'POST'):
        if (request.POST.get('old_password')):
            formSenha = PasswordChangeForm(data=request.POST,
                                           user=request.user)
            if formSenha.is_valid():
                formSenha.save()
                formSenha = PasswordChangeForm(user=request.user)
                messages.success(request, "Senha alterada com sucesso!")
        elif (request.FILES):
            userProfile = UsuarioProfile.objects.get(user=request.user)
            form = UsuarioProfileForm(request.POST,
                                      request.FILES,
                                      instance=userProfile)
            if (form.is_valid()):
                form.save()
                messages.success(request, "Imagem alterada com sucesso!")
        elif (request.POST.get('mail_contas_a_pagar')):
            lista = request.POST.getlist('mail_contas_a_pagar')
            userProfile = UsuarioProfile.objects.get(user=request.user)
            if (not userProfile.mail_contas_a_pagar and (lista[0] == 'on')):
                userProfile.mail_contas_a_pagar = True
                userProfile.save()
            elif (userProfile.mail_contas_a_pagar and (lista[0] == '0')):
                userProfile.mail_contas_a_pagar = False
                userProfile.save()
            messages.success(request, "Alerta alterado com sucesso!")
        else:
            #form = UsuarioProfileForm(request.POST, request.FILES)
            formDados = EditAccountsForm(request.POST, instance=request.user)
            if formDados.is_valid():
                formDados.save()
                formDados = EditAccountsForm(instance=request.user)
                formDados.fields['username'].widget.attrs.update(
                    {'readonly':
                     'readonly'})  #não permite que o usuário altere o username
                messages.success(request, "Usuário alterado com sucesso!")

    formSenha.fields['old_password'] = forms.CharField(
        label='Senha atual',
        max_length=32,
        required=True,
        widget=forms.PasswordInput(attrs={
            'class': 'form-control',
            'placeholder': 'Senha atual',
        }))

    formSenha.fields['new_password1'] = forms.CharField(
        label='Nova senha',
        max_length=32,
        required=True,
        widget=forms.PasswordInput(attrs={
            'class': 'form-control',
            'placeholder': 'Nova senha',
        }))

    formSenha.fields['new_password2'] = forms.CharField(
        label='Confirmaçao da nova senha',
        max_length=32,
        required=True,
        widget=forms.PasswordInput(attrs={
            'class': 'form-control',
            'placeholder': 'Confirme a senha',
        }))

    #para adicionar lancamento
    formCaixa = LancamentosForm()
    formCaixa.getAddLancamentoForm(request)
    contexto['formLancCaixa'] = formCaixa

    formBanco = LancamentosBancoForm()
    formBanco.getAddLancamentoForm(request, 'banco')
    contexto['formLancBanco'] = formBanco

    formCredito = LancamentosBancoForm()
    formCredito.getAddLancamentoForm(request, 'credito')
    contexto['formLancCredito'] = formCredito

    contexto['formConfig'] = formDados
    contexto['formSenha'] = formSenha

    userProfile = UsuarioProfile.objects.get(user=request.user)
    contexto['profile'] = userProfile

    #busca o saldo de Caixa do usuario e atribui ao contexto
    saldoC = SaldoCaixa.objects.get(user=request.user)
    contexto['saldoCaixa'] = saldoC.saldoAtual

    #para saldo de cada agencia
    agencias = ContaBanco.objects.filter(user=request.user)
    contexto['agencias'] = agencias

    contexto['isPerfil'] = True

    contexto['userProfile'] = userProfile

    return render(request, template, contexto)
Example #7
0
def home(request):
    template = 'principal/home.html'
    context = {}
    user = request.user

    userProfile = UsuarioProfile.objects.get(user=user)
    context['profile'] = userProfile

    locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')

    if 'data' in request.session:
        data = datetime.strptime(request.session.get('data'),
                                 "%Y-%m-%d %H-%M-%S")
    else:
        data = datetime.today()

    if (request.method == 'POST' and 'mes' in request.POST):
        tipo_mes = request.POST.get('mes')

        if (tipo_mes == 'anterior'):
            data = data - relativedelta(months=1)
        else:
            data = data + relativedelta(months=1)

        request.session['data'] = data.strftime("%Y-%m-%d %H-%M-%S")

        return redirect('principal:home')

    total_credito_entradas = 0
    total_credito_saidas = 0
    total_entradas = 0
    total_saidas = 0
    total_metas = 0
    entradas_array = []
    saidas_array = []

    #calcula total de entradas
    banco_entrada = ContaBanco.getLancamentosGroupByCategoria(
        user, data, 'entrada', 'banco')

    for b in banco_entrada:
        entradas_array.append(b)
        total_entradas += b['valor']

    caixa_entrada = LancamentosCaixa.getLancamentosGroupByCategoria(
        user, data, 'entrada')

    for c in caixa_entrada:
        descricao_categoria = ""
        for b in entradas_array:
            if (c['categoria__descricao'] == b['categoria__descricao']):
                b['quantidade'] += c['quantidade']
                b['valor'] += c['valor']
                descricao_categoria = c['categoria__descricao']
                break
        if (c['categoria__descricao'] != descricao_categoria):
            entradas_array.append(c)
        total_entradas += c['valor']

    #calcula total de saidas
    banco_saida = ContaBanco.getLancamentosGroupByCategoria(
        user, data, 'saida', 'banco')

    for b in banco_saida:
        saidas_array.append(b)
        total_saidas += b['valor']

    caixa_saida = LancamentosCaixa.getLancamentosGroupByCategoria(
        user, data, 'saida')

    for c in caixa_saida:
        descricao_categoria = ""
        for b in saidas_array:
            if (c['categoria__descricao'] == b['categoria__descricao']):
                b['quantidade'] += c['quantidade']
                b['valor'] += c['valor']
                descricao_categoria = c['categoria__descricao']
                break
        if (c['categoria__descricao'] != descricao_categoria):
            saidas_array.append(c)
        total_saidas += c['valor']

    #calcula total de lançamentos do cartão de crédito
    cartao_credito_saidas = ContaBanco.getLancamentosGroupByCategoria(
        user, data, 'saida', 'credito')
    cartao_credito_entradas = ContaBanco.getLancamentosGroupByCategoria(
        user, data, 'entrada', 'credito')

    for cre in cartao_credito_entradas:
        total_credito_entradas += cre['valor']

    for cr in cartao_credito_saidas:
        total_credito_saidas += cr['valor']

    context['total_entradas'] = locale.currency(total_entradas,
                                                grouping=True,
                                                symbol=None)
    context['total_saidas'] = locale.currency(total_saidas,
                                              grouping=True,
                                              symbol=None)
    context['total_credito_saidas'] = locale.currency(total_credito_saidas,
                                                      grouping=True,
                                                      symbol=None)
    context['total_credito_entradas'] = locale.currency(total_credito_entradas,
                                                        grouping=True,
                                                        symbol=None)
    context['saldo'] = locale.currency(total_entradas - total_saidas,
                                       grouping=True,
                                       symbol=None)

    contas_abertas = ContasAPagar.objects.filter(
        data__month__lte=data.month).filter(data__year__lte=data.year).filter(
            user=user).filter(paga=False)
    context['contas_abertas'] = contas_abertas
    context['quant_contas_abertas'] = len(contas_abertas)

    categorias_entrada = []
    categorias_saida = []
    categorias_credito_entradas = []
    categorias_credito_saidas = []
    categorias_entradas_total = 0
    categorias_saidas_total = 0
    categorias_credito_total_saidas = 0
    categorias_credito_total_entradas = 0

    for cr in cartao_credito_saidas:
        categorias_credito_saidas.append({
            'categoria_id': cr['categoria__pk'],
            'label': cr['categoria__descricao'],
            'tipo': cr['banco__tipo'],
            'value': cr['valor'],
            'quantidade': cr['quantidade']
        })
        categorias_credito_total_saidas += cr['valor']

    for cre in cartao_credito_entradas:
        categorias_credito_entradas.append({
            'categoria_id': cre['categoria__pk'],
            'label': cre['categoria__descricao'],
            'tipo': cre['banco__tipo'],
            'value': cre['valor'],
            'quantidade': cre['quantidade']
        })
        categorias_credito_total_entradas += cre['valor']

    for e in entradas_array:
        tipo = 'caixa'
        if ('banco__tipo' in e):
            tipo = e['banco__tipo']
        categorias_entrada.append({
            'categoria_id': e['categoria__pk'],
            'tipo': tipo,
            'label': e['categoria__descricao'],
            'value': e['valor'],
            'quantidade': e['quantidade']
        })
        categorias_entradas_total += e['valor']

    for s in saidas_array:
        tipo = 'caixa'
        if ('banco__tipo' in s):
            tipo = s['banco__tipo']
        categorias_saida.append({
            'categoria_id': s['categoria__pk'],
            'tipo': tipo,
            'label': s['categoria__descricao'],
            'value': s['valor'],
            'quantidade': s['quantidade']
        })
        categorias_saidas_total += s['valor']

    context['categoria_saida'] = sorted(categorias_saida,
                                        key=lambda i:
                                        (i['value'], i['quantidade']),
                                        reverse=True)
    categorias_saidas_json = json.dumps(categorias_saida,
                                        ensure_ascii=False,
                                        use_decimal=True)
    context['categoria_saida_json'] = categorias_saidas_json
    context['categorias_saidas_total'] = categorias_saidas_total

    context['categoria_entrada'] = sorted(categorias_entrada,
                                          key=lambda i:
                                          (i['value'], i['quantidade']),
                                          reverse=True)
    categorias_entrada_json = json.dumps(categorias_entrada,
                                         ensure_ascii=False,
                                         use_decimal=True)
    context['categoria_entrada_json'] = categorias_entrada_json
    context['categorias_entrada_total'] = categorias_entradas_total

    context['categoria_credito_entradas'] = sorted(
        categorias_credito_entradas,
        key=lambda i: (i['value'], i['quantidade']),
        reverse=True)
    context['categoria_credito_saidas'] = sorted(categorias_credito_saidas,
                                                 key=lambda i:
                                                 (i['value'], i['quantidade']),
                                                 reverse=True)
    categorias_credito_json = json.dumps(categorias_credito_saidas,
                                         ensure_ascii=False,
                                         use_decimal=True)
    context['categoria_credito_json'] = categorias_credito_json
    context[
        'categorias_credito_total_entradas'] = categorias_credito_total_entradas
    context[
        'categorias_credito_total_saidas'] = categorias_credito_total_saidas

    #busca o saldo de Caixa do usuario e atribui ao contexto
    saldoC = SaldoCaixa.objects.get(user=user)
    context['saldoCaixa'] = saldoC.saldoAtual

    #para saldo de cada agencia
    agencias = ContaBanco.objects.filter(user=user)
    context['agencias'] = agencias

    context['data'] = data

    #para adicionar lancamento
    formCaixa = LancamentosForm()
    formCaixa.getAddLancamentoForm(request)
    context['formLancCaixa'] = formCaixa

    formBanco = LancamentosBancoForm()
    formBanco.getAddLancamentoForm(request, 'banco')
    context['formLancBanco'] = formBanco

    formCredito = LancamentosBancoForm()
    formCredito.getAddLancamentoForm(request, 'credito')
    context['formLancCredito'] = formCredito

    #soma o valor de saldo de todas as agencias
    totalSaldoAgencias = 0
    for a in agencias:
        totalSaldoAgencias += a.saldo

    metas = Metas.objects.filter(user=user).filter(concluida=False).filter(
        prazo__month=data.month).filter(prazo__year=data.year)
    for meta in metas:
        total_metas += meta.valor

    context['total_metas'] = locale.currency(total_metas,
                                             grouping=True,
                                             symbol=None)

    return render(request, template, context)
Example #8
0
def metas(request):
    if (request.method == 'POST'):
        form = MetasForm(request.POST)
        if (form.is_valid()):
            cadastroMeta = form.save(commit=False)
            cadastroMeta.user = request.user
            cadastroMeta.progresso = 0
            cadastroMeta.concluida = False
            cadastroMeta.save()
            messages.success(
                request,
                'Meta ' + cadastroMeta.titulo + ' cadastrada com sucesso.')
            return HttpResponseRedirect(reverse('metas:metas'))
        else:
            messages.success(request, 'Formulário inválido. Tente novamente.')
            return HttpResponseRedirect(reverse('metas:metas'))

    user = request.user
    template = 'meta/metas.html'
    contexto = {}

    metas = Metas.objects.filter(user=user)
    contexto['formMetas'] = metas

    #busca o saldo de Caixa do usuario e atribui ao contexto
    saldoC = SaldoCaixa.objects.get(user=request.user)
    contexto['saldoCaixa'] = saldoC.saldoAtual

    #para saldo de cada agencia
    agencias = ContaBanco.objects.filter(user=user).exclude(
        tipo=ContaBanco.CARTAO_DE_CREDITO)
    contexto['agencias'] = agencias

    somaMetas = 0
    totalMetas = 0

    if agencias:
        #soma o valor de saldo de todas as agencias
        totalSaldoAgencias = 0
        for a in agencias:
            totalSaldoAgencias += a.saldo

        saldoTotal = totalSaldoAgencias + saldoC.saldoAtual

        for m in metas:
            progresso = util.getMetaPercent(m.valor, saldoTotal)
            m.progresso = progresso
            m.save()

            saldoTotal -= m.valor
            somaMetas += m.valor

    contexto['totalMetas'] = totalMetas
    contexto['somaMetas'] = somaMetas

    form = MetasForm()

    contexto['formCad'] = form

    userProfile = UsuarioProfile.objects.get(user=request.user)
    contexto['profile'] = userProfile

    #para adicionar lancamento
    formCaixa = LancamentosForm()
    formCaixa.getAddLancamentoForm(request)
    contexto['formLancCaixa'] = formCaixa

    formBanco = LancamentosBancoForm()
    formBanco.getAddLancamentoForm(request, 'banco')
    contexto['formLancBanco'] = formBanco

    formCredito = LancamentosBancoForm()
    formCredito.getAddLancamentoForm(request, 'credito')
    contexto['formLancCredito'] = formCredito

    return render(request, template, contexto)
Example #9
0
def banco(request):
    #usuario logado
    user = request.user

    if (request.method == 'POST'):

        agencia = request.POST.get('agencia')
        mes = request.POST.get('mes')
        ano = request.POST.get('ano')

        agencia = ContaBanco.objects.get(pk=agencia)

        lancamentos = LancamentosBanco.objects.filter(data__month=mes).filter(
            data__year=ano).filter(user=user).filter(banco=agencia)

        lancJson = serializers.serialize('json',
                                         lancamentos,
                                         use_natural_foreign_keys=True,
                                         use_natural_primary_keys=True)

        return HttpResponse(lancJson, content_type="application/json")

    template = 'banco/banco.html'
    contexto = {}

    listAgencias = []
    todasAgencias = ContaBanco.objects.filter(user=user).exclude(
        tipo=ContaBanco.CARTAO_DE_CREDITO)

    for a in todasAgencias:
        id = a.id
        nome = a.banco
        saldo = str(a.saldo)
        listAgencias.append((id, nome, saldo))

    listAgencias = [{
        'id': id,
        'agencia': agencia,
        'saldo': saldo
    } for id, agencia, saldo in listAgencias]
    listAgencias = json.dumps(listAgencias, ensure_ascii=False)
    contexto['selectAgencias'] = listAgencias

    listCredito = []
    todasCredito = ContaBanco.objects.filter(user=user).filter(
        tipo=ContaBanco.CARTAO_DE_CREDITO)

    for c in todasCredito:
        id = c.id
        nome = c.banco
        saldo = str(c.saldo)
        listCredito.append((id, nome, saldo))

    listCredito = [{
        'id': id,
        'agencia': credito,
        'saldo': saldo
    } for id, credito, saldo in listCredito]
    listCredito = json.dumps(listCredito, ensure_ascii=False)
    contexto['selectCredito'] = listCredito

    #para adicionar lancamento
    formCaixa = LancamentosForm()
    formCaixa.getAddLancamentoForm(request)
    contexto['formLancCaixa'] = formCaixa

    formBanco = LancamentosBancoForm()
    formBanco.getAddLancamentoForm(request, 'banco')
    contexto['formLancBanco'] = formBanco

    formCredito = LancamentosBancoForm()
    formCredito.getAddLancamentoForm(request, 'credito')
    contexto['formLancCredito'] = formCredito

    userProfile = UsuarioProfile.objects.get(user=user)
    contexto['profile'] = userProfile

    #para saldo da carteira
    saldoC = SaldoCaixa.objects.get(user=user)
    contexto['saldoCaixa'] = saldoC.saldoAtual

    #para saldo de cada agencia
    agencias = ContaBanco.objects.filter(user=user)
    contexto['agencias'] = agencias

    return render(request, template, contexto)