package gcom.gui.arrecadacao;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
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;
/**
* Esta classe tem por finalidade receber os par�metros informados pelo usu�rio e realizar uma
* filtragem dos movimentos dos arrecadadores a partir dos mesmos
*
* @author Raphael Rossiter, Pedro Alexandre
* @date 23/02/2006, 06/07/2007
*/
public class FiltrarMovimentoArrecadadoresAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = null;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
FiltrarMovimentoArrecadadoresActionForm filtrarMovimentoArrecadadoresActionForm =
(FiltrarMovimentoArrecadadoresActionForm) actionForm;
String codigoBanco = null;
String codigoRemessa = null;
String descricaoIdentificacaoServico = null;
String numeroSequencialArquivo = null;
Date dataGeracaoInicio = null;
Date dataGeracaoFim = null;
Date ultimaAlteracaoInicio = null;
Date ultimaAlteracaoFim = null;
String descricaoOcorrencia = null;
String indicadorAceitacao = null;
String indicadorAbertoFechado = null;
String codigoFormaArrecadacao = null;
boolean peloMenosUmParametroInformado = false;
if (filtrarMovimentoArrecadadoresActionForm.getBanco() != null &&
!filtrarMovimentoArrecadadoresActionForm.getBanco().equalsIgnoreCase("")){
codigoBanco = filtrarMovimentoArrecadadoresActionForm.getBanco().trim();
peloMenosUmParametroInformado = true;
}
if (filtrarMovimentoArrecadadoresActionForm.getRemessa() != null &&
!filtrarMovimentoArrecadadoresActionForm.getRemessa().equalsIgnoreCase("")){
codigoRemessa = filtrarMovimentoArrecadadoresActionForm.getRemessa().trim();
peloMenosUmParametroInformado = true;
}
if (filtrarMovimentoArrecadadoresActionForm.getIdentificacaoServico() != null &&
!filtrarMovimentoArrecadadoresActionForm.getIdentificacaoServico().equalsIgnoreCase("") &&
!filtrarMovimentoArrecadadoresActionForm.getIdentificacaoServico().equalsIgnoreCase(""+ConstantesSistema.NUMERO_NAO_INFORMADO)){
descricaoIdentificacaoServico = filtrarMovimentoArrecadadoresActionForm.getIdentificacaoServico().trim();
peloMenosUmParametroInformado = true;
}
//Forma de arrecada��o
if (filtrarMovimentoArrecadadoresActionForm.getFormaArrecadacao() != null &&
!filtrarMovimentoArrecadadoresActionForm.getFormaArrecadacao().equalsIgnoreCase("") &&
!filtrarMovimentoArrecadadoresActionForm.getFormaArrecadacao().equalsIgnoreCase(""+ConstantesSistema.NUMERO_NAO_INFORMADO)){
codigoFormaArrecadacao = filtrarMovimentoArrecadadoresActionForm.getFormaArrecadacao().trim();
peloMenosUmParametroInformado = true;
}
if (filtrarMovimentoArrecadadoresActionForm.getNsa() != null &&
!filtrarMovimentoArrecadadoresActionForm.getNsa().equalsIgnoreCase("")){
numeroSequencialArquivo = filtrarMovimentoArrecadadoresActionForm.getNsa().trim();
peloMenosUmParametroInformado = true;
}
if (filtrarMovimentoArrecadadoresActionForm.getDataGeracaoMovimentoInicio() != null &&
!filtrarMovimentoArrecadadoresActionForm.getDataGeracaoMovimentoInicio().equalsIgnoreCase("")){
dataGeracaoInicio = Util.converteStringParaDate(filtrarMovimentoArrecadadoresActionForm.getDataGeracaoMovimentoInicio());
dataGeracaoFim = dataGeracaoInicio;
peloMenosUmParametroInformado = true;
}
if (filtrarMovimentoArrecadadoresActionForm.getDataGeracaoMovimentoFim() != null &&
!filtrarMovimentoArrecadadoresActionForm.getDataGeracaoMovimentoFim().equalsIgnoreCase("")){
dataGeracaoFim = Util.converteStringParaDate(filtrarMovimentoArrecadadoresActionForm.getDataGeracaoMovimentoFim());
peloMenosUmParametroInformado = true;
}
if (filtrarMovimentoArrecadadoresActionForm.getDataProcessamentoMovimentoInicio() != null &&
!filtrarMovimentoArrecadadoresActionForm.getDataProcessamentoMovimentoInicio().equalsIgnoreCase("")){
ultimaAlteracaoInicio = Util.converteStringParaDate(filtrarMovimentoArrecadadoresActionForm.getDataProcessamentoMovimentoInicio());
ultimaAlteracaoFim = ultimaAlteracaoInicio;
peloMenosUmParametroInformado = true;
}
if (filtrarMovimentoArrecadadoresActionForm.getDataProcessamentoMovimentoFim() != null &&
!filtrarMovimentoArrecadadoresActionForm.getDataProcessamentoMovimentoFim().equalsIgnoreCase("")){
ultimaAlteracaoFim = Util.converteStringParaDate(filtrarMovimentoArrecadadoresActionForm.getDataProcessamentoMovimentoFim());
peloMenosUmParametroInformado = true;
}
if (filtrarMovimentoArrecadadoresActionForm.getMovimentoItemOcorrencia() != null &&
!filtrarMovimentoArrecadadoresActionForm.getMovimentoItemOcorrencia().equalsIgnoreCase("") &&
!filtrarMovimentoArrecadadoresActionForm.getMovimentoItemOcorrencia().equalsIgnoreCase(""+ConstantesSistema.NUMERO_NAO_INFORMADO)){
descricaoOcorrencia = filtrarMovimentoArrecadadoresActionForm.getMovimentoItemOcorrencia().trim();
peloMenosUmParametroInformado = true;
}
if (filtrarMovimentoArrecadadoresActionForm.getMovimentoItemAceito() != null &&
!filtrarMovimentoArrecadadoresActionForm.getMovimentoItemAceito().equalsIgnoreCase("") &&
!filtrarMovimentoArrecadadoresActionForm.getMovimentoItemAceito().equalsIgnoreCase(""+ConstantesSistema.NUMERO_NAO_INFORMADO)){
indicadorAceitacao = filtrarMovimentoArrecadadoresActionForm.getMovimentoItemAceito().trim();
peloMenosUmParametroInformado = true;
}
if (filtrarMovimentoArrecadadoresActionForm.getMovimentoAbertoFechado() != null &&
!filtrarMovimentoArrecadadoresActionForm.getMovimentoAbertoFechado().equalsIgnoreCase("") &&
!filtrarMovimentoArrecadadoresActionForm.getMovimentoAbertoFechado().equalsIgnoreCase(""+ConstantesSistema.NUMERO_NAO_INFORMADO)){
indicadorAbertoFechado = filtrarMovimentoArrecadadoresActionForm.getMovimentoAbertoFechado();
peloMenosUmParametroInformado = true;
}
//Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
String indicadorRelatorio = filtrarMovimentoArrecadadoresActionForm.getIndicadorRelatorio();
if(indicadorRelatorio != null && indicadorRelatorio.equals("" + ConstantesSistema.SIM)){
retorno = actionMapping.findForward("gerarRelatorioAcompanhamentoMovimentoArrecadadoresPorNSA");
codigoFormaArrecadacao = filtrarMovimentoArrecadadoresActionForm.getFormaArrecadacao();
httpServletRequest.setAttribute("idFormaArrecadacao",codigoFormaArrecadacao);
Collection colecaoMovimentoArrecadador = fachada.filtrarIdsMovimentoArrecadador(
codigoBanco, codigoRemessa, descricaoIdentificacaoServico,
numeroSequencialArquivo, dataGeracaoInicio,
dataGeracaoFim, ultimaAlteracaoInicio, ultimaAlteracaoFim,
descricaoOcorrencia, indicadorAceitacao,indicadorAbertoFechado);
sessao.setAttribute("colecaoMovimentoArrecadador", colecaoMovimentoArrecadador);
}else{
retorno = actionMapping.findForward("efetuarAnaliseMovimentoArrecadadores");
//1� Passo - Pegar o total de registros atrav�s de um count da consulta
// que aparecer� na tela
Integer totalRegistros = fachada.filtrarMovimentoArrecadadoresCount
(codigoBanco, codigoRemessa, descricaoIdentificacaoServico,
numeroSequencialArquivo, dataGeracaoInicio,
dataGeracaoFim, ultimaAlteracaoInicio, ultimaAlteracaoFim,
descricaoOcorrencia, indicadorAceitacao,indicadorAbertoFechado);
//2� Passo - Chamar a fun��o de Pagina��o passando o total de registros
retorno = this.controlarPaginacao(httpServletRequest, retorno,totalRegistros);
// 3� Passo - Obter a cole��o da consulta que aparecera na tela passando
// o numero de paginas da pesquisa que est� no request
Collection colecaoMovimentoArrecadador = fachada.filtrarMovimentoArrecadadorParaPaginacao(
codigoBanco, codigoRemessa, descricaoIdentificacaoServico,
numeroSequencialArquivo, dataGeracaoInicio,
dataGeracaoFim, ultimaAlteracaoInicio, ultimaAlteracaoFim,
descricaoOcorrencia, indicadorAceitacao,
((Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa")),indicadorAbertoFechado);
sessao.setAttribute("colecaoMovimentoArrecadador", colecaoMovimentoArrecadador);
}
return retorno;
}
}