package gcom.gui.cobranca;
import gcom.arrecadacao.pagamento.FiltroGuiaPagamento;
import gcom.arrecadacao.pagamento.GuiaPagamento;
import gcom.cadastro.cliente.ClienteImovel;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.FiltroClienteImovel;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.cobranca.parcelamento.FiltroParcelamento;
import gcom.cobranca.parcelamento.FiltroParcelamentoMotivoDesfazer;
import gcom.cobranca.parcelamento.FiltroParcelamentoPagamentoCartaoCredito;
import gcom.cobranca.parcelamento.Parcelamento;
import gcom.cobranca.parcelamento.ParcelamentoMotivoDesfazer;
import gcom.cobranca.parcelamento.ParcelamentoPagamentoCartaoCredito;
import gcom.cobranca.parcelamento.ParcelamentoSituacao;
import gcom.fachada.Fachada;
import gcom.faturamento.conta.Conta;
import gcom.faturamento.conta.FiltroConta;
import gcom.faturamento.debito.DebitoACobrar;
import gcom.faturamento.debito.DebitoCreditoSituacao;
import gcom.faturamento.debito.FiltroDebitoACobrar;
import gcom.gui.GcomAction;
import gcom.util.ControladorException;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
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;
/**
* < <Descri��o da Classe>>
*
* @author Administrador
*/
public class ExibirConsultarParcelamentoDebitoAction extends
GcomAction {
/**
* < <Descri��o do m�todo>>
*
* @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) {
// Seta a a��o de retorno
ActionForward retorno = actionMapping
.findForward("consultarParcelamentoDebito");
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
ParcelamentoDebitoActionForm parcelamentoDebitoActionForm = (ParcelamentoDebitoActionForm) actionForm;
// Obt�m a facahda
Fachada fachada = Fachada.getInstancia();
Collection<Integer> idsContaEP = new ArrayList<Integer>();
// Pega os codigos que o usuario digitou para a pesquisa direta de imovel
String codigoImovel = httpServletRequest.getParameter("codigoImovel");
String codigoParcelamento = httpServletRequest.getParameter("codigoParcelamento");
sessao.setAttribute("idParcelamento", codigoParcelamento);
if (codigoImovel != null && !codigoImovel.trim().equals("")) {
//Alterado por Raphael Rossiter em 24/01/2007
// Pesquisa o imovel na base
FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.IMOVEL_ID, codigoImovel));
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.CLIENTE_RELACAO_TIPO_ID, ClienteRelacaoTipo.USUARIO));
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.setorComercial.municipio.unidadeFederacao");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.logradouroBairro.bairro");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.logradouroCep.cep");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.quadra");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.imovelPerfil");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.ligacaoAguaSituacao");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.ligacaoEsgotoSituacao");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente.clienteTipo");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("clienteRelacaoTipo");
Collection<ClienteImovel> imovelPesquisado = fachada.pesquisar(
filtroClienteImovel, ClienteImovel.class.getName());
// Se nenhum imovel for encontrado a mensagem � enviada para a p�gina
if (imovelPesquisado != null && imovelPesquisado.isEmpty()) {
httpServletRequest.setAttribute("enderecoFormatado",
"Matr�cula Inexistente".toUpperCase());
parcelamentoDebitoActionForm.setInscricao("");
parcelamentoDebitoActionForm.setNomeCliente("");
parcelamentoDebitoActionForm.setCpfCnpj("");
parcelamentoDebitoActionForm.setSituacaoAgua("");
parcelamentoDebitoActionForm.setSituacaoEsgoto("");
parcelamentoDebitoActionForm.setImovelPerfil("");
}
// obtem o imovel pesquisado
if (imovelPesquisado != null && !imovelPesquisado.isEmpty()) {
ClienteImovel dadosImovel = (ClienteImovel) ((List) imovelPesquisado).get(0);
//O endere�o foi encontrado
if (dadosImovel.getImovel().getId() != null)
{
parcelamentoDebitoActionForm.setCodigoImovel(""
+ dadosImovel.getImovel().getId());
}
if (dadosImovel.getImovel().getInscricaoFormatada() != null)
{
parcelamentoDebitoActionForm.setInscricao(""
+ dadosImovel.getImovel().getInscricaoFormatada());
}
if (dadosImovel.getImovel().getLigacaoAguaSituacao() != null)
{
parcelamentoDebitoActionForm.setSituacaoAgua(""
+ dadosImovel.getImovel().getLigacaoAguaSituacao().getDescricao());
}
if (dadosImovel.getImovel().getLigacaoEsgotoSituacao() != null)
{
parcelamentoDebitoActionForm.setSituacaoEsgoto(""
+ dadosImovel.getImovel().getLigacaoEsgotoSituacao().getDescricao());
}
if (dadosImovel.getCliente().getNome() != null)
{
parcelamentoDebitoActionForm.setNomeCliente(""
+ dadosImovel.getCliente().getNome());
}
if (dadosImovel.getImovel().getImovelPerfil() != null)
{
parcelamentoDebitoActionForm.setImovelPerfil(""
+ dadosImovel.getImovel().getImovelPerfil().getDescricao());
}
if (dadosImovel.getCliente().getClienteTipo().getIndicadorPessoaFisicaJuridica() == 1 ){
if (dadosImovel.getCliente().getCpfFormatado() != null)
{
parcelamentoDebitoActionForm.setCpfCnpj(""
+ dadosImovel.getCliente().getCpfFormatado());
}
}
else
{
if (dadosImovel.getCliente().getCnpjFormatado() != null)
{
parcelamentoDebitoActionForm.setCpfCnpj(""
+ dadosImovel.getCliente().getCnpjFormatado());
}
}
if (dadosImovel.getImovel().getNumeroParcelamento() != null)
{
parcelamentoDebitoActionForm.setParcelamento(""
+ dadosImovel.getImovel().getNumeroParcelamento());
}
if (dadosImovel.getImovel().getNumeroReparcelamento() != null)
{
parcelamentoDebitoActionForm.setReparcelamento(""
+ dadosImovel.getImovel().getNumeroReparcelamento());
}
if (dadosImovel.getImovel().getNumeroReparcelamentoConsecutivos() != null)
{
parcelamentoDebitoActionForm.setReparcelamentoConsecutivo(""
+ dadosImovel.getImovel().getNumeroReparcelamentoConsecutivos());
}
// Manda a colecao pelo request
httpServletRequest.setAttribute("imovelPesquisado",
imovelPesquisado);
String enderecoFormatado = "";
try {
enderecoFormatado = fachada.pesquisarEnderecoFormatado(new Integer(codigoImovel));
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (ControladorException e) {
e.printStackTrace();
}
httpServletRequest.setAttribute("enderecoFormatado",enderecoFormatado);
}
FiltroParcelamento filtroParcelamento = new FiltroParcelamento();
filtroParcelamento.adicionarParametro(new ParametroSimples(
FiltroParcelamento.ID, codigoParcelamento));
filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("parcelamentoSituacao");
filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("usuario");
filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("usuarioDesfez");
filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("funcionario");
filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("cobrancaForma");
filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("cliente");
Collection<Parcelamento> colecaoParcelamento = fachada.pesquisar(filtroParcelamento, Parcelamento.class.getName() );
SistemaParametro sistemaParametro = null;
if (colecaoParcelamento != null && !colecaoParcelamento.isEmpty())
{
httpServletRequest.setAttribute("colecaoParcelamento", colecaoParcelamento);
Iterator iteratorParcelamento = colecaoParcelamento.iterator();
while (iteratorParcelamento.hasNext()) {
Parcelamento parcelamento = (Parcelamento) iteratorParcelamento.next();
if (parcelamento.getCliente()!= null && parcelamento.getCliente().getNome() != null){
parcelamentoDebitoActionForm.setNomeClienteResponsavel(parcelamento.getCliente().getNome());
}
if(parcelamento.getParcelamentoSituacao().getId().intValue() == ParcelamentoSituacao.DESFEITO.intValue()){
parcelamentoDebitoActionForm.setDataParcelamentoDesfeito(Util.formatarDataComHora(parcelamento.getUltimaAlteracao()));
}else{
parcelamentoDebitoActionForm.setDataParcelamentoDesfeito("");
}
// Retorna o �nico objeto da tabela sistemaParametro
sistemaParametro = fachada.pesquisarParametrosDoSistema();
//pesquisa para descobrir o numero de presta��es cobradas
FiltroDebitoACobrar filtroDebitoACobrar = new FiltroDebitoACobrar();
filtroDebitoACobrar.adicionarParametro(new ParametroSimples(
FiltroDebitoACobrar.PARCELAMENTO_ID, codigoParcelamento));
Collection<DebitoACobrar> colecaoDebitoACobrar = fachada.pesquisar(filtroDebitoACobrar, DebitoACobrar.class.getName() );
short numeroPrestacaoCobradas = 0;
if (colecaoDebitoACobrar != null && !colecaoDebitoACobrar.isEmpty()){
numeroPrestacaoCobradas = colecaoDebitoACobrar.iterator().next().getNumeroPrestacaoCobradas();
}
boolean itensHistoricoParcelamento = fachada.verificarItensParcelamentoNoHistorico(new Integer(codigoImovel),new Integer(codigoParcelamento) );
Integer anoMesEfetivacaoParcelamento = Util.getAnoMesComoInteger(parcelamento.getParcelamento());
if((anoMesEfetivacaoParcelamento.compareTo(new Integer(sistemaParametro.getAnoMesArrecadacao())) >= 0)
&& parcelamento.getParcelamentoSituacao().getId().intValue() == ParcelamentoSituacao.NORMAL.intValue()
&& numeroPrestacaoCobradas == 0 && !itensHistoricoParcelamento) {
FiltroParcelamentoMotivoDesfazer filtroParcelamentoMotivoDesfazer = new FiltroParcelamentoMotivoDesfazer();
Collection<ParcelamentoMotivoDesfazer> collectionParcelamentoMotivoDesfazer = fachada.pesquisar(filtroParcelamentoMotivoDesfazer, ParcelamentoMotivoDesfazer.class.getName() );
httpServletRequest.setAttribute("collectionParcelamentoMotivoDesfazer", collectionParcelamentoMotivoDesfazer);
// Verifica se a entrada do parcelamento tenha sido atrav�s de contas marcadas como EP
FiltroConta filtroConta = new FiltroConta();
filtroConta.adicionarParametro(new ParametroSimples(
FiltroConta.IMOVEL_ID, codigoImovel));
filtroConta.adicionarParametro(new ParametroSimples(
FiltroConta.PARCELAMENTO_ID,codigoParcelamento));
Collection colecaoConta2 = fachada.pesquisar(filtroConta, Conta.class.getName());
if (colecaoConta2 != null && !colecaoConta2.isEmpty()) {
Iterator iteratorConta = colecaoConta2.iterator();
while (iteratorConta.hasNext()) {
Conta conta = null;
conta = (Conta) iteratorConta.next();
if ((conta.getDebitoCreditoSituacaoAtual().getId()
.intValue() == DebitoCreditoSituacao.NORMAL.intValue())
|| (conta.getDebitoCreditoSituacaoAtual().getId()
.intValue() == DebitoCreditoSituacao.RETIFICADA.intValue())
|| (conta.getDebitoCreditoSituacaoAtual().getId()
.intValue() == DebitoCreditoSituacao.INCLUIDA.intValue())) {
idsContaEP.add(conta.getId());
}
}
}
}
}
}
}
FiltroGuiaPagamento filtroGuiaPagamento = new FiltroGuiaPagamento();
filtroGuiaPagamento.adicionarParametro(new ParametroSimples
(FiltroGuiaPagamento.PARCELAMENTO_ID,new Integer(codigoParcelamento)));
Collection collectionGuiaPagamento = fachada.pesquisar(filtroGuiaPagamento, GuiaPagamento.class.getName());
if (collectionGuiaPagamento != null
&& !collectionGuiaPagamento.isEmpty()){
sessao.setAttribute("btImprimirGuiaPagamentoEntrada" , 1);
}else{
sessao.removeAttribute("btImprimirGuiaPagamentoEntrada");
}
sessao.setAttribute("idsContaEP",idsContaEP);
//UC-0252(Altera��o 24/07/09 Rosana Carvalho) Author:Hugo Amorim
FiltroParcelamentoPagamentoCartaoCredito filtroParcelamento = new FiltroParcelamentoPagamentoCartaoCredito();
filtroParcelamento.adicionarParametro(new ParametroSimples(
FiltroParcelamentoPagamentoCartaoCredito.ID_PARCELAMENTO,codigoParcelamento));
filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("usuarioConfirmacao");
filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("cliente");
filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("arrecadador");
Collection<ParcelamentoPagamentoCartaoCredito> colecaoParcelamento = fachada.pesquisar(filtroParcelamento, ParcelamentoPagamentoCartaoCredito.class.getName() );
ParcelamentoPagamentoCartaoCredito parc = (ParcelamentoPagamentoCartaoCredito) Util.retonarObjetoDeColecao(colecaoParcelamento);
if(parc!=null){
if(parc.getNumeroCartaoCredito()!=null && !parc.getNumeroCartaoCredito().equals("")){
sessao.setAttribute("parcelamentoCartaCredito",codigoParcelamento);
sessao.setAttribute("buttonCartaoCredito","true");
}
}
/*
* Caso o parcelamento tenha dados de cart�o de cr�dito n�o confirmados pela operadora (PACC_ICONFIRMADOOPERADORA da tabela
* PARCELAMENTO_PAGAMENTO_CARTAO_CREDITO com PARC_ID = PARC_ID do parcelamento selecionado com valor igual 2 (N�o))
*/
if (codigoParcelamento != null && !codigoParcelamento.equals("")){
boolean habilitarBotaoDesfazer = fachada.parcelamentoPagamentoCartaoCreditoJaConfirmado(Integer.valueOf(codigoParcelamento));
if (!habilitarBotaoDesfazer){
httpServletRequest.setAttribute("habilitarBotaoDesfazer", "SIM");
}
}
return retorno;
}
}