Subversion Repositories Integrator Subversion

Rev

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

package br.com.ec.controller;

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

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

import org.primefaces.model.file.UploadedFile;
import org.springframework.context.annotation.Scope;

import br.com.ec.controller.consultademanda.AvaliacaoConsultaPorDemanda;
import br.com.ec.core.consulta.ParametrosConsulta;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.AvaliacaoDTO;
import br.com.ec.domain.dto.ParcelaDTO;
import br.com.ec.domain.dto.ValeTransporteDTO;
import br.com.ec.domain.dto.ValeTransporteFuncionarioDTO;
import br.com.ec.domain.dto.ValeTransporteFuncionarioExtraidoDTO;
import br.com.ec.domain.dto.VigenciaDTO;
import br.com.ec.domain.model.Avaliacao;
import br.com.ec.domain.model.tipos.TipoSituacoesVigencia;
import br.com.ec.domain.service.AvaliacaoService;
import br.com.ec.domain.service.ParcelaService;
import br.com.ec.domain.service.ValeTransporteService;
import br.com.ec.domain.service.VigenciaService;
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;
import br.com.ec.web.util.TipoOperacao;

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

        private static final long serialVersionUID = 1L;
       
        private ValeTransporteDTO valeTransporteDTO;
        private VigenciaDTO vigenciaSelecionada;
       
        private ValeTransporteService valeTransporteService;
       
        private VigenciaService vigenciaService;
        private AvaliacaoService avaliacaoService;
       
        private UploadedFile arquivoParaImportacao;
        private Date dataPagamento = new Date();
       
        private ParcelaService parcelaService;
       
        private AvaliacaoConsultaPorDemanda lazy;
        private ParametrosConsulta<Avaliacao> parametrosConsultaAvaliacao;
       
        @Inject
        public ValeTransporteBean(AvaliacaoConsultaPorDemanda lazy, ValeTransporteService valeTransporteService,
                        VigenciaService vigenciaService, AvaliacaoService avaliacaoService, ParcelaService parcelaService) {
                this.lazy = lazy;
                this.valeTransporteService = valeTransporteService;
                this.vigenciaService= vigenciaService;
                this.avaliacaoService = avaliacaoService;
                this.parcelaService = parcelaService;
        }
       
        @Override
        public void preCarregamento() {
                parametrosConsultaAvaliacao = new ParametrosConsulta<Avaliacao>();
                parametrosConsultaAvaliacao.setEntidade(new Avaliacao());
                prepararConsultaDemanda();
                limparEntidade();
        }
       
        @PostConstruct
        private void posCarregamento() {
                if (VerificadorUtil.naoEstaNulo(getParametro("vigencia"))) {
                        setVigenciaSelecionada(vigenciaService.consultarVigencia(new Long(getParametro("vigencia").toString())));
                        if (VerificadorUtil.naoEstaNulo(getVigenciaSelecionada())) {
                                detalharValeTransporte();
                        }
                }
        }

        private void detalharValeTransporte() {
                AvaliacaoDTO avaliacaoDTO = avaliacaoService.consultarAvaliacao(getVigenciaSelecionada().getSequencial());
                if (VerificadorUtil.naoEstaNulo(avaliacaoDTO)) {
                        setValeTransporteDTO(valeTransporteService.detalharValeTransporte(avaliacaoDTO));
                }
        }

        @Override
        public void limparEntidade() {
                setEntidade(new Avaliacao());
        }

        @Override
        public GenericService<Avaliacao> getService() {
                return valeTransporteService;
        }
       
        @Override
        public Avaliacao getEntidade() {
                return entidade;
        }
       
        @Override
        public void preConsultar() {
                setTipoOperacao(TipoOperacao.CONSULTAR);
        }
       
        @Override
        public void preAlterar(Avaliacao avaliacao) {
                super.preAlterar(avaliacao);
                setValeTransporteDTO(valeTransporteService.detalharValeTransporte(new AvaliacaoDTO(avaliacao.getSequencial(), avaliacao.getSequencialDaVigencia(), avaliacao.getDescricaoDaVigencia())));
        }

        @Override
        public Avaliacao getId() {
                return getEntidade();
        }
       
        public AvaliacaoConsultaPorDemanda getLazy() {
                return lazy;
        }
        public void setLazy(AvaliacaoConsultaPorDemanda lazy) {
                this.lazy = lazy;
        }
        public void prepararConsultaDemanda() {
                lazy.setarParametrosConsulta(getParametrosConsultaAvaliacao());
        }
       
        public ParametrosConsulta<Avaliacao> getParametrosConsultaAvaliacao() {
                return parametrosConsultaAvaliacao;
        }
        public void setParametrosConsultaAvaliacao(ParametrosConsulta<Avaliacao> parametrosConsultaAvaliacao) {
                this.parametrosConsultaAvaliacao = parametrosConsultaAvaliacao;
        }
       
        public ValeTransporteDTO getValeTransporteDTO() {
                return valeTransporteDTO;
        }
        public void setValeTransporteDTO(ValeTransporteDTO valeTransporteDTO) {
                this.valeTransporteDTO = valeTransporteDTO;
        }
       
        public VigenciaDTO getVigenciaSelecionada() {
                return vigenciaSelecionada;
        }
        public void setVigenciaSelecionada(VigenciaDTO vigenciaSelecionada) {
                this.vigenciaSelecionada = vigenciaSelecionada;
        }
       
        public UploadedFile getArquivoParaImportacao() {
                return arquivoParaImportacao;
        }
        public void setArquivoParaImportacao(UploadedFile arquivoParaImportacao) {
                this.arquivoParaImportacao = arquivoParaImportacao;
        }
       
        public Date getDataPagamento() {
                return dataPagamento;
        }
        public void setDataPagamento(Date dataPagamento) {
                this.dataPagamento = dataPagamento;
        }
       
        public List<ValeTransporteFuncionarioExtraidoDTO> funcionariosExtraidosForaDaAvaliacao() {
                Double valorTotalForaDaAvaliacao = new Double(0.0);
                List<ValeTransporteFuncionarioExtraidoDTO> extraidosForaDaAvaliacao = new ArrayList<ValeTransporteFuncionarioExtraidoDTO>();
                if (VerificadorUtil.naoEstaNuloOuVazio(getValeTransporteDTO())) {
                        if (VerificadorUtil.naoEstaNuloOuVazio(getValeTransporteDTO().getFuncionariosExtraidos())) {
                                for (ValeTransporteFuncionarioExtraidoDTO extraido : getValeTransporteDTO().getFuncionariosExtraidos()) {
                                        if (!extraido.getAdicionado()) {
                                                valorTotalForaDaAvaliacao += extraido.getValorVencimentos();
                                                extraidosForaDaAvaliacao.add(extraido);
                                        }
                                }
                        }
                }
                return extraidosForaDaAvaliacao;
        }
       
        public Double valorTotalImportadoSemAusentes() {
                Double valorTotalForaDaAvaliacao = new Double(0.0);
                List<ValeTransporteFuncionarioExtraidoDTO> extraidosForaDaAvaliacao = new ArrayList<ValeTransporteFuncionarioExtraidoDTO>();
                if (VerificadorUtil.naoEstaNuloOuVazio(getValeTransporteDTO().getFuncionariosExtraidos())) {
                        for (ValeTransporteFuncionarioExtraidoDTO extraido : getValeTransporteDTO().getFuncionariosExtraidos()) {
                                if (!extraido.getAdicionado()) {
                                        valorTotalForaDaAvaliacao += extraido.getValorVencimentos();
                                        extraidosForaDaAvaliacao.add(extraido);
                                }
                        }
                        return getValeTransporteDTO().getValorTotalImportado() - valorTotalForaDaAvaliacao;
                }
                return valorTotalForaDaAvaliacao;
        }
       
        /**************************************************/
       
        public void redirecionarGestaoMensal() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                try {
                                        LancadorMensagem.redirecionarTela("/sistema/gestao_mensal/gestao_mensal.xhtml");
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                });
        }
       
        public void uploadArquivoFlash() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                setValeTransporteDTO(valeTransporteService.importarValeTransporte(getArquivoParaImportacao().getContent(), getValeTransporteDTO()));
                                LancadorMensagem.lancarSucesso("ARQUIVO FLASH IMPORTADO COM SUCESSO!");
                        }
                });
        }
       
        public void atualizarValoresImportados() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                for (ValeTransporteFuncionarioDTO valeTransporteFuncionario : getValeTransporteDTO().getFuncionarios()) {
                                        if (VerificadorUtil.naoEstaNulo(valeTransporteFuncionario.getValorValeTransporteImportado()) &&
                                                        !VerificadorUtil.isListaNulaOuVazia(valeTransporteFuncionario.getParcelas())) {
                                                valeTransporteFuncionario.getParcelas().get(0).setValor(valeTransporteFuncionario.getValorValeTransporteImportado());
                                                valeTransporteService.atualizarValorParcela(valeTransporteFuncionario.getParcelas().get(0));
                                        }
                                }
                                LancadorMensagem.lancarSucesso("VALORES ATUALIZADOS COM SUCESSO");
                        }
                });
        }
       
        public void atualizarCentrosDeCustos() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                for (ValeTransporteFuncionarioDTO valeTransporteFuncionario : getValeTransporteDTO().getFuncionarios()) {
                                        if (!VerificadorUtil.isListaNulaOuVazia(valeTransporteFuncionario.getParcelas())) {
                                                if (VerificadorUtil.naoEstaNulo(valeTransporteFuncionario.getParcelas().get(0))) {
                                                        ParcelaDTO parcela = valeTransporteFuncionario.getParcelas().get(0);
                                                        Long sequencialConta = parcela.getContaDTO().getSequencial();
                                                        valeTransporteService.atualizarCentroDeCustos(sequencialConta, valeTransporteFuncionario.getAvaliacaoFuncionarioDTO().getSequencialDaLoja());
                                                }
                                        }
                                }
                                detalharValeTransporte();
                                setArquivoParaImportacao(null);
                                LancadorMensagem.lancarSucesso("CENTROS DE CUSTOS ATUALIZADOS COM SUCESSO");
                        }
                });
        }
       
        public void efetuarPagamentos() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                for (ValeTransporteFuncionarioDTO valeTransporteFuncionario : getValeTransporteDTO().getFuncionarios()) {
                                        if (!VerificadorUtil.isListaNulaOuVazia(valeTransporteFuncionario.getParcelas())) {
                                                parcelaService.efetuarPagamentoRecebimento(valeTransporteFuncionario.getParcelas().get(0), getDataPagamento());
                                                vigenciaService.alterarSituacaoFolha(getVigenciaSelecionada().getSequencial(), TipoSituacoesVigencia.EM_ANDAMENTO_A.getValor());
                                        }
                                }
                                detalharValeTransporte();
                                setArquivoParaImportacao(null);
                                LancadorMensagem.lancarSucesso("PAGAMENTOS EFETUADOS COM SUCESSO");
                        }
                });
        }
       
        public void finalizarValeTransporte() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                vigenciaService.alterarSituacaoValeTransporte(getVigenciaSelecionada().getSequencial(), TipoSituacoesVigencia.FINALIZADO_F.getValor());
                                setArquivoParaImportacao(null);
                                redirecionarGestaoMensal();
                                LancadorMensagem.lancarSucesso("VALE TRANSPORTE FINALIZADA COM SUCESSO");
                        }
                });
        }
       
}