package gcom.gui.cobranca.cobrancaporresultado; import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao; import gcom.cadastro.empresa.EmpresaCobrancaFaixa; import gcom.cadastro.empresa.FiltroEmpresaCobrancaFaixa; import gcom.cadastro.imovel.ImovelPerfil; import gcom.cadastro.localidade.GerenciaRegional; import gcom.cadastro.localidade.UnidadeNegocio; import gcom.fachada.Fachada; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.Date; 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; /** * [UC1167] Consultar Comandos de Cobran�a por Empresa * * @author Mariana Victor * @since 05/05/2011 */ public class ExibirConsultarComandosContasCobrancaEmpresaPopupAction extends GcomAction { /** * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ @SuppressWarnings("unchecked") public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping .findForward("exibirConsultarComandosContasCobrancaEmpresaPopupAction"); ConsultarComandosContasCobrancaEmpresaActionForm form = (ConsultarComandosContasCobrancaEmpresaActionForm) actionForm; HttpSession sessao = httpServletRequest.getSession(false); Fachada fachada = Fachada.getInstancia(); String pesquisar = httpServletRequest.getParameter("pesquisa"); boolean Entrou = false; String idComando = httpServletRequest.getParameter("idComandoEmpresaCobrancaConta"); Date dataIncial = (Date) sessao.getAttribute("dataInicial"); Date dataFinal = (Date) sessao.getAttribute("dataFinal"); if(pesquisar!=null && pesquisar.equals("sim") && !Entrou){ Object[] dados = fachada. pesquisarDadosPopupExtensaoComandoCobranca(new Integer(idComando),dataIncial,dataFinal); //Nome empresa if (dados[0] != null) { form.setNomeEmpresa(dados[0].toString()); } else { form.setNomeEmpresa(""); } // Data In�cio Ciclo if (dados[1] != null) { form.setPeriodoCicloInicial(Util.formatarData((Date) dados[1])); } else { form.setPeriodoCicloInicial(""); } // Data Fim Ciclo if (dados[2] != null) { form.setPeriodoCicloFinal(Util.formatarData((Date) dados[2])); } else { form.setPeriodoCicloFinal(""); } // Data Execucao Comando if (dados[3] != null) { form.setDataExecucaoComando(Util.formatarData((Date) dados[3])); } else { form.setDataExecucaoComando(""); } // Data Encerramento Comando if (dados[4] != null) { form.setDataEncerramento(Util.formatarData((Date) dados[4])); } else { form.setDataEncerramento(""); } // Id Im�vel / Inscri��o do Im�vel if (dados[5] != null) { form.setIdImovel(dados[5].toString()); String inscricao = fachada.pesquisarInscricaoImovel((Integer) dados[5]); if (inscricao != null && !inscricao.equals("")) { form.setInscricaoImovel(inscricao); } } else { form.setIdImovel(""); form.setInscricaoImovel(""); } // Id Cliente if (dados[6] != null) { form.setIdCliente(dados[6].toString()); } else { form.setIdCliente(""); } // Nome do Cliente if (dados[7] != null) { form.setNomeCliente(dados[7].toString()); } else { form.setNomeCliente(""); } // Categoria Collection<String> colecaoCategoria = new ArrayList(); if (dados[8] != null && ((Short)dados[8]).equals(ConstantesSistema.SIM)) { colecaoCategoria.add("Residencial"); } if (dados[9] != null && ((Short)dados[9]).equals(ConstantesSistema.SIM)) { colecaoCategoria.add("Comercial"); } if (dados[10] != null && ((Short)dados[10]).equals(ConstantesSistema.SIM)) { colecaoCategoria.add("Industrial"); } if (dados[11] != null && ((Short)dados[11]).equals(ConstantesSistema.SIM)) { colecaoCategoria.add("P�blico"); } if (colecaoCategoria != null && !colecaoCategoria.isEmpty()) { if (colecaoCategoria.size() > 1) { sessao.setAttribute("colecaoCategoria", colecaoCategoria); } else { form.setCategoria(colecaoCategoria.iterator().next()); sessao.removeAttribute("colecaoCategoria"); } } else { sessao.removeAttribute("colecaoCategoria"); } // Perfil do Im�vel if (dados[12] != null) { form.setIdImovelPerfil(dados[12].toString()); sessao.removeAttribute("colecaoImovelPerfil"); } else { form.setIdImovelPerfil(""); Collection<ImovelPerfil> colecaoImovelPerfil = this.pesquisarColecaoImovelPerfil(new Integer(idComando)); if (colecaoImovelPerfil != null && !colecaoImovelPerfil.isEmpty()) { sessao.setAttribute("colecaoImovelPerfil", colecaoImovelPerfil); } else { sessao.removeAttribute("colecaoImovelPerfil"); } } if (dados[13] != null) { form.setDsImovelPerfil(dados[13].toString()); } else { form.setDsImovelPerfil(""); } // Ger�ncia Regional if (dados[14] != null) { form.setIdGerenciaRegional(dados[14].toString()); sessao.removeAttribute("colecaoGerenciaRegional"); } else { form.setIdGerenciaRegional(""); Collection<GerenciaRegional> colecaoGerenciaRegional = this.pesquisarColecaoGerenciaRegional(new Integer(idComando)); if (colecaoGerenciaRegional != null && !colecaoGerenciaRegional.isEmpty()) { sessao.setAttribute("colecaoGerenciaRegional", colecaoGerenciaRegional); } else { sessao.removeAttribute("colecaoGerenciaRegional"); } } if (dados[15] != null) { form.setNomeGerenciaRegional(dados[15].toString()); } else { form.setNomeGerenciaRegional(""); } // Unidade de Negocio if (dados[16] != null) { form.setIdUnidadeNegocio(dados[16].toString()); sessao.removeAttribute("colecaoUnidadeNegocio"); } else { form.setIdUnidadeNegocio(""); Collection<UnidadeNegocio> colecaoUnidadeNegocio = this.pesquisarColecaoUnidadeNegocio(new Integer(idComando)); if (colecaoUnidadeNegocio != null && !colecaoUnidadeNegocio.isEmpty()) { sessao.setAttribute("colecaoUnidadeNegocio", colecaoUnidadeNegocio); } else { sessao.removeAttribute("colecaoUnidadeNegocio"); } } if (dados[17] != null) { form.setNomeUnidadeNegocio(dados[17].toString()); } else { form.setNomeUnidadeNegocio(""); } // Intervalo de localizacao if (dados[18] != null) { form.setIntervaloLocalizacaoInicial(dados[18].toString()); } else { form.setIntervaloLocalizacaoInicial(""); } if (dados[19] != null) { form.setIntervaloLocalizacaoFinal(dados[19].toString()); } else { form.setIntervaloLocalizacaoFinal(""); } // Intervalo de Setor Comercial if (dados[20] != null) { form.setIntervaloSetorComercialInicial(dados[20].toString()); } else { form.setIntervaloSetorComercialInicial(""); } if (dados[21] != null) { form.setIntervaloSetorComercialFinal(dados[21].toString()); } else { form.setIntervaloSetorComercialFinal(""); } // Intervalo de Quadra if (dados[22] != null && !dados[22].equals("") && ((Integer)dados[22]).compareTo(0) != 0) { form.setIntervaloQuadraInicial(dados[22].toString()); } else { form.setIntervaloQuadraInicial(""); } if (dados[23] != null && !dados[23].equals("") && ((Integer)dados[23]).compareTo(0) != 0) { form.setIntervaloQuadraFinal(dados[23].toString()); } else { form.setIntervaloQuadraFinal(""); } // Periodo Referencia Contas Inicial if (dados[24] != null) { form.setPeriodoReferenciaContasInicial((Util .formatarAnoMesParaMesAno(new Integer(dados[24].toString()).intValue()))); } else { form.setPeriodoReferenciaContasInicial(""); } // Periodo Referencia Contas Final if (dados[25] != null) { form.setPeriodoReferenciaContasFinal((Util .formatarAnoMesParaMesAno(new Integer(dados[25].toString()).intValue()))); } else { form.setPeriodoReferenciaContasFinal(""); } // Periodo Vencimento Contas Inicial if (dados[26] != null) { form.setPeriodoVencimentoContasInicial(Util .formatarData((Date) dados[26])); } else { form.setPeriodoVencimentoContasInicial(""); } // Periodo Vencimento Contas Final if (dados[27] != null) { form.setPeriodoVencimentoContasFinal(Util .formatarData((Date) dados[27])); } else { form.setPeriodoVencimentoContasFinal(""); } // Intervalo Valor Contas Minimo if (dados[28] != null) { form.setIntervaloValorContasInicial( Util.formatarMoedaReal(new BigDecimal(dados[28].toString()))); } else { form.setIntervaloValorContasInicial(""); } // Intervalo Valor Contas Maximo if (dados[29] != null) { form.setIntervaloValorContasFinal( Util.formatarMoedaReal(new BigDecimal(dados[29].toString()))); } else { form.setIntervaloValorContasFinal(""); } // Arquivo txt gerado if (dados[32] == null || ((Integer)dados[32]).equals(new Integer(2))) { form.setArquivoTxtGerado("N�O"); } else { form.setArquivoTxtGerado("SIM"); } //Quantidade de Contas Inicial if (dados[33] != null) { form.setQtdContasInicial(((Integer)dados[33]).toString()); } else { form.setQtdContasInicial(""); } //Quantidade de Contas Final if (dados[34] != null) { form.setQtdContasFinal(((Integer)dados[34]).toString()); } else { form.setQtdContasFinal(""); } //Quantidade de Dias de vencimento if (dados[35] != null) { form.setQtdDiasVencimento(((Integer)dados[35]).toString()); } else { form.setQtdDiasVencimento(""); } // Situa��o da liga��o de �gua if (dados[36] != null) { form.setSituacaoAgua(dados[36].toString()); sessao.removeAttribute("colecaoSituacaoAgua"); } else { form.setSituacaoAgua(""); Collection<LigacaoAguaSituacao> colecaoSituacaoAgua = this.pesquisarColecaoSituacaoAgua(new Integer(idComando)); if (colecaoSituacaoAgua != null && !colecaoSituacaoAgua.isEmpty()) { sessao.setAttribute("colecaoSituacaoAgua", colecaoSituacaoAgua); } else { form.setSituacaoAgua("TODAS"); sessao.removeAttribute("colecaoSituacaoAgua"); } } if (dados[31] != null && !dados[31].equals("")) { sessao.setAttribute("percentualInformado", true); // Quantidade total de contas selecionadas para cobranca if (dados[37] != null) { form.setQtdeTotalContasCobranca(dados[37].toString()); } else { form.setQtdeTotalContasCobranca(""); } // Valor Total de contas selecionadas para cobranca if (dados[38] != null) { form.setValorTotalContasCobranca(Util .formatarMoedaReal(new BigDecimal(dados[38].toString()))); } else { form.setValorTotalContasCobranca(""); } } else { Collection<Object[]> colecaoDados = this.getFachada().pesquisarValorTotalCobrancaComandoEmpresaPorImovel(new Integer(idComando)); if (colecaoDados != null && !colecaoDados.isEmpty()) { Collection<String> colecaoFaixa = new ArrayList(); Collection<Integer> colecaoQtdeContas = new ArrayList(); Collection<BigDecimal> colecaoValorTotalDivida= new ArrayList(); FiltroEmpresaCobrancaFaixa filtroEmpresaCobrancaFaixa = new FiltroEmpresaCobrancaFaixa(); filtroEmpresaCobrancaFaixa.adicionarParametro(new ParametroSimples( FiltroEmpresaCobrancaFaixa.EMPRESA_CONTRATO_COBRANCA_ID, dados[30])); filtroEmpresaCobrancaFaixa.setCampoOrderBy(FiltroEmpresaCobrancaFaixa.NUMERO_MAXIMO_CONTAS_FAIXA); List<EmpresaCobrancaFaixa> colecaoEmpresaCobrancaFaixa = (List<EmpresaCobrancaFaixa>)Fachada.getInstancia().pesquisar( filtroEmpresaCobrancaFaixa, EmpresaCobrancaFaixa.class.getName()); if (colecaoEmpresaCobrancaFaixa != null && !colecaoEmpresaCobrancaFaixa.isEmpty()) { EmpresaCobrancaFaixa empresaCobrancaFaixa = (EmpresaCobrancaFaixa) colecaoEmpresaCobrancaFaixa.get(0); Integer numeroMinimoContas = null; Integer numeroMaximoContas = empresaCobrancaFaixa.getNumeroMinimoContasFaixa() - 1; Integer qtdeContas = 0; BigDecimal valorTotalDivida = new BigDecimal(0.0); Iterator iteratorColecaoDados = colecaoDados.iterator(); for (int i = 0; i < colecaoEmpresaCobrancaFaixa.size(); i++) { empresaCobrancaFaixa = (EmpresaCobrancaFaixa) colecaoEmpresaCobrancaFaixa.get(i); numeroMinimoContas = empresaCobrancaFaixa.getNumeroMinimoContasFaixa(); numeroMaximoContas = null; if (i < (colecaoEmpresaCobrancaFaixa.size() - 1)) { numeroMaximoContas = ((EmpresaCobrancaFaixa) colecaoEmpresaCobrancaFaixa.get(i + 1)).getNumeroMinimoContasFaixa() - 1; } qtdeContas = 0; valorTotalDivida = new BigDecimal(0.0); iteratorColecaoDados = colecaoDados.iterator(); while (iteratorColecaoDados.hasNext()) { Object[] dadosRetornados = (Object[]) iteratorColecaoDados.next(); if (dadosRetornados[0] != null){ Integer qnt = (Integer) dadosRetornados[0]; if (qnt >= numeroMinimoContas && (numeroMaximoContas == null || qnt <= numeroMaximoContas)) { qtdeContas += qnt; if(dadosRetornados[1] !=null ){ valorTotalDivida = valorTotalDivida.add((BigDecimal) dadosRetornados[1]); } } } } if (i < (colecaoEmpresaCobrancaFaixa.size() - 1)) { colecaoFaixa.add(numeroMinimoContas + " a " + numeroMaximoContas); } else { colecaoFaixa.add("Mais de " + numeroMinimoContas); } colecaoQtdeContas.add(qtdeContas); colecaoValorTotalDivida.add(valorTotalDivida); } if (!colecaoQtdeContas.isEmpty() && !colecaoValorTotalDivida.isEmpty()) { sessao.setAttribute("colecaoQuantidadeContas", true); sessao.setAttribute("tamanho", colecaoFaixa.size()); sessao.setAttribute("colecaoFaixa", colecaoFaixa); sessao.setAttribute("colecaoQtdeContas", colecaoQtdeContas); sessao.setAttribute("colecaoValorTotalDivida", colecaoValorTotalDivida); sessao.removeAttribute("percentualInformado"); } else { form.setQtdeTotalContasCobranca("0"); form.setValorTotalContasCobranca(Util.formatarMoedaReal(BigDecimal.ZERO)); sessao.removeAttribute("colecaoQuantidadeContas"); sessao.removeAttribute("colecaoFaixa"); sessao.removeAttribute("colecaoQtdeContas"); sessao.removeAttribute("colecaoValorTotalDivida"); sessao.setAttribute("percentualInformado", true); } } else { form.setQtdeTotalContasCobranca("0"); form.setValorTotalContasCobranca(Util.formatarMoedaReal(BigDecimal.ZERO)); sessao.removeAttribute("colecaoQuantidadeContas"); sessao.removeAttribute("colecaoFaixa"); sessao.removeAttribute("colecaoQtdeContas"); sessao.removeAttribute("colecaoValorTotalDivida"); sessao.setAttribute("percentualInformado", true); } } else { form.setQtdeTotalContasCobranca("0"); form.setValorTotalContasCobranca(Util.formatarMoedaReal(BigDecimal.ZERO)); this.getSessao(httpServletRequest).removeAttribute("colecaoQuantidadeContas"); this.getSessao(httpServletRequest).removeAttribute("colecaoFaixa"); this.getSessao(httpServletRequest).removeAttribute("colecaoQtdeContas"); this.getSessao(httpServletRequest).removeAttribute("colecaoValorTotalDivida"); sessao.setAttribute("percentualInformado", true); } } Entrou = true; } if(pesquisar!=null && pesquisar.equals("nao")){ httpServletRequest.setAttribute("pesquisa" ,"nao"); httpServletRequest.setAttribute("idComandoEmpresaCobrancaConta",idComando); } return retorno; } private Collection<LigacaoAguaSituacao> pesquisarColecaoSituacaoAgua( Integer idComando) { Collection<LigacaoAguaSituacao> retorno = new ArrayList(); Collection<Object[]> colecaoDados = Fachada.getInstancia().pesquisarDadosPopupExtensaoComandoAguaSituacao(idComando); if (colecaoDados != null && !colecaoDados.isEmpty()) { Iterator iterator = colecaoDados.iterator(); while(iterator.hasNext()) { Object[] dados = (Object[]) iterator.next(); LigacaoAguaSituacao situacaoAgua = new LigacaoAguaSituacao(); if (dados[0] != null && dados[1] != null) { if (dados[0] != null) { situacaoAgua.setId((Integer) dados[0]); } if (dados[1] != null) { situacaoAgua.setDescricao(dados[1].toString()); } retorno.add(situacaoAgua); } } } return retorno; } private Collection<ImovelPerfil> pesquisarColecaoImovelPerfil(Integer idComando) { Collection<ImovelPerfil> retorno = new ArrayList(); Collection<Object[]> colecaoDados = Fachada.getInstancia().pesquisarDadosPopupExtensaoComandoImovelPerfil(idComando); if (colecaoDados != null && !colecaoDados.isEmpty()) { Iterator iterator = colecaoDados.iterator(); while(iterator.hasNext()) { Object[] dados = (Object[]) iterator.next(); ImovelPerfil imovelPerfil = new ImovelPerfil(); if (dados[0] != null && dados[1] != null) { if (dados[0] != null) { imovelPerfil.setId((Integer) dados[0]); } if (dados[1] != null) { imovelPerfil.setDescricao(dados[1].toString()); } retorno.add(imovelPerfil); } } } return retorno; } private Collection<GerenciaRegional> pesquisarColecaoGerenciaRegional(Integer idComando) { Collection<GerenciaRegional> retorno = new ArrayList(); Collection<Object[]> colecaoDados = Fachada.getInstancia().pesquisarDadosPopupExtensaoComandoGerenciaRegional(idComando); if (colecaoDados != null && !colecaoDados.isEmpty()) { Iterator iterator = colecaoDados.iterator(); while(iterator.hasNext()) { Object[] dados = (Object[]) iterator.next(); GerenciaRegional gerenciaRegional = new GerenciaRegional(); if (dados[0] != null && dados[1] != null) { if (dados[0] != null) { gerenciaRegional.setId((Integer) dados[0]); } if (dados[1] != null) { gerenciaRegional.setNome(dados[1].toString()); } retorno.add(gerenciaRegional); } } } return retorno; } private Collection<UnidadeNegocio> pesquisarColecaoUnidadeNegocio(Integer idComando) { Collection<UnidadeNegocio> retorno = new ArrayList(); Collection<Object[]> colecaoDados = Fachada.getInstancia().pesquisarDadosPopupExtensaoComandoUnidadeNegocio(idComando); if (colecaoDados != null && !colecaoDados.isEmpty()) { Iterator iterator = colecaoDados.iterator(); while(iterator.hasNext()) { Object[] dados = (Object[]) iterator.next(); UnidadeNegocio unidadeNegocio = new UnidadeNegocio(); if (dados[0] != null && dados[1] != null) { if (dados[0] != null) { unidadeNegocio.setId((Integer) dados[0]); } if (dados[1] != null) { unidadeNegocio.setNome(dados[1].toString()); } retorno.add(unidadeNegocio); } } } return retorno; } }