Subversion Repositories Integrator Subversion

Rev

Rev 195 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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.core.generic.GenericService;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
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.Orcamento;
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.orcamento.OrcamentoService;
import br.com.ec.domain.service.parcela.ParcelaService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
import br.com.ec.web.message.LancadorMensagem;

@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 Orcamento orcamento;
       
        private AcompanhamentoService acompanhamentoService;
        private ParcelaService parcelaService;
        private OrcamentoService orcamentoService;
       
        @Inject
        public FluxoDeCaixaBean(AcompanhamentoService acompanhamentoService, ParcelaService parcelaService, OrcamentoService orcamentoService) {
                this.acompanhamentoService = acompanhamentoService;
                this.parcelaService = parcelaService;
                this.orcamentoService = orcamentoService;
        }
       
        @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;
        }
       
        public Orcamento getOrcamento() {
                return orcamento;
        }
        public void setOrcamento(Orcamento orcamento) {
                this.orcamento = orcamento;
        }
       
        /********************************************************************/
       
        @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()));
        }
       
        public void consultarProvisaoCaixa() {
                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 Double getValorTotalReceitasOrcadas() {
                Double valorTotalOrcado = new Double(0.0);
                for (FluxoDeCaixaCategoriaDTO filhas : getReceitas()) {
                        valorTotalOrcado = valorTotalOrcado + filhas.getValorOrcado();
                }
                return valorTotalOrcado;
        }
       
        public Double getValorTotalDespesasOrcadas() {
                Double valorTotalOrcado = new Double(0.0);
                for (FluxoDeCaixaCategoriaDTO filhas : getDespesas()) {
                        valorTotalOrcado = valorTotalOrcado + filhas.getValorOrcado();
                }
                return valorTotalOrcado;
        }
       
        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.setCategoria(categoria);
                parcelaConsulta.setCategoriaPai(categoriaPai);
                parcelaConsulta.setTipoBusca(tipoConta);
                return parcelaService.consultarParcelas(parcelaConsulta);
        }
       
        public void prepararGerirOrcado(final FluxoDeCaixaDTO fluxo, final Categoria categoriaPai, final Categoria categoria) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                setOrcamento(orcamentoService.prepararGerirOrcado(fluxo, categoriaPai, categoria));
                        }
                });
        }
       
        public void cadastrarOrcamento() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                orcamentoService.atualizarOrcamento(getOrcamento());
                                consultarFluxoDeCaixa();
                                LancadorMensagem.lancarSucesso("ORÇAMENTO ATUALIZADO COM SUCESSO!");
                        }
                });
        }
       
}