コード例 #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()
	#seleciona apenas as categorias do usuario logado
	formCaixa.fields['categoria'].choices = separarCategorias(request)

	formBanco = LancamentosBancoForm()
	#Seleciona apenas o banco do usuario para o formulario
	formBanco.fields['banco'] = forms.ModelChoiceField(
		queryset = ContaBanco.objects.filter(user_id = request.user.id),
		empty_label = 'Nenhum',
        widget = forms.Select(
            attrs = {'class': 'form-control'}
        )
	)
	#seleciona apenas as categorias do usuario logado
	formBanco.fields['categoria'].choices = separarCategorias(request)
	
	#para adicionar lancamento
	contexto['formLancCaixa'] = formCaixa
	contexto['formLancBanco'] = formBanco

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

	return render(request, template, contexto)
コード例 #2
0
ファイル: views.py プロジェクト: rualyson/meudinherim
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(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

    formCaixa = LancamentosForm()
    #seleciona apenas as categorias do usuario logado
    formCaixa.fields['categoria'].choices = separarCategorias(request)

    formBanco = LancamentosBancoForm()
    #Seleciona apenas o banco do usuario para o formulario
    formBanco.fields['banco'] = forms.ModelChoiceField(
        queryset=ContaBanco.objects.filter(user_id=request.user.id),
        empty_label='Nenhum',
        widget=forms.Select(attrs={'class': 'form-control'}))
    #seleciona apenas as categorias do usuario logado
    formBanco.fields['categoria'].choices = separarCategorias(request)

    #para adicionar lancamento
    contexto['formLancCaixa'] = formCaixa
    contexto['formLancBanco'] = formBanco

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

    return render(request, template, contexto)
コード例 #3
0
ファイル: views.py プロジェクト: rodrigosmig/meudinherim
def editLancamento(request):

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

        id_user = request.user.id

        agencia = request.POST.get('banco')

        #id do lancamento clicado
        idLancamento = request.POST.get('id')
        #busca o lancamento a ser alterado
        lancamento = LancamentosBanco.objects.get(pk=idLancamento)
        #atribui o lancamento ao form
        form = LancamentosBancoForm(request.POST, instance=lancamento)

        if (form.is_valid()):
            form.save()
            conta = ContaBanco.objects.get(pk=agencia)
            lancamentos = LancamentosBanco.objects.filter(
                user_id=id_user).filter(banco=agencia)
            saldo = 0

            for l in lancamentos:
                if (l.tipo == '1'):
                    saldo += l.valor
                else:
                    saldo -= l.valor
            conta.saldo = saldo

            conta.save()

            return HttpResponse("Lançamento alterado com sucesso")
        else:
            return HttpResponseServerError("Formulário inválido")

    #id do lancamento clicado
    idLancamento = request.GET.get('id')
    lancamento = LancamentosBanco.objects.get(pk=idLancamento)

    form = LancamentosBancoForm(instance=lancamento)
    form.getEditLancamentoForm(request)

    if (lancamento.conta_a_pagar != None):
        contaID = "<div id='status_conta'>Pago</div>"
    elif (lancamento.conta_a_receber != None):
        contaID = "<div id='status_conta'>Recebido</div>"
    else:
        contaID = "<div id='status_conta'>Nenhum</div>"

    #retorna o id do lancamento junto com o formulario
    divId = "<div id='id_lancamento'>" + idLancamento + "</div>"

    form_html = {form.as_p(), divId, contaID}
    return HttpResponse(form_html)
コード例 #4
0
ファイル: views.py プロジェクト: rualyson/meudinherim
def categoria(request):

    if (request.method == 'POST'):
        form = CategoriaForm(request.POST)
        if (form.is_valid()):
            categoria = form.save(commit=False)
            categoria.user = request.user
            categoria.save()
            return HttpResponse('Categoria cadastrada com sucesso.')
        else:
            return HttpResponseServerError("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)

    form = CategoriaForm()

    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

    formCaixa = LancamentosForm()
    #seleciona apenas as categorias do usuario logado
    formCaixa.fields['categoria'].choices = separarCategorias(request)

    formBanco = LancamentosBancoForm()
    #Seleciona apenas o banco do usuario para o formulario
    formBanco.fields['banco'] = forms.ModelChoiceField(
        queryset=ContaBanco.objects.filter(user=user),
        empty_label='Nenhum',
        widget=forms.Select(attrs={'class': 'form-control'}))
    #seleciona apenas as categorias do usuario logado
    formBanco.fields['categoria'].choices = separarCategorias(request)

    #para adicionar lancamento
    contexto['formLancCaixa'] = formCaixa
    contexto['formLancBanco'] = formBanco

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

    return render(request, template, contexto)
コード例 #5
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)
コード例 #6
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)
コード例 #7
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)
コード例 #8
0
ファイル: views.py プロジェクト: rodrigosmig/meudinherim
def addLancamento(request):
    if (request.method == 'POST'):

        form = LancamentosBancoForm(request.POST)
        agencia = request.POST.get('banco')

        if (form.is_valid()):
            lancamento = form.save(commit=False)

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

            if (lancamento.tipo == "1"):
                conta.saldo += lancamento.valor
            else:
                conta.saldo -= lancamento.valor

            conta.save()

            #relacionao o usuario logado com o lançamento
            lancamento.user = request.user
            lancamento.save()
            return HttpResponse('Lançamento efetuado com sucesso.')
    return HttpResponseServerError('Lançamento inválido')
