Subversion Repositories Integrator Subversion

Rev

Rev 159 | 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.core.consulta.ParametrosConsulta;
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.FluxoDeCaixaDTO;
import br.com.ec.domain.dto.QuadroResumosDTO;
import br.com.ec.domain.dto.RankingLojaDTO;
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.com.ec.domain.service.venda.VendaService;
import br.com.ec.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 List<RankingLojaDTO> rankingLojas;
       
        private FluxoDeCaixaDTO fluxoMatriz;
        private List<FluxoDeCaixaDTO> fluxosDeCaixa;
       
        private VendaService vendaService;
       
        private LojaService lojaService;
        private AcompanhamentoService acompanhamentoService;
        private AvaliacaoLojaService avaliacaoLojaService;
       
        @Inject
        public QuadroResumoBean(VendaService vendaService, LojaService lojaService, AcompanhamentoService acompanhamentoService,
                        AvaliacaoLojaService avaliacaoLojaService) {
                this.vendaService = vendaService;
                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 List<RankingLojaDTO> getRankingLojas() {
                return rankingLojas;
        }
        public void setRankingLojas(List<RankingLojaDTO> rankingLojas) {
                this.rankingLojas = rankingLojas;
        }
       
        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() {
                setRankingLojas(vendaService.consultarRankingLojasCompleto(getDataInicial(), getDataFinal()));
        }
       
        public Double valorTotalVendas() {
                Double valorTotal = 0.0;
                for (RankingLojaDTO rankingLoja : getRankingLojas()) {
                        if (VerificadorUtil.naoEstaNulo(rankingLoja.getValorTotalVendido())) {
                                if (rankingLoja.getValorTotalVendido() > 0.0) {
                                        valorTotal = valorTotal + rankingLoja.getValorTotalVendido();
                                }
                        }
                }
                return valorTotal;
        }
       
        public Double valorTotalMetas() {
                Double valorTotal = 0.0;
                for (RankingLojaDTO rankingLoja : getRankingLojas()) {
                        if (VerificadorUtil.naoEstaNulo(rankingLoja.getValorMetaMensal())) {
                                if (rankingLoja.getValorMetaMensal() > 0.0) {
                                        valorTotal = valorTotal + rankingLoja.getValorMetaMensal();
                                }
                        }
                }
                return valorTotal;
        }
       
        public Double valorMedioTicketMedio() {
                Double valorTotal = 0.0;
                Integer quantidadeSomas = 0;
                for (RankingLojaDTO rankingLoja : getRankingLojas()) {
                        if (VerificadorUtil.naoEstaNulo(rankingLoja.valorTicketMedio())) {
                                if (rankingLoja.valorTicketMedio() > 0.0) {
                                        quantidadeSomas++;
                                        valorTotal = valorTotal + rankingLoja.valorTicketMedio();
                                }
                        }
                }
                return valorTotal / quantidadeSomas;
        }
       
        public Integer quantidadeTotalAtendimentos() {
                Integer valorTotal = 0;
                for (RankingLojaDTO rankingLoja : getRankingLojas()) {
                        if (VerificadorUtil.naoEstaNulo(rankingLoja.getQuantidadeAtendimentos())) {
                                if (rankingLoja.getQuantidadeAtendimentos() > 0.0) {
                                        valorTotal = valorTotal + rankingLoja.getQuantidadeAtendimentos();
                                }
                        }
                }
                return valorTotal;
        }
       
        public Integer quantidadeTotalPedidos() {
                Integer valorTotal = 0;
                for (RankingLojaDTO rankingLoja : getRankingLojas()) {
                        if (VerificadorUtil.naoEstaNulo(rankingLoja.getQuantidadePedidos())) {
                                if (rankingLoja.getQuantidadePedidos() > 0.0) {
                                        valorTotal = valorTotal + rankingLoja.getQuantidadePedidos();
                                }
                        }
                }
                return valorTotal;
        }
       
        public Integer quantidadeTotalPedidosInvalidos() {
                Integer valorTotal = 0;
                for (RankingLojaDTO rankingLoja : getRankingLojas()) {
                        if (VerificadorUtil.naoEstaNulo(rankingLoja.getQuantidadePedidosInvalidos())) {
                                if (rankingLoja.getQuantidadePedidosInvalidos() > 0.0) {
                                        valorTotal = valorTotal + rankingLoja.getQuantidadePedidosInvalidos();
                                }
                        }
                }
                return valorTotal;
        }
       
        public Integer quantidadeTotalAvarias() {
                Integer valorTotal = 0;
                for (RankingLojaDTO rankingLoja : getRankingLojas()) {
                        if (VerificadorUtil.naoEstaNulo(rankingLoja.getQuantidadeAvarias())) {
                                if (rankingLoja.getQuantidadeAvarias() > 0.0) {
                                        valorTotal = valorTotal + rankingLoja.getQuantidadeAvarias();
                                }
                        }
                }
                return valorTotal;
        }
       
        public Integer quantidadeTotalTrocas() {
                Integer valorTotal = 0;
                for (RankingLojaDTO rankingLoja : getRankingLojas()) {
                        if (VerificadorUtil.naoEstaNulo(rankingLoja.getQuantidadeTrocas())) {
                                if (rankingLoja.getQuantidadeTrocas() > 0.0) {
                                        valorTotal = valorTotal + rankingLoja.getQuantidadeTrocas();
                                }
                        }
                }
                return valorTotal;
        }
       
        public Double valorTotalPercentualDescontos() {
                Double valorTotal = valorTotalDescontos();
                if (valorTotal > 0.0) {
                        return (valorTotal * 100) / valorTotalVendas();
                }
                return 0.0;
        }
       
        public Double valorTotalDescontos() {
                Double valorTotal = 0.0;
                for (RankingLojaDTO rankingLoja : getRankingLojas()) {
                        if (VerificadorUtil.naoEstaNulo(rankingLoja.getValorTotalDescontos())) {
                                if (rankingLoja.getValorTotalDescontos() > 0.0) {
                                        valorTotal = valorTotal + rankingLoja.getValorTotalDescontos();
                                }
                        }
                }
                return valorTotal;
        }
       
        public Double valorTotalCustoProdutosVendidos() {
                Double valorTotal = 0.0;
                for (RankingLojaDTO rankingLoja : getRankingLojas()) {
                        if (VerificadorUtil.naoEstaNulo(rankingLoja.getCustoProdutosVendidos())) {
                                if (rankingLoja.getCustoProdutosVendidos() > 0.0) {
                                        valorTotal = valorTotal + rankingLoja.getCustoProdutosVendidos();
                                }
                        }
                }
                return valorTotal;
        }
       
        public Integer quantidadeTotalPatrimonioAtual() {
                Integer valorTotal = 0;
                for (RankingLojaDTO rankingLoja : getRankingLojas()) {
                        if (VerificadorUtil.naoEstaNulo(rankingLoja.getQuantidadeTotalEstoque())) {
                                if (rankingLoja.getQuantidadeTotalEstoque() > 0.0) {
                                        valorTotal = valorTotal + rankingLoja.getQuantidadeTotalEstoque();
                                }
                        }
                }
                return valorTotal;
        }
       
        public Double valorTotalPatrimonioAtual() {
                Double valorTotal = 0.0;
                for (RankingLojaDTO rankingLoja : getRankingLojas()) {
                        if (VerificadorUtil.naoEstaNulo(rankingLoja.getValorTotalEstoque())) {
                                if (rankingLoja.getValorTotalEstoque() > 0.0) {
                                        valorTotal = valorTotal + rankingLoja.getValorTotalEstoque();
                                }
                        }
                }
                return valorTotal;
        }
       
        public void consultarQuadroResumosOld() {
                fluxoMatriz = new FluxoDeCaixaDTO();
                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;
        }
       
}