Java tutorial
/*** Copyright (c) 2012 - 2020 Hrcules S. S. Jos Este arquivo parte do programa Oramento Domstico. Oramento Domstico um software livre; voc pode redistribui-lo e/ou modific-lo dentro dos termos da Licena Pblica Geral Menor GNU como publicada pela Fundao do Software Livre (FSF); na verso 2.1 da Licena. Este programa distribudo na esperana que possa ser til, mas SEM NENHUMA GARANTIA; sem uma garantia implcita de ADEQUAO a qualquer MERCADO ou APLICAO EM PARTICULAR. Veja a Licena Pblica Geral Menor GNU em portugus para maiores detalhes. Voc deve ter recebido uma cpia da Licena Pblica Geral Menor GNU sob o nome de "LICENSE.TXT" junto com este programa, se no, acesse o site do projeto no endereco https://github.com/herculeshssj/orcamento ou escreva para a Fundao do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. Para mais informaes sobre o programa Oramento Domstico e seu autor entre em contato pelo e-mail herculeshssj@outlook.com, ou ainda escreva para Hrcules S. S. Jos, Av. Ministro Lafaeyte de Andrade, 1683 - Bl. 3 Apt 404, Marco II - Nova Iguau, RJ, Brasil. ***/ package br.com.hslife.orcamento.controller; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.SortedSet; import java.util.TreeSet; import javax.annotation.PostConstruct; import javax.faces.model.SelectItem; import org.primefaces.model.chart.BarChartModel; import org.primefaces.model.chart.ChartSeries; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import br.com.hslife.orcamento.entity.Conta; import br.com.hslife.orcamento.entity.LancamentoConta; import br.com.hslife.orcamento.entity.LancamentoPeriodico; import br.com.hslife.orcamento.entity.Moeda; import br.com.hslife.orcamento.enumeration.StatusLancamento; import br.com.hslife.orcamento.enumeration.StatusLancamentoConta; import br.com.hslife.orcamento.enumeration.TipoConta; import br.com.hslife.orcamento.enumeration.TipoLancamento; import br.com.hslife.orcamento.enumeration.TipoLancamentoPeriodico; import br.com.hslife.orcamento.exception.ApplicationException; import br.com.hslife.orcamento.exception.BusinessException; import br.com.hslife.orcamento.exception.ValidationException; import br.com.hslife.orcamento.facade.IConta; import br.com.hslife.orcamento.facade.ILancamentoConta; import br.com.hslife.orcamento.facade.ILancamentoPeriodico; import br.com.hslife.orcamento.facade.IMoeda; @Component("panoramaDespesaFixaMB") @Scope("session") public class PanoramaDespesaFixaController extends AbstractController { /** * */ private static final long serialVersionUID = -7261234526051506146L; @Autowired private ILancamentoPeriodico lancamentoPeriodicoService; @Autowired private ILancamentoConta lancamentoContaService; @Autowired private IMoeda moedaService; @Autowired private IConta contaService; private LancamentoPeriodico lancamentoSelecionado; private Conta contaSelecionada; private TipoConta tipoContaSelecionada; private Moeda moedaPadrao; private String periodoAConsiderar; private Integer periodo; private boolean exibirGraficoReceita; private boolean exibirGraficoDespesa; private Double maxValueBarPagamentosDespesa = 1.0; private Double maxValueBarPagamentosReceita = 1.0; private BarChartModel ultimosPagamentosDespesaModel; private BarChartModel ultimosPagamentosReceitaModel; private double saldoCredor; private double saldoDevedor; public PanoramaDespesaFixaController() { moduleTitle = "Panorama das Despesas Fixas"; } @Override protected void initializeEntity() { } @Override @PostConstruct public String startUp() { exibirGraficoDespesa = false; exibirGraficoReceita = false; saldoCredor = 0.0; saldoDevedor = 0.0; this.carregarMoedaPadrao(); return "/pages/ResumoEstatistica/panoramaDespesaFixa"; } public void find() { try { // Verifica se uma opo foi selecionada de acordo com a opo do sistema switch (getOpcoesSistema().getFormaAgrupamentoPagamento()) { case "INDIVIDUAL": if (lancamentoSelecionado != null) this.gerarGraficoLancamentoIndividual(); else this.gerarGraficoTodosLancamentos(); break; case "CONTA": if (contaSelecionada != null) this.gerarGraficoConta(); else this.gerarGraficoTodosLancamentos(); break; case "TIPO_CONTA": if (tipoContaSelecionada != null) this.gerarGraficoTipoConta(); else this.gerarGraficoTodosLancamentos(); break; default: this.gerarGraficoTodosLancamentos(); } } catch (ApplicationException be) { errorMessage(be.getMessage()); } } private void gerarGraficoTodosLancamentos() throws ApplicationException { List<LancamentoConta> pagamentos = new ArrayList<>(); List<LancamentoPeriodico> lancamentos = new ArrayList<>(); List<LancamentoConta> pagamentosReceita = new ArrayList<>(); List<LancamentoConta> pagamentosDespesa = new ArrayList<>(); if (periodoAConsiderar.equals("ANTERIOR")) { pagamentos = lancamentoContaService.buscarPagamentosPorTipoLancamentoEUsuarioEPago( TipoLancamentoPeriodico.FIXO, getUsuarioLogado(), null); } else { lancamentos = lancamentoPeriodicoService.buscarPorTipoLancamentoEStatusLancamentoPorUsuario( TipoLancamentoPeriodico.FIXO, StatusLancamento.ATIVO, getUsuarioLogado()); pagamentos = lancamentoContaService.buscarPagamentosPorTipoLancamentoEUsuarioEPago( TipoLancamentoPeriodico.FIXO, getUsuarioLogado(), null); for (LancamentoPeriodico lancamento : lancamentos) { pagamentos.addAll(lancamentoContaService.gerarPrevisaoProximosPagamentos(lancamento, periodo)); } } // Separa os pagamento de lanamentos fixos de receita dos de despesa for (LancamentoConta pagamento : pagamentos) { if (pagamento.getLancamentoPeriodico().getTipoLancamento().equals(TipoLancamento.DESPESA)) { pagamentosDespesa.add(pagamento); } else { pagamentosReceita.add(pagamento); } } // Envia a lista de pagamento para os respectivos mtodos para gerar o grfico gerarGraficoDespesa(pagamentosDespesa); gerarGraficoReceita(pagamentosReceita); } private void gerarGraficoTipoConta() throws ApplicationException { List<LancamentoConta> pagamentos = new ArrayList<>(); List<LancamentoPeriodico> lancamentos = new ArrayList<>(); List<LancamentoConta> pagamentosReceita = new ArrayList<>(); List<LancamentoConta> pagamentosDespesa = new ArrayList<>(); if (periodoAConsiderar.equals("ANTERIOR")) { pagamentos = lancamentoContaService.buscarPagamentosPorTipoLancamentoETipoContaEPago( TipoLancamentoPeriodico.FIXO, tipoContaSelecionada, null); } else { lancamentos = lancamentoPeriodicoService.buscarPorTipoLancamentoETipoContaEStatusLancamento( TipoLancamentoPeriodico.FIXO, tipoContaSelecionada, StatusLancamento.ATIVO); pagamentos = lancamentoContaService.buscarPagamentosPorTipoLancamentoETipoContaEPago( TipoLancamentoPeriodico.FIXO, tipoContaSelecionada, null); for (LancamentoPeriodico lancamento : lancamentos) { pagamentos.addAll(lancamentoContaService.gerarPrevisaoProximosPagamentos(lancamento, periodo)); } } // Separa os pagamento de lanamentos fixos de receita dos de despesa for (LancamentoConta pagamento : pagamentos) { if (pagamento.getLancamentoPeriodico().getTipoLancamento().equals(TipoLancamento.DESPESA)) { pagamentosDespesa.add(pagamento); } else { pagamentosReceita.add(pagamento); } } // Envia a lista de pagamento para os respectivos mtodos para gerar o grfico gerarGraficoDespesa(pagamentosDespesa); gerarGraficoReceita(pagamentosReceita); } private void gerarGraficoConta() throws ApplicationException { List<LancamentoConta> pagamentos = new ArrayList<>(); List<LancamentoPeriodico> lancamentos = new ArrayList<>(); List<LancamentoConta> pagamentosReceita = new ArrayList<>(); List<LancamentoConta> pagamentosDespesa = new ArrayList<>(); if (periodoAConsiderar.equals("ANTERIOR")) { pagamentos = lancamentoContaService.buscarPagamentosPorTipoLancamentoEContaEPago( TipoLancamentoPeriodico.FIXO, contaSelecionada, null); } else { pagamentos = lancamentoContaService.buscarPagamentosPorTipoLancamentoEContaEPago( TipoLancamentoPeriodico.FIXO, contaSelecionada, null); lancamentos = lancamentoPeriodicoService.buscarPorTipoLancamentoContaEStatusLancamento( TipoLancamentoPeriodico.FIXO, contaSelecionada, StatusLancamento.ATIVO); for (LancamentoPeriodico lancamento : lancamentos) { pagamentos.addAll(lancamentoContaService.gerarPrevisaoProximosPagamentos(lancamento, periodo)); } } // Separa os pagamento de lanamentos fixos de receita dos de despesa for (LancamentoConta pagamento : pagamentos) { if (pagamento.getLancamentoPeriodico().getTipoLancamento().equals(TipoLancamento.DESPESA)) { pagamentosDespesa.add(pagamento); } else { pagamentosReceita.add(pagamento); } } // Envia a lista de pagamento para os respectivos mtodos para gerar o grfico gerarGraficoDespesa(pagamentosDespesa); gerarGraficoReceita(pagamentosReceita); } private void gerarGraficoLancamentoIndividual() throws ApplicationException { List<LancamentoConta> pagamentos = new ArrayList<>(); List<LancamentoConta> pagamentosReceita = new ArrayList<>(); List<LancamentoConta> pagamentosDespesa = new ArrayList<>(); if (periodoAConsiderar.equals("ANTERIOR")) { pagamentos = lancamentoContaService.buscarPagamentosPorLancamentoPeriodicoEPago(lancamentoSelecionado, null); } else { pagamentos = lancamentoContaService.buscarPagamentosPorLancamentoPeriodicoEPago(lancamentoSelecionado, null); pagamentos .addAll(lancamentoContaService.gerarPrevisaoProximosPagamentos(lancamentoSelecionado, periodo)); } // Separa os pagamento de lanamentos fixos de receita dos de despesa for (LancamentoConta pagamento : pagamentos) { if (pagamento.getLancamentoPeriodico().getTipoLancamento().equals(TipoLancamento.DESPESA)) { pagamentosDespesa.add(pagamento); } else { pagamentosReceita.add(pagamento); } } // Envia a lista de pagamento para os respectivos mtodos para gerar o grfico gerarGraficoDespesa(pagamentosDespesa); gerarGraficoReceita(pagamentosReceita); } private void carregarMoedaPadrao() { try { if (moedaPadrao == null) { moedaPadrao = moedaService.buscarPadraoPorUsuario(getUsuarioLogado()); } } catch (ValidationException | BusinessException be) { errorMessage(be.getMessage()); } } private void gerarGraficoDespesa(List<LancamentoConta> pagamentos) { // Verifica se deve continuar com a gerao do grfico a partir da quantidade de lanamentos if (pagamentos == null || pagamentos.size() == 0) { exibirGraficoDespesa = false; return; } // Instancia o Map que ir gravar os dados para gerar o grfico // necessrio manter o LinkedHashMap para poder preservar a ordenao dos meses e anos // no grfico. Caso contrrio, ser necessrio implementar um Comparator para realizar // a ordenao das chaves (em formato String) de acordo com a sequncia de meses e anos Map<String, Double> dadosPagamento = new LinkedHashMap<String, Double>(); Map<String, Double> dadosAPagar = new LinkedHashMap<String, Double>(); String dataKey = ""; maxValueBarPagamentosDespesa = 1.0; saldoDevedor = 0.0; // Gera as chaves e popula os Maps SortedSet<Date> chaves = new TreeSet<>(); Calendar dataAtual = Calendar.getInstance(); for (Integer i = 1; i <= periodo; i++) { chaves.add(dataAtual.getTime()); if (periodoAConsiderar.equals("ANTERIOR")) dataAtual.add(Calendar.MONTH, -1); else dataAtual.add(Calendar.MONTH, 1); } // Popula os Maps com as chaves geradas for (Date data : chaves) { dataKey = new SimpleDateFormat("MM/yyyy").format(data); dadosPagamento.put(dataKey, 0.0); dadosAPagar.put(dataKey, 0.0); } // Itera a lista de pagamentos para somar no ms/ano correspondente for (LancamentoConta pagamento : pagamentos) { dataKey = new SimpleDateFormat("MM/yyyy").format(this.determinarChaveMesAnoPagamento(pagamento)); if (pagamento.getStatusLancamentoConta().equals(StatusLancamentoConta.QUITADO)) { if (dadosPagamento.get(dataKey) != null) { if (!pagamento.getLancamentoPeriodico().getMoeda().equals(moedaPadrao)) { dadosPagamento.put(dataKey, dadosPagamento.get(dataKey) + (pagamento.getValorPago() * pagamento.getLancamentoPeriodico().getMoeda().getValorConversao())); } else { dadosPagamento.put(dataKey, dadosPagamento.get(dataKey) + pagamento.getValorPago()); } } } else { if (dadosAPagar.get(dataKey) != null) { if (!pagamento.getLancamentoPeriodico().getMoeda().equals(moedaPadrao)) { dadosAPagar.put(dataKey, dadosAPagar.get(dataKey) + (pagamento.getLancamentoPeriodico().getValorParcela() * pagamento.getLancamentoPeriodico().getMoeda().getValorConversao())); } else { dadosAPagar.put(dataKey, dadosAPagar.get(dataKey) + pagamento.getLancamentoPeriodico().getValorParcela()); } } else { if (periodoAConsiderar.equals("ANTERIOR") && pagamento.getDataVencimento().before(new Date())) { saldoDevedor += pagamento.getLancamentoPeriodico().getValorParcela(); } } } } // Popula o grfico com os dados obtido e habilita a exibio ultimosPagamentosDespesaModel = new BarChartModel(); ultimosPagamentosDespesaModel.setLegendPosition("s"); ultimosPagamentosDespesaModel.setTitle("Panorama das Despesas Fixas - Despesa"); ultimosPagamentosDespesaModel.setStacked(true); ultimosPagamentosDespesaModel.setExtender("ext1"); ChartSeries pagamentosSerie = new ChartSeries(); ChartSeries aPagarSerie = new ChartSeries(); pagamentosSerie.setLabel("Despesas Pagas"); aPagarSerie.setLabel("Despesas Pagar"); for (String key : dadosPagamento.keySet()) { pagamentosSerie.set(key, dadosPagamento.get(key)); aPagarSerie.set(key, dadosAPagar.get(key)); if ((dadosPagamento.get(key) + dadosAPagar.get(key) + 100) > maxValueBarPagamentosDespesa) { maxValueBarPagamentosDespesa = dadosPagamento.get(key) + dadosAPagar.get(key) + 100; } } ultimosPagamentosDespesaModel.addSeries(pagamentosSerie); ultimosPagamentosDespesaModel.addSeries(aPagarSerie); exibirGraficoDespesa = true; } private void gerarGraficoReceita(List<LancamentoConta> pagamentos) { // Verifica se deve continuar com a gerao do grfico a partir da quantidade de lanamentos if (pagamentos == null || pagamentos.size() == 0) { exibirGraficoReceita = false; return; } // Instancia o Map que ir gravar os dados para gerar o grfico // necessrio manter o LinkedHashMap para poder preservar a ordenao dos meses e anos // no grfico. Caso contrrio, ser necessrio implementar um Comparator para realizar // a ordenao das chaves (em formato String) de acordo com a sequncia de meses e anos Map<String, Double> dadosPagamento = new LinkedHashMap<String, Double>(); Map<String, Double> dadosAPagar = new LinkedHashMap<String, Double>(); String dataKey = ""; maxValueBarPagamentosReceita = 1.0; saldoCredor = 0.0; // Gera as chaves e popula os Maps SortedSet<Date> chaves = new TreeSet<>(); Calendar dataAtual = Calendar.getInstance(); for (Integer i = 1; i <= periodo; i++) { chaves.add(dataAtual.getTime()); if (periodoAConsiderar.equals("ANTERIOR")) dataAtual.add(Calendar.MONTH, -1); else dataAtual.add(Calendar.MONTH, 1); } // Popula os Maps com as chaves geradas for (Date data : chaves) { dataKey = new SimpleDateFormat("MM/yyyy").format(data); dadosPagamento.put(dataKey, 0.0); dadosAPagar.put(dataKey, 0.0); } // Itera a lista de pagamentos para somar no ms/ano correspondente for (LancamentoConta pagamento : pagamentos) { dataKey = new SimpleDateFormat("MM/yyyy").format(this.determinarChaveMesAnoPagamento(pagamento)); if (pagamento.getStatusLancamentoConta().equals(StatusLancamentoConta.QUITADO)) { if (dadosPagamento.get(dataKey) != null) { if (!pagamento.getLancamentoPeriodico().getMoeda().equals(moedaPadrao)) { dadosPagamento.put(dataKey, dadosPagamento.get(dataKey) + (pagamento.getValorPago() * pagamento.getLancamentoPeriodico().getMoeda().getValorConversao())); } else { dadosPagamento.put(dataKey, dadosPagamento.get(dataKey) + pagamento.getValorPago()); } } } else { if (dadosAPagar.get(dataKey) != null) { if (!pagamento.getLancamentoPeriodico().getMoeda().equals(moedaPadrao)) { dadosAPagar.put(dataKey, dadosAPagar.get(dataKey) + (pagamento.getLancamentoPeriodico().getValorParcela() * pagamento.getLancamentoPeriodico().getMoeda().getValorConversao())); } else { dadosAPagar.put(dataKey, dadosAPagar.get(dataKey) + pagamento.getLancamentoPeriodico().getValorParcela()); } } else { if (periodoAConsiderar.equals("ANTERIOR") && pagamento.getDataVencimento().before(new Date())) { saldoCredor += pagamento.getLancamentoPeriodico().getValorParcela(); } } } } // Popula o grfico com os dados obtido e habilita a exibio ultimosPagamentosReceitaModel = new BarChartModel(); ultimosPagamentosReceitaModel.setLegendPosition("s"); ultimosPagamentosReceitaModel.setTitle("Panorama das Despesas Fixas - Receita"); ultimosPagamentosReceitaModel.setStacked(true); ultimosPagamentosReceitaModel.setExtender("ext1"); ChartSeries pagamentosSerie = new ChartSeries(); ChartSeries aPagarSerie = new ChartSeries(); pagamentosSerie.setLabel("Receitas Pagas"); aPagarSerie.setLabel("Receitas Pagar"); for (String key : dadosPagamento.keySet()) { pagamentosSerie.set(key, dadosPagamento.get(key)); aPagarSerie.set(key, dadosAPagar.get(key)); if ((dadosPagamento.get(key) + dadosAPagar.get(key) + 100) > maxValueBarPagamentosReceita) { maxValueBarPagamentosReceita = dadosPagamento.get(key) + dadosAPagar.get(key) + 100; } } ultimosPagamentosReceitaModel.addSeries(pagamentosSerie); ultimosPagamentosReceitaModel.addSeries(aPagarSerie); exibirGraficoReceita = true; } private Date determinarChaveMesAnoPagamento(LancamentoConta pagamento) { if (pagamento.getConta().getTipoConta().equals(TipoConta.CARTAO)) { // Determina exatamente o ms/ano que um lanamento do carto deve ser registrado // de acordo com a data de vencimento da fatura do carto Calendar temp = Calendar.getInstance(); if (pagamento.getStatusLancamentoConta().equals(StatusLancamentoConta.QUITADO)) { temp.setTime(pagamento.getDataPagamento()); } else { temp.setTime(pagamento.getDataVencimento()); } // Fechamento < Vencimento = mesmo ms; Fechamento >= Vencimento = ms seguinte if (temp.get(Calendar.DAY_OF_MONTH) <= pagamento.getConta().getCartaoCredito() .getDiaFechamentoFatura()) { temp.set(Calendar.DAY_OF_MONTH, pagamento.getConta().getCartaoCredito().getDiaFechamentoFatura()); } else { temp.set(Calendar.DAY_OF_MONTH, pagamento.getConta().getCartaoCredito().getDiaFechamentoFatura()); temp.add(Calendar.MONTH, 1); } return temp.getTime(); } else { if (pagamento.getStatusLancamentoConta().equals(StatusLancamentoConta.QUITADO)) { return pagamento.getDataPagamento(); } else { return pagamento.getDataVencimento(); } } } public List<LancamentoPeriodico> getListaLancamentoPeriodico() { try { return lancamentoPeriodicoService.buscarPorTipoLancamentoEStatusLancamentoPorUsuario( TipoLancamentoPeriodico.FIXO, StatusLancamento.ATIVO, getUsuarioLogado()); } catch (ValidationException | BusinessException be) { errorMessage(be.getMessage()); } return new ArrayList<>(); } public List<Conta> getListaConta() { try { return contaService.buscarTodosAtivosPorUsuario(getUsuarioLogado()); } catch (ValidationException | BusinessException be) { errorMessage(be.getMessage()); } return new ArrayList<>(); } public List<SelectItem> getPeriodos() { List<SelectItem> periodos = new ArrayList<>(); for (int i = 1; i <= 12; i++) { periodos.add(new SelectItem(Integer.valueOf(i), Integer.toString(i))); } return periodos; } public List<SelectItem> getListaTipoConta() { List<SelectItem> listaSelectItem = new ArrayList<SelectItem>(); for (TipoConta tipo : TipoConta.values()) { listaSelectItem.add(new SelectItem(tipo, tipo.toString())); } return listaSelectItem; } public LancamentoPeriodico getLancamentoSelecionado() { return lancamentoSelecionado; } public void setLancamentoSelecionado(LancamentoPeriodico lancamentoSelecionado) { this.lancamentoSelecionado = lancamentoSelecionado; } public Integer getPeriodo() { return periodo; } public void setPeriodo(Integer periodo) { this.periodo = periodo; } public Moeda getMoedaPadrao() { return moedaPadrao; } public void setMoedaPadrao(Moeda moedaPadrao) { this.moedaPadrao = moedaPadrao; } public boolean isExibirGraficoReceita() { return exibirGraficoReceita; } public void setExibirGraficoReceita(boolean exibirGraficoReceita) { this.exibirGraficoReceita = exibirGraficoReceita; } public boolean isExibirGraficoDespesa() { return exibirGraficoDespesa; } public void setExibirGraficoDespesa(boolean exibirGraficoDespesa) { this.exibirGraficoDespesa = exibirGraficoDespesa; } public Double getMaxValueBarPagamentosDespesa() { return maxValueBarPagamentosDespesa; } public void setMaxValueBarPagamentosDespesa(Double maxValueBarPagamentosDespesa) { this.maxValueBarPagamentosDespesa = maxValueBarPagamentosDespesa; } public Double getMaxValueBarPagamentosReceita() { return maxValueBarPagamentosReceita; } public void setMaxValueBarPagamentosReceita(Double maxValueBarPagamentosReceita) { this.maxValueBarPagamentosReceita = maxValueBarPagamentosReceita; } public String getPeriodoAConsiderar() { return periodoAConsiderar; } public void setPeriodoAConsiderar(String periodoAConsiderar) { this.periodoAConsiderar = periodoAConsiderar; } public double getSaldoCredor() { return saldoCredor; } public void setSaldoCredor(double saldoCredor) { this.saldoCredor = saldoCredor; } public double getSaldoDevedor() { return saldoDevedor; } public void setSaldoDevedor(double saldoDevedor) { this.saldoDevedor = saldoDevedor; } public Conta getContaSelecionada() { return contaSelecionada; } public void setContaSelecionada(Conta contaSelecionada) { this.contaSelecionada = contaSelecionada; } public TipoConta getTipoContaSelecionada() { return tipoContaSelecionada; } public void setTipoContaSelecionada(TipoConta tipoContaSelecionada) { this.tipoContaSelecionada = tipoContaSelecionada; } public BarChartModel getUltimosPagamentosDespesaModel() { return ultimosPagamentosDespesaModel; } public void setUltimosPagamentosDespesaModel(BarChartModel ultimosPagamentosDespesaModel) { this.ultimosPagamentosDespesaModel = ultimosPagamentosDespesaModel; } public BarChartModel getUltimosPagamentosReceitaModel() { return ultimosPagamentosReceitaModel; } public void setUltimosPagamentosReceitaModel(BarChartModel ultimosPagamentosReceitaModel) { this.ultimosPagamentosReceitaModel = ultimosPagamentosReceitaModel; } }