Subversion Repositories Integrator Subversion

Rev

Rev 106 | 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.Date;

import javax.annotation.PostConstruct;
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.domain.dto.DashboardComercialDTO;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.tipos.TipoPedido;
import br.com.ec.domain.model.tipos.TipoSituacaoPedido;
import br.com.ec.domain.service.pedido.PedidoService;
import br.com.ec.domain.service.produto.ProdutoService;
import br.com.ec.domain.shared.ConstantesSEC;
import br.com.ec.web.generic.AbstractBean;

@Named
@Scope("view")
public class DashboardComercialBean extends AbstractBean<DashboardComercialDTO> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private PedidoService pedidoService;
        private ProdutoService produtoService;
       
        private DashboardComercialDTO acompanhamentoDia;
       
        @Inject
        public DashboardComercialBean(PedidoService pedidoService, ProdutoService produtoService) {
                this.pedidoService = pedidoService;
                this.produtoService = produtoService;
        }
       
        @PostConstruct
        private void iniciarDashboard() {
                Integer quantidePedidosNovos = pedidoService.obterQuantidadePedidosPorSituacao(TipoPedido.RESERVA.getValor(), TipoSituacaoPedido.NOVO.getValor());
                Integer quantidePedidosPendente = pedidoService.obterQuantidadePedidosPorSituacao(TipoPedido.RESERVA.getValor(), TipoSituacaoPedido.PENDENTE.getValor());
                Integer quantidePedidosPendenteCompras = pedidoService.obterQuantidadePedidosPorSituacao(TipoPedido.RESERVA.getValor(), TipoSituacaoPedido.PENDENTE_ANALISE_COMPRAS.getValor());
                Integer quantidePedidosAguardandoRetornoCliente = pedidoService.obterQuantidadePedidosPorSituacao(null, TipoSituacaoPedido.AGUARDANDO_RETORNO_CLIENTE.getValor());
                Integer quantidePedidosAguardandoCompras = pedidoService.obterQuantidadePedidosPorSituacao(TipoPedido.RESERVA.getValor(), TipoSituacaoPedido.PEDIDO_EM_COMPRAS.getValor());
                Integer quantidePedidosProdutoEmTransferencia = pedidoService.obterQuantidadePedidosPorSituacao(TipoPedido.RESERVA.getValor(), TipoSituacaoPedido.PEDIDO_EM_TRANSFERENCIA.getValor());
                Integer quantidePedidosAguardandoFinalizacaoCliente = pedidoService.obterQuantidadePedidosPorSituacao(TipoPedido.RESERVA.getValor(), TipoSituacaoPedido.AGUARDANDO_FINALIZACAO_CLIENTE.getValor());
                Integer quantidePedidosEntrarEmContato = pedidoService.obterQuantidadePedidosPorSituacao(null, TipoSituacaoPedido.ENTRAR_EM_CONTATO.getValor());
               
                Date trintaDiasAntes = DataUtils.acrescentarDias(DataUtils.getDataAtual(), -30);
                Integer quantidePedidosFinalizadoTrintaDias = pedidoService.obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.RESERVA.getValor(), TipoSituacaoPedido.FINALIZADO.getValor(), trintaDiasAntes, DataUtils.getDataAtual());
                Integer quantidePedidosFinalizadoComVendasTrintaDias = pedidoService.obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.RESERVA.getValor(), TipoSituacaoPedido.FINALIZADO_COM_VENDAS.getValor(), trintaDiasAntes, DataUtils.getDataAtual());
               
                Date seteDiasAntes = DataUtils.acrescentarDias(DataUtils.getDataAtual(), -7);
                Integer pedidosFinalizadosSeteDias = pedidoService.obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.RESERVA.getValor(), TipoSituacaoPedido.FINALIZADO.getValor(), seteDiasAntes, DataUtils.getDataAtual());
                Integer pedidosFinalizadosComVendasSeteDias = pedidoService.obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.RESERVA.getValor(), TipoSituacaoPedido.FINALIZADO_COM_VENDAS.getValor(), seteDiasAntes, DataUtils.getDataAtual());
               
                //INDICADORES
                setAcompanhamentoDia(new DashboardComercialDTO());
                getAcompanhamentoDia().setQuantidadePedidosNovos(quantidePedidosNovos);
                getAcompanhamentoDia().setQuantidadePedidosEntrarEmContato(quantidePedidosEntrarEmContato);
                getAcompanhamentoDia().setQuantidadePedidosEmAndamento(quantidePedidosPendenteCompras + quantidePedidosAguardandoCompras + quantidePedidosProdutoEmTransferencia + quantidePedidosAguardandoFinalizacaoCliente);
                getAcompanhamentoDia().setQuantidadePedidosPendentes(quantidePedidosPendente);
                getAcompanhamentoDia().setQuantidadePedidosAguardandoRetornoCliente(quantidePedidosAguardandoRetornoCliente);
                getAcompanhamentoDia().setQuantidadePedidosFinalizadosSemVendas(quantidePedidosFinalizadoTrintaDias);
                getAcompanhamentoDia().setQuantidadePedidosFinalizadosComVendas(quantidePedidosFinalizadoComVendasTrintaDias);
                getAcompanhamentoDia().setQuantidadePedidosAtendidosUltimosSeteDias(pedidosFinalizadosSeteDias + pedidosFinalizadosComVendasSeteDias);
               
                getAcompanhamentoDia().setQuantidadeRetirarDoSite(produtoService.quantidadeProdutosParaRetirarDoOnlineMatriz());
                getAcompanhamentoDia().setQuantidadeRetirarDoShoplog(produtoService.quantidadeProdutosParaRetirarDoOnlineShoplog());
                getAcompanhamentoDia().setQuantidadeAdicionadosSiteDiario(produtoService.quantidadeProdutosAdicionadosSite(DataUtils.getDataAtual(), DataUtils.getDataAtual()));
                getAcompanhamentoDia().setQuantidadeAdicionadosSiteSemanal(produtoService.quantidadeProdutosAdicionadosSite(seteDiasAntes, DataUtils.getDataAtual()));
                getAcompanhamentoDia().setQuantidadeAdicionadosSiteMensal(produtoService.quantidadeProdutosAdicionadosSite(DataUtils.getPrimeiroDiaDoMesAtual(), DataUtils.getUltimoDiaDoMesAtual()));
                getAcompanhamentoDia().setQuantidadeProdutosOnline(produtoService.quantidadeProdutosOnline());
                getAcompanhamentoDia().setQuantidadeProdutosFavoritosOffline(produtoService.quantidadeProdutosFavoritosOffline(new Loja(ConstantesSEC.SEQUENCIAL_MATRIZ_ESTOQUE_9)));
               
                // ALERTAS
                Date tresDiasAntes = DataUtils.acrescentarDias(DataUtils.getDataAtual(), -3);
                Integer pedidosAlertasNovosComTresDiasPassados = pedidoService.obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.RESERVA.getValor(), TipoSituacaoPedido.NOVO.getValor(), null, tresDiasAntes);
                Integer pedidosAlertasEntrarEmContatoComTresDiasPassados = pedidoService.obterQuantidadePedidosPorSituacaoEePeriodo(null, TipoSituacaoPedido.ENTRAR_EM_CONTATO.getValor(), null, tresDiasAntes);
                Integer pedidosAlertasPendentesComSeteDiasPassados = pedidoService.obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.RESERVA.getValor(), TipoSituacaoPedido.PENDENTE.getValor(), null, seteDiasAntes);
                Integer pedidosAlertasEmTransferenciaComSeteDiasPassados = pedidoService.obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.RESERVA.getValor(), TipoSituacaoPedido.PEDIDO_EM_TRANSFERENCIA.getValor(), null, seteDiasAntes);
                Integer pedidosAlertasAguardandoRetornoClienteComSeteDiasPassados = pedidoService.obterQuantidadePedidosPorSituacaoEePeriodo(null, TipoSituacaoPedido.AGUARDANDO_RETORNO_CLIENTE.getValor(), null, seteDiasAntes);
                Integer pedidosAlertasAguardandoFinalizacaoClienteComSeteDiasPassados = pedidoService.obterQuantidadePedidosPorSituacaoEePeriodo(null, TipoSituacaoPedido.AGUARDANDO_FINALIZACAO_CLIENTE.getValor(), null, seteDiasAntes);
               
                getAcompanhamentoDia().setQuantidadeAlertaPedidosNovos(pedidosAlertasNovosComTresDiasPassados);
                getAcompanhamentoDia().setQuantidadeAlertaPedidosEntrarEmContato(pedidosAlertasEntrarEmContatoComTresDiasPassados);
                getAcompanhamentoDia().setQuantidadeAlertaPedidosPendentes(pedidosAlertasPendentesComSeteDiasPassados);
                getAcompanhamentoDia().setQuantidadeAlertaPedidosEmTransferencia(pedidosAlertasEmTransferenciaComSeteDiasPassados);
                getAcompanhamentoDia().setQuantidadeAlertaPedidosAguardandoRetornoCliente(pedidosAlertasAguardandoRetornoClienteComSeteDiasPassados);
                getAcompanhamentoDia().setQuantidadeAlertaPedidosAguardandoFinalizacaoCliente(pedidosAlertasAguardandoFinalizacaoClienteComSeteDiasPassados);
        }
       
        @Override
        public void preCarregamento() {
                entidade = new DashboardComercialDTO();
                parametrosConsulta = new ParametrosConsulta<DashboardComercialDTO>();
                parametrosConsulta.setEntidade(entidade);
        }
       
        @Override
        public void limparEntidade() {
                DashboardComercialDTO consolidado = new DashboardComercialDTO();
                setEntidade(consolidado);
        }

        @Override
        public GenericService<DashboardComercialDTO> getService() {
                return null;
        }
       
        @Override
        public DashboardComercialDTO getEntidade() {
                return entidade;
        }

        @Override
        public DashboardComercialDTO getId() {
                return getEntidade();
        }
       
        public DashboardComercialDTO getAcompanhamentoDia() {
                return acompanhamentoDia;
        }
        public void setAcompanhamentoDia(DashboardComercialDTO consolidadoDia) {
                this.acompanhamentoDia = consolidadoDia;
        }
       
}