Subversion Repositories Integrator Subversion

Rev

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

import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;

import org.springframework.context.annotation.Scope;

import br.com.ec.core.exception.NegocioException;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.ParametrosConsultaVendasVivoDTO;
import br.com.ec.domain.model.VendaVivo;
import br.com.ec.domain.model.tipos.TipoConsultaVendasVivo;
import br.com.ec.domain.model.tipos.TipoStatusDigitalizacao;
import br.com.ec.domain.service.vendavivo.VendaVivoService;
import br.com.ec.domain.shared.Ordenador;
import br.com.ec.domain.shared.OrdenadorImpl;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.message.LancadorMensagem;

@Named
@Scope("view")
public class AcompanhamentoVivoBean implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private ParametrosConsultaVendasVivoDTO parametrosConsultaVendasVivo;
        private List<VendaVivo> listaVendas;
        private VendaVivo vendaVivoSelecionada;
       
        private Integer quantidadeSemDigitalizacao = 0;
        private Integer quantidadeNaoVerificados = 0;
        private Integer quantidadeEmContestacao = 0;
        private Integer quantidadeComPendencias = 0;
        private Integer quantidadeCancelada = 0;
        private Integer quantidadeConfirmada = 0;
       
        private Integer quantidadeSemVivoGo = 0;
       
        private VendaVivoService vendaVivoService;
       
        private Ordenador ordenador;
       
        @Inject
        public AcompanhamentoVivoBean(VendaVivoService vendaVivoService) {
                this.vendaVivoService = vendaVivoService;
                this.ordenador = new OrdenadorImpl();
        }
       
        @PostConstruct
        public void preCarregamento() {
                ParametrosConsultaVendasVivoDTO parametros = new ParametrosConsultaVendasVivoDTO();
                parametros.setEntidade(new VendaVivo());
                parametros.setTipoConsultaVendasVivo(TipoConsultaVendasVivo.COM_PENDENCIAS.getValor());
                setParametrosConsultaVendasVivo(parametros);
                consultarVendas();
        }
       
        public TipoConsultaVendasVivo[] getTiposConsultaVendasVivo() {
                return TipoConsultaVendasVivo.values();
        }
       
        public TipoStatusDigitalizacao[] getTiposStatusDigitalizacao() {
                return TipoStatusDigitalizacao.values();
        }
       
        public ParametrosConsultaVendasVivoDTO getParametrosConsultaVendasVivo() {
                return parametrosConsultaVendasVivo;
        }
        public void setParametrosConsultaVendasVivo(ParametrosConsultaVendasVivoDTO parametrosConsultaVendasVivo) {
                this.parametrosConsultaVendasVivo = parametrosConsultaVendasVivo;
        }
       
        public List<VendaVivo> getListaVendas() {
                return listaVendas;
        }
        public void setListaVendas(List<VendaVivo> listaVendas) {
                this.listaVendas = listaVendas;
        }
       
        public VendaVivo getVendaVivoSelecionada() {
                return vendaVivoSelecionada;
        }
        public void setVendaVivoSelecionada(VendaVivo vendaVivoSelecionada) {
                this.vendaVivoSelecionada = vendaVivoSelecionada;
        }
       
        public Integer getQuantidadeSemDigitalizacao() {
                return quantidadeSemDigitalizacao;
        }
        public void setQuantidadeSemDigitalizacao(Integer quantidadeSemDigitalizacao) {
                this.quantidadeSemDigitalizacao = quantidadeSemDigitalizacao;
        }
       
        public Integer getQuantidadeNaoVerificados() {
                return quantidadeNaoVerificados;
        }
        public void setQuantidadeNaoVerificados(Integer quantidadeNaoVerificados) {
                this.quantidadeNaoVerificados = quantidadeNaoVerificados;
        }
       
        public Integer getQuantidadeEmContestacao() {
                return quantidadeEmContestacao;
        }
        public void setQuantidadeEmContestacao(Integer quantidadeEmContestacao) {
                this.quantidadeEmContestacao = quantidadeEmContestacao;
        }
       
        public Integer getQuantidadeComPendencias() {
                return quantidadeComPendencias;
        }
        public void setQuantidadeComPendencias(Integer quantidadeComPendencias) {
                this.quantidadeComPendencias = quantidadeComPendencias;
        }
       
        public Integer getQuantidadeCancelada() {
                return quantidadeCancelada;
        }
        public void setQuantidadeCancelada(Integer quantidadeCancelada) {
                this.quantidadeCancelada = quantidadeCancelada;
        }
       
        public Integer getQuantidadeConfirmada() {
                return quantidadeConfirmada;
        }
        public void setQuantidadeConfirmada(Integer quantidadeConfirmada) {
                this.quantidadeConfirmada = quantidadeConfirmada;
        }
       
        public Integer getQuantidadeSemVivoGo() {
                return quantidadeSemVivoGo;
        }
        public void setQuantidadeSemVivoGo(Integer quantidadeSemVivoGo) {
                this.quantidadeSemVivoGo = quantidadeSemVivoGo;
        }
       
        /***************************************************************/
       
        public void consultarVendas() {
                setListaVendas(new ArrayList<VendaVivo>(ordenador.ordenar(vendaVivoService.consultarVendaPorParametros(getParametrosConsultaVendasVivo()))));
                atualizarResumo(getListaVendas());
        }
       
        public void atualizarResumo(List<VendaVivo> vendas) {
                Integer quantidadeSemDigitalizacao = 0;
                Integer quantidadeNaoVerificados = 0;
                Integer quantidadeEmContestacao = 0;
                Integer quantidadeComPendencias = 0;
                Integer quantidadeCancelada = 0;
                Integer quantidadeConfirmada = 0;
                Integer quantidadeSemVivoGo = 0;
               
                for (VendaVivo vendaVivo : vendas) {
                        if (VerificadorUtil.estaNulo(vendaVivo.getDataDigitalizacao())) {
                                quantidadeSemDigitalizacao++;
                        }
                        if (vendaVivo.naoVerificado()) {
                                quantidadeNaoVerificados++;
                        }
                        if (vendaVivo.emContestacao()) {
                                quantidadeEmContestacao++;
                        }
                        if (vendaVivo.verificadoComPendencia()) {
                                quantidadeComPendencias++;
                        }
                        if (vendaVivo.cancelado()) {
                                quantidadeCancelada++;
                        }
                        if (vendaVivo.confirmadoSemGED() || vendaVivo.statusConfirmado()) {
                                quantidadeConfirmada++;
                        }
                        if (!vendaVivo.getIndicadorCadastradoVivoGo()) {
                                quantidadeSemVivoGo++;
                        }
                }
               
                setQuantidadeSemDigitalizacao(quantidadeSemDigitalizacao);
                setQuantidadeNaoVerificados(quantidadeNaoVerificados);
                setQuantidadeEmContestacao(quantidadeEmContestacao);
                setQuantidadeComPendencias(quantidadeComPendencias);
                setQuantidadeCancelada(quantidadeCancelada);
                setQuantidadeConfirmada(quantidadeConfirmada);
                setQuantidadeSemVivoGo(quantidadeSemVivoGo);
        }
       
        public void atualizarStatus() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                if (VerificadorUtil.estaNuloOuVazio(getVendaVivoSelecionada().getTipoStatusDigitalizacao())) {
                                        throw new NegocioException("INFORME O STATUS");
                                }
                                if (!getVendaVivoSelecionada().confirmadoSemGED() || !getVendaVivoSelecionada().cancelado()) {
                                        if (VerificadorUtil.estaNuloOuVazio(getVendaVivoSelecionada().getProtocoloGED())) {
                                                throw new NegocioException("INFORME O PROTOCOLO");
                                        }
                                        if (VerificadorUtil.estaNuloOuVazio(getVendaVivoSelecionada().getDataDigitalizacao())) {
                                                throw new NegocioException("INFORME A DATA DE DIGITALIZAÇÃO");
                                        }
                                }
                                getVendaVivoSelecionada().setDataStatus(DataUtils.getDataAtual());
                                vendaVivoService.alterar(getVendaVivoSelecionada());
                                LancadorMensagem.lancarSucesso("VENDA ATUALIZADA COM SUCESSO!");
                        }
                });
        }
       
}