package gcom.gui.cobranca;
import gcom.atendimentopublico.ligacaoagua.FiltroLigacaoAguaSituacao;
import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao;
import gcom.atendimentopublico.ligacaoesgoto.FiltroLigacaoEsgotoSituacao;
import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoSituacao;
import gcom.cobranca.CobrancaCriterio;
import gcom.cobranca.CobrancaCriterioLinha;
import gcom.cobranca.CobrancaDocumento;
import gcom.cobranca.CobrancaSituacao;
import gcom.cobranca.CriterioSituacaoCobranca;
import gcom.cobranca.CriterioSituacaoLigacaoAgua;
import gcom.cobranca.CriterioSituacaoLigacaoEsgoto;
import gcom.cobranca.FiltroCobrancaCriterio;
import gcom.cobranca.FiltroCobrancaCriterioLinha;
import gcom.cobranca.FiltroCobrancaDocumento;
import gcom.cobranca.FiltroCobrancaSituacao;
import gcom.fachada.Fachada;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Iterator;
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;
/**
* Pre- processamento para atualizar o criterio da cobran�a
*
* @author S�vio Luiz
* @date 08/05/2006
*/
public class ExibirAtualizarCriterioCobrancaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o retorno
ActionForward retorno = actionMapping
.findForward("atualizarCriterioCobranca");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
String reload = httpServletRequest.getParameter("chamarReload");
//caso seja a primeira vez
if(httpServletRequest.getParameter("menu") != null){
sessao.removeAttribute("voltar");
}
// caso venha do adicionar s� direciona a pagina
// caso o reload seja nulo ent�o processa
if (reload == null || reload.equals("")) {
CriterioCobrancaActionForm criterioCobrancaActionForm = (CriterioCobrancaActionForm) actionForm;
// Cria a vari�vel que vai armazenar o criterio cobran�a para ser
// atualizada
CobrancaCriterio cobrancaCriterio = null;
if (httpServletRequest.getParameter("limpaSessao") != null) {
sessao.removeAttribute("colecaoCobrancaCriterioLinha");
}
if (sessao.getAttribute("colecaoCobrancaCriterioLinha") == null
|| sessao.getAttribute("colecaoCobrancaCriterioLinha")
.equals("")) {
String idCriterioCobranca = null;
if (httpServletRequest.getParameter("limpaSessao") == null) {
if (httpServletRequest
.getParameter("idRegistroAtualizacao") == null) {
idCriterioCobranca = (String) sessao
.getAttribute("idRegistroAtualizacao");
// Definindo a volta do bot�o Voltar p Filtrar crit�rio
// cobran�a
sessao.setAttribute("voltar", "filtrar");
} else {
idCriterioCobranca = httpServletRequest
.getParameter("idRegistroAtualizacao");
// Definindo a volta do bot�o Voltar para Manter
// crit�rio
// cobran�a caso o retornoFiltrar seja igual a nulo
// Caso o retornoFiltrar seja diferente de nulo (no caso
// da tela
// de sucesso de inserir, chamar o atalizar) ent�o o
// bot�o voltar
// retorna para o Filtro crit�rio cobran�a
if (httpServletRequest.getParameter("retornoFiltrar") != null) {
sessao.setAttribute("voltar", "filtrar");
} else {
sessao.setAttribute("voltar", "manter");
}
sessao.setAttribute("idRegistroAtualizacao",
idCriterioCobranca);
}
} else {
idCriterioCobranca = (String) sessao
.getAttribute("idRegistroAtualizacao");
}
FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio();
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.ID, idCriterioCobranca));
filtroCobrancaCriterio.adicionarCaminhoParaCarregamentoEntidade(
FiltroCobrancaCriterio.CRITERIOS_SITUACAO_COBRANCA);
filtroCobrancaCriterio.adicionarCaminhoParaCarregamentoEntidade(
FiltroCobrancaCriterio.CRITERIOS_SITUACAO_LIGACAO_AGUA);
filtroCobrancaCriterio.adicionarCaminhoParaCarregamentoEntidade(
FiltroCobrancaCriterio.CRITERIOS_SITUACAO_LIGACAO_ESGOTO);
Collection<CobrancaCriterio> collectionCobrancaCriterio = fachada
.pesquisar(filtroCobrancaCriterio,
CobrancaCriterio.class.getName());
// Caso a pesquisa tenha retornado o crit�rio de cobran�a
if (collectionCobrancaCriterio != null
&& !collectionCobrancaCriterio.isEmpty()) {
// Recupera da cole��o a rota que vai ser atualizada
cobrancaCriterio = (CobrancaCriterio) Util
.retonarObjetoDeColecao(collectionCobrancaCriterio);
// verifica se existe a cobranca crit�rio documento para a
// cobranca crit�rio escolhida
FiltroCobrancaDocumento filtroCobrancaDocumento = new FiltroCobrancaDocumento();
filtroCobrancaDocumento
.adicionarParametro(new ParametroSimples(
FiltroCobrancaDocumento.ID_COBRANCA_CRITERIO,
cobrancaCriterio.getId()));
Integer qtdCobrancaDocumento = fachada
.totalRegistrosPesquisa(filtroCobrancaDocumento,
CobrancaDocumento.class.getName());
// caso exista alguma cobranca documento ent�o desabilita
// alguns
// campos
if (qtdCobrancaDocumento != null &&
qtdCobrancaDocumento != 0) {
sessao.setAttribute("desabilita", "1");
}
// Seta no form os dados do crit�rio cobran�a
criterioCobrancaActionForm.setDescricaoCriterio(""
+ cobrancaCriterio.getDescricaoCobrancaCriterio());
criterioCobrancaActionForm.setDataInicioVigencia(Util
.formatarData(cobrancaCriterio
.getDataInicioVigencia()));
criterioCobrancaActionForm.setNumeroAnoContaAntiga(""
+ cobrancaCriterio.getNumeroContaAntiga());
criterioCobrancaActionForm.setOpcaoAcaoImovelSitEspecial(""
+ cobrancaCriterio
.getIndicadorEmissaoImovelParalisacao());
criterioCobrancaActionForm
.setOpcaoAcaoImovelSit(""
+ cobrancaCriterio
.getIndicadorEmissaoImovelSituacaoCobranca());
criterioCobrancaActionForm.setOpcaoContasRevisao(""
+ cobrancaCriterio
.getIndicadorEmissaoContaRevisao());
criterioCobrancaActionForm
.setOpcaoAcaoImovelDebitoMesConta(""
+ cobrancaCriterio
.getIndicadorEmissaoDebitoContaMes());
criterioCobrancaActionForm
.setOpcaoAcaoInquilinoDebitoMesConta(""
+ cobrancaCriterio
.getIndicadorEmissaoInquilinoDebitoContaMes());
criterioCobrancaActionForm
.setOpcaoAcaoImovelDebitoContasAntigas(""
+ cobrancaCriterio
.getIndicadorEmissaoDebitoContaAntiga());
criterioCobrancaActionForm.setIndicadorUso(""
+ cobrancaCriterio.getIndicadorUso());
criterioCobrancaActionForm
.setPercentualValorMinimoPagoParceladoCancelado(
Util.formatarMoedaReal(
cobrancaCriterio.getPercentualValorMinimoPagoParceladoCancelado()));
criterioCobrancaActionForm
.setPercentualQuantidadeMinimoPagoParceladoCancelado(
Util.formatarMoedaReal(
cobrancaCriterio.getPercentualQuantidadeMinimoPagoParceladoCancelado()));
criterioCobrancaActionForm
.setValorLimitePrioridade(
Util.formatarMoedaReal(
cobrancaCriterio.getValorLimitePrioridade()));
// recupera a cole��o de cobran�a crit�rio linha
FiltroCobrancaCriterioLinha filtroCobrancaCriterioLinha = new FiltroCobrancaCriterioLinha();
filtroCobrancaCriterioLinha
.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterioLinha.COBRANCA_CRITERIO_ID,
cobrancaCriterio.getId()));
filtroCobrancaCriterioLinha
.adicionarCaminhoParaCarregamentoEntidade("imovelPerfil");
filtroCobrancaCriterioLinha
.adicionarCaminhoParaCarregamentoEntidade("categoria");
Collection colecaoCobrancaCriterioLinha = fachada
.pesquisar(filtroCobrancaCriterioLinha,
CobrancaCriterioLinha.class.getName());
if (colecaoCobrancaCriterioLinha != null
&& !colecaoCobrancaCriterioLinha.isEmpty()) {
sessao.setAttribute("colecaoCobrancaCriterioLinha",
colecaoCobrancaCriterioLinha);
}
// consultar as situacoes de cobranca
FiltroCobrancaSituacao filtroCobrancaSituacao = new FiltroCobrancaSituacao();
filtroCobrancaSituacao.adicionarParametro(new ParametroSimples(FiltroCobrancaSituacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroCobrancaSituacao.setCampoOrderBy(FiltroCobrancaSituacao.DESCRICAO);
Collection colecaoCobrancaSituacao = fachada.pesquisar(filtroCobrancaSituacao, CobrancaSituacao.class.getName());
sessao.setAttribute("colecaoCobrancaSituacao", colecaoCobrancaSituacao);
// preencher situacoes de cobranca setados
if (cobrancaCriterio.getCriteriosSituacaoCobranca() != null &&
!cobrancaCriterio.getCriteriosSituacaoCobranca().isEmpty()){
String[] idsSituacaoCobranca = new String[cobrancaCriterio.getCriteriosSituacaoCobranca().size()];
int i = 0;
for (Iterator iter = cobrancaCriterio.getCriteriosSituacaoCobranca().iterator();
iter.hasNext();) {
CriterioSituacaoCobranca critSitCob = (CriterioSituacaoCobranca) iter.next();
idsSituacaoCobranca[i++] = critSitCob.getComp_id().getCobrancaSituacao().getId() + "";
}
criterioCobrancaActionForm.setIdsCobrancaSituacao(idsSituacaoCobranca);
}
// consultar as situacoes de ligacao de agua
FiltroLigacaoAguaSituacao filtroLigacaoAguaSituacao = new FiltroLigacaoAguaSituacao();
filtroLigacaoAguaSituacao.adicionarParametro(new ParametroSimples(FiltroLigacaoAguaSituacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroLigacaoAguaSituacao.setCampoOrderBy(FiltroLigacaoAguaSituacao.DESCRICAO);
Collection colecaoLigacaoAguaSituacao = fachada.pesquisar(filtroLigacaoAguaSituacao, LigacaoAguaSituacao.class.getName());
sessao.setAttribute("colecaoSituacaoLigacaoAgua", colecaoLigacaoAguaSituacao);
// preencher situacoes de ligacao agua setados
if (cobrancaCriterio.getCriteriosSituacaoLigacaoAgua() != null &&
!cobrancaCriterio.getCriteriosSituacaoLigacaoAgua().isEmpty()){
String[] idsSituacaoLigacaoAgua = new String[cobrancaCriterio
.getCriteriosSituacaoLigacaoAgua().size()];
int i = 0;
for (Iterator iter = cobrancaCriterio.getCriteriosSituacaoLigacaoAgua().iterator();
iter.hasNext();) {
CriterioSituacaoLigacaoAgua critSitLigAgua = (CriterioSituacaoLigacaoAgua) iter.next();
idsSituacaoLigacaoAgua[i++] = critSitLigAgua.getComp_id().getLigacaoAguaSituacao().getId() + "";
}
criterioCobrancaActionForm.setIdsSituacaoLigacaoAgua(idsSituacaoLigacaoAgua);
}
// consultar as situacoes de ligacao de agua
FiltroLigacaoEsgotoSituacao filtroLigacaoEsgotoSituacao = new FiltroLigacaoEsgotoSituacao();
filtroLigacaoEsgotoSituacao.adicionarParametro(new ParametroSimples(FiltroLigacaoEsgotoSituacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroLigacaoEsgotoSituacao.setCampoOrderBy(FiltroLigacaoEsgotoSituacao.DESCRICAO);
Collection colecaoLigacaoEsgotoSituacao = fachada.pesquisar(filtroLigacaoEsgotoSituacao, LigacaoEsgotoSituacao.class.getName());
sessao.setAttribute("colecaoSituacaoLigacaoEsgoto", colecaoLigacaoEsgotoSituacao);
// preencher situacoes de ligacao agua setados
if (cobrancaCriterio.getCriteriosSituacaoLigacaoEsgoto() != null &&
!cobrancaCriterio.getCriteriosSituacaoLigacaoEsgoto().isEmpty()){
String[] idsSituacaoLigacaoEsgoto = new String[cobrancaCriterio
.getCriteriosSituacaoLigacaoEsgoto().size()];
int i = 0;
for (Iterator iter = cobrancaCriterio.getCriteriosSituacaoLigacaoEsgoto().iterator();
iter.hasNext();) {
CriterioSituacaoLigacaoEsgoto critSitLigEsgoto = (CriterioSituacaoLigacaoEsgoto) iter.next();
idsSituacaoLigacaoEsgoto[i++] = critSitLigEsgoto.getComp_id().getLigacaoEsgotoSituacao().getId() + "";
}
criterioCobrancaActionForm.setIdsSituacaoLigacaoEsgoto(idsSituacaoLigacaoEsgoto);
}
}
}
sessao.setAttribute("cobrancaCriterio", cobrancaCriterio);
}
return retorno;
}
}