package gcom.gui.arrecadacao; import gcom.arrecadacao.FiltroAvisoBancario; import gcom.arrecadacao.aviso.AvisoBancario; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.Util; import gcom.util.filtro.Intervalo; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.util.Calendar; import java.util.Collection; import java.util.GregorianCalendar; import java.util.Map; 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; /** * Description of the Class * * @author Tiago Moreno * @create 16/02/2006 * */ public class PesquisarAvisoBancarioAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping .findForward("pesquisarAvisoBancarioResultado"); // Obt�m a inst�ncia da fachada //Fachada fachada = Fachada.getInstancia(); // cria sessao HttpSession sessao = httpServletRequest.getSession(false); FiltroAvisoBancario filtroAvisoBancario = new FiltroAvisoBancario(); boolean peloMenosUmParametroInformado = false; PesquisarAvisoBancarioActionForm pesquisarAvisoBancarioActionForm = (PesquisarAvisoBancarioActionForm) actionForm; String idArrecadador = (String) pesquisarAvisoBancarioActionForm.getIdArrecadador(); String dataLancamentoInicio = (String) pesquisarAvisoBancarioActionForm.getDataLancamentoInicio(); String dataLancamentoFim = (String) pesquisarAvisoBancarioActionForm.getDataLancamentoFim(); String tipoAviso = (String) pesquisarAvisoBancarioActionForm.getTipoAviso(); String idContaBancaria = (String)pesquisarAvisoBancarioActionForm.getIdConta(); String idMovimento = (String) pesquisarAvisoBancarioActionForm.getIdMovimento(); String periodoArrecadacaoInicio = (String) pesquisarAvisoBancarioActionForm.getPeriodoArrecadacaoInicio(); String periodoArrecadacaoFim = (String) pesquisarAvisoBancarioActionForm.getPeriodoArrecadacaoFim(); String dataPrevisaoCreditoDebitoInicio = (String) pesquisarAvisoBancarioActionForm.getDataPrevisaoCreditoDebitoInicio(); String dataPrevisaoCreditoDebitoFim = (String) pesquisarAvisoBancarioActionForm.getDataPrevisaoCreditoDebitoFim(); /*String intervaloValorPrevistoInicio = (String) pesquisarAvisoBancarioActionForm.getIntervaloValorPrevistoInicio(); String intervaloValorPrevistoFim = (String) pesquisarAvisoBancarioActionForm.getIntervaloValorPrevistoFim();*/ String dataRealizacaoCreditoDebitoInicio = (String) pesquisarAvisoBancarioActionForm.getDataRealizacaoCreditoDebitoInicio(); String dataRealizacaoCreditoDebitoFim = (String) pesquisarAvisoBancarioActionForm.getDataRealizacaoCreditoDebitoFim(); String intervaloValorRealizadoInicio = (String) pesquisarAvisoBancarioActionForm.getIntervaloValorRealizadoInicio(); String intervaloValorRealizadoFim = (String) pesquisarAvisoBancarioActionForm.getIntervaloValorRealizadoFim(); // Validando datas dos campos dataLancamento Inicio e Fim if ((dataLancamentoFim == null)|| (dataLancamentoFim.equals(""))){ dataLancamentoFim = dataLancamentoInicio; } if ((dataLancamentoInicio.trim().length() == 10) && (dataLancamentoFim.trim().length() == 10)) { Calendar calendarInicio = new GregorianCalendar(); Calendar calendarFim = new GregorianCalendar(); calendarInicio.set(Calendar.DAY_OF_MONTH, new Integer( dataLancamentoInicio.substring(0, 2)).intValue()); calendarInicio.set(Calendar.MONTH, new Integer(dataLancamentoInicio .substring(3, 5)).intValue()); calendarInicio.set(Calendar.YEAR, new Integer(dataLancamentoInicio .substring(6, 10)).intValue()); calendarFim.set(Calendar.DAY_OF_MONTH, new Integer( dataLancamentoFim.substring(0, 2)).intValue()); calendarFim.set(Calendar.MONTH, new Integer(dataLancamentoFim .substring(3, 5)).intValue()); calendarFim.set(Calendar.YEAR, new Integer(dataLancamentoFim .substring(6, 10)).intValue()); // joga exess�o if (calendarFim.compareTo(calendarInicio) < 0) { throw new ActionServletException( "atencao.data_fim_menor_inicio"); } } // Validando datas dos campos dataPrevisaoCreditoDebito Inicio e Fim if ((dataPrevisaoCreditoDebitoFim == null)|| (dataPrevisaoCreditoDebitoFim.equals(""))){ dataPrevisaoCreditoDebitoFim = dataPrevisaoCreditoDebitoInicio; } if ((dataPrevisaoCreditoDebitoInicio.trim().length() == 10) && (dataPrevisaoCreditoDebitoFim.trim().length() == 10)) { Calendar calendarInicio = new GregorianCalendar(); Calendar calendarFim = new GregorianCalendar(); calendarInicio .set(Calendar.DAY_OF_MONTH, new Integer( dataPrevisaoCreditoDebitoInicio.substring(0, 2)) .intValue()); calendarInicio .set(Calendar.MONTH, new Integer( dataPrevisaoCreditoDebitoInicio.substring(3, 5)) .intValue()); calendarInicio.set(Calendar.YEAR, new Integer( dataPrevisaoCreditoDebitoInicio.substring(6, 10)) .intValue()); calendarFim.set(Calendar.DAY_OF_MONTH, new Integer( dataPrevisaoCreditoDebitoFim.substring(0, 2)).intValue()); calendarFim.set(Calendar.MONTH, new Integer( dataPrevisaoCreditoDebitoFim.substring(3, 5)).intValue()); calendarFim.set(Calendar.YEAR, new Integer( dataPrevisaoCreditoDebitoFim.substring(6, 10)).intValue()); // joga exess�o if (calendarFim.compareTo(calendarInicio) < 0) { throw new ActionServletException( "atencao.data_fim_menor_inicio"); } } // Validando Intervalo de Valor Previsto // retirado depois da altera��o na tabela de aviso bancario /*if (intervaloValorPrevistoInicio != null && intervaloValorPrevistoFim != null) { if (!intervaloValorPrevistoInicio.equals("") && !intervaloValorPrevistoFim.equals("")) { BigDecimal intervaloValorPrevistoInicioTratado = new BigDecimal(intervaloValorPrevistoInicio.replace(",", ".")); BigDecimal intervaloValorPrevistoFimTratado = new BigDecimal(intervaloValorPrevistoFim.replace(",", ".")); if (intervaloValorPrevistoInicioTratado.compareTo(intervaloValorPrevistoFimTratado) == 1) { throw new ActionServletException("atencao.valorprevistofinal.menorque"); } } }*/ // Validando datas dos campos dataRealizacaoCreditoDebito Inicio e Fim if ((dataRealizacaoCreditoDebitoFim == null)|| (dataRealizacaoCreditoDebitoFim.equals(""))){ dataRealizacaoCreditoDebitoFim = dataRealizacaoCreditoDebitoInicio; } if ((dataRealizacaoCreditoDebitoInicio.trim().length() == 10) && (dataRealizacaoCreditoDebitoFim.trim().length() == 10)) { Calendar calendarInicio = new GregorianCalendar(); Calendar calendarFim = new GregorianCalendar(); calendarInicio.set(Calendar.DAY_OF_MONTH, new Integer( dataRealizacaoCreditoDebitoInicio.substring(0, 2)) .intValue()); calendarInicio.set(Calendar.MONTH, new Integer( dataRealizacaoCreditoDebitoInicio.substring(3, 5)) .intValue()); calendarInicio.set(Calendar.YEAR, new Integer( dataRealizacaoCreditoDebitoInicio.substring(6, 10)) .intValue()); calendarFim.set(Calendar.DAY_OF_MONTH, new Integer( dataRealizacaoCreditoDebitoFim.substring(0, 2)).intValue()); calendarFim.set(Calendar.MONTH, new Integer( dataRealizacaoCreditoDebitoFim.substring(3, 5)).intValue()); calendarFim .set(Calendar.YEAR, new Integer( dataRealizacaoCreditoDebitoFim.substring(6, 10)) .intValue()); // joga exess�o if (calendarFim.compareTo(calendarInicio) < 0) { throw new ActionServletException( "atencao.data_fim_menor_inicio"); } } // Validando Intervalo de Valor Realizado if (intervaloValorRealizadoInicio != null && intervaloValorRealizadoFim != null) { if (!intervaloValorRealizadoInicio.equals("") && !intervaloValorRealizadoFim.equals("")) { // BigDecimal intervaloValorRealizadoInicioTratado = new BigDecimal(intervaloValorRealizadoInicio.replace(",", ".")); // BigDecimal intervaloValorRealizadoFimTratado = new BigDecimal(intervaloValorRealizadoFim.replace(",", ".")); intervaloValorRealizadoInicio = intervaloValorRealizadoInicio.replace(".", ""); BigDecimal intervaloValorRealizadoInicioTratado = new BigDecimal(intervaloValorRealizadoInicio.replace(",", ".")); intervaloValorRealizadoFim = intervaloValorRealizadoFim.replace(".", ""); BigDecimal intervaloValorRealizadoFimTratado = new BigDecimal(intervaloValorRealizadoFim.replace(",", ".")); if (intervaloValorRealizadoInicioTratado.compareTo(intervaloValorRealizadoFimTratado) == 1) { throw new ActionServletException("atencao.valorrealizadofinal.menorque"); } } } // Passando os Parametros pros filtros... if ((idArrecadador != null) && (!idArrecadador.trim().equals(""))) { filtroAvisoBancario.adicionarParametro(new ParametroSimples( FiltroAvisoBancario.ARRECADADOR_CODIGO_AGENTE, idArrecadador)); peloMenosUmParametroInformado = true; } if ((dataLancamentoInicio != null) && (!dataLancamentoInicio.trim().equals(""))) { filtroAvisoBancario.adicionarParametro(new Intervalo( FiltroAvisoBancario.DATA_LANCAMENTO, Util.converteStringParaDate(dataLancamentoInicio), Util.converteStringParaDate(dataLancamentoFim))); peloMenosUmParametroInformado = true; } filtroAvisoBancario.adicionarCaminhoParaCarregamentoEntidade("contaBancaria"); if ((idContaBancaria != null) && (!idContaBancaria.trim().equals(""))) { filtroAvisoBancario.adicionarParametro(new ParametroSimples( FiltroAvisoBancario.CONTA_BANCARIA_ID, idContaBancaria)); peloMenosUmParametroInformado = true; } filtroAvisoBancario.adicionarCaminhoParaCarregamentoEntidade("arrecadadorMovimento"); if ((idMovimento != null) && (!idMovimento.trim().equals(""))) { filtroAvisoBancario.adicionarParametro(new ParametroSimples( FiltroAvisoBancario.ARRECADADOR_MOVIMENTO_ID, idMovimento)); peloMenosUmParametroInformado = true; } if ((dataPrevisaoCreditoDebitoInicio != null) && (!dataPrevisaoCreditoDebitoInicio.trim().equals(""))) { filtroAvisoBancario.adicionarParametro(new Intervalo( FiltroAvisoBancario.DATA_PREVISTA, Util.converteStringParaDate(dataPrevisaoCreditoDebitoInicio), Util.converteStringParaDate(dataPrevisaoCreditoDebitoFim))); peloMenosUmParametroInformado = true; } if ((dataRealizacaoCreditoDebitoInicio != null) && (!dataRealizacaoCreditoDebitoInicio.trim().equals(""))) { filtroAvisoBancario.adicionarParametro(new Intervalo( FiltroAvisoBancario.DATA_REALIZADA, Util.converteStringParaDate(dataRealizacaoCreditoDebitoInicio), Util.converteStringParaDate(dataRealizacaoCreditoDebitoFim))); peloMenosUmParametroInformado = true; } // Tratando os periodos (mes/ano) para que possam ser feitos os filtros if ((periodoArrecadacaoInicio != null) && (!periodoArrecadacaoInicio.trim().equals(""))) { int periodoArrecadacaoInicioTratado = Integer.parseInt(Util.formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoInicio)) ; int periodoArrecadacaoFimTratado = Integer.parseInt(Util.formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoFim)); filtroAvisoBancario.adicionarParametro(new Intervalo( FiltroAvisoBancario.ANO_MES_REFERENCIA_ARRECADACAO, periodoArrecadacaoInicioTratado, periodoArrecadacaoFimTratado)); peloMenosUmParametroInformado = true; } if ((intervaloValorRealizadoInicio != null) && (!intervaloValorRealizadoInicio.trim().equals(""))) { filtroAvisoBancario.adicionarParametro(new Intervalo( FiltroAvisoBancario.VALOR_REALIZADO, new BigDecimal(intervaloValorRealizadoInicio.replace(",", ".")), new BigDecimal(intervaloValorRealizadoFim.replace(",", ".")))); peloMenosUmParametroInformado = true; } // retirado depois da altera��o na tabela de aviso bancario /*if ((intervaloValorPrevistoInicio != null) && (!intervaloValorPrevistoInicio.trim().equals(""))) { filtroAvisoBancario.adicionarParametro(new Intervalo( FiltroAvisoBancario.VALOR_PREVISTO, new BigDecimal(intervaloValorPrevistoInicio.replace(",", ".")), new BigDecimal(intervaloValorPrevistoFim.replace(",", ".")))); peloMenosUmParametroInformado = true; }*/ if ((tipoAviso != null) && (!tipoAviso.trim().equals(""))) { filtroAvisoBancario.adicionarParametro(new ParametroSimples( FiltroAvisoBancario.INDICADOR_CREDITO_DEBITO, tipoAviso)); peloMenosUmParametroInformado = true; } // [FS0006] Verificar preenchimento dos campos if (!peloMenosUmParametroInformado) { throw new ActionServletException( "atencao.filtro.nenhum_parametro_informado"); } filtroAvisoBancario.adicionarCaminhoParaCarregamentoEntidade("arrecadador.cliente"); Collection<AvisoBancario> colecaoAvisoBancario = null; Map resultado = controlarPaginacao(httpServletRequest, retorno, filtroAvisoBancario, AvisoBancario.class.getName()); colecaoAvisoBancario= (Collection) resultado.get("colecaoRetorno"); retorno = (ActionForward) resultado.get("destinoActionForward"); // valida se a colecao esta vazia if (colecaoAvisoBancario == null) { throw new ActionServletException("atencao.colecao_vazia"); } else { if (!colecaoAvisoBancario.isEmpty()) { // joga a colecao na sess�o sessao.setAttribute("colecaoAvisoBancario", colecaoAvisoBancario); } else { throw new ActionServletException("atencao.colecao_vazia"); } } return retorno; } }