package gcom.gui.arrecadacao; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import gcom.arrecadacao.pagamento.GuiaPagamento; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.localidade.Localidade; import gcom.cobranca.bean.ContaValoresHelper; import gcom.cobranca.bean.DebitoACobrarValoresHelper; import gcom.cobranca.bean.GuiaPagamentoValoresHelper; import gcom.cobranca.bean.ObterDebitoImovelOuClienteHelper; import gcom.cobranca.parcelamento.Parcelamento; import gcom.fachada.Fachada; import gcom.faturamento.conta.Conta; import gcom.faturamento.debito.DebitoACobrar; import gcom.faturamento.debito.DebitoTipo; import gcom.financeiro.FinanciamentoTipo; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.Util; 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; /** * [UC1214] Informar Acerto Documentos N�o Aceitos * * @author Mariana Victor * @date 23/08/2011 */ public class ExibirInformarAcertoDocumentosNaoAceitosDebitosAction extends GcomAction { /** * Description of the Method * * @param actionMapping * Description of the Parameter * @param actionForm * Description of the Parameter * @param httpServletRequest * Description of the Parameter * @param httpServletResponse * Description of the Parameter * @return Description of the Return Value */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { //seta o mapeamento de retorno para a p�gina da primeira aba ActionForward retorno = actionMapping.findForward("informarAcertoDocumentosNaoAceitosDebitos"); InformarAcertoDocumentosNaoAceitosActionForm form = (InformarAcertoDocumentosNaoAceitosActionForm) actionForm; //cria uma inst�ncia da fachada Fachada fachada = Fachada.getInstancia(); //cria uma inst�ncia da sess�o HttpSession sessao = httpServletRequest.getSession(false); String limparDadosAnteriores = httpServletRequest.getParameter("limparDadosAnteriores"); if(limparDadosAnteriores !=null && !limparDadosAnteriores.equals("")){ removerAtributosSessao(sessao, form); } if (httpServletRequest.getParameter("retornoPopup") == null || !httpServletRequest.getParameter("retornoPopup").trim().equalsIgnoreCase("SIM")) { // [FS0006] - Verificar exist�ncia da matr�cula do im�vel String codigoImovelDigitadoEnter = form.getIdImovel(); if (codigoImovelDigitadoEnter != null && !codigoImovelDigitadoEnter.trim().equalsIgnoreCase("")) { Imovel imovelEncontrado = fachada .pesquisarImovelDigitado(new Integer( codigoImovelDigitadoEnter)); if (imovelEncontrado != null) { form.setIdImovel(imovelEncontrado.getId().toString()); form.setDescricaoImovel(imovelEncontrado.getInscricaoFormatada()); httpServletRequest .setAttribute("idImovelNaoEncontrado", "true"); this.carregarDebitosImovel(sessao, imovelEncontrado.getId().toString(), form); form.setTotalDebitoSelecionado(Util.formatarMoedaReal(BigDecimal.ZERO)); } else { // Caso a matr�cula do im�vel (IMOV_ID) informada n�o exista na tabela IMOVEL this.removerAtributosSessao(sessao, form); form.setTotalDebitoSelecionado(Util.formatarMoedaReal(BigDecimal.ZERO)); form.setIdImovel(""); form.setDescricaoImovel("Matr�cula inexistente"); httpServletRequest .setAttribute("idImovelNaoEncontrado", "exception"); } } } else if (sessao.getAttribute("valorAdicionado") != null && !sessao.getAttribute("valorAdicionado").toString().trim().equals("")) { String totalDebitosSessao = "0,00"; if(form.getTotalDebitos() != null && !form.getTotalDebitos().trim().equals("")) { totalDebitosSessao = form.getTotalDebitos(); } BigDecimal totalDebitos = (BigDecimal) sessao.getAttribute("valorAdicionado"); totalDebitos = totalDebitos.add(Util.formatarMoedaRealparaBigDecimal(totalDebitosSessao)); form.setTotalDebitos(Util.formatarMoedaReal(totalDebitos)); } //retorna o mapeamento contido na vari�vel retorno return retorno; } /** * [SB0001] ? Apresenta D�bitos do Im�vel. * */ public void carregarDebitosImovel(HttpSession sessao, String idImovel, InformarAcertoDocumentosNaoAceitosActionForm form) { Fachada fachada = Fachada.getInstancia(); ArrayList<ObterDebitoImovelOuClienteHelper> colecaoClientesDebitosImoveis = new ArrayList<ObterDebitoImovelOuClienteHelper>(); String dataVencimentoInicial = "01/01/0001"; String dataVencimentoFinal = "31/12/9999"; String referenciaInicial = "01/0001"; String referenciaFinal = "12/9999"; SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy"); String mesInicial = referenciaInicial.substring(0, 2); String anoInicial = referenciaInicial.substring(3, referenciaInicial.length()); String anoMesInicial = anoInicial + mesInicial; String mesFinal = referenciaFinal.substring(0, 2); String anoFinal = referenciaFinal.substring(3, referenciaFinal.length()); String anoMesFinal = anoFinal + mesFinal; Date dataVencimentoDebitoI; Date dataVencimentoDebitoF; try { dataVencimentoDebitoI = formatoData.parse(dataVencimentoInicial); } catch (ParseException ex) { dataVencimentoDebitoI = null; } try { dataVencimentoDebitoF = formatoData.parse(dataVencimentoFinal); } catch (ParseException ex) { dataVencimentoDebitoF = null; } // seta valores constantes para chamar o metodo que consulta debitos do imovel Integer indicadorDebito = new Integer(1); Integer indicadorPagamento = new Integer(1); Integer indicadorContaRevisao = new Integer(1); Integer indicadorDebitoACobrar = new Integer(1); Integer indicadorCredito = new Integer(2); Integer indicadorNotas = new Integer(2); Integer indicadorGuias = new Integer(1); Integer indicadorAtualizar = new Integer(1); ObterDebitoImovelOuClienteHelper colecao = fachada.obterDebitoImovelOuCliente( indicadorDebito.intValue(), // 1.1. Indicador de d�bito do im�vel ou cliente (1-im�vel); idImovel, // 1.2. Matr�cula do Im�vel; null, // 1.3. C�digo do cliente com o valor nulo; null, // 1.1. Tipo de rela��o do cliente com o im�vel com o valor nulo; anoMesInicial, // 1.2. Per�odo de refer�ncia do d�bito (refer�ncia inicial = 000101 e refer�ncia final = 999912); anoMesFinal, dataVencimentoDebitoI, // 1.3. Per�odo de vencimento do d�bito dataVencimentoDebitoF, indicadorPagamento.intValue(), // 1.4. Indicador de pagamento com o valor 2; indicadorContaRevisao.intValue(), // 1.5. Indicador de conta em revis�o com o valor 1; indicadorDebitoACobrar.intValue(), // 1.6. Indicador de d�bito a cobrar com o valor 1; indicadorCredito.intValue(), // 1.7. Indicador de cr�dito a realizar com o valor 2; indicadorNotas.intValue(), // 1.8. Indicador de notas promiss�rias com o valor 2; indicadorGuias.intValue(), // 1.9. Indicador de guias de pagamento com o valor 1; indicadorAtualizar.intValue(), // 1.10. Indicador de atualizar d�bito com o valor 1; null); colecaoClientesDebitosImoveis.add(colecao); /////////////////////////////////////////CARREGA VALORES DEFAULT PARA TODAS VARIAVEIS //////////////////////////////////////////// //Criando uma lista para adicao de todas colecoesContaValores para todos Clientes (Caso selecione Cliente Superior) Collection<ContaValoresHelper> colecaoContaValoresTotal = new ArrayList<ContaValoresHelper>(); //Criando uma lista para adicao de todas colecaoDebitoACobrar para todos Clientes (Caso selecione Cliente Superior) Collection<DebitoACobrarValoresHelper> colecaoDebitoACobrarTotal = new ArrayList<DebitoACobrarValoresHelper>(); //Criando uma lista para adicao de todas colecaoGuiaPagamentoValores para todos Clientes (Caso selecione Cliente Superior) Collection<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValoresTotal = new ArrayList<GuiaPagamentoValoresHelper>(); ContaValoresHelper dadosConta = null; BigDecimal valorConta = new BigDecimal("0.00"); BigDecimal valorAtualizacaoMonetaria = new BigDecimal("0.00"); BigDecimal valorJurosMora = new BigDecimal("0.00"); BigDecimal valorMulta = new BigDecimal("0.00"); BigDecimal valorDebitoACobrar = new BigDecimal("0.00"); BigDecimal valorDebitoACobrarSemJurosParcelamento = new BigDecimal("0.00"); DebitoACobrar dadosDebito = null; BigDecimal valorRestanteACobrar = new BigDecimal("0.00"); BigDecimal valorTotalRestanteParcelamentosACobrarCurtoPrazo = new BigDecimal("0.00"); BigDecimal valorTotalRestanteParcelamentosACobrarLongoPrazo = new BigDecimal("0.00"); BigDecimal valorTotalDebito = new BigDecimal("0.00"); int indiceCurtoPrazo = 0; int indiceLongoPrazo = 1; BigDecimal valorGuiaPagamento = new BigDecimal("0.00"); GuiaPagamentoValoresHelper dadosGuiaPagamentoValoresHelper = null; /////////////////////////////////////////FIM - CARREGA VALORES DEFAULT PARA TODAS VARIAVEIS //////////////////////////////////////////// for (ObterDebitoImovelOuClienteHelper colecaoDebitoImovel : colecaoClientesDebitosImoveis) { //////////////////////ITERACAO NA COLECAO DE CONTAVALORES//////////////////////////////////// Collection<ContaValoresHelper> colecaoContaValores = new ArrayList<ContaValoresHelper>(); if(colecaoDebitoImovel.getColecaoContasValores() != null){ colecaoContaValores.addAll(colecaoDebitoImovel.getColecaoContasValores()); } if (!colecaoContaValores.isEmpty()) { java.util.Iterator<ContaValoresHelper> colecaoContaValoresIterator = colecaoContaValores.iterator(); // percorre a colecao de conta somando o valor para obter um valor total while (colecaoContaValoresIterator.hasNext()) { dadosConta = (ContaValoresHelper) colecaoContaValoresIterator.next(); Integer idLocalidade = fachada.pesquisarLocalidadeConta( dadosConta.getConta().getId()); Localidade localidade = new Localidade(); localidade.setId(idLocalidade); Conta conta = dadosConta.getConta(); conta.setLocalidade(localidade); valorConta = valorConta.add(dadosConta.getConta().getValorTotal()); if (dadosConta.getValorAtualizacaoMonetaria() != null && !dadosConta.getValorAtualizacaoMonetaria().equals("")) { valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(dadosConta.getValorAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } if (dadosConta.getValorJurosMora() != null && !dadosConta.getValorJurosMora().equals("")) { valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorJurosMora = valorJurosMora.add(dadosConta.getValorJurosMora().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } if (dadosConta.getValorMulta() != null && !dadosConta.getValorMulta().equals("")) { valorMulta.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorMulta = valorMulta.add(dadosConta.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } // atribui o valor 2 (um) ao indicador de d�bito pago para cada d�bito dadosConta.setIndicadorDebitoPago(ConstantesSistema.NAO); colecaoContaValoresTotal.add(dadosConta); } } valorTotalDebito = valorTotalDebito.add(valorConta); //////////////////////FIM ITERACAO NA COLECAO DE CONTAVALORES//////////////////////////////////// //////////////////////ITERACAO NA COLECAO DE DEBITOACOBRAR//////////////////////////////////// Collection<DebitoACobrar> colecaoDebitoACobrar = new ArrayList<DebitoACobrar>(); if(colecaoDebitoImovel.getColecaoDebitoACobrar() != null){ colecaoDebitoACobrar.addAll(colecaoDebitoImovel.getColecaoDebitoACobrar()); } if (!colecaoDebitoACobrar.isEmpty()) { java.util.Iterator<DebitoACobrar> colecaoDebitoACobrarIterator = colecaoDebitoACobrar.iterator(); // percorre a colecao de debito a cobrar somando o valor para obter um valor total while (colecaoDebitoACobrarIterator.hasNext()) { dadosDebito = (DebitoACobrar) colecaoDebitoACobrarIterator.next(); Integer idLocalidade = fachada.pesquisarLocalidadeDebitoACobrar( dadosDebito.getId()); Localidade localidade = new Localidade(); localidade.setId(idLocalidade); dadosDebito.setLocalidade(localidade); valorDebitoACobrar = valorDebitoACobrar.add(dadosDebito.getValorTotalComBonus()); if (dadosDebito.getDebitoTipo() != null && !dadosDebito.getDebitoTipo().getId().equals(DebitoTipo.JUROS_SOBRE_PARCELAMENTO)){ valorDebitoACobrarSemJurosParcelamento = valorDebitoACobrarSemJurosParcelamento.add(dadosDebito.getValorTotalComBonus()); } //Debitos A Cobrar - Parcelamento if (dadosDebito.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_AGUA) || dadosDebito.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_ESGOTO) || dadosDebito.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_SERVICO)) { // [SB0001] Obter Valores de Curto e Longo Prazo valorRestanteACobrar = dadosDebito.getValorTotalComBonus(); BigDecimal[] valoresDeCurtoELongoPrazo = fachada.obterValorCurtoELongoPrazo( dadosDebito.getNumeroPrestacaoDebito(), dadosDebito.getNumeroPrestacaoCobradasMaisBonus(), valorRestanteACobrar); valorTotalRestanteParcelamentosACobrarCurtoPrazo.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteParcelamentosACobrarCurtoPrazo = valorTotalRestanteParcelamentosACobrarCurtoPrazo.add(valoresDeCurtoELongoPrazo[indiceCurtoPrazo]); valorTotalRestanteParcelamentosACobrarLongoPrazo.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteParcelamentosACobrarLongoPrazo = valorTotalRestanteParcelamentosACobrarLongoPrazo.add(valoresDeCurtoELongoPrazo[indiceLongoPrazo]); } // atribui o valor 2 (um) ao indicador de d�bito pago para cada d�bito DebitoACobrarValoresHelper helper = new DebitoACobrarValoresHelper(); helper.setDebitoACobrar(dadosDebito); helper.setIndicadorDebitoPago(ConstantesSistema.NAO); colecaoDebitoACobrarTotal.add(helper); } } valorTotalDebito = valorTotalDebito.add(valorDebitoACobrar); //////////////////////FIM ITERACAO NA COLECAO DE DEBITOACOBRAR//////////////////////////////////// //////////////////////ITERACAO NA COLECAO DE GUIASPAGAMENTOVALORES//////////////////////////////////// Collection<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValores = new ArrayList<GuiaPagamentoValoresHelper>(); if(colecaoDebitoImovel.getColecaoGuiasPagamentoValores() != null){ colecaoGuiaPagamentoValores.addAll(colecaoDebitoImovel.getColecaoGuiasPagamentoValores()); } if (!colecaoGuiaPagamentoValores.isEmpty()) { java.util.Iterator<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValoresHelperIterator = colecaoGuiaPagamentoValores.iterator(); // percorre a colecao de guia de pagamento somando o valor para obter um valor total while (colecaoGuiaPagamentoValoresHelperIterator.hasNext()) { dadosGuiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) colecaoGuiaPagamentoValoresHelperIterator.next(); Integer idLocalidade = fachada.pesquisarLocalidadeGuiaPagamento( dadosGuiaPagamentoValoresHelper.getGuiaPagamento().getId()); Localidade localidade = new Localidade(); localidade.setId(idLocalidade); GuiaPagamento guiaPagamento = dadosGuiaPagamentoValoresHelper.getGuiaPagamento(); guiaPagamento.setLocalidade(localidade); valorGuiaPagamento = valorGuiaPagamento.add(dadosGuiaPagamentoValoresHelper.getGuiaPagamento().getValorDebito()); if (dadosGuiaPagamentoValoresHelper.getValorAtualizacaoMonetaria() != null && !dadosGuiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(dadosGuiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } if (dadosGuiaPagamentoValoresHelper.getValorJurosMora() != null && !dadosGuiaPagamentoValoresHelper.getValorJurosMora().equals("")) { valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorJurosMora = valorJurosMora.add(dadosGuiaPagamentoValoresHelper.getValorJurosMora().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } if (dadosGuiaPagamentoValoresHelper.getValorMulta() != null && !dadosGuiaPagamentoValoresHelper.getValorMulta().equals("")) { valorMulta.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO); valorMulta = valorMulta.add(dadosGuiaPagamentoValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); } // atribui o valor 2 (um) ao indicador de d�bito pago para cada d�bito dadosGuiaPagamentoValoresHelper.setIndicadorDebitoPago(ConstantesSistema.NAO); colecaoGuiaPagamentoValoresTotal.add(dadosGuiaPagamentoValoresHelper); } } valorTotalDebito = valorTotalDebito.add(valorGuiaPagamento); //////////////////////FIM ITERACAO NA COLECAO DE GUIASPAGAMENTOVALORES//////////////////////////////////// } if (colecaoContaValoresTotal.isEmpty() && colecaoDebitoACobrarTotal.isEmpty() && colecaoGuiaPagamentoValoresTotal.isEmpty()) { this.removerAtributosSessao(sessao, form); } else { // Manda a colecao pelo request sessao.setAttribute("colecaoContaValores",colecaoContaValoresTotal); // Manda a colecao e os valores total de conta pelo request sessao.setAttribute("colecaoDebitoACobrar",colecaoDebitoACobrarTotal); sessao.setAttribute("valorConta", Util.formatarMoedaReal(valorConta)); // Manda a colecao e o valor total de DebitoACobrar pelo request sessao.setAttribute("colecaoDebitoACobrar",colecaoDebitoACobrarTotal); sessao.setAttribute("valorDebitoACobrar", Util.formatarMoedaReal(valorDebitoACobrar)); // Manda a colecao e o valor total de GuiaPagamento pelo request sessao.setAttribute("colecaoGuiaPagamentoValores",colecaoGuiaPagamentoValoresTotal); sessao.setAttribute("valorGuiaPagamento", Util.formatarMoedaReal(valorGuiaPagamento)); // 6. O sistema exibe ao final da tela o valor total dos d�bitos form.setTotalDebitos(Util.formatarMoedaReal(valorTotalDebito)); } } public void removerAtributosSessao(HttpSession sessao, InformarAcertoDocumentosNaoAceitosActionForm form) { sessao.removeAttribute("colecaoContaValores"); sessao.removeAttribute("valorConta"); sessao.removeAttribute("colecaoDebitoACobrar"); sessao.removeAttribute("valorDebitoACobrar"); sessao.removeAttribute("colecaoCreditoARealizar"); sessao.removeAttribute("valorCreditoARealizar"); sessao.removeAttribute("valorCreditoARealizarSemDescontosParcelamento"); sessao.removeAttribute("colecaoGuiaPagamentoValores"); sessao.removeAttribute("valorGuiaPagamento"); sessao.removeAttribute("valorTotalDebito"); form.setTotalDebitos("0,00"); } }