package gcom.gui.cobranca;
import gcom.cobranca.FiltroCobrancaCriterio;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ComparacaoTexto;
import gcom.util.filtro.ParametroSimples;
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;
/**
* processamento para filtrar o criterio da cobran�a
*
* @author S�vio Luiz
* @date 05/05/2006
*/
public class FiltrarCriterioCobrancaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("exibirManterCriterioCobranca");
HttpSession sessao = httpServletRequest.getSession(false);
CriterioCobrancaFiltrarActionForm criterioCobrancaFiltrarActionForm = (CriterioCobrancaFiltrarActionForm) actionForm;
// Recupera os par�metros do form
String descricaoCriterioCobranca = criterioCobrancaFiltrarActionForm
.getDescricaoCriterio();
String dataInicioVigencia = criterioCobrancaFiltrarActionForm
.getDataInicioVigencia();
String numeroAnosContaAntiga = criterioCobrancaFiltrarActionForm
.getNumeroAnoContaAntiga();
String opcaoAcaoImovelSitEspecial = criterioCobrancaFiltrarActionForm
.getOpcaoAcaoImovelSitEspecial();
String opcaoAcaoImovelSit = criterioCobrancaFiltrarActionForm
.getOpcaoAcaoImovelSit();
String opcaoContasRevisao = criterioCobrancaFiltrarActionForm
.getOpcaoContasRevisao();
String opcaoAcaoImovelDebitoMesConta = criterioCobrancaFiltrarActionForm
.getOpcaoAcaoImovelDebitoMesConta();
String opcaoAcaoInquilinoDebitoMesConta = criterioCobrancaFiltrarActionForm
.getOpcaoAcaoInquilinoDebitoMesConta();
String opcaoAcaoImovelDebitoContasAntigas = criterioCobrancaFiltrarActionForm
.getOpcaoAcaoImovelDebitoContasAntigas();
String indicadorUso = criterioCobrancaFiltrarActionForm
.getIndicadorUso();
String indicadorAtualizar = httpServletRequest
.getParameter("indicadorAtualizar");
if (indicadorAtualizar == null) {
criterioCobrancaFiltrarActionForm.setIndicadorAtualizar("2");
} else {
criterioCobrancaFiltrarActionForm
.setIndicadorAtualizar(indicadorAtualizar);
}
FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio(
FiltroCobrancaCriterio.ID);
boolean peloMenosUmParametroInformado = false;
// Insere os par�metros informados no filtro
if (descricaoCriterioCobranca != null
&& !descricaoCriterioCobranca.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroCobrancaCriterio.adicionarParametro(new ComparacaoTexto(
FiltroCobrancaCriterio.DESCRICAO_COBRANCA_CRITERIO,
descricaoCriterioCobranca));
}
if (dataInicioVigencia != null
&& !dataInicioVigencia.trim().equalsIgnoreCase("")) {
Date dataVigencia = Util.converteStringParaDate(dataInicioVigencia);
peloMenosUmParametroInformado = true;
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.DATA_INICIO_VIGENCIA, dataVigencia));
}
if (numeroAnosContaAntiga != null
&& !numeroAnosContaAntiga.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.NUMERO_ANOS_CONTA_ANTIGA,
numeroAnosContaAntiga));
}
if (opcaoAcaoImovelSitEspecial != null
&& !opcaoAcaoImovelSitEspecial.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (!opcaoAcaoImovelSitEspecial.equalsIgnoreCase("3")) {
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.INDICADOR_IMOVEL_PARALISACAO,
opcaoAcaoImovelSitEspecial));
}
}
if (opcaoAcaoImovelSit != null
&& !opcaoAcaoImovelSit.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (!opcaoAcaoImovelSit.equalsIgnoreCase("3")) {
filtroCobrancaCriterio
.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.INDICADOR_IMOVEL_SITUACAO_COBRANCA,
opcaoAcaoImovelSit));
}
}
if (opcaoContasRevisao != null
&& !opcaoContasRevisao.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (!opcaoContasRevisao.equalsIgnoreCase("3")) {
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.INDICADOR_CONTA_REVISAO,
opcaoContasRevisao));
}
}
if (opcaoAcaoImovelDebitoMesConta != null
&& !opcaoAcaoImovelDebitoMesConta.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (!opcaoAcaoImovelDebitoMesConta.equalsIgnoreCase("3")) {
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.INDICADOR_DEBITO_CONTA_MES,
opcaoAcaoImovelDebitoMesConta));
}
}
if (opcaoAcaoInquilinoDebitoMesConta != null
&& !opcaoAcaoInquilinoDebitoMesConta.trim()
.equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (!opcaoAcaoInquilinoDebitoMesConta.equalsIgnoreCase("3")) {
filtroCobrancaCriterio
.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.INDICADOR_INQUILINO_DEBITO_CONTA_MES,
opcaoAcaoInquilinoDebitoMesConta));
}
}
if (opcaoAcaoImovelDebitoContasAntigas != null
&& !opcaoAcaoImovelDebitoContasAntigas.trim().equalsIgnoreCase(
"")) {
peloMenosUmParametroInformado = true;
if (!opcaoAcaoImovelDebitoContasAntigas.equalsIgnoreCase("3")) {
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.INDICADOR_DEBITO_CONTA_ANTIGA,
opcaoAcaoImovelDebitoContasAntigas));
}
}
if ((indicadorUso != null && !indicadorUso.equals(""
+ ConstantesSistema.NUMERO_NAO_INFORMADO))
&& (!indicadorUso.equals("3"))) {
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.INDICADOR_USO, indicadorUso));
peloMenosUmParametroInformado = true;
}
// Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
// Manda o filtro pelo request para o ExibirManterClienteAction
sessao.setAttribute("filtroCobrancaCriterio", filtroCobrancaCriterio);
sessao.setAttribute("indicadorAtualizar", indicadorAtualizar);
return retorno;
}
}