package br.com.ec.controller.managedbean;
import java.io.Serializable;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.model.chart.LineChartModel;
import org.springframework.context.annotation.Scope;
import br.com.ec.domain.dto.ConsolidadoGestaoDTO;
import br.com.ec.domain.dto.DetalhamentoCaixaDTO;
import br.com.ec.domain.dto.FluxoDeCaixaCategoriaDTO;
import br.com.ec.domain.dto.FluxoDeCaixaDTO;
import br.com.ec.domain.dto.ParametrosConsultaLancamentosDTO;
import br.com.ec.domain.dto.ProvisaoCaixaDTO;
import br.com.ec.domain.model.Categoria;
import br.com.ec.domain.model.Parcela;
import br.com.ec.domain.model.tipos.TipoCategoria;
import br.com.ec.domain.service.acompanhamento.AcompanhamentoService;
import br.com.ec.domain.service.parcela.ParcelaService;
import br.edu.cesmac.core.generic.GenericService;
import br.edu.cesmac.core.util.DataUtils;
import br.edu.cesmac.core.util.VerificadorUtil;
import br.edu.cesmac.web.generic.AbstractBean;
@Named
@Scope
("view")
public class FluxoDeCaixaBean
extends AbstractBean
<ConsolidadoGestaoDTO
> implements Serializable {
private static final long serialVersionUID = 1L
;
private FluxoDeCaixaDTO fluxoDeCaixa
;
private List<FluxoDeCaixaCategoriaDTO
> receitas
;
private List<FluxoDeCaixaCategoriaDTO
> despesas
;
private List<Parcela
> parcelas
;
private LineChartModel graficoCaixa
;
private List<DetalhamentoCaixaDTO
> provisaoDetalhamentoCaixa
;
private AcompanhamentoService acompanhamentoService
;
private ParcelaService parcelaService
;
@Inject
public FluxoDeCaixaBean
(AcompanhamentoService acompanhamentoService, ParcelaService parcelaService
) {
this.
acompanhamentoService = acompanhamentoService
;
this.
parcelaService = parcelaService
;
}
@
Override
public void limparEntidade
() {
setEntidade
(new ConsolidadoGestaoDTO
());
}
@
Override
public GenericService
<ConsolidadoGestaoDTO
> getService
() {
return null;
}
@
Override
public ConsolidadoGestaoDTO getEntidade
() {
return entidade
;
}
@
Override
public ConsolidadoGestaoDTO getId
() {
return getEntidade
();
}
public FluxoDeCaixaDTO getFluxoDeCaixa
() {
return fluxoDeCaixa
;
}
public void setFluxoDeCaixa
(FluxoDeCaixaDTO fluxoDeCaixa
) {
this.
fluxoDeCaixa = fluxoDeCaixa
;
}
public List<FluxoDeCaixaCategoriaDTO
> getReceitas
() {
return receitas
;
}
public void setReceitas
(List<FluxoDeCaixaCategoriaDTO
> receitas
) {
this.
receitas = receitas
;
}
public List<FluxoDeCaixaCategoriaDTO
> getDespesas
() {
return despesas
;
}
public void setDespesas
(List<FluxoDeCaixaCategoriaDTO
> despesas
) {
this.
despesas = despesas
;
}
public List<Parcela
> getParcelas
() {
return parcelas
;
}
public void setParcelas
(List<Parcela
> parcelas
) {
this.
parcelas = parcelas
;
}
public Double getTotalValoresParcelas
() {
Double valorTotal =
new Double(0.0);
if (VerificadorUtil.
naoEstaNuloOuVazio(getParcelas
())) {
for (Parcela parcela : getParcelas
()) {
valorTotal = valorTotal + parcela.
getValor();
}
}
return valorTotal
;
}
public LineChartModel getGraficoCaixa
() {
return graficoCaixa
;
}
public void setGraficoCaixa
(LineChartModel graficoCaixa
) {
this.
graficoCaixa = graficoCaixa
;
}
public List<DetalhamentoCaixaDTO
> getProvisaoDetalhamentoCaixa
() {
return provisaoDetalhamentoCaixa
;
}
public void setProvisaoDetalhamentoCaixa
(List<DetalhamentoCaixaDTO
> provisaoDetalhamentoCaixa
) {
this.
provisaoDetalhamentoCaixa = provisaoDetalhamentoCaixa
;
}
/********************************************************************/
@
Override
public void preCarregamento
() {
try {
setFluxoDeCaixa
(new FluxoDeCaixaDTO
(DataUtils.
getPrimeiroDiaDoMesAtual(), DataUtils.
getUltimoDiaDoMesAtual()));
consultarFluxoDeCaixa
();
} catch (Exception e
) {
e.
printStackTrace();
}
}
public void consultarFluxoDeCaixa
() {
setFluxoDeCaixa
(acompanhamentoService.
consultarFluxoDeCaixa(getFluxoDeCaixa
()));
setReceitas
(acompanhamentoService.
consultarFluxoDeCaixaPorCategoria(getFluxoDeCaixa
(), TipoCategoria.
RECEITAS.
getValor()));
setDespesas
(acompanhamentoService.
consultarFluxoDeCaixaPorCategoria(getFluxoDeCaixa
(), TipoCategoria.
DESPESAS.
getValor()));
ProvisaoCaixaDTO provisaoCaixa = acompanhamentoService.
consultarGraficoCaixa(getFluxoDeCaixa
().
getDataInicial(), getFluxoDeCaixa
().
getDataFinal());
setGraficoCaixa
(provisaoCaixa.
getGrafico());
setProvisaoDetalhamentoCaixa
(provisaoCaixa.
getDetalhamentos());
}
public Double getValorTotalReceitas
() {
Double valorTotal =
new Double(0.0);
for (FluxoDeCaixaCategoriaDTO filhas : getReceitas
()) {
valorTotal = valorTotal + filhas.
getValor();
}
return valorTotal
;
}
public Double getValorTotalDespesas
() {
Double valorTotal =
new Double(0.0);
for (FluxoDeCaixaCategoriaDTO filhas : getDespesas
()) {
valorTotal = valorTotal + filhas.
getValor();
}
return valorTotal
;
}
public Double getValorTotalReceitasFuturas
() {
Double valorTotalFuturo =
new Double(0.0);
for (FluxoDeCaixaCategoriaDTO filhas : getReceitas
()) {
valorTotalFuturo = valorTotalFuturo + filhas.
getValorFuturo();
}
return valorTotalFuturo
;
}
public Double getValorTotalDespesasFuturas
() {
Double valorTotalFuturo =
new Double(0.0);
for (FluxoDeCaixaCategoriaDTO filhas : getDespesas
()) {
valorTotalFuturo = valorTotalFuturo + filhas.
getValorFuturo();
}
return valorTotalFuturo
;
}
public List<Parcela
> consultarLancamentosParcela
(Categoria categoria, Categoria categoriaPai,
String tipoConta
) {
ParametrosConsultaLancamentosDTO parcelaConsulta =
new ParametrosConsultaLancamentosDTO
();
parcelaConsulta.
setDataInicial(getFluxoDeCaixa
().
getDataInicial());
parcelaConsulta.
setDataFinal(getFluxoDeCaixa
().
getDataFinal());
parcelaConsulta.
setCentroDeCustos(getFluxoDeCaixa
().
getCentroDeCustos());
parcelaConsulta.
setMatriz(getFluxoDeCaixa
().
getMatriz());
parcelaConsulta.
setCategoria(categoria
);
parcelaConsulta.
setCategoriaPai(categoriaPai
);
parcelaConsulta.
setTipoBusca(tipoConta
);
return parcelaService.
consultarParcelas(parcelaConsulta
);
}
}