Subversion Repositories Integrator Subversion

Rev

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

package br.com.ec.controller;

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

import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.ServletContext;

import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.StreamedContent;
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.FolhaPagamentoDTO;
import br.com.ec.domain.dto.FolhaPagamentoFuncionarioDTO;
import br.com.ec.domain.model.Avaliacao;
import br.com.ec.domain.service.FolhaPagamentoService;
import br.com.ec.domain.service.ParcelaService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandRelatorioStreamedContent;
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 FolhaPagamentoBean extends AbstractBean<Avaliacao> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private FolhaPagamentoDTO folhaPagamentoDTO;
       
        private UploadedFile arquivoParaImportacao;
        private String tituloEmail = "CONTRACHEQUE";
        private Date dataPagamento = new Date();
       
        private FolhaPagamentoService folhaPagamentoService;
        private ParcelaService parcelaService;
       
        private AvaliacaoConsultaPorDemanda lazy;
        private ParametrosConsulta<Avaliacao> parametrosConsultaAvaliacao;
       
        @Inject
        public FolhaPagamentoBean(AvaliacaoConsultaPorDemanda lazy, FolhaPagamentoService folhaPagamentoService, ParcelaService parcelaService) {
                this.lazy = lazy;
                this.folhaPagamentoService = folhaPagamentoService;
                this.parcelaService = parcelaService;
        }
       
        @Override
        public void preCarregamento() {
                parametrosConsultaAvaliacao = new ParametrosConsulta<Avaliacao>();
                parametrosConsultaAvaliacao.setEntidade(new Avaliacao());
                prepararConsultaDemanda();
                limparEntidade();
        }

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

        @Override
        public GenericService<Avaliacao> getService() {
                return folhaPagamentoService;
        }
       
        @Override
        public Avaliacao getEntidade() {
                return entidade;
        }
       
        @Override
        public void preConsultar() {
                setTipoOperacao(TipoOperacao.CONSULTAR);
        }
       
        @Override
        public void preAlterar(Avaliacao avaliacao) {
                super.preAlterar(avaliacao);
                setFolhaPagamentoDTO(folhaPagamentoService.detalharFolhaPagamento(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 FolhaPagamentoDTO getFolhaPagamentoDTO() {
                return folhaPagamentoDTO;
        }
        public void setFolhaPagamentoDTO(FolhaPagamentoDTO folhaPagamentoDTO) {
                this.folhaPagamentoDTO = folhaPagamentoDTO;
        }
       
        public UploadedFile getArquivoParaImportacao() {
                return arquivoParaImportacao;
        }
        public void setArquivoParaImportacao(UploadedFile arquivoParaImportacao) {
                this.arquivoParaImportacao = arquivoParaImportacao;
        }
       
        public String getTituloEmail() {
                return tituloEmail;
        }
        public void setTituloEmail(String tituloEmail) {
                this.tituloEmail = tituloEmail;
        }
       
        public Date getDataPagamento() {
                return dataPagamento;
        }
        public void setDataPagamento(Date dataPagamento) {
                this.dataPagamento = dataPagamento;
        }
       
        /**************************************************/
       
        public void uploadArquivoEspacoCase() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                setFolhaPagamentoDTO(folhaPagamentoService.importarFolhaPagamento(getArquivoParaImportacao().getContent(), getFolhaPagamentoDTO()));
                                setTituloEmail(getTituloEmail() + " " + getFolhaPagamentoDTO().getAvaliacaoDTO().getVigenciaDTO().getDescricao());
                                LancadorMensagem.lancarSucesso("ARQUIVO IMPORTADO COM SUCESSO!");
                        }
                });
        }
       
        public void selecionarTodosParaEnviarEmail() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                for (FolhaPagamentoFuncionarioDTO folhaPagamentoFuncionario : getFolhaPagamentoDTO().getFuncionarios()) {
                                        if (folhaPagamentoFuncionario.getEnviarEmail()) {
                                                folhaPagamentoFuncionario.setEnviarEmail(false);
                                        } else {
                                                folhaPagamentoFuncionario.setEnviarEmail(true);
                                        }
                                }
                        }
                });
        }
       
        public void uploadArquivoEspacoCase(final FileUploadEvent e) {
        new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                setFolhaPagamentoDTO(folhaPagamentoService.importarFolhaPagamento(e.getFile().getContent(), getFolhaPagamentoDTO()));
                        }
                });
    }
       
        public void atualizarValoresImportados() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                for (FolhaPagamentoFuncionarioDTO folhaPagamentoFuncionario : getFolhaPagamentoDTO().getFuncionarios()) {
                                        if (VerificadorUtil.naoEstaNulo(folhaPagamentoFuncionario.getValorSalarioImportado()) &&
                                                        !VerificadorUtil.isListaNulaOuVazia(folhaPagamentoFuncionario.getParcelas())) {
                                                folhaPagamentoFuncionario.getParcelas().get(0).setValor(folhaPagamentoFuncionario.getValorSalarioImportado());
                                                folhaPagamentoService.atualizarValorParcela(folhaPagamentoFuncionario.getParcelas().get(0));
                                        }
                                }
                                LancadorMensagem.lancarSucesso("VALORES ATUALIZADOS COM SUCESSO");
                        }
                });
        }
       
        public void efetuarPagamentos() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                for (FolhaPagamentoFuncionarioDTO folhaPagamentoFuncionario : getFolhaPagamentoDTO().getFuncionarios()) {
                                        if (!VerificadorUtil.isListaNulaOuVazia(folhaPagamentoFuncionario.getParcelas())) {
                                                parcelaService.efetuarPagamentoRecebimento(folhaPagamentoFuncionario.getParcelas().get(0), getDataPagamento());
                                        }
                                }
                                setArquivoParaImportacao(null);
                                LancadorMensagem.lancarSucesso("PAGAMENTOS EFETUADOS COM SUCESSO");
                        }
                });
        }
       
        public StreamedContent downloadRecibos() throws Exception {
                return new VerificadorLancamentoException().verificarLancamentoException(new CommandRelatorioStreamedContent() {
                        @Override
                        public StreamedContent execute() {
                                return folhaPagamentoService.downloadRecibos(getFolhaPagamentoDTO());
                        }
                });
        }
       
        public void enviarRecibos() throws Exception {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                folhaPagamentoService.enviarRecibosPorEmail(getFolhaPagamentoDTO(), getTituloEmail());
                                LancadorMensagem.lancarSucesso("RECIBOS ENVIADOS COM SUCESSO!");
                        }
                });
        }
       
        public StreamedContent downloadArquivoFolhaBanco(String codigoBanco) throws Exception {
                return new VerificadorLancamentoException().verificarLancamentoException(new CommandRelatorioStreamedContent() {
                        @Override
                        public StreamedContent execute() {
                                return folhaPagamentoService.downloadArquivoFolhaBanco(getFolhaPagamentoDTO(), codigoBanco);
                        }
                });
        }
       
}