package gcom.gui.cadastro.imovel;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.ordemservico.bean.ObterDescricaoSituacaoOSHelper;
import gcom.cadastro.imovel.Imovel;
import gcom.cobranca.CobrancaDocumento;
import gcom.cobranca.bean.CobrancaDocumentoHelper;
import gcom.fachada.Fachada;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
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;
/**
* 8� Aba - Dopcumento de Cobran�a e ordens de Servi�oi de Cobran�a Emitidos
* para o Im�vel
*
* @author Rafael Santos
* @since 05/09/2006
*/
public class ExibirConsultarImovelDocumentosCobrancaAction extends GcomAction {
/**
*
* @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("consultarImovelDocumentosCobranca");
// Obtendo uma instancia da sessao
HttpSession sessao = httpServletRequest.getSession(false);
ConsultarImovelActionForm consultarImovelActionForm = (ConsultarImovelActionForm) actionForm;
// id do imovel da aba documento de cobranca
String idImovelDocumentosCobranca = consultarImovelActionForm
.getIdImovelDocumentosCobranca();
String limparForm = httpServletRequest.getParameter("limparForm");
String indicadorNovo = httpServletRequest.getParameter("indicadorNovo");
String idImovelPrincipalAba = null;
if (sessao.getAttribute("idImovelPrincipalAba") != null) {
idImovelPrincipalAba = (String) sessao
.getAttribute("idImovelPrincipalAba");
}
if (limparForm != null && !limparForm.equals("")) {
// limpar os dados
httpServletRequest.setAttribute(
"idImovelDocumentosCobrancaNaoEncontrado", null);
sessao.removeAttribute("imovelClientes");
consultarImovelActionForm.setIdImovelDadosComplementares(null);
consultarImovelActionForm.setIdImovelDadosCadastrais(null);
consultarImovelActionForm.setIdImovelAnaliseMedicaoConsumo(null);
consultarImovelActionForm.setIdImovelHistoricoFaturamento(null);
consultarImovelActionForm.setIdImovelDebitos(null);
consultarImovelActionForm.setIdImovelPagamentos(null);
consultarImovelActionForm.setIdImovelDevolucoesImovel(null);
consultarImovelActionForm.setIdImovelDocumentosCobranca(null);
consultarImovelActionForm.setIdImovelParcelamentosDebitos(null);
consultarImovelActionForm.setIdImovelRegistroAtendimento(null);
consultarImovelActionForm.setImovIdAnt(null);
sessao.removeAttribute("imovelDocumentosCobranca");
sessao.removeAttribute("colecaoDocumentoCobranca");
sessao.removeAttribute("idImovelPrincipalAba");
consultarImovelActionForm.setIdImovelDocumentosCobranca(null);
consultarImovelActionForm
.setMatriculaImovelDocumentosCobranca(null);
consultarImovelActionForm.setSituacaoAguaDocumentosCobranca(null);
consultarImovelActionForm.setSituacaoEsgotoDocumentosCobranca(null);
// }else if(idImovelDocumentosCobranca != null &&
// !idImovelDocumentosCobranca.equalsIgnoreCase("")){
} else if ((idImovelDocumentosCobranca != null && !idImovelDocumentosCobranca
.equalsIgnoreCase(""))
|| (idImovelPrincipalAba != null && !idImovelPrincipalAba
.equalsIgnoreCase(""))) {
if (idImovelDocumentosCobranca != null
&& !idImovelDocumentosCobranca.equalsIgnoreCase("")) {
if (idImovelPrincipalAba != null
&& !idImovelPrincipalAba.equalsIgnoreCase("")) {
if (indicadorNovo != null && !indicadorNovo.equals("")) {
consultarImovelActionForm
.setIdImovelDocumentosCobranca(idImovelDocumentosCobranca);
} else if (!(idImovelDocumentosCobranca
.equals(idImovelPrincipalAba))) {
consultarImovelActionForm
.setIdImovelDocumentosCobranca(idImovelPrincipalAba);
idImovelDocumentosCobranca = idImovelPrincipalAba;
}
}
} else if (idImovelPrincipalAba != null
&& !idImovelPrincipalAba.equalsIgnoreCase("")) {
consultarImovelActionForm
.setIdImovelRegistroAtendimento(idImovelPrincipalAba);
idImovelDocumentosCobranca = idImovelPrincipalAba;
}
// Obt�m a inst�ncia da Fachada
Fachada fachada = Fachada.getInstancia();
Imovel imovel = null;
// verifica se o objeto imovel � o mesmo ja pesquisado, para n�o
// precisar pesquisar mas.
boolean imovelNovoPesquisado = false;
if (sessao.getAttribute("imovelDocumentosCobranca") != null) {
imovel = (Imovel) sessao
.getAttribute("imovelDocumentosCobranca");
if (!(imovel.getId().toString()
.equals(idImovelDocumentosCobranca.trim()))) {
imovel = fachada
.consultarImovelHistoricoFaturamento(new Integer(
idImovelDocumentosCobranca.trim()));
imovelNovoPesquisado = true;
}
} else {
imovel = fachada
.consultarImovelHistoricoFaturamento(new Integer(
idImovelDocumentosCobranca.trim()));
imovelNovoPesquisado = true;
}
if (imovel != null) {
sessao.setAttribute("imovelDocumentosCobranca", imovel);
sessao.setAttribute("idImovelPrincipalAba", imovel.getId()
.toString());
consultarImovelActionForm.setIdImovelDocumentosCobranca(imovel
.getId().toString());
if (imovel.getIndicadorExclusao().equals(ConstantesSistema.SIM)) {
httpServletRequest.setAttribute("imovelExcluido", true);
}
// caso o imovel pesquisado seja diferente do pesquisado
// anterior ou seja a primeira vez que se esteja pesquisando
if (imovelNovoPesquisado) {
// seta na tela a inscri��o do imovel
httpServletRequest.setAttribute(
"idImovelDocumentosCobrancaNaoEncontrado", null);
consultarImovelActionForm
.setMatriculaImovelDocumentosCobranca(fachada
.pesquisarInscricaoImovelExcluidoOuNao(new Integer(
idImovelDocumentosCobranca.trim())));
// seta a situa��o de agua
if (imovel.getLigacaoAguaSituacao() != null) {
consultarImovelActionForm
.setSituacaoAguaDocumentosCobranca(imovel
.getLigacaoAguaSituacao()
.getDescricao());
}
// seta a situa��o de esgoto
if (imovel.getLigacaoEsgotoSituacao() != null) {
consultarImovelActionForm
.setSituacaoEsgotoDocumentosCobranca(imovel
.getLigacaoEsgotoSituacao()
.getDescricao());
}
// 1� Passo - Pegar o total de registros atrav�s de um count
// da consulta que aparecer� na tela
// int totalRegistros = fachada
// .consultarQuantidadeImovelDocumentosCobranca(new
// Integer(idImovelDocumentosCobranca.trim()));
// 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 aparecer� na
// tela passando o numero de paginas
// da pesquisa que est� no request
Collection colecaoDocumentoCobranca = fachada
.consultarImovelDocumentosCobranca(new Integer(
idImovelDocumentosCobranca.trim()), 0);
/*
* if (colecaoDocumentoCobranca == null ||
* colecaoDocumentoCobranca.isEmpty()) {
* httpServletRequest.setAttribute(
* "idImovelDocumentosCobrancaNaoEncontrado", null);
*
* sessao.removeAttribute("imovelDocumentosCobranca");
* sessao.removeAttribute("colecaoDocumentoCobranca");
* sessao.removeAttribute("idImovelPrincipalAba");
* consultarImovelActionForm.setIdImovelDocumentosCobranca(null);
* consultarImovelActionForm.setMatriculaImovelDocumentosCobranca(null);
* consultarImovelActionForm.setSituacaoAguaDocumentosCobranca(null);
* consultarImovelActionForm.setSituacaoEsgotoDocumentosCobranca(null); //
* [FS0010] Nenhum registro encontrado throw new
* ActionServletException(
* "atencao.pesquisa.nenhumresultado", null, ""); }
*/
if (colecaoDocumentoCobranca != null
&& !colecaoDocumentoCobranca.isEmpty()) {
Iterator colecaoDocumentoCobrancaIterator = colecaoDocumentoCobranca
.iterator();
CobrancaDocumentoHelper cobrancaDocumentoHelper = null;
CobrancaDocumento cobrancaDocumento = null;
Collection colecaoCobrancaDocumentoHelper = new ArrayList();
while (colecaoDocumentoCobrancaIterator.hasNext()) {
cobrancaDocumento = (CobrancaDocumento) colecaoDocumentoCobrancaIterator
.next();
cobrancaDocumentoHelper = new CobrancaDocumentoHelper();
cobrancaDocumentoHelper
.setCobrancaDocumento(cobrancaDocumento);
Object[] dadosOrdemServico = fachada
.pesquisarDadosOrdemServicoDocumentoCobranca(cobrancaDocumento
.getId());
if (dadosOrdemServico != null) {
if (dadosOrdemServico[0] != null) {
cobrancaDocumentoHelper
.setIdOrdemServico((Integer) dadosOrdemServico[0]);
}
if (dadosOrdemServico[1] != null) {
Short situacaoOS = (Short) dadosOrdemServico[1];
if (situacaoOS
.equals(OrdemServico.SITUACAO_PENDENTE)) {
cobrancaDocumentoHelper
.setSituacaoOrdemServico(OrdemServico.SITUACAO_DESCRICAO_PENDENTE);
}
if (situacaoOS
.equals(OrdemServico.SITUACAO_ENCERRADO)) {
ObterDescricaoSituacaoOSHelper obterDescricaoSituacaoOSHelper = fachada.obterDescricaoSituacaoOS((Integer) dadosOrdemServico[0]);
cobrancaDocumentoHelper
.setSituacaoOrdemServico(obterDescricaoSituacaoOSHelper.getDescricaoSituacao());
}
if (situacaoOS
.equals(OrdemServico.SITUACAO_EXECUCAO_EM_ANDAMENTO)) {
cobrancaDocumentoHelper
.setSituacaoOrdemServico(OrdemServico.SITUACAO_DESC_ABREV_EXECUCAO_EM_ANDAMENTO);
}
if (situacaoOS
.equals(OrdemServico.SITUACAO_AGUARDANDO_LIBERACAO)) {
cobrancaDocumentoHelper
.setSituacaoOrdemServico(OrdemServico.SITUACAO_DESC_ABREV_AGUARDANDO_LIBERACAO);
}
}
}
Integer quantidade = fachada
.consultarQuantidadeImovelDocumentosItemCobranca(cobrancaDocumento
.getId());
cobrancaDocumentoHelper
.setQuantidadeItensCobrancaDocumento(quantidade);
colecaoCobrancaDocumentoHelper
.add(cobrancaDocumentoHelper);
}
//Track No. 619 : Ordenar por data de emiss�o
Collections.sort((List) colecaoCobrancaDocumentoHelper, new Comparator() {
public int compare(Object a, Object b) {
String data1 = ((CobrancaDocumentoHelper) a).getCobrancaDocumento().getEmissao().toString();
String data2 = ((CobrancaDocumentoHelper) b).getCobrancaDocumento().getEmissao().toString();
data1 = data1.substring(0, 4) + data1.substring(5, 7) + data1.substring(8, 10);
data2 = data2.substring(0, 4) + data2.substring(5, 7) + data2.substring(8, 10);
Integer dtEmissao1 = Integer.decode(data1);
Integer dtEmissao2 = Integer.decode(data2);
//String dtEmissao1 = ((CobrancaDocumentoHelper) a).getCobrancaDocumento().getEmissao().toString();
//String dtEmissao2 = ((CobrancaDocumentoHelper) b).getCobrancaDocumento().getEmissao().toString();
return dtEmissao2.compareTo(dtEmissao1);
}
});
sessao.setAttribute("colecaoDocumentoCobranca",
colecaoCobrancaDocumentoHelper);
}else{
sessao.removeAttribute("colecaoDocumentoCobranca");
}
}
} else {
httpServletRequest.setAttribute(
"idImovelDocumentosCobrancaNaoEncontrado", "true");
consultarImovelActionForm
.setMatriculaImovelDocumentosCobranca("IM�VEL INEXISTENTE");
// limpar os dados pesquisados
sessao.removeAttribute("imovelDocumentosCobranca");
sessao.removeAttribute("colecaoDocumentoCobranca");
sessao.removeAttribute("idImovelPrincipalAba");
consultarImovelActionForm.setIdImovelDadosComplementares(null);
consultarImovelActionForm.setIdImovelDadosCadastrais(null);
consultarImovelActionForm.setIdImovelAnaliseMedicaoConsumo(null);
consultarImovelActionForm.setIdImovelHistoricoFaturamento(null);
consultarImovelActionForm.setIdImovelDebitos(null);
consultarImovelActionForm.setIdImovelPagamentos(null);
consultarImovelActionForm.setIdImovelDevolucoesImovel(null);
consultarImovelActionForm.setIdImovelDocumentosCobranca(null);
consultarImovelActionForm.setIdImovelParcelamentosDebitos(null);
consultarImovelActionForm.setIdImovelRegistroAtendimento(null);
consultarImovelActionForm.setImovIdAnt(null);
consultarImovelActionForm.setSituacaoAguaDocumentosCobranca(null);
consultarImovelActionForm.setSituacaoEsgotoDocumentosCobranca(null);
}
} else {
consultarImovelActionForm
.setIdImovelDocumentosCobranca(idImovelDocumentosCobranca);
httpServletRequest.setAttribute(
"idImovelDocumentosCobrancaNaoEncontrado", null);
sessao.removeAttribute("imovelDocumentosCobranca");
sessao.removeAttribute("colecaoDocumentoCobranca");
sessao.removeAttribute("idImovelPrincipalAba");
consultarImovelActionForm
.setMatriculaImovelDocumentosCobranca(null);
consultarImovelActionForm.setSituacaoAguaDocumentosCobranca(null);
consultarImovelActionForm.setSituacaoEsgotoDocumentosCobranca(null);
}
return retorno;
}
}