コード例 #9
0
ファイル: views.py プロジェクト: rodrigosmig/meudinherim
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)
コード例 #10
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)
コード例 #11
0
ファイル: views.py プロジェクト: rualyson/meudinherim
def home(request):
    template = 'principal/home.html'
    context = {}
    #id do usuario logado
    user = request.user

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

    eventosCaixa = []
    eventosBanco = []
    eventosCPagar = []
    eventosCReceber = []

    #carrega os lançamentos do caixa do usuário
    lancamentosCaixa = LancamentosCaixa.objects.filter(user=user)
    #carrega os lançamentos do banco do usuário
    lancamentosBanco = LancamentosBanco.objects.filter(user=user)
    #carrega as contas a pagar do usuário
    contasAPagar = ContasAPagar.objects.filter(user=user).filter(paga=False)
    #carrega as contas a receber do usuário
    contasAReceber = ContasAReceber.objects.filter(user=user).filter(
        recebido=False)

    #separa os dados do caixa que serão utilizados no calendario em um tupla
    for lancamento in lancamentosCaixa:
        dia = str(lancamento.data.day)
        if (len(dia) == 1):
            dia = "0" + dia
        mes = str(lancamento.data.month)
        if (len(mes) == 1):
            mes = "0" + mes
        ano = str(lancamento.data.year)
        #concatena a data para o formato do fullcalendar
        data = ano + "-" + mes + "-" + dia
        titulo = lancamento.descricao + " : " + " R$" + str(lancamento.valor)
        eventosCaixa.append((titulo, data))

    #converte a tupla para dicionario
    eventosCaixa = [{
        'title': title,
        'start': start
    } for title, start in eventosCaixa]

    #separa os dados do banco que serão utilizados no calendario em um tupla
    for lancamento in lancamentosBanco:
        dia = str(lancamento.data.day)
        if (len(dia) == 1):
            dia = "0" + dia
        mes = str(lancamento.data.month)
        if (len(mes) == 1):
            mes = "0" + mes
        ano = str(lancamento.data.year)
        #concatena a data para o formato do fullcalendar
        data = ano + "-" + mes + "-" + dia
        titulo = lancamento.descricao + " : " + " R$" + str(lancamento.valor)
        eventosBanco.append((titulo, data))

    #converte a tupla para para dicionario
    eventosBanco = [{
        'title': title,
        'start': start,
        'color': 'yellow',
        'textColor': 'black'
    } for title, start in eventosBanco]

    #separa os dados do contas a pagar que serão utilizados no calendario em um tupla
    for conta in contasAPagar:
        dia = str(conta.data.day)
        if (len(dia) == 1):
            dia = "0" + dia
        mes = str(conta.data.month)
        if (len(mes) == 1):
            mes = "0" + mes
        ano = str(conta.data.year)
        #concatena a data para o formato do fullcalendar
        data = ano + "-" + mes + "-" + dia
        titulo = conta.descricao + " : " + " R$" + str(conta.valor)
        eventosCPagar.append((titulo, data))

    #converte a tupla para para dicionario
    eventosCPagar = [{
        'title': title,
        'start': start,
        'color': 'red'
    } for title, start in eventosCPagar]

    #separa os dados do contas a receber que serão utilizados no calendario em um tupla
    for conta in contasAReceber:
        dia = str(conta.data.day)
        if (len(dia) == 1):
            dia = "0" + dia
        mes = str(conta.data.month)
        if (len(mes) == 1):
            mes = "0" + mes
        ano = str(conta.data.year)
        #concatena a data para o formato do fullcalendar
        data = ano + "-" + mes + "-" + dia
        titulo = conta.descricao + " : " + " R$" + str(conta.valor)
        eventosCReceber.append((titulo, data))

    #converte a tupla para para dicionario
    eventosCReceber = [{
        'title': title,
        'start': start,
        'color': 'green'
    } for title, start in eventosCReceber]

    #junta os lancamento de caixa, banco e contas a pagar
    todosEventos = eventosBanco + eventosCaixa + eventosCPagar + eventosCReceber
    #converte para o formato Json
    todosEventos = json.dumps(todosEventos, ensure_ascii=False)

    context['events'] = todosEventos

    # print(teste)

    formCaixa = LancamentosForm()
    #seleciona apenas as categorias do usuario logado
    formCaixa.fields['categoria'].choices = separarCategorias(request)

    formBanco = LancamentosBancoForm()
    #Seleciona apenas o banco do usuario para o formulario
    formBanco.fields['banco'] = forms.ModelChoiceField(
        queryset=ContaBanco.objects.filter(user=user),
        empty_label='Nenhum',
        widget=forms.Select(attrs={'class': 'form-control'}))
    #seleciona apenas as categorias do usuario logado
    formBanco.fields['categoria'].choices = separarCategorias(request)

    #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['formLancCaixa'] = formCaixa
    context['formLancBanco'] = formBanco

    metas = Metas.objects.filter(user=user)

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

    for m in metas:
        #calculo do progresso da meta
        progresso = ((totalSaldoAgencias + saldoC.saldoAtual) / m.valor) * 100
        m.progresso = round(progresso, 2)
        m.save()

    context['metas'] = metas

    return render(request, template, context)
