Subversion Repositories Integrator Subversion

Rev

Rev 121 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.controller.managedbean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

import org.springframework.context.annotation.Scope;

import br.com.ec.domain.dto.FluxoDeCaixaDTO;
import br.com.ec.domain.dto.QuadroResumosDTO;
import br.com.ec.domain.model.AvaliacaoLoja;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.service.acompanhamento.AcompanhamentoService;
import br.com.ec.domain.service.avaliacaoloja.AvaliacaoLojaService;
import br.com.ec.domain.service.loja.LojaService;
import br.edu.cesmac.core.consulta.ParametrosConsulta;
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 QuadroResumoBean extends AbstractBean<QuadroResumosDTO> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private Date dataInicial;
        private Date dataFinal;
       
        private FluxoDeCaixaDTO fluxoMatriz;
        private List<FluxoDeCaixaDTO> fluxosDeCaixa;
       
        private LojaService lojaService;
        private AcompanhamentoService acompanhamentoService;
        private AvaliacaoLojaService avaliacaoLojaService;
       
        @Inject
        public QuadroResumoBean(LojaService lojaService, AcompanhamentoService acompanhamentoService, AvaliacaoLojaService avaliacaoLojaService) {
                this.lojaService = lojaService;
                this.acompanhamentoService = acompanhamentoService;
                this.avaliacaoLojaService = avaliacaoLojaService;
        }
       
        @Override
        public void preCarregamento() {
                try {
                        if (VerificadorUtil.estaNulo(parametrosConsulta)) {
                                entidade = new QuadroResumosDTO();
                                parametrosConsulta = new ParametrosConsulta<QuadroResumosDTO>();
                                parametrosConsulta.setEntidade(entidade);
                        }
                        setDataInicial(DataUtils.getPrimeiroDiaDoMesAtual());
                        setDataFinal(DataUtils.getUltimoDiaDoMesAtual());
                        consultarQuadroResumos();
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
       
        @Override
        public GenericService<QuadroResumosDTO> getService() {
                return null;
        }
       
        @Override
        public void limparEntidade() {
                setEntidade(new QuadroResumosDTO());
        }
       
        @Override
        public QuadroResumosDTO getEntidade() {
                return entidade;
        }

        @Override
        public QuadroResumosDTO getId() {
                return getEntidade();
        }
       
        public Date getDataInicial() {
                return dataInicial;
        }
        public void setDataInicial(Date dataInicial) {
                this.dataInicial = dataInicial;
        }
       
        public Date getDataFinal() {
                return dataFinal;
        }
        public void setDataFinal(Date dataFinal) {
                this.dataFinal = dataFinal;
        }
       
        public FluxoDeCaixaDTO getFluxoMatriz() {
                return fluxoMatriz;
        }
        public void setFluxoMatriz(FluxoDeCaixaDTO fluxoMatriz) {
                this.fluxoMatriz = fluxoMatriz;
        }
       
        public List<FluxoDeCaixaDTO> getFluxosDeCaixa() {
                return fluxosDeCaixa;
        }
        public void setFluxosDeCaixa(List<FluxoDeCaixaDTO> fluxosDeCaixa) {
                this.fluxosDeCaixa = fluxosDeCaixa;
        }
       
        /********************************************************************/
       
        public void consultarQuadroResumos() {
                fluxoMatriz = new FluxoDeCaixaDTO();
                fluxoMatriz.setMatriz(true);
                fluxoMatriz.setDataInicial(getDataInicial());
                fluxoMatriz.setDataFinal(getDataFinal());
                fluxoMatriz = acompanhamentoService.consultarFluxoDeCaixa(fluxoMatriz);
               
                fluxosDeCaixa = new ArrayList<FluxoDeCaixaDTO>();
                List<Loja> lojasAtivas = lojaService.listarLojasAtivas();
                for (Loja lojaAtiva : lojasAtivas) {
                        FluxoDeCaixaDTO fluxoCaixa = new FluxoDeCaixaDTO();
                        fluxoCaixa.setCentroDeCustos(lojaAtiva);
                        fluxoCaixa.setDataInicial(getDataInicial());
                        fluxoCaixa.setDataFinal(getDataFinal());
                        fluxoCaixa.setValorMetaMensal(0.0);
                        fluxoCaixa.setValorMargemContribuicao(0.0);
                       
                        AvaliacaoLoja avaliacaoLoja = avaliacaoLojaService.consultarAvaliacaoLojaPelaData(lojaAtiva, getDataFinal());
                        if (VerificadorUtil.naoEstaNulo(avaliacaoLoja)) {
                                if (VerificadorUtil.naoEstaNulo(avaliacaoLoja.getValorMetaMensal())) {
                                        fluxoCaixa.setValorMetaMensal(avaliacaoLoja.getValorMetaMensal());
                                }
                                if (VerificadorUtil.naoEstaNulo(avaliacaoLoja.getValorMargemContribuicao())) {
                                        fluxoCaixa.setValorMargemContribuicao(avaliacaoLoja.getValorMargemContribuicao());
                                }
                        }
                        fluxoCaixa = acompanhamentoService.consultarFluxoDeCaixa(fluxoCaixa);
                        fluxosDeCaixa.add(fluxoCaixa);
                }
        }
       
        public Double getValorTotalFluxo() {
                Double totalFluxo = new Double(0);
                for (FluxoDeCaixaDTO fluxoCaixa : fluxosDeCaixa) {
                        if (VerificadorUtil.naoEstaNulo(fluxoCaixa.getValorTotalFluxo())) {
                                totalFluxo = totalFluxo + fluxoCaixa.getValorTotalFluxo();
                        }
                }
                return totalFluxo;
        }
       
        public Double getValorTotalMargemContribuicao() {
                Double totalMargemContribuicao = new Double(0);
                for (FluxoDeCaixaDTO fluxoCaixa : fluxosDeCaixa) {
                        if (VerificadorUtil.naoEstaNulo(fluxoCaixa.getCentroDeCustos())) {
                                totalMargemContribuicao = totalMargemContribuicao + fluxoCaixa.getValorMargemContribuicao();
                        }
                }
                return totalMargemContribuicao;
        }
       
        public Double calcularValorTotalMargemContribuicao() {
                Double totalMargemContribuicao = new Double(0);
                for (FluxoDeCaixaDTO fluxoCaixa : fluxosDeCaixa) {
                        totalMargemContribuicao = totalMargemContribuicao + fluxoCaixa.calcularValorMargemContribuicao(fluxoMatriz.getValorTotalFluxo());
                }
                return totalMargemContribuicao;
        }
       
        public Double calcularValorTotalFluxoComMargemContribuicao() {
                Double totalFluxoComMargemContribuicao = new Double(0);
                for (FluxoDeCaixaDTO fluxoCaixa : fluxosDeCaixa) {
                        totalFluxoComMargemContribuicao = totalFluxoComMargemContribuicao + fluxoCaixa.calcularValorFluxoComMargemContribuicao(fluxoMatriz.getValorTotalFluxo());
                }
                return totalFluxoComMargemContribuicao;
        }
       
        public Double getValorTotalProdutosUtilizados() {
                Double totalProdutosUtilizados = new Double(0);
                for (FluxoDeCaixaDTO fluxoCaixa : fluxosDeCaixa) {
                        if (VerificadorUtil.naoEstaNulo(fluxoCaixa.getValorTotalProdutosUtilizados())) {
                                totalProdutosUtilizados = totalProdutosUtilizados + fluxoCaixa.getValorTotalProdutosUtilizados();
                        }
                }
                return totalProdutosUtilizados;
        }
       
}