package gcom.gui.faturamento.conta;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.imovel.Imovel;
import gcom.fachada.Fachada;
import gcom.faturamento.conta.Conta;
import gcom.faturamento.conta.FiltroConta;
import gcom.faturamento.debito.DebitoCreditoSituacao;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
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;
/**
* Action respons�vel pela exibi��o dos dados na tela do
* desfazer cancelamento e/ou retifica��o da conta.
*
* [UC0327] Desfazer Cancelamento e/ou Retifica��o de Conta
*
* @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 class ExibirManterDesfazerCancelamentoRetificacaoContaAction extends
GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("desfazerCancelamentoRetificacaoConta");
DesfazerCancelamentoRetificacaoContaActionForm desfazerCancelamentoRetificacaoContaActionForm = (DesfazerCancelamentoRetificacaoContaActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
// -------Parte que trata do c�digo quando o usu�rio tecla enter
// Matr�cula do Im�vel
String codigoDigitadoImovelEnter = (String) desfazerCancelamentoRetificacaoContaActionForm
.getIdImovel();
// Se o c�digo do im�vel tiver sido digitado seta no form os dados do im�vel
if (codigoDigitadoImovelEnter != null
&& !codigoDigitadoImovelEnter.trim().equals("")
&& Integer.parseInt(codigoDigitadoImovelEnter) > 0) {
Imovel imovel = fachada.pesquisarImovelRegistroAtendimento(new Integer(codigoDigitadoImovelEnter));
if (imovel != null) {
// O imovel foi encontrado
desfazerCancelamentoRetificacaoContaActionForm.setIdImovel(""
+ imovel.getId());
desfazerCancelamentoRetificacaoContaActionForm
.setInscricaoImovel(imovel.getInscricaoFormatada());
desfazerCancelamentoRetificacaoContaActionForm
.setSituacaoAgua(imovel.getLigacaoAguaSituacao()
.getDescricao());
desfazerCancelamentoRetificacaoContaActionForm
.setSituacaoEsgoto(imovel.getLigacaoEsgotoSituacao()
.getDescricao());
Cliente cliente = fachada.pesquisarClienteUsuarioImovel(new Integer(codigoDigitadoImovelEnter));
// Manda os dados do cliente para a p�gina
if (cliente != null) {
desfazerCancelamentoRetificacaoContaActionForm.setNomeClienteUsuario(cliente
.getNome());
}
Collection contas = fachada.obterContasImovelManter(imovel, DebitoCreditoSituacao.CANCELADA,
DebitoCreditoSituacao.CANCELADA, DebitoCreditoSituacao.CANCELADA_POR_RETIFICACAO);
/**
* S� sera enviada contas que ta na situa��o retificada ou cancelada
* Alterado por Arthur Carvalho
* Analista Eduardo Rosa
* Data:14/05/2010
*/
Iterator iteratorContas = contas.iterator();
Collection colecaoContas = new ArrayList();
while ( iteratorContas.hasNext() ) {
Conta conta = (Conta) iteratorContas.next();
//RETIFICADA
if ( conta.getDebitoCreditoSituacaoAtual().getId().equals(
DebitoCreditoSituacao.CANCELADA_POR_RETIFICACAO ) ) {
FiltroConta filtroConta = new FiltroConta();
filtroConta.adicionarParametro( new ParametroSimples( FiltroConta.REFERENCIA,
conta.getReferencia()));
filtroConta.adicionarParametro( new ParametroSimples( FiltroConta.IMOVEL_ID,
conta.getImovel().getId()));
filtroConta.adicionarParametro( new ParametroSimples( FiltroConta.DEBITO_CREDITO_SITUACAO_ATUAL,
DebitoCreditoSituacao.RETIFICADA ));
Collection colecaoConta = fachada.pesquisar(filtroConta, Conta.class.getName() ) ;
if( colecaoConta != null && !colecaoConta.isEmpty() ) {
colecaoContas.add(conta);
}
//CANCELADA
} else if ( conta.getDebitoCreditoSituacaoAtual().getId().equals(
DebitoCreditoSituacao.CANCELADA ) ) {
FiltroConta filtroConta = new FiltroConta();
filtroConta.adicionarParametro( new ParametroSimples( FiltroConta.REFERENCIA,
conta.getReferencia()));
filtroConta.adicionarParametro( new ParametroSimples( FiltroConta.IMOVEL_ID,
conta.getImovel().getId()));
filtroConta.adicionarParametro( new ParametroSimples( FiltroConta.DEBITO_CREDITO_SITUACAO_ATUAL,
DebitoCreditoSituacao.CANCELADA ));
Collection colecaoConta = fachada.pesquisar(filtroConta, Conta.class.getName() ) ;
if( colecaoConta != null && !colecaoConta.isEmpty() ) {
colecaoContas.add(conta);
}
}
}
// Manda os dados da conta para a p�gina
if (colecaoContas != null && !colecaoContas.isEmpty()) {
sessao.setAttribute("contas", colecaoContas);
}
else
{
throw new ActionServletException(
"atencao.pesquisa.nenhuma.conta_cancelada_retificada_imovel", null, ""
+ codigoDigitadoImovelEnter);
}
} else {
httpServletRequest.setAttribute("corImovel", "exception");
desfazerCancelamentoRetificacaoContaActionForm
.setInscricaoImovel(ConstantesSistema.CODIGO_IMOVEL_INEXISTENTE);
desfazerCancelamentoRetificacaoContaActionForm
.setIdImovel("");
desfazerCancelamentoRetificacaoContaActionForm
.setNomeClienteUsuario("");
desfazerCancelamentoRetificacaoContaActionForm
.setSituacaoAgua("");
desfazerCancelamentoRetificacaoContaActionForm
.setSituacaoEsgoto("");
sessao.removeAttribute("contas");
}
}
return retorno;
}
}