コード例 #12
0
def contasAPagar(request):
	user = request.user

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

		if(form.is_valid()):
			contaPagar = form.save(commit = False)
			contaPagar.user = request.user
			contaPagar.paga = False
			contaPagar.save()
			return HttpResponse('Conta a pagar adicionada com sucesso')
		else:
			return HttpResponseServerError("Formulário inválido.")


	template = 'contas_a_pagar/contas_a_pagar.html'

	hoje = datetime.today()

	contas = ContasAPagar.objects.filter(user = user).filter(data__month = hoje.month)

	form = ContasAPagarForm()
	#seleciona apenas as categorias do usuario logado e do tipo saida
	form.fields['categoria'] = forms.ModelChoiceField(
			queryset = Categoria.objects.filter(user = user).filter(tipo = 2),
			empty_label = 'Nenhum',
	        widget = forms.Select(
	            attrs = {'class': 'form-control', 'id': 'id_categoriaCP'}
	        )
		)

	context = {'contPagar': contas, 'contPagarForm': form}

	#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

	
	#para adicionar lancamento
	formCaixa = LancamentosForm()
	#seleciona apenas as categorias do usuario logado
	formCaixa.fields['categoria'].choices = separarCategorias(request)

	formBanco = LancamentosBancoForm()
	#Seleciona apenas o banco do usuario para o formulario
	formBanco.fields['banco'] = forms.ModelChoiceField(
		queryset = ContaBanco.objects.filter(user = user),
		empty_label = 'Nenhum',
        widget = forms.Select(
            attrs = {'class': 'form-control'}
        )
	)
	#seleciona apenas as categorias do usuario logado
	formBanco.fields['categoria'].choices = separarCategorias(request)

	#para adicionar lancamento
	context['formLancCaixa'] = formCaixa
	context['formLancBanco'] = formBanco

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

	return render(request, template, context)
