package gcom.gui.cobranca.contratoparcelamento; import gcom.cobranca.contratoparcelamento.ContratoParcelamentoCliente; import gcom.cobranca.contratoparcelamento.FiltroContratoParcelamentoCliente; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.FiltroUsuario; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ComparacaoTexto; import gcom.util.filtro.ConectorAnd; import gcom.util.filtro.ConectorOr; import gcom.util.filtro.MaiorQue; import gcom.util.filtro.MenorQue; import gcom.util.filtro.ParametroNaoNulo; import gcom.util.filtro.ParametroNulo; import gcom.util.filtro.ParametroSimples; import java.sql.Timestamp; import java.util.Calendar; import java.util.Collection; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * < <Descri��o da Classe>> * * @author Administrador */ public class FiltrarContratoParcelamentoClienteAction extends GcomAction { private HttpSession sessao; private Fachada fachada; /** * < <Descri��o do m�todo>> * * @param actionMapping * Descri��o do par�metro * @param actionForm * Descri��o do par�metro * @param httpServletRequest * Descri��o do par�metro * @param httpServletResponse * Descri��o do par�metro * @return Descri��o do retorno */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("retornoPesquisa"); sessao = httpServletRequest.getSession(false); fachada = Fachada.getInstancia(); FiltrarContratoParcelamentoClienteActionForm filtrarContratoParcelamentoActionForm = (FiltrarContratoParcelamentoClienteActionForm) actionForm; String idContratoParcelamento = filtrarContratoParcelamentoActionForm.getIdContratoParcelamento(); String idContratoAnterior = filtrarContratoParcelamentoActionForm.getIdContratoAnterior(); String periodoNegociacaoInicial = filtrarContratoParcelamentoActionForm.getPeriodoNegociacaoInicial(); String periodoNegociacaoFinal = filtrarContratoParcelamentoActionForm.getPeriodoNegociacaoFinal(); String periodoImplantacaoInicial = filtrarContratoParcelamentoActionForm.getPeriodoImplantacaoInicial(); String periodoImplantacaoFinal = filtrarContratoParcelamentoActionForm.getPeriodoImplantacaoFinal(); String situacaoPagamento = filtrarContratoParcelamentoActionForm.getSituacaoPagamento(); String situacaoCancelamento = filtrarContratoParcelamentoActionForm.getSituacaoCancelamento(); String periodoCancelamentoInicial = filtrarContratoParcelamentoActionForm.getPeriodoCancelamentoInicial(); String periodoCancelamentoFinal = filtrarContratoParcelamentoActionForm.getPeriodoCancelamentoFinal(); String[] colecaoContratoMotivoCancelamento = filtrarContratoParcelamentoActionForm.getColecaoContratoMotivoCancelamento(); String idClienteContrato = null; String idUsuarioResponsavel = null; if (filtrarContratoParcelamentoActionForm.getLoginUsuario() != null && !filtrarContratoParcelamentoActionForm.getLoginUsuario().trim().equals("")){ FiltroUsuario filtroUsuario = new FiltroUsuario(); filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.LOGIN, filtrarContratoParcelamentoActionForm.getLoginUsuario())); Collection colecaoUsuario = fachada.pesquisar( filtroUsuario, Usuario.class.getName()); if (colecaoUsuario != null && !colecaoUsuario.isEmpty()) { Usuario usuario = (Usuario) Util.retonarObjetoDeColecao(colecaoUsuario); idUsuarioResponsavel = usuario.getId().toString(); } } //Recupera campo AutoCompleteCliente if (filtrarContratoParcelamentoActionForm.getClienteAutocomplete() != null && !"".equals(filtrarContratoParcelamentoActionForm.getClienteAutocomplete()) && filtrarContratoParcelamentoActionForm.getClienteAutocomplete().contains("-")){ idClienteContrato = filtrarContratoParcelamentoActionForm.getClienteAutocomplete().split(" - ")[0].trim(); } boolean peloMenosUmParametroInformado = false; //FiltroContratoParcelamento filtroContratoParcelamento = new FiltroContratoParcelamento(); FiltroContratoParcelamentoCliente filtroContratoParcelamentoCliente = new FiltroContratoParcelamentoCliente(); filtroContratoParcelamentoCliente.adicionarCaminhoParaCarregamentoEntidade("contrato"); filtroContratoParcelamentoCliente.adicionarCaminhoParaCarregamentoEntidade("cliente"); filtroContratoParcelamentoCliente.adicionarCaminhoParaCarregamentoEntidade("contrato.contratoAnterior"); filtroContratoParcelamentoCliente.adicionarCaminhoParaCarregamentoEntidade("contrato.parcelamentoSituacao"); filtroContratoParcelamentoCliente.adicionarCaminhoParaCarregamentoEntidade("contrato.usuarioResponsavel"); //Validando os campos do tipo Data validarDatas(periodoNegociacaoInicial,periodoNegociacaoFinal,"Periodo de Negocia��o"); validarDatas(periodoImplantacaoInicial,periodoImplantacaoFinal,"Periodo de Implanta��o"); validarDatas(periodoCancelamentoInicial,periodoCancelamentoFinal,"Periodo de Cancelamento"); //Efetuando as filtragens requeridas //Caso o n�mero de contrato for informado, desconsiderar os demais filtros if(idContratoParcelamento != null && !idContratoParcelamento.equals("")){ peloMenosUmParametroInformado = true; filtroContratoParcelamentoCliente.adicionarParametro(new ComparacaoTexto(FiltroContratoParcelamentoCliente.NUMERO_CONTRATO,idContratoParcelamento)); filtroContratoParcelamentoCliente.adicionarParametro(new ParametroSimples(FiltroContratoParcelamentoCliente.INDICADOR_CLIENTE_SUPERIOR,"1",ConectorOr.CONECTOR_OR,2)); filtroContratoParcelamentoCliente.adicionarParametro(new ParametroNulo(FiltroContratoParcelamentoCliente.CLIENTE_SUPERIOR)); filtroContratoParcelamentoCliente.adicionarParametro(new ParametroSimples(FiltroContratoParcelamentoCliente.INDICADOR_CLIENTE_SUPERIOR,"1",ConectorOr.CONECTOR_OR,2)); filtroContratoParcelamentoCliente.adicionarParametro(new ParametroSimples(FiltroContratoParcelamentoCliente.INDICADOR_CLIENTE_SUPERIOR,"2")); } else{ //N�mero do contrato anterior if(idContratoAnterior != null && !idContratoAnterior.equals("")){ peloMenosUmParametroInformado = true; filtroContratoParcelamentoCliente.adicionarParametro(new ParametroSimples(FiltroContratoParcelamentoCliente.NUMERO_ANTERIOR,idContratoAnterior)); } //Cliente do Contrato filtroContratoParcelamentoCliente.adicionarParametro(new ParametroSimples(FiltroContratoParcelamentoCliente.INDICADOR_CLIENTE_SUPERIOR,"1",ConectorOr.CONECTOR_OR,2)); filtroContratoParcelamentoCliente.adicionarParametro(new ParametroNulo(FiltroContratoParcelamentoCliente.CLIENTE_SUPERIOR)); filtroContratoParcelamentoCliente.adicionarParametro(new ParametroSimples(FiltroContratoParcelamentoCliente.INDICADOR_CLIENTE_SUPERIOR,"1",ConectorOr.CONECTOR_OR,2)); filtroContratoParcelamentoCliente.adicionarParametro(new ParametroSimples(FiltroContratoParcelamentoCliente.INDICADOR_CLIENTE_SUPERIOR,"2")); if(idClienteContrato != null && !idClienteContrato.equals("")){ peloMenosUmParametroInformado = true; filtroContratoParcelamentoCliente.adicionarParametro(new ParametroSimples(FiltroContratoParcelamentoCliente.ID_CLIENTE,idClienteContrato)); /*Collection<ContratoParcelamentoCliente> lista = fachada.pesquisar(filtroContratoParcelamentoCliente,ContratoParcelamento.class.getName()); Collection<String> listaIDs = new ArrayList(); //pegar a lista de IDs Iterator it = lista.iterator(); while(it.hasNext()){ ContratoParcelamentoCliente cpc = (ContratoParcelamentoCliente) it.next(); listaIDs.add(cpc.getId().toString()); } filtroContratoParcelamentoCliente.adicionarParametro(new ParametroSimplesIn(FiltroContratoParcelamento.ID,listaIDs));*/ } //Usu�rio Respons�vel if(idUsuarioResponsavel != null && !idUsuarioResponsavel.equals("")){ peloMenosUmParametroInformado = true; filtroContratoParcelamentoCliente.adicionarParametro(new ParametroSimples(FiltroContratoParcelamentoCliente.USUARIO_RESPONSAVEL_ID,idUsuarioResponsavel)); } //Per�odo de negocia��o do contrato - Data inicial if(periodoNegociacaoInicial != null && !periodoNegociacaoInicial.equals("")){ peloMenosUmParametroInformado = true; Date periodoNegociacaoInicialDate = Util.converteStringParaDate(periodoNegociacaoInicial); filtroContratoParcelamentoCliente.adicionarParametro(new MaiorQue(FiltroContratoParcelamentoCliente.DATA_CONTRATO,periodoNegociacaoInicialDate)); } //Per�odo de negocia��o do contrato - Data final if(periodoNegociacaoFinal != null && !periodoNegociacaoFinal.equals("")){ peloMenosUmParametroInformado = true; Date periodoNegociacaoFinalDate = Util.converteStringParaDate(periodoNegociacaoFinal); filtroContratoParcelamentoCliente.adicionarParametro(new MenorQue(FiltroContratoParcelamentoCliente.DATA_CONTRATO,periodoNegociacaoFinalDate)); } //Per�odo de implanta��o do contrato - Data inicial if(periodoImplantacaoInicial != null && !periodoImplantacaoInicial.equals("")){ peloMenosUmParametroInformado = true; Date periodoImplantacaoInicialDate = Util.converteStringParaDate(periodoImplantacaoInicial); Timestamp timeStampPeriodoImplantacaoInicialDate = new Timestamp(periodoImplantacaoInicialDate.getTime()); filtroContratoParcelamentoCliente.adicionarParametro(new MaiorQue(FiltroContratoParcelamentoCliente.DATA_IMPLANTACAO,timeStampPeriodoImplantacaoInicialDate)); } //Per�odo de implanta��o do contrato - Data FINAL if(periodoImplantacaoFinal != null && !periodoImplantacaoFinal.equals("")){ peloMenosUmParametroInformado = true; Date periodoImplantacaoFinalDate = Util.converteStringParaDate(periodoImplantacaoFinal); //Setando o timestamp para 23:59:59:59 Calendar cal = Calendar.getInstance(); cal.setTime(periodoImplantacaoFinalDate); cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); cal.set(Calendar.MILLISECOND, 59); Timestamp timeStampPeriodoImplantacaoFinalDate = new Timestamp(cal.getTime().getTime()); filtroContratoParcelamentoCliente.adicionarParametro(new MenorQue(FiltroContratoParcelamentoCliente.DATA_IMPLANTACAO,timeStampPeriodoImplantacaoFinalDate)); } //Situa��o de pagamento do contrato if(situacaoPagamento != null && !situacaoPagamento.equals("")){ int situacaoP = new Integer(situacaoPagamento).intValue(); switch(situacaoP){ //Pendentes case 1: peloMenosUmParametroInformado = true; filtroContratoParcelamentoCliente.adicionarParametro(new ParametroNaoNulo(FiltroContratoParcelamentoCliente.VALOR_A_COBRAR,ConectorAnd.CONECTOR_AND,2)); filtroContratoParcelamentoCliente.adicionarParametro(new MaiorQue(FiltroContratoParcelamentoCliente.VALOR_A_COBRAR,0)); break; //Pagos case 2: peloMenosUmParametroInformado = true; filtroContratoParcelamentoCliente.adicionarParametro(new ParametroNaoNulo(FiltroContratoParcelamentoCliente.VALOR_A_COBRAR,ConectorAnd.CONECTOR_AND,2)); filtroContratoParcelamentoCliente.adicionarParametro(new ParametroSimples(FiltroContratoParcelamentoCliente.VALOR_A_COBRAR,0)); break; } } //Situa��o de cancelamento do contrato if(situacaoCancelamento != null && !situacaoCancelamento.equals("")){ int situacaoC = new Integer(situacaoCancelamento).intValue(); switch(situacaoC){ //N�o Cancelados case 1: peloMenosUmParametroInformado = true; filtroContratoParcelamentoCliente.adicionarParametro(new ParametroNulo(FiltroContratoParcelamentoCliente.MOTIVO_DESFAZER)); break; //Cancelados case 2: peloMenosUmParametroInformado = true; filtroContratoParcelamentoCliente.adicionarParametro(new ParametroNaoNulo(FiltroContratoParcelamentoCliente.MOTIVO_DESFAZER)); break; } } //Per�odo de cancelamento do contrato - Data inicial if(periodoCancelamentoInicial != null && !periodoCancelamentoInicial.equals("")){ peloMenosUmParametroInformado = true; Date periodoCancelamentoInicialDate = Util.converteStringParaDate(periodoCancelamentoInicial); Timestamp timeStampPeriodoCancelamentoInicialDate = new Timestamp(periodoCancelamentoInicialDate.getTime()); filtroContratoParcelamentoCliente.adicionarParametro(new MaiorQue(FiltroContratoParcelamentoCliente.DATA_CANCELAMENTO,timeStampPeriodoCancelamentoInicialDate)); } //Per�odo de cancelamento do contrato - Data final if(periodoCancelamentoFinal != null && !periodoCancelamentoFinal.equals("")){ peloMenosUmParametroInformado = true; Date periodoCancelamentoFinalDate = Util.converteStringParaDate(periodoCancelamentoFinal); //Setando o timestamp para 23:59:59:59 Calendar cal = Calendar.getInstance(); cal.setTime(periodoCancelamentoFinalDate); cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); cal.set(Calendar.MILLISECOND, 59); Timestamp timeStampPeriodoCancelamentoFinalDate = new Timestamp(cal.getTime().getTime()); filtroContratoParcelamentoCliente.adicionarParametro(new MenorQue(FiltroContratoParcelamentoCliente.DATA_CANCELAMENTO,timeStampPeriodoCancelamentoFinalDate)); } //Motivo cancelamento do contrato if(colecaoContratoMotivoCancelamento != null && colecaoContratoMotivoCancelamento.length != 0){ peloMenosUmParametroInformado = true; for(int i = 0; i < colecaoContratoMotivoCancelamento.length; i++){ if(i == 0) filtroContratoParcelamentoCliente.adicionarParametro(new ParametroSimples(FiltroContratoParcelamentoCliente.MOTIVO_DESFAZER,colecaoContratoMotivoCancelamento[i],ConectorOr.CONECTOR_OR,colecaoContratoMotivoCancelamento.length)); else filtroContratoParcelamentoCliente.adicionarParametro(new ParametroSimples(FiltroContratoParcelamentoCliente.MOTIVO_DESFAZER,colecaoContratoMotivoCancelamento[i])); } } } //Ordem filtroContratoParcelamentoCliente.setCampoOrderBy(FiltroContratoParcelamentoCliente.ID_CLIENTE+" ASC",FiltroContratoParcelamentoCliente.DATA_CONTRATO+" DESC"); //Verificar preenchimento dos campos if (!peloMenosUmParametroInformado) { throw new ActionServletException( "atencao.filtro.nenhum_parametro_informado"); } //Pesquisa dos resultados Collection<ContratoParcelamentoCliente> collectionContratoParcelamentoCliente = fachada.pesquisar(filtroContratoParcelamentoCliente,ContratoParcelamentoCliente.class.getName()); //Valida��es do resultado //Nenhum registro encontrado if (collectionContratoParcelamentoCliente == null || collectionContratoParcelamentoCliente.isEmpty()) { throw new ActionServletException( "atencao.pesquisa.nenhumresultado", null, "contrato de parcelamento"); } //Muitos registros encontrados if (collectionContratoParcelamentoCliente.size() > ConstantesSistema.NUMERO_MAXIMO_REGISTROS_PESQUISA) { // throw new ActionServletException("atencao.pesquisa.muitosregistros"); } // Coloca a cole��o na sess�o sessao.setAttribute("filtroContratoParcelamentoCliente", filtroContratoParcelamentoCliente); //Pegando os respectivos clientes /*Iterator iterator = collectionContratoParcelamento.iterator(); Collection<ContratoParcelamentoCliente> listaContratosParcelamentoCliente = new ArrayList<ContratoParcelamentoCliente>(); FiltroContratoParcelamentoCliente filtroCPCliente = new FiltroContratoParcelamentoCliente(); while(iterator.hasNext()){ ContratoParcelamento cp = (ContratoParcelamento) iterator.next(); filtroCPCliente.adicionarParametro(new ParametroSimples(FiltroContratoParcelamentoCliente.ID_CONTRATO,cp.getId())); ArrayList<ContratoParcelamentoCliente> listaContratos = new ArrayList<ContratoParcelamentoCliente>(fachada.pesquisar(filtroCPCliente,ContratoParcelamentoCliente.class.getName())); if(listaContratos.size() == 1) listaContratosParcelamentoCliente.add(listaContratos.get(0)); else{ for(int i = 0;i < listaContratos.size();i++){ if(listaContratos.get(i).getIndicadorClienteSuperior().toString().equals("1")) listaContratosParcelamentoCliente.add(listaContratos.get(i)); } } } sessao.setAttribute("collectionContratoParcelamentoCliente", listaContratosParcelamentoCliente);*/ return retorno; } private void validarDatas(String dataInicial, String dataFinal, String campo){ if (dataInicial != null && !"".equals(dataInicial)) { Date data = Util.converteStringParaDate(dataInicial); if (data == null) { throw new ActionServletException("atencao.data.inicial.invalida"); } } if (dataInicial != null && !"".equals(dataFinal)) { Date data = Util.converteStringParaDate(dataFinal); if (data == null) { throw new ActionServletException("atencao.data.final.invalida"); } } if (dataInicial != null && !"".equals(dataInicial) && dataInicial != null && !"".equals(dataFinal)) { Date dataInicialDate = Util.converteStringParaDate(dataInicial); Date dataFinalDate = Util.converteStringParaDate(dataFinal); if (dataInicialDate.getTime() > dataFinalDate.getTime()) { throw new ActionServletException( "atencao.data.intervalo.invalido", null, Util .formatarData(new Date())); } } } }