コード例 #13
0
ファイル: views.py プロジェクト: rualyson/meudinherim
def editSenha(request):
    template = 'config/config.html'
    contexto = {}
    formDados = EditAccountsForm(instance=request.user)

    #Editar Senha
    if (request.method == 'POST'):
        formSenha = PasswordChangeForm(data=request.POST, user=request.user)
        if formSenha.is_valid():
            formSenha.save()
            contexto['success'] = True
        else:
            contexto['erros'] = True
            contexto['mensagem'] = 'Senha não alterada. Tente novamente'

    else:
        formSenha = PasswordChangeForm(user=request.user)

    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',
        }))

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

    formCaixa = LancamentosForm()
    #Seleciona apenas o banco do usuario para o formulario
    formCaixa.fields['categoria'].choices = separarCategorias(request)

    formBanco = LancamentosBancoForm()
    #Seleciona apenas o banco do usuario para o formulario
    formBanco.fields['banco'] = forms.ModelChoiceField(
        queryset=ContaBanco.objects.filter(user_id=request.user.id),
        empty_label='Nenhum',
        widget=forms.Select(attrs={'class': 'form-control'}))
    #seleciona apenas as categorias do usuario logado
    formBanco.fields['categoria'].choices = separarCategorias(request)

    return render(request, template, contexto)
コード例 #14
0
ファイル: views.py プロジェクト: rodrigosmig/meudinherim
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)
コード例 #15
0
ファイル: views.py プロジェクト: rodrigosmig/meudinherim
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)
コード例 #16
0
ファイル: views.py プロジェクト: rualyson/meudinherim
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)

    formFoto = UsuarioProfileForm()
    contexto['formFoto'] = formFoto

    #Editar
    if (request.method == 'POST'):
        form = UsuarioProfileForm(request.POST, request.FILES)
        print(form)
        formDados = EditAccountsForm(request.POST, instance=request.user)
        if formDados.is_valid():
            formDados.save()
            formDados = EditAccountsForm(instance=request.user)
            contexto['success'] = True
    else:
        formDados = EditAccountsForm(instance=request.user)

    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',
        }))

    formCaixa = LancamentosForm()
    #Seleciona apenas o banco do usuario para o formulario
    formCaixa.fields['categoria'].choices = separarCategorias(request)

    formBanco = LancamentosBancoForm()
    #Seleciona apenas o banco do usuario para o formulario
    formBanco.fields['banco'] = forms.ModelChoiceField(
        queryset=ContaBanco.objects.filter(user_id=request.user.id),
        empty_label='Nenhum',
        widget=forms.Select(attrs={'class': 'form-control'}))
    #seleciona apenas as categorias do usuario logado
    formBanco.fields['categoria'].choices = separarCategorias(request)

    #para adicionar lancamento
    contexto['formLancCaixa'] = formCaixa
    contexto['formLancBanco'] = formBanco

    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=user)
    contexto['agencias'] = agencias

    return render(request, template, contexto)
コード例 #17
0
ファイル: views.py プロジェクト: rodrigosmig/meudinherim
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)
コード例 #18
0
def metas(request):
    if (request.method == 'POST'):
        form = MetasForm(request.POST)
        print(form)

        if (form.is_valid()):
            cadastroMeta = form.save(commit=False)
            cadastroMeta.user = request.user
            cadastroMeta.progresso = 0
            cadastroMeta.save()
            return HttpResponse('Meta cadastrada com sucesso.')
        else:
            return HttpResponseServerError(
                'Formulário inválido. Tente novamente.')

    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)
    contexto['agencias'] = agencias

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

    for m in metas:
        progresso = ((totalSaldoAgencias + saldoC.saldoAtual) / m.valor) * 100
        m.progresso = round(progresso, 2)
        m.save()

    form = MetasForm()

    contexto['formCad'] = form

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

    #para adicionar lancamento
    formCaixa = LancamentosForm()
    #seleciona apenas as categorias do usuario logado
    formCaixa.fields['categoria'].choices = separarCategorias(request)

    #para adicionar lancamento
    formBanco = LancamentosBancoForm()
    #Seleciona apenas o banco do usuario para o formulario
    formBanco.fields['banco'] = forms.ModelChoiceField(
        queryset=ContaBanco.objects.filter(user_id=request.user.id),
        empty_label='Nenhum',
        widget=forms.Select(attrs={'class': 'form-control'}))
    #seleciona apenas as categorias do usuario logado
    formBanco.fields['categoria'].choices = separarCategorias(request)

    #para adicionar lancamento
    contexto['formLancCaixa'] = formCaixa
    contexto['formLancBanco'] = formBanco

    return render(request, template, contexto)
コード例 #19
0
ファイル: views.py プロジェクト: rodrigosmig/meudinherim
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)