/* * Copyright (C) 2007-2007 the GSAN - Sistema Integrado de Gest�o de Servi�os de * Saneamento This file is part of GSAN, an integrated service management system * for Sanitation GSAN is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License. GSAN is distributed in * the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See * the GNU General Public License for more details. You should have received a * copy of the GNU General Public License along with this program; if not, write * to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, * MA 02111-1307, USA */ /* * GSAN - Sistema Integrado de Gest�o de Servi�os de Saneamento Copyright (C) * <2007> Adriano Britto Siqueira Alexandre Santos Cabral Ana Carolina Alves * Breda Ana Maria Andrade Cavalcante Aryed Lins de Ara�jo Bruno Leonardo * Rodrigues Barros Carlos Elmano Rodrigues Ferreira Cl�udio de Andrade Lira * Denys Guimar�es Guenes Tavares Eduardo Breckenfeld da Rosa Borges Fab�ola * Gomes de Ara�jo Fl�vio Leonardo Cavalcanti Cordeiro Francisco do Nascimento * J�nior Homero Sampaio Cavalcanti Ivan S�rgio da Silva J�nior Jos� Edmar de * Siqueira Jos� Thiago Ten�rio Lopes K�ssia Regina Silvestre de Albuquerque * Leonardo Luiz Vieira da Silva M�rcio Roberto Batista da Silva Maria de F�tima * Sampaio Leite Micaela Maria Coelho de Ara�jo Nelson Mendon�a de Carvalho * Newton Morais e Silva Pedro Alexandre Santos da Silva Filho Rafael Corr�a * Lima e Silva Rafael Francisco Pinto Rafael Koury Monteiro Rafael Palermo de * Ara�jo Raphael Veras Rossiter Roberto Sobreira Barbalho Rodrigo Avellar * Silveira Rosana Carvalho Barbosa S�vio Luiz de Andrade Cavalcante Tai Mu Shih * Thiago Augusto Souza do Nascimento Tiago Moreno Rodrigues Vivianne Barbosa * Sousa Este programa � software livre; voc� pode redistribu�-lo e/ou * modific�-lo sob os termos de Licen�a P�blica Geral GNU, conforme publicada * pela Free Software Foundation; vers�o 2 da Licen�a. Este programa � * distribu�do na expectativa de ser �til, mas SEM QUALQUER GARANTIA; sem mesmo * a garantia impl�cita de COMERCIALIZA��O ou de ADEQUA��O A QUALQUER PROP�SITO * EM PARTICULAR. Consulte a Licen�a P�blica Geral GNU para obter mais detalhes. * Voc� deve ter recebido uma c�pia da Licen�a P�blica Geral GNU junto com este * programa; se n�o, escreva para Free Software Foundation, Inc., 59 Temple * Place, Suite 330, Boston, MA 02111-1307, USA. */ package gcom.gerencial.cobranca; import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao; import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoSituacao; import gcom.batch.ControladorBatchLocal; import gcom.batch.ControladorBatchLocalHome; import gcom.batch.UnidadeProcessamento; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.EsferaPoder; import gcom.cadastro.imovel.Categoria; import gcom.cadastro.imovel.ControladorImovelLocal; import gcom.cadastro.imovel.ControladorImovelLocalHome; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.imovel.ImovelPerfil; import gcom.cadastro.imovel.ImovelSubcategoria; import gcom.cadastro.localidade.FiltroQuadra; import gcom.cadastro.localidade.GerenciaRegional; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.localidade.Quadra; import gcom.cadastro.localidade.SetorComercial; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.cobranca.CobrancaSituacaoMotivo; import gcom.cobranca.CobrancaSituacaoTipo; import gcom.cobranca.ResumoCobrancaAcao; import gcom.cobranca.ResumoCobrancaSituacaoEspecial; import gcom.cobranca.ResumoPendencia; import gcom.gerencial.arrecadacao.IRepositorioGerencialArrecadacao; import gcom.gerencial.arrecadacao.RepositorioGerencialArrecadacaoHBM; import gcom.gerencial.bean.CobrancaAcaoHelper; import gcom.gerencial.bean.CobrancaAcaoPerfilHelper; import gcom.gerencial.bean.CobrancaAcaoSituacaoHelper; import gcom.gerencial.bean.InformarDadosGeracaoRelatorioConsultaHelper; import gcom.gerencial.bean.InformarDadosGeracaoResumoAcaoConsultaEventualHelper; import gcom.gerencial.bean.InformarDadosGeracaoResumoAcaoConsultaHelper; import gcom.gerencial.cadastro.ControladorGerencialCadastroLocal; import gcom.gerencial.cadastro.ControladorGerencialCadastroLocalHome; import gcom.gerencial.cadastro.IRepositorioGerencialCadastro; import gcom.gerencial.cadastro.RepositorioGerencialCadastroHBM; import gcom.gerencial.cobranca.bean.ResumoCobrancaSituacaoEspecialHelper; import gcom.gerencial.cobranca.bean.ResumoPendenciaAcumuladoHelper; import gcom.gerencial.cobranca.bean.ResumoPendenciaContasGerenciaHelper; import gcom.gerencial.cobranca.bean.ResumoPendenciaContasGerencialPorAnoHelper; import gcom.gerencial.cobranca.bean.ResumoPendenciaCreditoARealizarGerenciaHelper; import gcom.gerencial.cobranca.bean.ResumoPendenciaCreditoARealizarGerencialPorAnoHelper; import gcom.gerencial.cobranca.bean.ResumoPendenciaDebitosACobrarGerenciaHelper; import gcom.gerencial.cobranca.bean.ResumoPendenciaDebitosACobrarGerencialPorAnoHelper; import gcom.gerencial.cobranca.bean.ResumoPendenciaGuiasPagamentoGerenciaHelper; import gcom.gerencial.cobranca.bean.ResumoPendenciaGuiasPagamentoGerencialPorAnoHelper; import gcom.gerencial.faturamento.IRepositorioGerencialFaturamento; import gcom.gerencial.faturamento.RepositorioGerencialFaturamentoHBM; import gcom.gerencial.faturamento.bean.ConsultarResumoSituacaoEspecialHelper; import gcom.micromedicao.Rota; import gcom.util.ConstantesJNDI; import gcom.util.ControladorException; import gcom.util.ControladorUtilLocal; import gcom.util.ControladorUtilLocalHome; import gcom.util.ErroRepositorioException; import gcom.util.ServiceLocator; import gcom.util.ServiceLocatorException; import gcom.util.SistemaException; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.ejb.CreateException; import javax.ejb.EJBException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; /** * @author Thiago Toscano * @created 19/04/2006 */ public class ControladorGerencialCobrancaSEJB implements SessionBean { private static final long serialVersionUID = 1L; private IRepositorioGerencialCobranca repositorioGerencialCobranca = null; private IRepositorioGerencialCadastro repositorioGerencialCadastro = null; private IRepositorioGerencialFaturamento repositorioGerencialFaturamento = null; private IRepositorioGerencialArrecadacao repositorioGerencialArrecadacao = null; //private IRepositorioUtil repositorioUtil = null; SessionContext sessionContext; /** * < <Descri��o do m�todo>> * * @exception CreateException * Descri��o da exce��o */ public void ejbCreate() throws CreateException { //repositorioUtil = RepositorioUtilHBM.getInstancia(); repositorioGerencialCobranca = RepositorioGerencialCobrancaHBM .getInstancia(); repositorioGerencialCadastro = RepositorioGerencialCadastroHBM .getInstancia(); repositorioGerencialArrecadacao = RepositorioGerencialArrecadacaoHBM .getInstancia(); repositorioGerencialFaturamento = RepositorioGerencialFaturamentoHBM .getInstancia(); } /** * Retorna a interface remota de ControladorImovel * * @return A interface remota do controlador de par�metro */ private ControladorImovelLocal getControladorImovel() { ControladorImovelLocalHome localHome = null; ControladorImovelLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorImovelLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_IMOVEL_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } private ControladorBatchLocal getControladorBatch() { ControladorBatchLocalHome localHome = null; ControladorBatchLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorBatchLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_BATCH_SEJB); local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /* private ControladorFaturamentoLocal getControladorFaturamento() { ControladorFaturamentoLocalHome localHome = null; ControladorFaturamentoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorFaturamentoLocalHome) locator .getLocalHomePorEmpresa(ConstantesJNDI.CONTROLADOR_FATURAMENTO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } */ /* private ControladorArrecadacaoLocal getControladorArrecadacao() { ControladorArrecadacaoLocalHome localHome = null; ControladorArrecadacaoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorArrecadacaoLocalHome) locator .getLocalHomePorEmpresa(ConstantesJNDI.CONTROLADOR_ARRECADACAO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } */ /** * Retorna a interface remota de ControladorCadastro * * @return A interface remota do controlador de par�metro */ /* private ControladorCadastroLocal getControladorCadastro() { ControladorCadastroLocalHome localHome = null; ControladorCadastroLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorCadastroLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_CADASTRO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } */ /** * < <Descri��o do m�todo>> */ public void ejbRemove() { } /** * < <Descri��o do m�todo>> */ public void ejbActivate() { } /** * < <Descri��o do m�todo>> */ public void ejbPassivate() { } /** * Retorna o valor de controladorUtil * * @return O valor de controladorUtil */ private ControladorUtilLocal getControladorUtil() { ControladorUtilLocalHome localHome = null; ControladorUtilLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorUtilLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_UTIL_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Seta o valor de sessionContext * * @param sessionContext * O novo valor de sessionContext */ public void setSessionContext(SessionContext sessionContext) { this.sessionContext = sessionContext; } /** * M�todo que gera o resumo Resumo Situacao Especial Faturamento [UC0341] * * @author Thiago Toscano * @date 19/04/2006 */ public void gerarResumoSituacaoEspecialCobranca(int idLocalidade, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.LOCALIDADE, (idLocalidade)); try { this.repositorioGerencialCobranca .excluirTodosResumoCobrancaSituacaoEspecial(idLocalidade); List<ResumoCobrancaSituacaoEspecialHelper> listaSimplificada = new ArrayList(); List<ResumoCobrancaSituacaoEspecial> listaResumoLigacoesEconomia = new ArrayList(); System.out .println("<<< INICIO DO GerarResumoSituacaoEspecialCobranca >>>"); System.out.println("<<< LOCALIDADE: " + idLocalidade + " >>>"); List imoveisResumoLigacaoEconomias = this.repositorioGerencialCobranca .getResumoSituacaoEspecialCobrancaHelper(idLocalidade); System.out.println("<<< IMOVEIS SELECIONADOS: " + imoveisResumoLigacaoEconomias.size() + " >>>"); // pra cada objeto obter a categoria e o indicador de exist�ncia de // hidr�metro // caso ja tenha um igual soma a quantidade de economias e a // quantidade de ligacoes for (int i = 0; i < imoveisResumoLigacaoEconomias.size(); i++) { Object obj = imoveisResumoLigacaoEconomias.get(i); // if (imoveisResumoLigacaoEconomias != null && // imoveisResumoLigacaoEconomias.get(0) != null) { // Object obj = imoveisResumoLigacaoEconomias.get(0); if (obj instanceof Object[]) { Object[] retorno = (Object[]) obj; ResumoCobrancaSituacaoEspecialHelper helper = new ResumoCobrancaSituacaoEspecialHelper( (Integer) retorno[0], (Integer) retorno[1], (Integer) retorno[2], (Integer) retorno[3], (Integer) retorno[4], (Integer) retorno[5], (Integer) retorno[6], (Integer) retorno[7], (Integer) retorno[8], (Integer) retorno[9], (Integer) retorno[10], (Integer) retorno[11], (Integer) retorno[12], (Integer) retorno[13], (Integer) retorno[14], (Integer) retorno[15]); // if (obj instanceof ResumoCobrancaSituacaoEspecialHelper) // { // ResumoCobrancaSituacaoEspecialHelper irleh = // (ResumoCobrancaSituacaoEspecialHelper) obj; Integer idImovel = helper.getIdImovel(); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) helper.setIdCategoria(categoria.getId()); // se ja existe um objeto igual a ele entao soma as ligacoes // e as economias no ja existente // um objeto eh igual ao outro se ele tem todos as // informacos iguals ( excecao idImovel, quantidadeEconomia, // quantidadeLigacoes) if (listaSimplificada.contains(helper)) { int posicao = listaSimplificada.indexOf(helper); ResumoCobrancaSituacaoEspecialHelper jaCadastrado = (ResumoCobrancaSituacaoEspecialHelper) listaSimplificada .get(posicao); jaCadastrado.setQuantidadeImovel(jaCadastrado .getQuantidadeImovel() + 1); } else { listaSimplificada.add(helper); } } } /** * para todoas as ImovelResumoLigacaoEconomiaHelper cria * ResumoLigacoesEconomia */ for (int i = 0; i < listaSimplificada.size(); i++) { ResumoCobrancaSituacaoEspecialHelper helper = (ResumoCobrancaSituacaoEspecialHelper) listaSimplificada .get(i); // Integer anoMesReferencia = Util // .getAnoMesComoInteger(new Date()); Integer codigoSetorComercial = null; if (helper.getCodigoSetorComercial() != null) { codigoSetorComercial = (helper.getCodigoSetorComercial()); } Integer numeroQuadra = null; if (helper.getNumeroQuadra() != null) { numeroQuadra = (helper.getNumeroQuadra()); } CobrancaSituacaoTipo cobrancaSituacaoTipo = null; if (helper.getIdEspecialCobranca() != null) { cobrancaSituacaoTipo = new CobrancaSituacaoTipo(); cobrancaSituacaoTipo.setId(helper.getIdEspecialCobranca()); } CobrancaSituacaoMotivo cobrancaSituacaoMotivo = null; if (helper.getIdMotivoSituacaoEspecialCobranca() != null) { cobrancaSituacaoMotivo = new CobrancaSituacaoMotivo(); cobrancaSituacaoMotivo.setId(helper .getIdMotivoSituacaoEspecialCobranca()); } Integer anoMesInicioSituacaoEspecial = null; if (helper.getAnoMesInicioSituacaoEspecial() != null) { anoMesInicioSituacaoEspecial = (helper .getAnoMesInicioSituacaoEspecial()); } Integer anoMesFinalSituacaoEspecial = null; if (helper.getAnoMesFinalSituacaoEspecial() != null) { anoMesFinalSituacaoEspecial = (helper .getAnoMesFinalSituacaoEspecial()); } int quantidadeImovel = (helper.getQuantidadeImovel()); GerenciaRegional gerenciaRegional = null; if (helper.getIdGerenciaRegional() != null) { gerenciaRegional = new GerenciaRegional(); gerenciaRegional.setId(helper.getIdGerenciaRegional()); } Localidade localidade = null; if (helper.getIdLocalidade() != null) { localidade = new Localidade(); localidade.setId(helper.getIdLocalidade()); } SetorComercial setorComercial = null; if (helper.getIdSetorComercial() != null) { setorComercial = new SetorComercial(); setorComercial.setId(helper.getIdSetorComercial()); } Rota rota = null; if (helper.getIdRota() != null) { rota = new Rota(); rota.setId(helper.getIdRota()); } Quadra quadra = null; if (helper.getIdQuadra() != null) { quadra = new Quadra(); quadra.setId(helper.getIdQuadra()); } ImovelPerfil imovelPerfil = null; if (helper.getIdPerfilImovel() != null) { imovelPerfil = new ImovelPerfil(); imovelPerfil.setId(helper.getIdPerfilImovel()); } LigacaoAguaSituacao ligacaoAguaSituacao = null; if (helper.getIdSituacaoLigacaoAgua() != null) { ligacaoAguaSituacao = new LigacaoAguaSituacao(); ligacaoAguaSituacao .setId(helper.getIdSituacaoLigacaoAgua()); } LigacaoEsgotoSituacao ligacaoEsgotoSituacao = null; if (helper.getIdSituacaoLigacaoEsgoto() != null) { ligacaoEsgotoSituacao = new LigacaoEsgotoSituacao(); ligacaoEsgotoSituacao.setId(helper .getIdSituacaoLigacaoEsgoto()); } Categoria categoria = null; if (helper.getIdCategoria() != null) { categoria = new Categoria(); categoria.setId(helper.getIdCategoria()); } EsferaPoder esferaPoder = null; if (helper.getIdEsfera() != null) { esferaPoder = new EsferaPoder(); esferaPoder.setId(helper.getIdEsfera()); } ResumoCobrancaSituacaoEspecial resumo = new ResumoCobrancaSituacaoEspecial( codigoSetorComercial, numeroQuadra, anoMesInicioSituacaoEspecial, anoMesFinalSituacaoEspecial, quantidadeImovel, new Date(), gerenciaRegional, localidade, setorComercial, rota, quadra, imovelPerfil, ligacaoAguaSituacao, ligacaoEsgotoSituacao, categoria, esferaPoder, cobrancaSituacaoTipo, cobrancaSituacaoMotivo); // ResumoCobrancaSituacaoEspecialHelper resumoLigacoesEconomia = // new ResumoCobrancaSituacaoEspecialHelper(anoMesReferencia, // codigoSetorComercial, numeroQuadra, indicadorHidrometro, // quantidadeLigacoes, // quantidadeEconomias, gerenciaRegional, localidade, // setorComercial, rota, quadra, imovelPerfil, // ligacaoAguaSituacao, ligacaoEsgotoSituacao, categoria, // esferaPoder); listaResumoLigacoesEconomia.add(resumo); } System.out.println("<<< INICIO DO INSERIR >>>"); this.repositorioGerencialCobranca .inserirResumoSituacaoEspecialCobranca(listaResumoLigacoesEconomia); System.out .println("<<<<<<<<<<<<<<<<<<<< FIM DO RESUMO >>>>>>>>>>>>>>>>>>>>>>"); // -------------------------------------------------------- // // Registrar o fim da execu��o da Unidade de Processamento // // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception e) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido e.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); // sessionContext.setRollbackOnly(); throw new EJBException(e); } } /** * M�todo que gera o resumo da pendencia [UC0335] - Gerar Resumo do * Parcelamento * * @author Bruno Barros * @date 19/07/2007 */ public void gerarResumoPendencia(int idSetor, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.SETOR_COMERCIAL, idSetor); Integer anoMesReferenciaMenos1 = Util.subtrairMesDoAnoMes( getControladorUtil().pesquisarParametrosDoSistema() .getAnoMesArrecadacao(), 1); Integer idQuadra = null; try { FiltroQuadra novoFiltroQuadra = new FiltroQuadra(); novoFiltroQuadra.adicionarParametro( new ParametroSimples( FiltroQuadra.ID_SETORCOMERCIAL, idSetor ) ); Collection<Quadra> colQuadras = getControladorUtil() .pesquisar(novoFiltroQuadra, Quadra.class.getName()); for (Quadra quadra : colQuadras) { idQuadra = quadra.getId(); // FS0001 - Verificar existencia de dados para o ano/mes referencia // informado getControladorGerencialCadastro().excluirResumoGerencial( anoMesReferenciaMenos1, UnResumoPendencia.class.getName(), "anoMesReferencia", "id", idQuadra); // FS0001 - Verificar existencia de dados para o ano/mes referencia // informado /* getControladorGerencialCadastro().excluirResumoGerencial( anoMesReferenciaMenos1, UnResumoPendenciaSemQuadra.class.getName(), "anoMesReferencia", "id", idQuadra);*/ this.gerarResumoPendenciaContaGerencia(idQuadra); this.gerarResumoPendenciaGuiasPagamentoGerencia(idQuadra); this.gerarResumoPendenciaDebitosACobrarGerencia(idQuadra); this.gerarResumoPendenciaCreditosARealizarGerencia(idQuadra); // Geramos com os dados j� inseridos, o resumo de pendecia sem quadra /* this.repositorioGerencialCobranca.inserirResumoPendenciaSemQuadra( idQuadra, anoMesReferenciaMenos1);*/ } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NO SETOR " + idSetor + " E QUADRA " + idQuadra ); ex.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch( ex, idUnidadeIniciada, true ); throw new ControladorException("erro.sistema", ex); } } /** * Gera a primeira parte do resumo de pendencias [SB0001A] * * @author Bruno Barros * @date 19/07/2007 */ private void gerarResumoPendenciaContaGerencia(int idQuadra) throws ControladorException, ErroRepositorioException { /* * O sistema seleciona as contas pendentes ( a partir da tabela CONTA * com CNTA_AMREFERENCIACONTA < PARM_AMREFERENCIAFATURAMENTO da tabela * SISTEMA_PARAMETROS e ( DCST_IDATUAL = 0 ou (DCST_IDATUAL = (1,2) e * CNTA_AMREFERENCIACONTABIL < PARM_AMREFENRECIAFATURAMENTO ou * (DCST_IDATUAL = (3,4,5) e CNTA_AMREFERENCIACONTABIL > * PARM_AMREFERENCIAFATURAMENTO */ List<ResumoPendenciaContasGerenciaHelper> quebra = new ArrayList<ResumoPendenciaContasGerenciaHelper>(); List contasPendentes = this.repositorioGerencialCobranca .getContasPendentes(idQuadra); for (int i = 0; i < contasPendentes.size(); i++) { Object obj = contasPendentes.get(i); if (obj instanceof Object[]) { Object[] linha = (Object[]) obj; ResumoPendenciaContasGerenciaHelper helper = new ResumoPendenciaContasGerenciaHelper( (Integer) linha[0], // Gerencia Regional (Integer) linha[1], // Unidade Negocio (Integer) linha[2], // Elo (Integer) linha[3], // Localidade (Integer) linha[4], // Setor Comercial (Integer) linha[5], // Rota (Integer) linha[6], // Quadra (Integer) linha[7], // Codigo Setor Comercial (Integer) linha[8], // Numero da quadra (Integer) linha[9], // Perfil do imovel (Integer) linha[10], // Situacao Ligacao Agua (Integer) linha[11], // Situacao Ligacao Esgoto (Integer) linha[12], // Perfil liga��o Agua (Integer) linha[13], // Perfil liga��o Esgoto (Integer) linha[14], // Volume Fixado Agua (Integer) linha[15], // Volume Fixado Agua (Integer) linha[16], // Volume Fixado Esgoto new Integer(1), // Tipo do documento (Integer) linha[17], // Ano mes de referencia documento (Integer) linha[18], // Referencia do vencimento da conta (BigDecimal) linha[20], // Valor da agua (BigDecimal) linha[21], // Valor do Esgoto (BigDecimal) linha[22], // Valor dos debitos (BigDecimal) linha[23], // Valor dos cr�ditos (BigDecimal) linha[24], // Valor do imposto (Integer) linha[26], // Tarifa de Consumo (Short) linha[28]); // codigo rota Integer idImovel = (Integer) linha[19]; // Codigo do imovel que esta sendo processado Integer maiorReferenciaConta = (Integer) linha[27]; // Pesquisamos a esfera de poder do cliente responsavel helper.setIdEsferaPoder( this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper.setIdTipoClienteResponsavel( this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdPrincipalCategoriaImovel(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this.getControladorImovel().obterPrincipalSubcategoria( categoria.getId(), idImovel ); if (subcategoria != null) { helper.setIdPrincipalSubCategoriaImovel( subcategoria.getComp_id().getSubcategoria().getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaPoder( clienteTemp.getClienteTipo().getEsferaPoder().getId()); } } if (helper.getIdTipoClienteResponsavel().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdTipoClienteResponsavel(clienteTemp .getClienteTipo().getId()); } } // Verificamos se o helper que foi criado � referente a ultima // conta do imovel selecionado if ( helper.getAnoMesReferenciaDocumento().equals( maiorReferenciaConta ) ) { helper.setQuantidadeLigacoes(1); } // Verificamos se o objeto ja possue uma quebra cadastrada if (quebra.contains(helper)) { int posicao = quebra.indexOf(helper); ResumoPendenciaContasGerenciaHelper jaCadastrado = (ResumoPendenciaContasGerenciaHelper) quebra.get(posicao); jaCadastrado.setQuantidadeLigacoes( jaCadastrado.getQuantidadeLigacoes() + helper.getQuantidadeLigacoes()); jaCadastrado.setQuantidadeDocumentos( jaCadastrado.getQuantidadeDocumentos() + 1); jaCadastrado.setValorPendenteAgua( jaCadastrado.getValorPendenteAgua().add( helper.getValorPendenteAgua() ) ); jaCadastrado.setValorPendenteEsgoto( jaCadastrado.getValorPendenteEsgoto().add( helper.getValorPendenteEsgoto() ) ); jaCadastrado.setValorPendenteCredito( jaCadastrado.getValorPendenteCredito().add( helper.getValorPendenteCredito() ) ); jaCadastrado.setValorPendenteDebito( jaCadastrado.getValorPendenteDebito().add( helper.getValorPendenteDebito() ) ); jaCadastrado.setValorPendenteImposto( jaCadastrado.getValorPendenteImposto().add( helper.getValorPendenteImposto())); } else { quebra.add(helper); } } obj = null; } // Devemos gravar como anomes de arrecadacao -1 SistemaParametro sistema = getControladorUtil().pesquisarParametrosDoSistema(); Integer anoMesArrecadacaoMenosUm = Util.subtrairMesDoAnoMes( sistema.getAnoMesArrecadacao(), 1); // Inserirmos manualmente, por quest�o de performace for (int j = 0; j < quebra.size(); j++) { this.repositorioGerencialCobranca.inserirPendenciaContasGerencia( anoMesArrecadacaoMenosUm, (ResumoPendenciaContasGerenciaHelper) quebra.get(j)); } } /** * Gera a segunda parte do resumo de pendencias ATENCAO - ESSA IMPLEMENTACAO * NAO SERA UTILIZADA AGORA [SB0001B] * * @author Bruno Barros * @date 19/07/2007 */ /* private void gerarResumoPendenciaContaRegiao(int idSetor) throws ControladorException, ErroRepositorioException { // System.out.println( " ***RESUMO DE PENDENCIAS DAS CONTAS POR REGIAO - // LOCALIDADE " + idLocalidade + "***"); List contasPendentesRegiao = this.repositorioGerencialCobranca .getContasPendentesPorRegiao(idSetor); List<ResumoPendenciaContasRegiaoHelper> quebra = new ArrayList(); for (int i = 0; i < contasPendentesRegiao.size(); i++) { // System.out.println( " ***Agrupando objeto " + i + " de " + // contasPendentesRegiao.size() + " da localidade " + idLocalidade + // "***"); Object obj = contasPendentesRegiao.get(i); if (obj instanceof Object[]) { Object[] linha = (Object[]) obj; ResumoPendenciaContasRegiaoHelper helper = new ResumoPendenciaContasRegiaoHelper( (Integer) linha[0], // Regiao (Integer) linha[1], // MicroRegiao (Integer) linha[2], // Municipio (Integer) linha[3], // Bairro (Integer) linha[4], // Perfil de Imovel (Integer) linha[5], // Situacao de Agua (Integer) linha[6], // Situacao de Esgoto (Integer) linha[7], // Possue Hidrometro (Integer) linha[8], // Volume fixo Agua (Integer) linha[9], // Volume fixo Esgoto new Integer(1), // Tipo de documento (Integer) linha[10], // Referencia do Documento (Integer) linha[11], // Referencia do vencimento da // conta (BigDecimal) linha[12], // Valor da agua (BigDecimal) linha[13], // Valor do Esgoto (BigDecimal) linha[14], // Valor dos debitos (BigDecimal) linha[15], // Valor dos cr�ditos (BigDecimal) linha[16]); // Valor do imposto Integer idImovel = (Integer) linha[17]; // Codigo do imovel que // esta sendo processado // Pesquisamos a esfera de poder do cliente responsavel helper .setIdEsferaPoder(this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper .setIdTipoClienteResponsavel(this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdPrincipalCategoria(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel().obterPrincipalSubcategoria( categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdPrincipalSubCategoria(subcategoria .getComp_id().getSubcategoria().getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaPoder(clienteTemp.getClienteTipo() .getEsferaPoder().getId()); } } if (helper.getIdTipoClienteResponsavel().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdTipoClienteResponsavel(clienteTemp .getClienteTipo().getId()); } } // Verificamos se o objeto ja possue uma quebra cadastrada if (quebra.contains(helper)) { int posicao = quebra.indexOf(helper); ResumoPendenciaContasRegiaoHelper jaCadastrado = (ResumoPendenciaContasRegiaoHelper) quebra .get(posicao); // Incrementamos as quantidades e somamos os valores jaCadastrado.setQuantidadeLigacoes(jaCadastrado .getQuantidadeLigacoes() + 1); jaCadastrado.setQuantidadeDocumentos(jaCadastrado .getQuantidadeDocumentos() + 1); jaCadastrado.setValorPendenteAgua(jaCadastrado .getValorPendenteAgua().add( helper.getValorPendenteAgua())); jaCadastrado.setValorPendenteEsgoto(jaCadastrado .getValorPendenteEsgoto().add( helper.getValorPendenteEsgoto())); jaCadastrado.setValorPendenteCredito(jaCadastrado .getValorPendenteCredito().add( helper.getValorPendenteCredito())); jaCadastrado.setValorPendenteDebito(jaCadastrado .getValorPendenteDebito().add( helper.getValorPendenteDebito())); jaCadastrado.setValorPendenteImposto(jaCadastrado .getValorPendenteImposto().add( helper.getValorPendenteImposto())); } else { quebra.add(helper); } } } // Devemos gravar como anomes de arrecadacao -1 SistemaParametro sistema = getControladorUtil() .pesquisarParametrosDoSistema(); Integer anoMesArrecadacaoMenosUm = Util.subtrairMesDoAnoMes(sistema .getAnoMesArrecadacao(), 1); // Inserirmos manualmente, por quest�o de performace for (int j = 0; j < quebra.size(); j++) { // this.repositorioGerencialCobranca.inserirPendenciaContasGerencia( // anoMesArrecadacaoMenosUm, (ResumoPendenciaContasRegiaoHelper) // quebra.get(j) ); } } */ /** * Gera a terceira parte do resumo de pendencias [SB0002A] * * @author Bruno Barros * @date 01/08/2007 */ private void gerarResumoPendenciaGuiasPagamentoGerencia(int idQuadra) throws ControladorException, ErroRepositorioException { List guiasPendentes = this.repositorioGerencialCobranca .getGuiasPagamentoGerencia(idQuadra); List<ResumoPendenciaGuiasPagamentoGerenciaHelper> quebra = new ArrayList(); for (int i = 0; i < guiasPendentes.size(); i++) { Object obj = guiasPendentes.get(i); if (obj instanceof Object[]) { Object[] linha = (Object[]) obj; ResumoPendenciaGuiasPagamentoGerenciaHelper helper = new ResumoPendenciaGuiasPagamentoGerenciaHelper( (Integer) linha[0], // Gerencia Regional (Integer) linha[1], // Unidade Negocio (Integer) linha[2], // Elo (Integer) linha[3], // Localidade (Integer) linha[4], // Setor Comercial (Integer) linha[5], // Rota (Integer) linha[6], // Quadra (Integer) linha[7], // Codigo Setor Comercial (Integer) linha[8], // Numero da quadra (Integer) linha[9], // Perfil do imovel (Integer) linha[10], // Situacao Ligacao Agua (Integer) linha[11], // Situacao Ligacao Esgoto (Integer) linha[12], // Perfil liga��o Agua (Integer) linha[13], // Perfil liga��o Esgoto (Integer) linha[14], // Volume Fixado Agua (Integer) linha[15], // Volume Fixado Agua (Integer) linha[16], // Volume Fixado Esgoto new Integer(7), // Tipo do documento (Integer) linha[17], // Ano mes de referencia documento (Integer) linha[18], // Tipo do financiamento (Integer) linha[19], // Referencia do vencimento da conta (BigDecimal) linha[20],// Valor dos debitos (Integer) linha[22], // Tipo da tarifa de Consumo (Short) linha[23]); // codigo rota // Codigo do imovel que esta sendo processado Integer idImovel = (Integer) linha[21]; // Pesquisamos a esfera de poder do cliente responsavel helper.setIdEsferaPoder( this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper.setIdTipoClienteResponsavel( this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdPrincipalCategoriaImovel(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel().obterPrincipalSubcategoria( categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdPrincipalSubCategoriaImovel(subcategoria .getComp_id().getSubcategoria().getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaPoder(clienteTemp.getClienteTipo().getEsferaPoder().getId()); } } if (helper.getIdTipoClienteResponsavel().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdTipoClienteResponsavel(clienteTemp .getClienteTipo().getId()); } } // Verificamos se o objeto ja possue uma quebra cadastrada if (quebra.contains(helper)) { int posicao = quebra.indexOf(helper); ResumoPendenciaGuiasPagamentoGerenciaHelper jaCadastrado = (ResumoPendenciaGuiasPagamentoGerenciaHelper) quebra.get(posicao); jaCadastrado.setQuantidadeDocumentos( jaCadastrado.getQuantidadeDocumentos() + 1); jaCadastrado.setValorPendenteDebito( jaCadastrado.getValorPendenteDebito().add( helper.getValorPendenteDebito())); } else { quebra.add(helper); } } } // Devemos gravar como anomes de arrecadacao -1 SistemaParametro sistema = getControladorUtil().pesquisarParametrosDoSistema(); Integer anoMesArrecadacaoMenosUm = Util.subtrairMesDoAnoMes(sistema.getAnoMesArrecadacao(), 1); // Inserirmos manualmente, por quest�o de performace for (int j = 0; j < quebra.size(); j++) { this.repositorioGerencialCobranca .inserirGuiasPagamentoGerencia( anoMesArrecadacaoMenosUm, (ResumoPendenciaGuiasPagamentoGerenciaHelper) quebra .get(j)); } } /** * Gera a terceira parte do resumo de pendencias [SB0003A] * * @author Bruno Barros * @date 06/08/2007 */ private void gerarResumoPendenciaDebitosACobrarGerencia(int idQuadra) throws ControladorException, ErroRepositorioException { List debitosACobrar = this.repositorioGerencialCobranca .getDebitosACobrarGerencia(idQuadra); List<ResumoPendenciaDebitosACobrarGerenciaHelper> quebra = new ArrayList(); for (int i = 0; i < debitosACobrar.size(); i++) { Object obj = debitosACobrar.get(i); if (obj instanceof Object[]) { Object[] linha = (Object[]) obj; ResumoPendenciaDebitosACobrarGerenciaHelper helper = new ResumoPendenciaDebitosACobrarGerenciaHelper( (Integer) linha[0], // Gerencia Regional (Integer) linha[1], // Unidade Negocio (Integer) linha[2], // Elo (Integer) linha[3], // Localidade (Integer) linha[4], // Setor Comercial (Integer) linha[5], // Rota (Integer) linha[6], // Quadra (Integer) linha[7], // Codigo Setor Comercial (Integer) linha[8], // Numero da quadra (Integer) linha[9], // Perfil do imovel (Integer) linha[10], // Situacao Ligacao Agua (Integer) linha[11], // Situacao Ligacao Esgoto (Integer) linha[12], // Perfil liga��o Agua (Integer) linha[13], // Perfil liga��o Esgoto (Integer) linha[14], // Indicador de Hidrometro (Integer) linha[15], // Volume Fixado Agua (Integer) linha[16], // Volume Fixado Esgoto new Integer(6), // Tipo do documento (Integer) linha[17], // Referencia do vencimento da conta (Integer) linha[18], // Tipo de Financiamento (BigDecimal) linha[19], // Valor dos debitos (Integer) linha[21], (Short) linha[22]); // Tipo de Tarifa de Consumo // Codigo do imovel que esta sendo processado Integer idImovel = (Integer) linha[20]; // Pesquisamos a esfera de poder do cliente responsavel helper.setIdEsferaPoder( this.repositorioGerencialCadastro.pesquisarEsferaPoderClienteResponsavelImovel(idImovel) ); // Pesquisamos o tipo de cliente responsavel do imovel helper.setIdTipoClienteResponsavel( this.repositorioGerencialCadastro.pesquisarTipoClienteClienteResponsavelImovel(idImovel) ); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdPrincipalCategoriaImovel(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this.getControladorImovel().obterPrincipalSubcategoria( categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdPrincipalSubCategoriaImovel(subcategoria .getComp_id().getSubcategoria().getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel().consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaPoder( clienteTemp.getClienteTipo().getEsferaPoder().getId()); } } if (helper.getIdTipoClienteResponsavel().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel().consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdTipoClienteResponsavel( clienteTemp.getClienteTipo().getId()); } } // Verificamos se o objeto ja possue uma quebra cadastrada if (quebra.contains(helper)) { int posicao = quebra.indexOf(helper); ResumoPendenciaDebitosACobrarGerenciaHelper jaCadastrado = (ResumoPendenciaDebitosACobrarGerenciaHelper) quebra.get(posicao); jaCadastrado.setQuantidadeDocumentos( jaCadastrado.getQuantidadeDocumentos() + 1); jaCadastrado.setValorPendenteDebito( jaCadastrado.getValorPendenteDebito().add( helper.getValorPendenteDebito() ) ); } else { quebra.add(helper); } } } // Devemos gravar como anomes de arrecadacao -1 SistemaParametro sistema = getControladorUtil().pesquisarParametrosDoSistema(); Integer anoMesArrecadacaoMenosUm = Util.subtrairMesDoAnoMes(sistema.getAnoMesArrecadacao(), 1); // Inserirmos manualmente, por quest�o de performace for (int j = 0; j < quebra.size(); j++) { this.repositorioGerencialCobranca .inserirPendendiciaDebitosACobrarGerencia( anoMesArrecadacaoMenosUm, (ResumoPendenciaDebitosACobrarGerenciaHelper) quebra.get(j)); } } /** * Gera a ultima parte do resumo de pendencias [SB0004A] * * @author Bruno Barros * @date 06/08/2007 */ private void gerarResumoPendenciaCreditosARealizarGerencia(int idQuadra) throws ControladorException, ErroRepositorioException { List creditosARealizar = this.repositorioGerencialCobranca .getCreditoARealizarGerencia(idQuadra); List<ResumoPendenciaCreditoARealizarGerenciaHelper> quebra = new ArrayList<ResumoPendenciaCreditoARealizarGerenciaHelper>(); for (int i = 0; i < creditosARealizar.size(); i++) { Object obj = creditosARealizar.get(i); if (obj instanceof Object[]) { Object[] linha = (Object[]) obj; // Calcula o valor do credito BigDecimal valorCredito = BigDecimal.ZERO; Short numeroPrestacaoCredito = 0; Short numeroPrestacaoRealizada = 0; BigDecimal valorResidualMesAnterior = BigDecimal.ZERO; BigDecimal resultado = BigDecimal.ZERO; if ( linha[18] != null && linha[22] != null && linha[23]!= null && linha[24] != null ){ valorCredito = (BigDecimal) linha[18]; numeroPrestacaoCredito = (Short) linha[22]; numeroPrestacaoRealizada = (Short) linha[23]; valorResidualMesAnterior = (BigDecimal) linha[24]; resultado = BigDecimal.ZERO; resultado = ( valorCredito.subtract( (valorCredito.divide( new BigDecimal(numeroPrestacaoCredito), BigDecimal.ROUND_HALF_UP)).multiply( new BigDecimal(numeroPrestacaoRealizada)) )).add( valorResidualMesAnterior); } ResumoPendenciaCreditoARealizarGerenciaHelper helper = new ResumoPendenciaCreditoARealizarGerenciaHelper( (Integer) linha[0], // Gerencia Regional (Integer) linha[1], // Unidade Negocio (Integer) linha[2], // Elo (Integer) linha[3], // Localidade (Integer) linha[4], // Setor Comercial (Integer) linha[5], // Rota (Integer) linha[6], // Quadra (Integer) linha[7], // Codigo Setor Comercial (Integer) linha[8], // Numero da quadra (Integer) linha[9], // Perfil do imovel (Integer) linha[10], // Situacao Ligacao Agua (Integer) linha[11], // Situacao Ligacao Esgoto (Integer) linha[12], // Perfil liga��o Agua (Integer) linha[13], // Perfil liga��o Esgoto (Integer) linha[14], // Indicador de Hidrometro (Integer) linha[15], // Volume Fixado Agua (Integer) linha[16], // Volume Fixado Esgoto new Integer(10), // Tipo do documento (Integer) linha[17], // Ano mes de referencia documento resultado, // Valor dos Creditos (Integer) linha[20], (Short) linha[21]); // Tipo de Tarifa de consumo // Codigo do imovel que esta sendo processado Integer idImovel = (Integer) linha[19]; // Pesquisamos a esfera de poder do cliente responsavel helper.setIdEsferaPoder( this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper.setIdTipoClienteResponsavel( this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdPrincipalCategoriaImovel(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this.getControladorImovel().obterPrincipalSubcategoria( categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdPrincipalSubCategoriaImovel( subcategoria.getComp_id().getSubcategoria().getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaPoder( clienteTemp.getClienteTipo().getEsferaPoder().getId()); } } if (helper.getIdTipoClienteResponsavel().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if ( clienteTemp != null ) { helper.setIdTipoClienteResponsavel( clienteTemp.getClienteTipo().getId()); } } // Verificamos se o objeto ja possue uma quebra cadastrada if (quebra.contains(helper)) { int posicao = quebra.indexOf(helper); ResumoPendenciaCreditoARealizarGerenciaHelper jaCadastrado = (ResumoPendenciaCreditoARealizarGerenciaHelper) quebra.get(posicao); jaCadastrado.setQuantidadeDocumentos( jaCadastrado.getQuantidadeDocumentos() + 1); jaCadastrado.setValorPendenteCredito( jaCadastrado.getValorPendenteCredito().add( helper.getValorPendenteCredito())); } else { quebra.add(helper); } } } // Devemos gravar como anomes de arrecadacao -1 SistemaParametro sistema = getControladorUtil().pesquisarParametrosDoSistema(); Integer anoMesArrecadacaoMenosUm = Util.subtrairMesDoAnoMes(sistema.getAnoMesArrecadacao(), 1); // Inserirmos manualmente, por quest�o de performace for (int j = 0; j < quebra.size(); j++) { this.repositorioGerencialCobranca .inserirPendendiciaCreditosARealizerGerencia( anoMesArrecadacaoMenosUm, (ResumoPendenciaCreditoARealizarGerenciaHelper) quebra.get(j)); } } /** * Este caso de uso permite consultar o resumo da pend�ncia, com a op��o de * impress�o da consulta. Dependendo da op��o de totaliza��o sempre � gerado * o relat�rio, sem a fera��o da consulta. [UC0338] Consultar Resumo da * Pend�ncia Gera a lista de pend�ncias das Contas e Guias de Pagamento * consultarResumoPendencia * * @author Roberta Costa * @date 24/05/2006 * @param informarDadosGeracaoRelatorioConsultaHelper * @return * @throws ControladorException */ public List consultarResumoPendencia( InformarDadosGeracaoRelatorioConsultaHelper informarDadosGeracaoRelatorioConsultaHelper) throws ControladorException { try { // [FS0001] Verificar exist�ncia de dados para o ano/m�s de // refer�ncia retornado String resumo = ResumoPendencia.class.getName(); Integer countResumoPendencia = this.repositorioGerencialCobranca .verificarExistenciaAnoMesReferenciaResumo( informarDadosGeracaoRelatorioConsultaHelper .getAnoMesReferencia(), resumo); if (countResumoPendencia == null || countResumoPendencia == 0) { throw new ControladorException( "atencao.nao_existe_resumo_pendencia", null, Util .formatarAnoMesParaMesAno(informarDadosGeracaoRelatorioConsultaHelper .getAnoMesReferencia())); } List retorno = this.repositorioGerencialCobranca .consultarResumoPendencia(informarDadosGeracaoRelatorioConsultaHelper); // [FS0007] Nenhum registro encontrado if (retorno == null || retorno.equals("")) { throw new ControladorException( "atencao.pesquisa.nenhumresultado"); } return retorno; } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * CASO DE USO: CONSULTAR RESUMO DE SITUACAO ESPECIAL DE COBRANCA AUTOR: * TIAGO MORENO RODRIGUES DATA: 26/05/2006 */ public Collection<ResumoCobrancaSituacaoEspecialConsultaGerenciaRegHelper> recuperaResumoSituacaoEspecialCobranca( ConsultarResumoSituacaoEspecialHelper helper) throws ControladorException { Collection<ResumoCobrancaSituacaoEspecialConsultaGerenciaRegHelper> resumoCobrancaSituacaoEspecialConsultaGerenciaRegHelper = null; try { Integer[] idsSituacaoTipo = helper.getSituacaoTipo(); if (idsSituacaoTipo != null) { if (idsSituacaoTipo.length == 1 && idsSituacaoTipo[0] == 0) { idsSituacaoTipo = null; } } Integer[] idsSituacaoMotivo = helper.getSituacaoMotivo(); if (idsSituacaoMotivo != null) { if (idsSituacaoMotivo.length == 1 && idsSituacaoMotivo[0] == 0) { idsSituacaoMotivo = null; } } helper.setSituacaoTipo(idsSituacaoTipo); helper.setSituacaoMotivo(idsSituacaoMotivo); resumoCobrancaSituacaoEspecialConsultaGerenciaRegHelper = this .pesquisarResumoCobrancaSituacaoEspecialConsultaGerenciaRegionalHelper(helper); for (ResumoCobrancaSituacaoEspecialConsultaGerenciaRegHelper helperGerencia : resumoCobrancaSituacaoEspecialConsultaGerenciaRegHelper) { // Objeto utilizado para as consultar internas dos loops ConsultarResumoSituacaoEspecialHelper helperClone = new ConsultarResumoSituacaoEspecialHelper(); helperClone.setIdGerenciaRegional(helperGerencia .getIdGerenciaRegional().toString()); helperClone.setIdUnidadeNegocio(helper.getIdUnidadeNegocio()); helperClone.setIdLocalidadeInicial(helper .getIdLocalidadeInicial()); helperClone.setIdLocalidadeFinal(helper.getIdLocalidadeFinal()); helperClone.setCodigoSetorComercialInicial(helper .getCodigoSetorComercialInicial()); helperClone.setCodigoSetorComercialFinal(helper .getCodigoSetorComercialFinal()); helperClone.setCodigoRotaInicial(helper.getCodigoRotaInicial()); helperClone.setCodigoRotaFinal(helper.getCodigoRotaFinal()); helperClone.setSituacaoTipo(helper.getSituacaoTipo()); helperClone.setSituacaoMotivo(helper.getSituacaoMotivo()); Collection<ResumoCobrancaSituacaoEspecialConsultaUnidadeNegHelper> resumoCobrancaSituacaoEspecialConsultaUnidadeNegHelper = this .pesquisarResumoCobrancaSituacaoEspecialConsultaUnidadeNegocioHelper(helperClone); helperGerencia .setResumoCobrancaSituacaoEspecialConsultaUnidadeNegHelper(resumoCobrancaSituacaoEspecialConsultaUnidadeNegHelper); BigDecimal totalPercentualGerencia = new BigDecimal("0.00"); BigDecimal totalFatEstimadoGerencia = new BigDecimal("0.00"); Integer totalQtLigacoesGerencia = new Integer("0"); for (ResumoCobrancaSituacaoEspecialConsultaUnidadeNegHelper helperUnidadeNegocio : resumoCobrancaSituacaoEspecialConsultaUnidadeNegHelper) { helperClone.setIdUnidadeNegocio(helperUnidadeNegocio .getIdUnidadeNegocio().toString()); Collection<ResumoCobrancaSituacaoEspecialConsultaLocalidadeHelper> resumoCobrancaSituacaoEspecialConsultaLocalidadeHelper = this .pesquisarResumoCobrancaSituacaoEspecialConsultaLocalidadeHelper(helperClone); helperUnidadeNegocio .setResumoCobrancaSituacaoEspecialConsultaLocalidadeHelper(resumoCobrancaSituacaoEspecialConsultaLocalidadeHelper); BigDecimal totalPercentualUnidadeNegocio = new BigDecimal( "0.00"); BigDecimal totalFatEstimadoUnidadeNegocio = new BigDecimal( "0.00"); Integer totalQtLigacoesUnidadeNegocio = new Integer("0"); for (ResumoCobrancaSituacaoEspecialConsultaLocalidadeHelper helperLocalidade : resumoCobrancaSituacaoEspecialConsultaLocalidadeHelper) { helperClone.setIdLocalidadeInicial(helperLocalidade .getIdLocalidade().toString()); helperClone.setIdLocalidadeFinal(helperLocalidade .getIdLocalidade().toString()); Collection<ResumoCobrancaSituacaoEspecialConsultaSetorComercialHelper> resumoCobrancaSituacaoEspecialConsultaSetorComercialHelper = this .pesquisarResumoCobrancaSituacaoEspecialConsultaSetorComercialHelper(helperClone); helperLocalidade .setResumoCobrancaSituacaoEspecialConsultaSetorComercialHelper(resumoCobrancaSituacaoEspecialConsultaSetorComercialHelper); BigDecimal totalPercentualLocalidade = new BigDecimal( "0.00"); BigDecimal totalFatEstimadoLocalidade = new BigDecimal( "0.00"); Integer totalQtLigacoesLocalidade = new Integer("0"); for (ResumoCobrancaSituacaoEspecialConsultaSetorComercialHelper helperSetorComercial : resumoCobrancaSituacaoEspecialConsultaSetorComercialHelper) { helperClone .setCodigoSetorComercialInicial(helperSetorComercial .getCodigoSetorComercial() .toString()); helperClone .setCodigoSetorComercialFinal(helperSetorComercial .getCodigoSetorComercial() .toString()); Collection<ResumoCobrancaSituacaoEspecialConsultaSitTipoHelper> resumoCobrancaSituacaoEspecialConsultaSitTipoHelper = this .pesquisarResumoCobrancaSituacaoEspecialConsultaSitTipoHelper(helperClone); helperSetorComercial .setResumoCobrancaSituacaoEspecialConsultaSitTipoHelper(resumoCobrancaSituacaoEspecialConsultaSitTipoHelper); BigDecimal totalPercentualSetorComercial = new BigDecimal( "0.00"); BigDecimal totalFatEstimadoSetorComercial = new BigDecimal( "0.00"); Integer totalQtLigacoesSetorComercial = new Integer( "0"); for (ResumoCobrancaSituacaoEspecialConsultaSitTipoHelper helperSitTipo : resumoCobrancaSituacaoEspecialConsultaSitTipoHelper) { Integer[] idSituacaoTipo = new Integer[1]; idSituacaoTipo[0] = helperSitTipo .getIdSituacaoTipo(); helperClone.setSituacaoTipo(idSituacaoTipo); Collection<ResumoCobrancaSituacaoEspecialConsultaMotivoHelper> resumoCobrancaSituacaoEspecialConsultaMotivoHelper = this .pesquisarResumoCobrancaSituacaoEspecialConsultaMotivoHelper(helperClone); helperSitTipo .setResumoCobrancaSituacaoEspecialConsultaMotivoHelper(resumoCobrancaSituacaoEspecialConsultaMotivoHelper); BigDecimal totalPercentualSitTipo = new BigDecimal( "0.00"); BigDecimal totalFatEstimadoSitTipo = new BigDecimal( "0.00"); Integer totalQtLigacoesSitTipo = new Integer( "0"); for (ResumoCobrancaSituacaoEspecialConsultaMotivoHelper helperMotivo : resumoCobrancaSituacaoEspecialConsultaMotivoHelper) { // Calculando o Cobranca Estimado por Motivo Integer anoMesInicio = helperMotivo .getAnoMesInicio() - 1; Collection<ResumoCobrancaSituacaoEspecialConsultaFatEstimadoHelper> resumoCobrancaSituacaoEspecialConsultaFatEstimadoHelper = this .pesquisarResumoCobrancaSituacaoEspecialConsultaFatEstimadoHelper( helperClone, anoMesInicio); BigDecimal fatEstimado = (BigDecimal) resumoCobrancaSituacaoEspecialConsultaFatEstimadoHelper .iterator().next() .getFaturamentoEstimado().setScale( 2, RoundingMode.HALF_UP); String fatEstimadoFormatado = Util .formatarMoedaReal(fatEstimado); helperMotivo .setFaturamentoEstimado(fatEstimado); helperMotivo .setValorFaturamentoEstimadoFormatado(fatEstimadoFormatado); if (fatEstimado != null) { totalFatEstimadoSitTipo = totalFatEstimadoSitTipo .add(fatEstimado); } // Calculando a Qt de Ligacoes por Motivo Integer anoMesInicioReal = helperMotivo .getAnoMesInicio(); Integer qtLigacoes = this.repositorioGerencialCobranca .pesquisarResumoCobrancaSituacaoEspecialConsultaQtLigacoesHelper( helperClone, anoMesInicioReal); helperMotivo.setQtLigacoes(qtLigacoes); if (qtLigacoes != null) { totalQtLigacoesSitTipo = totalQtLigacoesSitTipo + qtLigacoes; } BigDecimal qtParalizada = new BigDecimal( helperMotivo.getQtParalisada()); // calculando o percentual BigDecimal i = new BigDecimal("100"); BigDecimal percentual = new BigDecimal( "0.00"); if (qtParalizada != null && qtLigacoes != null && qtLigacoes != 0) { BigDecimal qtLigacoesBigDecimal = new BigDecimal( qtLigacoes); percentual = (qtParalizada.multiply(i)); percentual = percentual.divide( qtLigacoesBigDecimal, 2, RoundingMode.HALF_UP); } helperMotivo.setPercentual(percentual); } helperSitTipo .setTotalFatEstimadoSitTipo(totalFatEstimadoSitTipo); totalFatEstimadoSetorComercial = totalFatEstimadoSetorComercial .add(totalFatEstimadoSitTipo).setScale( 2, RoundingMode.HALF_UP); // total Qt ligacoes helperSitTipo .setTotalQtLigacoesSitTipo(totalQtLigacoesSitTipo); totalQtLigacoesSetorComercial = totalQtLigacoesSetorComercial + totalQtLigacoesSitTipo; // total percentual Situacao Tipo BigDecimal qtParalizadaSitTipo = new BigDecimal( helperSitTipo.getTotalSituacaoTipo()); BigDecimal i = new BigDecimal("100"); if (qtParalizadaSitTipo != null && totalQtLigacoesSitTipo != null && totalQtLigacoesSitTipo != 0) { totalPercentualSitTipo = (qtParalizadaSitTipo .multiply(i)); totalPercentualSitTipo = totalPercentualSitTipo .divide(new BigDecimal( totalQtLigacoesSitTipo), 2, RoundingMode.HALF_UP); } helperSitTipo .setTotalPercentualSitTipo(totalPercentualSitTipo); helperClone.setSituacaoTipo(helper .getSituacaoTipo()); } // total fat estimado Setor Comercial helperSetorComercial .setTotalFatEstimadoSetorComercial(totalFatEstimadoSetorComercial); totalFatEstimadoLocalidade = totalFatEstimadoLocalidade .add(totalFatEstimadoSetorComercial) .setScale(2, RoundingMode.HALF_UP); // total ligacoes Setor Comercial helperSetorComercial .setTotalQtLigacoesSetorComercial(totalQtLigacoesSetorComercial); totalQtLigacoesLocalidade = totalQtLigacoesLocalidade + totalQtLigacoesSetorComercial; // total percentual Setor Comercial BigDecimal qtParalizadaSetorComercial = new BigDecimal( helperSetorComercial .getTotalSetorComercial()); BigDecimal i = new BigDecimal("100"); if (qtParalizadaSetorComercial != null && totalQtLigacoesSetorComercial != null && totalQtLigacoesSetorComercial != 0) { totalPercentualSetorComercial = (qtParalizadaSetorComercial .multiply(i)); totalPercentualSetorComercial = totalPercentualSetorComercial .divide(new BigDecimal( totalQtLigacoesSetorComercial), 2, RoundingMode.HALF_UP); } helperSetorComercial .setTotalPercentualSetorComercial(totalPercentualSetorComercial); helperClone.setCodigoSetorComercialInicial(helper .getCodigoSetorComercialInicial()); helperClone.setCodigoSetorComercialFinal(helper .getCodigoSetorComercialFinal()); } // total fat estimado Localidade helperLocalidade .setTotalFatEstimadoLocalidade(totalFatEstimadoLocalidade); totalFatEstimadoUnidadeNegocio = totalFatEstimadoUnidadeNegocio .add(totalFatEstimadoLocalidade).setScale(2, RoundingMode.HALF_UP); // total ligacoes Localidade helperLocalidade .setTotalQtLigacoesLocalidade(totalQtLigacoesLocalidade); totalQtLigacoesUnidadeNegocio = totalQtLigacoesUnidadeNegocio + totalQtLigacoesLocalidade; // total percentual Localidade BigDecimal qtParalizadaLocalidade = new BigDecimal( helperLocalidade.getTotalLocalidade()); BigDecimal i = new BigDecimal("100"); if (qtParalizadaLocalidade != null && totalQtLigacoesLocalidade != null && totalQtLigacoesLocalidade != 0) { totalPercentualLocalidade = (qtParalizadaLocalidade .multiply(i)); totalPercentualLocalidade = totalPercentualLocalidade .divide(new BigDecimal( totalQtLigacoesLocalidade), 2, RoundingMode.HALF_UP); } helperLocalidade .setTotalPercentualLocalidade(totalPercentualLocalidade); helperClone.setIdLocalidadeInicial(helper .getIdLocalidadeInicial()); helperClone.setIdLocalidadeFinal(helper .getIdLocalidadeFinal()); } // total percentual Unidade Negocio helperUnidadeNegocio .setTotalFatEstimadoUnidadeNegocio(totalFatEstimadoUnidadeNegocio); totalFatEstimadoGerencia = totalFatEstimadoGerencia.add( totalFatEstimadoUnidadeNegocio).setScale(2, RoundingMode.HALF_UP); // total ligacoes Unidade Negocio helperUnidadeNegocio .setTotalQtLigacoesUnidadeNegocio(totalQtLigacoesUnidadeNegocio); totalQtLigacoesGerencia = totalQtLigacoesGerencia + totalQtLigacoesUnidadeNegocio; // total percentual Unidade Negocio BigDecimal qtParalizadaUnidadeNegocio = new BigDecimal( helperUnidadeNegocio.getTotalUnidadeNegocio()); BigDecimal i = new BigDecimal("100"); if (qtParalizadaUnidadeNegocio != null && totalQtLigacoesUnidadeNegocio != null && totalQtLigacoesUnidadeNegocio != 0) { totalPercentualUnidadeNegocio = (qtParalizadaUnidadeNegocio .multiply(i)); totalPercentualUnidadeNegocio = totalPercentualUnidadeNegocio .divide(new BigDecimal( totalQtLigacoesUnidadeNegocio), 2, RoundingMode.HALF_UP); } helperUnidadeNegocio .setTotalPercentualUnidadeNegocio(totalPercentualUnidadeNegocio); helperClone.setIdUnidadeNegocio(helper .getIdUnidadeNegocio()); } // total percentual Gerencia helperGerencia .setTotalFatEstimadoGerencia(totalFatEstimadoGerencia); // total das ligacoes Gerencia helperGerencia .setTotalQtLigacoesGerencia(totalQtLigacoesGerencia); // total percentual Gerencia BigDecimal qtParalizadaGerencia = new BigDecimal(helperGerencia .getTotalGerenciaRegional()); BigDecimal i = new BigDecimal("100"); if (qtParalizadaGerencia != null && totalQtLigacoesGerencia != null && totalQtLigacoesGerencia != 0) { totalPercentualGerencia = (qtParalizadaGerencia.multiply(i)); totalPercentualGerencia = totalPercentualGerencia.divide( new BigDecimal(totalQtLigacoesGerencia), 2, RoundingMode.HALF_UP); } helperGerencia .setTotalPercentualGerencia(totalPercentualGerencia); helperClone.setIdGerenciaRegional(helper .getIdGerenciaRegional()); } } catch (ErroRepositorioException ex) { ex.printStackTrace(); sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } return resumoCobrancaSituacaoEspecialConsultaGerenciaRegHelper; } private Collection<ResumoCobrancaSituacaoEspecialConsultaGerenciaRegHelper> pesquisarResumoCobrancaSituacaoEspecialConsultaGerenciaRegionalHelper(ConsultarResumoSituacaoEspecialHelper helper) { Collection<ResumoCobrancaSituacaoEspecialConsultaGerenciaRegHelper> retorno = new ArrayList<ResumoCobrancaSituacaoEspecialConsultaGerenciaRegHelper>(); try { Collection<Object[]> colecaoDados = this.repositorioGerencialCobranca .pesquisarResumoCobrancaSituacaoEspecialConsultaGerenciaRegionalHelper(helper); for (Object[] dados : colecaoDados) { ResumoCobrancaSituacaoEspecialConsultaGerenciaRegHelper helperGerencia = new ResumoCobrancaSituacaoEspecialConsultaGerenciaRegHelper(); if (dados[0] != null) { helperGerencia.setIdGerenciaRegional((Integer) dados[0]); } if (dados[1] != null) { helperGerencia.setGerenciaRegionalDescricaoAbreviada((String) dados[1]); } if (dados[2] != null) { helperGerencia.setGerenciaRegionalDescricao((String) dados[2]); } if (dados[3] != null) { helperGerencia.setTotalGerenciaRegional((Integer) dados[3]); } retorno.add(helperGerencia); } } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } private Collection<ResumoCobrancaSituacaoEspecialConsultaUnidadeNegHelper> pesquisarResumoCobrancaSituacaoEspecialConsultaUnidadeNegocioHelper(ConsultarResumoSituacaoEspecialHelper helper) { Collection<ResumoCobrancaSituacaoEspecialConsultaUnidadeNegHelper> retorno = new ArrayList<ResumoCobrancaSituacaoEspecialConsultaUnidadeNegHelper>(); try { Collection<Object[]> colecaoDados = this.repositorioGerencialCobranca .pesquisarResumoCobrancaSituacaoEspecialConsultaUnidadeNegocioHelper(helper); for (Object[] dados : colecaoDados) { ResumoCobrancaSituacaoEspecialConsultaUnidadeNegHelper helperUnidadeNegocio = new ResumoCobrancaSituacaoEspecialConsultaUnidadeNegHelper(); if (dados[0] != null) { helperUnidadeNegocio.setIdUnidadeNegocio((Integer) dados[0]); } if (dados[1] != null) { helperUnidadeNegocio.setUnidadeNegocioDescricaoAbreviada((String) dados[1]); } if (dados[2] != null) { helperUnidadeNegocio.setUnidadeNegocioDescricao((String) dados[2]); } if (dados[3] != null) { helperUnidadeNegocio.setTotalUnidadeNegocio((Integer) dados[3]); } retorno.add(helperUnidadeNegocio); } } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } private Collection<ResumoCobrancaSituacaoEspecialConsultaLocalidadeHelper> pesquisarResumoCobrancaSituacaoEspecialConsultaLocalidadeHelper(ConsultarResumoSituacaoEspecialHelper helper) { Collection<ResumoCobrancaSituacaoEspecialConsultaLocalidadeHelper> retorno = new ArrayList<ResumoCobrancaSituacaoEspecialConsultaLocalidadeHelper>(); try { Collection<Object[]> colecaoDados = this.repositorioGerencialCobranca .pesquisarResumoCobrancaSituacaoEspecialConsultaLocalidadeHelper(helper); for (Object[] dados : colecaoDados) { ResumoCobrancaSituacaoEspecialConsultaLocalidadeHelper helperLocalidade = new ResumoCobrancaSituacaoEspecialConsultaLocalidadeHelper(); if (dados[0] != null) { helperLocalidade.setIdLocalidade((Integer) dados[0]); } if (dados[1] != null) { helperLocalidade.setLocalidadeDescricao((String) dados[1]); } if (dados[2] != null) { helperLocalidade.setTotalLocalidade((Integer) dados[2]); } retorno.add(helperLocalidade); } } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } private Collection<ResumoCobrancaSituacaoEspecialConsultaSetorComercialHelper> pesquisarResumoCobrancaSituacaoEspecialConsultaSetorComercialHelper(ConsultarResumoSituacaoEspecialHelper helper) { Collection<ResumoCobrancaSituacaoEspecialConsultaSetorComercialHelper> retorno = new ArrayList<ResumoCobrancaSituacaoEspecialConsultaSetorComercialHelper>(); try { Collection<Object[]> colecaoDados = this.repositorioGerencialCobranca .pesquisarResumoCobrancaSituacaoEspecialConsultaSetorComercialHelper(helper); for (Object[] dados : colecaoDados) { ResumoCobrancaSituacaoEspecialConsultaSetorComercialHelper helperSetorComercial = new ResumoCobrancaSituacaoEspecialConsultaSetorComercialHelper(); if (dados[0] != null) { helperSetorComercial.setCodigoSetorComercial((Integer) dados[0]); } if (dados[1] != null) { helperSetorComercial.setSetorComercialDescricao((String) dados[1]); } if (dados[2] != null) { helperSetorComercial.setTotalSetorComercial((Integer) dados[2]); } retorno.add(helperSetorComercial); } } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } private Collection<ResumoCobrancaSituacaoEspecialConsultaSitTipoHelper> pesquisarResumoCobrancaSituacaoEspecialConsultaSitTipoHelper(ConsultarResumoSituacaoEspecialHelper helper) { Collection<ResumoCobrancaSituacaoEspecialConsultaSitTipoHelper> retorno = new ArrayList<ResumoCobrancaSituacaoEspecialConsultaSitTipoHelper>(); try { Collection<Object[]> colecaoDados = this.repositorioGerencialCobranca .pesquisarResumoCobrancaSituacaoEspecialConsultaSitTipoHelper(helper); for (Object[] dados : colecaoDados) { ResumoCobrancaSituacaoEspecialConsultaSitTipoHelper helperSitTipo = new ResumoCobrancaSituacaoEspecialConsultaSitTipoHelper(); if (dados[0] != null) { helperSitTipo.setIdSituacaoTipo((Integer) dados[0]); } if (dados[1] != null) { helperSitTipo.setSituacaoTipoDescricao((String) dados[1]); } if (dados[2] != null) { helperSitTipo.setTotalSituacaoTipo((Integer) dados[2]); } retorno.add(helperSitTipo); } } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } private Collection<ResumoCobrancaSituacaoEspecialConsultaMotivoHelper> pesquisarResumoCobrancaSituacaoEspecialConsultaMotivoHelper(ConsultarResumoSituacaoEspecialHelper helper) { Collection<ResumoCobrancaSituacaoEspecialConsultaMotivoHelper> retorno = new ArrayList<ResumoCobrancaSituacaoEspecialConsultaMotivoHelper>(); try { Collection<Object[]> colecaoDados = this.repositorioGerencialCobranca .pesquisarResumoCobrancaSituacaoEspecialConsultaMotivoHelper(helper); for (Object[] dados : colecaoDados) { ResumoCobrancaSituacaoEspecialConsultaMotivoHelper helperMotivo = new ResumoCobrancaSituacaoEspecialConsultaMotivoHelper(); if (dados[0] != null) { helperMotivo.setIdMotivo((Integer) dados[0]); } if (dados[1] != null) { helperMotivo.setMotivoDescricao((String) dados[1]); } if (dados[2] != null) { helperMotivo.setAnoMesInicio((Integer) dados[2]); } if (dados[3] != null) { helperMotivo.setAnoMesFim((Integer) dados[3]); } if (dados[4] != null) { helperMotivo.setQtParalisada((Integer) dados[4]); } retorno.add(helperMotivo); } } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } private Collection<ResumoCobrancaSituacaoEspecialConsultaFatEstimadoHelper> pesquisarResumoCobrancaSituacaoEspecialConsultaFatEstimadoHelper(ConsultarResumoSituacaoEspecialHelper helper, int anoMesReferencia) { Collection<ResumoCobrancaSituacaoEspecialConsultaFatEstimadoHelper> retorno = new ArrayList<ResumoCobrancaSituacaoEspecialConsultaFatEstimadoHelper>(); try { Collection<BigDecimal> colecaoDados = this.repositorioGerencialCobranca .pesquisarResumoCobrancaSituacaoEspecialConsultaFatEstimadoHelper(helper, anoMesReferencia); if (colecaoDados != null && !colecaoDados.isEmpty()) { for (BigDecimal faturamentoEstimado : colecaoDados) { ResumoCobrancaSituacaoEspecialConsultaFatEstimadoHelper helperFatEstimado = new ResumoCobrancaSituacaoEspecialConsultaFatEstimadoHelper(); if (faturamentoEstimado != null) { helperFatEstimado.setFaturamentoEstimado(faturamentoEstimado); } else { helperFatEstimado.setFaturamentoEstimado(new BigDecimal("0.00")); } retorno.add(helperFatEstimado); } } else { ResumoCobrancaSituacaoEspecialConsultaFatEstimadoHelper helperFatEstimado = new ResumoCobrancaSituacaoEspecialConsultaFatEstimadoHelper(); helperFatEstimado.setFaturamentoEstimado(new BigDecimal("0.00")); retorno.add(helperFatEstimado); } } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } /** * Este caso de uso permite consultar o resumo da pend�ncia, com a op��o de * impress�o da consulta. Dependendo da op��o de totaliza��o sempre � gerado * o relat�rio, sem a fera��o da consulta. [UC0338] Consultar Resumo da * Pend�ncia Retorna os registro de resumo pend�ncia dividindo em cole��es * de categoria RESIDENCIAL, COMERCIAL, INDUSTRIAL e PUBLICA * retornaConsultaResumoPendencia * * @author Roberta Costa * @date 31/05/2006 * @param informarDadosGeracaoRelatorioConsultaHelper * @return * @throws ControladorException */ public Collection<ResumoPendenciaAcumuladoHelper> retornaConsultaResumoPendencia( InformarDadosGeracaoRelatorioConsultaHelper informarDadosGeracaoRelatorioConsultaHelper) throws ControladorException { // Pega a lista de Resumo de pend�ncias da base de dados List retornoConsulta = this .consultarResumoPendencia(informarDadosGeracaoRelatorioConsultaHelper); Collection<ResumoPendenciaAcumuladoHelper> resumoPendenciaAcumulado = new ArrayList(); ResumoPendenciaAcumuladoHelper resumoPendenciaAcumuladoHelper = new ResumoPendenciaAcumuladoHelper(); if (retornoConsulta != null && !retornoConsulta.equals("") && retornoConsulta.size() != 0) { for (int i = 0; i < retornoConsulta.size(); i++) { Object obj = retornoConsulta.get(i); if (obj instanceof Object[]) { Object[] retorno = (Object[]) obj; resumoPendenciaAcumuladoHelper = new ResumoPendenciaAcumuladoHelper( (String) retorno[0], (String) retorno[1], (String) retorno[2], (String) retorno[3], (Integer) retorno[4], (Integer) retorno[5], (Integer) retorno[6], (BigDecimal) retorno[7]); resumoPendenciaAcumulado .add(resumoPendenciaAcumuladoHelper); } } } return resumoPendenciaAcumulado; } /** * [UC0489] - Consultar Resumo das A��es de Cobran�a * * @author Ana Maria * @date 06/11/2006 * @return CobrancaAcaoHelper * @throws ErroRepositorioException */ public Collection consultarResumoCobrancaAcao( InformarDadosGeracaoResumoAcaoConsultaHelper informarDadosGeracaoResumoAcaoConsultaHelper) throws ControladorException { Collection cobrancaAcaoHelper = null; try { // [FS0001] Verificar exist�ncia de dados para o ano/m�s de // refer�ncia retornado String resumo = ResumoCobrancaAcao.class.getName(); Integer countResumoPendencia = this.repositorioGerencialCobranca .verificarExistenciaAnoMesReferenciaResumo( informarDadosGeracaoResumoAcaoConsultaHelper .getAnoMesReferencia(), resumo); if (countResumoPendencia == null || countResumoPendencia == 0) { throw new ControladorException( "atencao.nao.existem.acoes.cobranca.resumo", null, Util .formatarAnoMesParaMesAno(informarDadosGeracaoResumoAcaoConsultaHelper .getAnoMesReferencia())); } // Pega a lista de Resumo das A��es de Cobran�a da base de dados cobrancaAcaoHelper = repositorioGerencialCobranca .consultarCobrancaAcao(informarDadosGeracaoResumoAcaoConsultaHelper); if (cobrancaAcaoHelper != null && !cobrancaAcaoHelper.isEmpty()) { Iterator cobrancaAcaoIterator = cobrancaAcaoHelper.iterator(); while (cobrancaAcaoIterator.hasNext()) { CobrancaAcaoHelper resumoCobrancaAcao = (CobrancaAcaoHelper) cobrancaAcaoIterator .next(); Integer idCobrancaAcao = resumoCobrancaAcao.getId(); Integer quantidadeCobrancaDocumentos = repositorioGerencialCobranca .consultarCobrancaAcaoQuantidadeDocumentos( informarDadosGeracaoResumoAcaoConsultaHelper, idCobrancaAcao); if (quantidadeCobrancaDocumentos != null && quantidadeCobrancaDocumentos .equals(resumoCobrancaAcao .getSomatorioQuantidadesDocumentos())) { resumoCobrancaAcao.setIndicadorDefinitivo("DEFINITIVO"); } else { resumoCobrancaAcao.setIndicadorDefinitivo("PROVIS�RIO"); } Collection cobrancaAcaoSituacaoHelper = repositorioGerencialCobranca .consultarCobrancaAcaoSituacao( informarDadosGeracaoResumoAcaoConsultaHelper, idCobrancaAcao); if (cobrancaAcaoSituacaoHelper != null) { // resumoCobrancaAcao // .setColecaoCobrancaAcaoSituacao(cobrancaAcaoSituacaoHelper); Iterator cobrancaAcaoSituacaoIterator = cobrancaAcaoSituacaoHelper .iterator(); BigDecimal percentualQuantidade = null; BigDecimal percentualValor = null; Collection colecaoCobrancaAcaoSituacao = new ArrayList(); while (cobrancaAcaoSituacaoIterator.hasNext()) { CobrancaAcaoSituacaoHelper resumoCobrancaAcaoSituacao = (CobrancaAcaoSituacaoHelper) cobrancaAcaoSituacaoIterator .next(); percentualQuantidade = Util .calcularPercentualBigDecimal( "" + resumoCobrancaAcaoSituacao .getQuantidadeDocumento(), "" + resumoCobrancaAcao .getSomatorioQuantidadesDocumentos()); percentualValor = Util .calcularPercentualBigDecimal( "" + resumoCobrancaAcaoSituacao .getValorDoumento(), "" + resumoCobrancaAcao .getSomatorioValoresDocumentos()); resumoCobrancaAcaoSituacao .setPorcentagemQuantidade(percentualQuantidade); resumoCobrancaAcaoSituacao .setPorcentagemValor(percentualValor); Integer idCobrancaAcaoSituacao = resumoCobrancaAcaoSituacao .getId(); Collection cobrancaAcaoDebitoHelper = repositorioGerencialCobranca .consultarCobrancaAcaoDebito( informarDadosGeracaoResumoAcaoConsultaHelper, idCobrancaAcao, idCobrancaAcaoSituacao); if (cobrancaAcaoDebitoHelper != null) { resumoCobrancaAcaoSituacao .setColecaoCobrancaAcaoDebito(cobrancaAcaoDebitoHelper); } else { throw new ControladorException( "atencao.pesquisa.nenhumresultado"); } colecaoCobrancaAcaoSituacao .add(resumoCobrancaAcaoSituacao); } resumoCobrancaAcao .setColecaoCobrancaAcaoSituacao(colecaoCobrancaAcaoSituacao); } else { throw new ControladorException( "atencao.pesquisa.nenhumresultado"); } } } else { throw new ControladorException( "atencao.pesquisa.nenhumresultado"); } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return cobrancaAcaoHelper; } /** * [UC0489] - Consultar Resumo das A��es de Cobran�a Pesquisa as situa��es * de d�bito da situa��o da a��o de acordo com o indicador antesApos * * @author S�vio Luiz * @date 06/11/2006 * @return Collection * @throws ErroRepositorioException */ public Collection consultarCobrancaAcaoDebitoComIndicador( InformarDadosGeracaoResumoAcaoConsultaHelper informarDadosGeracaoResumoAcaoConsultaHelper, Integer idCobrancaAcao, Integer idCobrancaAcaoSituacao, Integer idCobrancaAcaoDebito) throws ControladorException { Collection cobrancaAcaoDebitoHelperParaPago = new ArrayList(); try { Collection cobrancaAcaoDebitoHelperAntes = repositorioGerencialCobranca .consultarCobrancaAcaoDebitoComIndicador( informarDadosGeracaoResumoAcaoConsultaHelper, idCobrancaAcao, idCobrancaAcaoSituacao, ResumoCobrancaAcao.INDICADOR_ANTES, idCobrancaAcaoDebito); cobrancaAcaoDebitoHelperParaPago .addAll(cobrancaAcaoDebitoHelperAntes); Collection cobrancaAcaoDebitoHelperApos = repositorioGerencialCobranca .consultarCobrancaAcaoDebitoComIndicador( informarDadosGeracaoResumoAcaoConsultaHelper, idCobrancaAcao, idCobrancaAcaoSituacao, ResumoCobrancaAcao.INDICADOR_APOS, idCobrancaAcaoDebito); cobrancaAcaoDebitoHelperParaPago .addAll(cobrancaAcaoDebitoHelperApos); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return cobrancaAcaoDebitoHelperParaPago; } /** * [UC0489] - Consultar Resumo das A��es de Cobran�a * * @author Ana Maria * @date 06/11/2006 * @return CobrancaAcaoHelper * @throws ErroRepositorioException */ public Collection consultarResumoCobrancaAcaoPerfil( int anoMesReferencia, Integer idCobrancaAcao, Integer idCobrancaAcaoSituacao, Integer idCobrancaAcaoDebito, Short idIndicador, InformarDadosGeracaoResumoAcaoConsultaHelper informarDadosGeracaoResumoAcaoConsultaHelper) throws ControladorException { Collection cobrancaAcaoPerfil = null; try { if (idCobrancaAcaoDebito == null || idCobrancaAcaoDebito.equals("")) { cobrancaAcaoPerfil = repositorioGerencialCobranca .consultarCobrancaAcaoSituacaoPerfilImovel( anoMesReferencia, idCobrancaAcao, idCobrancaAcaoSituacao, informarDadosGeracaoResumoAcaoConsultaHelper); if (cobrancaAcaoPerfil != null && !cobrancaAcaoPerfil.isEmpty()) { Iterator cobrancaAcaoPerfilIterator = cobrancaAcaoPerfil .iterator(); while (cobrancaAcaoPerfilIterator.hasNext()) { CobrancaAcaoPerfilHelper resumoCobrancaAcaoPerfil = (CobrancaAcaoPerfilHelper) cobrancaAcaoPerfilIterator .next(); Integer idPerfil = resumoCobrancaAcaoPerfil.getId(); Collection cobrancaAcaoPerfilIndicador = repositorioGerencialCobranca .consultarCobrancaAcaoSituacaoPerfilImovelIndicador( anoMesReferencia, idCobrancaAcao, idCobrancaAcaoSituacao, idPerfil, informarDadosGeracaoResumoAcaoConsultaHelper); if (cobrancaAcaoPerfilIndicador != null) { resumoCobrancaAcaoPerfil .setColecaoCobrancaAcaoPerfilIndicador(cobrancaAcaoPerfilIndicador); } } } } else { cobrancaAcaoPerfil = repositorioGerencialCobranca .consultarCobrancaAcaoDebitoPerfilImovel( anoMesReferencia, idCobrancaAcao, idCobrancaAcaoSituacao, idCobrancaAcaoDebito, idIndicador, informarDadosGeracaoResumoAcaoConsultaHelper); if (cobrancaAcaoPerfil != null && !cobrancaAcaoPerfil.isEmpty()) { Iterator cobrancaAcaoPerfilIterator = cobrancaAcaoPerfil .iterator(); while (cobrancaAcaoPerfilIterator.hasNext()) { CobrancaAcaoPerfilHelper resumoCobrancaAcaoPerfil = (CobrancaAcaoPerfilHelper) cobrancaAcaoPerfilIterator .next(); Integer idPerfil = resumoCobrancaAcaoPerfil.getId(); Collection cobrancaAcaoPerfilIndicador = repositorioGerencialCobranca .consultarCobrancaAcaoDebitoPerfilImovelIndicador( anoMesReferencia, idCobrancaAcao, idCobrancaAcaoSituacao, idCobrancaAcaoDebito, idPerfil, idIndicador, informarDadosGeracaoResumoAcaoConsultaHelper); if (cobrancaAcaoPerfilIndicador != null) { resumoCobrancaAcaoPerfil .setColecaoCobrancaAcaoPerfilIndicador(cobrancaAcaoPerfilIndicador); } } } } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return cobrancaAcaoPerfil; } /** * [UC0489] - Consultar Resumo das A��es de Cobran�a Popup de Motivo de * Encerramento * * @author Francisco do Nascimento * @date 13/06/2008 * @return Collection CobrancaAcaoMotivoEncerramentoHelper * @throws ErroRepositorioException */ public Collection consultarResumoCobrancaAcaoMotivoEncerramento( Integer idCobrancaAcao, Integer idCobrancaAcaoSituacao, InformarDadosGeracaoResumoAcaoConsultaHelper informarDadosGeracaoResumoAcaoConsultaHelper, boolean ehExecucao) throws ControladorException { Collection cobrancaAcaoMotivoEncerramento = null; try { cobrancaAcaoMotivoEncerramento = repositorioGerencialCobranca .consultarCobrancaAcaoMotivoEncerramento(idCobrancaAcao, idCobrancaAcaoSituacao, informarDadosGeracaoResumoAcaoConsultaHelper, ehExecucao); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return cobrancaAcaoMotivoEncerramento; } /** * [UC0489] - Consultar Resumo das A��es de Cobran�a Popup de Retorno de * fiscalizacao * * @author Francisco do Nascimento * @date 18/06/2008 * @return Collection ResumoAcaoCobrancaSituacaoAcaoDetalheHelper * @throws ErroRepositorioException */ public Collection consultarResumoCobrancaAcaoRetornoFiscalizacao( Integer idCobrancaAcao, Integer idCobrancaAcaoSituacao, InformarDadosGeracaoResumoAcaoConsultaHelper informarDadosGeracaoResumoAcaoConsultaHelper) throws ControladorException { Collection cobrancaAcaoRetornoFiscalizacao = null; try { cobrancaAcaoRetornoFiscalizacao = repositorioGerencialCobranca .consultarCobrancaAcaoRetornoFiscalizacao(idCobrancaAcao, idCobrancaAcaoSituacao, informarDadosGeracaoResumoAcaoConsultaHelper); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return cobrancaAcaoRetornoFiscalizacao; } /** * [UC0617] - Consultar Resumo das A��es de Cobran�a Eventual Popup de * Motivo de Encerramento * * @author Francisco do Nascimento * @date 19/06/2008 * @return Collection CobrancaAcaoMotivoEncerramentoHelper * @throws ErroRepositorioException */ public Collection consultarResumoCobrancaAcaoMotivoEncerramentoEventual( Integer idCobrancaAcao, Integer idCobrancaAcaoSituacao, InformarDadosGeracaoResumoAcaoConsultaEventualHelper informarDadosGeracaoResumoAcaoConsultaEventualHelper, boolean ehExecucao) throws ControladorException { Collection cobrancaAcaoMotivoEncerramento = null; try { cobrancaAcaoMotivoEncerramento = repositorioGerencialCobranca .consultarCobrancaAcaoMotivoEncerramentoEventual( idCobrancaAcao, idCobrancaAcaoSituacao, informarDadosGeracaoResumoAcaoConsultaEventualHelper, ehExecucao); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return cobrancaAcaoMotivoEncerramento; } /** * [UC0617] - Consultar Resumo das A��es de Cobran�a Eventual Popup de * Retorno de fiscalizacao * * @author Francisco do Nascimento * @date 19/06/2008 * @return Collection ResumoAcaoCobrancaSituacaoAcaoDetalheHelper * @throws ErroRepositorioException */ public Collection consultarResumoCobrancaAcaoRetornoFiscalizacaoEventual( Integer idCobrancaAcao, Integer idCobrancaAcaoSituacao, InformarDadosGeracaoResumoAcaoConsultaEventualHelper informarDadosGeracaoResumoAcaoConsultaEventualHelper) throws ControladorException { Collection cobrancaAcaoRetornoFiscalizacao = null; try { cobrancaAcaoRetornoFiscalizacao = repositorioGerencialCobranca .consultarCobrancaAcaoRetornoFiscalizacaoEventual( idCobrancaAcao, idCobrancaAcaoSituacao, informarDadosGeracaoResumoAcaoConsultaEventualHelper); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return cobrancaAcaoRetornoFiscalizacao; } /** * Retorna o menor dos maiores m�s/ano das tabelas utilizadas para atualizar * o resumo [UC????] - Gerar Resumo Indicadores da Cobran�a * * @author Rafael Corr�a * @date 25/03/2008 */ private Integer obterMenorEntreMaioresAnoMesTabelasParaResumoIndicadoresCobranca() throws ControladorException { Integer retorno = null; try { Collection<Integer> colecaoAnosMeses = new ArrayList<Integer>(); Integer anoMesResumoPendencia = this.repositorioGerencialCobranca .pesquisarMaiorAnoMesResumoPendencia(); colecaoAnosMeses.add(anoMesResumoPendencia); Integer anoMesResumoLigacaoEconomia = this.repositorioGerencialCadastro .pesquisarMaiorAnoMesResumoLigacaoEconomia(); colecaoAnosMeses.add(anoMesResumoLigacaoEconomia); Integer anoMesResumoArrecadacao = this.repositorioGerencialArrecadacao .pesquisarMaiorAnoMesResumoArrecadacao(); colecaoAnosMeses.add(anoMesResumoArrecadacao); Integer anoMesResumoFaturamento = this.repositorioGerencialFaturamento .pesquisarMaiorAnoMesResumoIndicadoresFaturamento(); colecaoAnosMeses.add(anoMesResumoFaturamento); Integer anoMesResumoParcelamento = this.repositorioGerencialCobranca .pesquisarMaiorAnoMesResumoParcelamento(); colecaoAnosMeses.add(anoMesResumoParcelamento); if (colecaoAnosMeses != null && !colecaoAnosMeses.isEmpty()) { for (Integer anoMes : colecaoAnosMeses) { if (anoMes != null && (retorno == null || retorno.intValue() > anoMes .intValue())) { retorno = anoMes; } } } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return retorno; } /** * M�todo que gera resumo indicadores da cobran�a [UC????] - Gerar Resumo * Indicadores da Cobran�a * * @author Rafael Corr�a * @date 25/03/2008 */ public void gerarResumoIndicadoresCobranca(int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.FUNCIONALIDADE, 0); try { Integer anoMesTabelas = this .obterMenorEntreMaioresAnoMesTabelasParaResumoIndicadoresCobranca(); Integer anoMesResumoIndicadorCobranca = this.repositorioGerencialCobranca .pesquisarMaiorAnoMesResumoIndicadoresCobranca(); if (anoMesTabelas != null && (anoMesResumoIndicadorCobranca == null || anoMesTabelas .intValue() > anoMesResumoIndicadorCobranca .intValue())) { this.repositorioGerencialCobranca .atualizarDadosResumoIndicadoresCobranca( anoMesResumoIndicadorCobranca, anoMesTabelas); } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o // processo // batch venha a lan�ar e garantir que a unidade de processamento // do // batch ser� atualizada com o erro ocorrido ex.printStackTrace(); // sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /** * [UC0617] Consultar Resumo das A��es de Cobran�a Eventuais Pesquisa as * a��es de cobran�a * * @author S�vio Luiz * @date 26/06/2007 * @return Collection * @throws ErroRepositorioException */ public Collection consultarResumoCobrancaAcaoEventual( InformarDadosGeracaoResumoAcaoConsultaEventualHelper informarDadosGeracaoResumoAcaoConsultaEventualHelper) throws ControladorException { Collection cobrancaAcaoHelper = null; try { // [FS0001] Verificar exist�ncia de dados para o ano/m�s de // refer�ncia retornado Integer countResumoPendencia = this.repositorioGerencialCobranca .verificarExistenciaResumoEventual(informarDadosGeracaoResumoAcaoConsultaEventualHelper); if (countResumoPendencia == null || countResumoPendencia == 0) { throw new ControladorException( "atencao.nao.existem.acoes.cobranca.resumo.eventual"); } // Pega a lista de Resumo das A��es de Cobran�a da base de dados cobrancaAcaoHelper = repositorioGerencialCobranca .consultarCobrancaAcaoEventual(informarDadosGeracaoResumoAcaoConsultaEventualHelper); if (cobrancaAcaoHelper != null && !cobrancaAcaoHelper.isEmpty()) { Iterator cobrancaAcaoIterator = cobrancaAcaoHelper.iterator(); while (cobrancaAcaoIterator.hasNext()) { CobrancaAcaoHelper resumoCobrancaAcao = (CobrancaAcaoHelper) cobrancaAcaoIterator .next(); Integer idCobrancaAcao = resumoCobrancaAcao.getId(); Integer quantidadeCobrancaDocumentos = repositorioGerencialCobranca .consultarCobrancaAcaoEventualQuantidadeDocumentos( informarDadosGeracaoResumoAcaoConsultaEventualHelper, idCobrancaAcao); if (quantidadeCobrancaDocumentos != null && quantidadeCobrancaDocumentos .equals(resumoCobrancaAcao .getSomatorioQuantidadesDocumentos())) { resumoCobrancaAcao.setIndicadorDefinitivo("DEFINITIVO"); } else { resumoCobrancaAcao.setIndicadorDefinitivo("PROVIS�RIO"); } Collection cobrancaAcaoSituacaoHelper = repositorioGerencialCobranca .consultarCobrancaAcaoSituacaoEventual( informarDadosGeracaoResumoAcaoConsultaEventualHelper, idCobrancaAcao); if (cobrancaAcaoSituacaoHelper != null) { Iterator cobrancaAcaoSituacaoIterator = cobrancaAcaoSituacaoHelper .iterator(); BigDecimal percentualQuantidade = null; BigDecimal percentualValor = null; Collection colecaoCobrancaAcaoSituacao = new ArrayList(); while (cobrancaAcaoSituacaoIterator.hasNext()) { CobrancaAcaoSituacaoHelper resumoCobrancaAcaoSituacao = (CobrancaAcaoSituacaoHelper) cobrancaAcaoSituacaoIterator .next(); percentualQuantidade = Util .calcularPercentualBigDecimal( "" + resumoCobrancaAcaoSituacao .getQuantidadeDocumento(), "" + resumoCobrancaAcao .getSomatorioQuantidadesDocumentos()); percentualValor = Util .calcularPercentualBigDecimal( "" + resumoCobrancaAcaoSituacao .getValorDoumento(), "" + resumoCobrancaAcao .getSomatorioValoresDocumentos()); resumoCobrancaAcaoSituacao .setPorcentagemQuantidade(percentualQuantidade); resumoCobrancaAcaoSituacao .setPorcentagemValor(percentualValor); Integer idCobrancaAcaoSituacao = resumoCobrancaAcaoSituacao .getId(); Collection cobrancaAcaoDebitoHelper = repositorioGerencialCobranca .consultarCobrancaAcaoDebitoEventual( informarDadosGeracaoResumoAcaoConsultaEventualHelper, idCobrancaAcao, idCobrancaAcaoSituacao); if (cobrancaAcaoDebitoHelper != null) { resumoCobrancaAcaoSituacao .setColecaoCobrancaAcaoDebito(cobrancaAcaoDebitoHelper); } else { throw new ControladorException( "atencao.pesquisa.nenhumresultado"); } colecaoCobrancaAcaoSituacao .add(resumoCobrancaAcaoSituacao); } resumoCobrancaAcao .setColecaoCobrancaAcaoSituacao(colecaoCobrancaAcaoSituacao); } else { throw new ControladorException( "atencao.pesquisa.nenhumresultado"); } } } else { throw new ControladorException( "atencao.pesquisa.nenhumresultado"); } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return cobrancaAcaoHelper; } /** * [UC0617] Consultar Resumo das A��es de Cobran�a Eventuais Pesquisa as * a��es de cobran�a * * @author S�vio Luiz * @date 26/06/2007 * @return Collection * @throws ErroRepositorioException */ public Collection consultarResumoCobrancaAcaoEventualPerfil( Integer idCobrancaAcao, Integer idCobrancaAcaoSituacao, Integer idCobrancaAcaoDebito, Short idIndicador, InformarDadosGeracaoResumoAcaoConsultaEventualHelper informarDadosGeracaoResumoAcaoConsultaEventualHelper) throws ControladorException { Collection cobrancaAcaoPerfil = null; try { if (idCobrancaAcaoDebito == null || idCobrancaAcaoDebito.equals("")) { cobrancaAcaoPerfil = repositorioGerencialCobranca .consultarCobrancaAcaoEventualSituacaoPerfilImovel( idCobrancaAcao, idCobrancaAcaoSituacao, informarDadosGeracaoResumoAcaoConsultaEventualHelper); if (cobrancaAcaoPerfil != null && !cobrancaAcaoPerfil.isEmpty()) { Iterator cobrancaAcaoPerfilIterator = cobrancaAcaoPerfil .iterator(); while (cobrancaAcaoPerfilIterator.hasNext()) { CobrancaAcaoPerfilHelper resumoCobrancaAcaoPerfil = (CobrancaAcaoPerfilHelper) cobrancaAcaoPerfilIterator .next(); Integer idPerfil = resumoCobrancaAcaoPerfil.getId(); Collection cobrancaAcaoPerfilIndicador = repositorioGerencialCobranca .consultarCobrancaAcaoEventualSituacaoPerfilImovelIndicador( idCobrancaAcao, idCobrancaAcaoSituacao, idPerfil, informarDadosGeracaoResumoAcaoConsultaEventualHelper); if (cobrancaAcaoPerfilIndicador != null) { resumoCobrancaAcaoPerfil .setColecaoCobrancaAcaoPerfilIndicador(cobrancaAcaoPerfilIndicador); } } } } else { cobrancaAcaoPerfil = repositorioGerencialCobranca .consultarCobrancaAcaoEventualDebitoPerfilImovel( idCobrancaAcao, idCobrancaAcaoSituacao, idCobrancaAcaoDebito, idIndicador, informarDadosGeracaoResumoAcaoConsultaEventualHelper); if (cobrancaAcaoPerfil != null && !cobrancaAcaoPerfil.isEmpty()) { Iterator cobrancaAcaoPerfilIterator = cobrancaAcaoPerfil .iterator(); while (cobrancaAcaoPerfilIterator.hasNext()) { CobrancaAcaoPerfilHelper resumoCobrancaAcaoPerfil = (CobrancaAcaoPerfilHelper) cobrancaAcaoPerfilIterator .next(); Integer idPerfil = resumoCobrancaAcaoPerfil.getId(); Collection cobrancaAcaoPerfilIndicador = repositorioGerencialCobranca .consultarCobrancaAcaoEventualDebitoPerfilImovelIndicador( idCobrancaAcao, idCobrancaAcaoSituacao, idCobrancaAcaoDebito, idPerfil, idIndicador, informarDadosGeracaoResumoAcaoConsultaEventualHelper); if (cobrancaAcaoPerfilIndicador != null) { resumoCobrancaAcaoPerfil .setColecaoCobrancaAcaoPerfilIndicador(cobrancaAcaoPerfilIndicador); } } } } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return cobrancaAcaoPerfil; } /** * [UC0617] Consultar Resumo das A��es de Cobran�a Eventuais Pesquisa as * a��es de cobran�a * * @author S�vio Luiz * @date 26/06/2007 * @return Collection * @throws ErroRepositorioException */ public Collection consultarCobrancaAcaoEventualDebitoComIndicador( InformarDadosGeracaoResumoAcaoConsultaEventualHelper informarDadosGeracaoResumoAcaoConsultaEventualHelper, Integer idCobrancaAcao, Integer idCobrancaAcaoSituacao, Integer idCobrancaAcaoDebito) throws ControladorException { Collection cobrancaAcaoDebitoHelperParaPago = new ArrayList(); try { Collection cobrancaAcaoDebitoHelperAntes = repositorioGerencialCobranca .consultarCobrancaAcaoEventualDebitoComIndicador( informarDadosGeracaoResumoAcaoConsultaEventualHelper, idCobrancaAcao, idCobrancaAcaoSituacao, ResumoCobrancaAcao.INDICADOR_ANTES, idCobrancaAcaoDebito); cobrancaAcaoDebitoHelperParaPago .addAll(cobrancaAcaoDebitoHelperAntes); Collection cobrancaAcaoDebitoHelperApos = repositorioGerencialCobranca .consultarCobrancaAcaoEventualDebitoComIndicador( informarDadosGeracaoResumoAcaoConsultaEventualHelper, idCobrancaAcao, idCobrancaAcaoSituacao, ResumoCobrancaAcao.INDICADOR_APOS, idCobrancaAcaoDebito); cobrancaAcaoDebitoHelperParaPago .addAll(cobrancaAcaoDebitoHelperApos); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return cobrancaAcaoDebitoHelperParaPago; } /** * Retorna o valor de controladorCadastro * * @return O valor de controladorCadastro */ private ControladorGerencialCadastroLocal getControladorGerencialCadastro() { ControladorGerencialCadastroLocalHome localHome = null; ControladorGerencialCadastroLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorGerencialCadastroLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_GERENCIAL_CADASTRO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * M�todo que gera o resumo da pendencia Por Ano * * @author Fernando Fontelles Filho * @date 23/03/2010 */ public void gerarResumoPendenciaPorAno(int idSetor, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.SETOR_COMERCIAL, idSetor); Integer anoMesReferenciaMenos1 = Util.subtrairMesDoAnoMes( getControladorUtil().pesquisarParametrosDoSistema() .getAnoMesArrecadacao(), 1); // FS0001 - Verificar existencia de dados para o ano/mes referencia // informado getControladorGerencialCadastro().excluirResumoGerencialSQL( anoMesReferenciaMenos1, "cobranca.un_resumo_pendencia_ref_2010", "rpen_amreferencia", idSetor); try { this.gerarResumoPendenciaContaGerenciaPorAno(idSetor); this.gerarResumoPendenciaGuiasPagamentoGerenciaPorAno(idSetor); this.gerarResumoPendenciaDebitosACobrarGerenciaPorAno(idSetor); this.gerarResumoPendenciaCreditosARealizarGerenciaPorAno(idSetor); getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NO SETOR " + idSetor); ex.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new ControladorException("erro.sistema", ex); } } /** * Gera a primeira parte do resumo de pendencias por ano * * @author Fernando Fontelles Filho * @date 24/03/2010 */ private void gerarResumoPendenciaContaGerenciaPorAno(int idSetor) throws ControladorException, ErroRepositorioException { /* * O sistema seleciona as contas pendentes ( a partir da tabela CONTA * com CNTA_AMREFERENCIACONTA < PARM_AMREFERENCIAFATURAMENTO da tabela * SISTEMA_PARAMETROS e ( DCST_IDATUAL = 0 ou (DCST_IDATUAL = (1,2) e * CNTA_AMREFERENCIACONTABIL < PARM_AMREFENRECIAFATURAMENTO ou * (DCST_IDATUAL = (3,4,5) e CNTA_AMREFERENCIACONTABIL > * PARM_AMREFERENCIAFATURAMENTO */ //Vari�veis para a pagina��o da pesquisa // ======================================================================== // boolean flagTerminou = false; // final int quantidadeMaxima = 10000; // int quantidadeInicio = 0; // // ======================================================================== // // while(!flagTerminou){ //Devemos gravar como anomes de arrecadacao -1 SistemaParametro sistema = getControladorUtil() .pesquisarParametrosDoSistema(); Integer anoMesArrecadacaoMenosUm = Util.subtrairMesDoAnoMes(sistema .getAnoMesArrecadacao(), 1); // List<ResumoPendenciaContasGerencialPorAnoHelper> quebra = // new ArrayList<ResumoPendenciaContasGerencialPorAnoHelper>(); Map<String, ResumoPendenciaContasGerencialPorAnoHelper> mapHelper = new HashMap<String, ResumoPendenciaContasGerencialPorAnoHelper>(); List contasPendentes = this.repositorioGerencialCobranca .getContasPendentesPorAno(idSetor/*, quantidadeInicio, quantidadeMaxima*/); for (int i = 0; i < contasPendentes.size(); i++) { Object obj = contasPendentes.get(i); if (obj instanceof Object[]) { Object[] linha = (Object[]) obj; ResumoPendenciaContasGerencialPorAnoHelper helper = new ResumoPendenciaContasGerencialPorAnoHelper( (Integer) linha[0], // Gerencia Regional (Integer) linha[1], // Unidade Negocio (Integer) linha[2], // Elo (Integer) linha[3], // Localidade (Integer) linha[4], // Setor Comercial (Integer) linha[5], // Codigo Setor Comercial (Integer) linha[6], // Perfil do imovel (Integer) linha[7], // Situacao Ligacao Agua (Integer) linha[8], // Situacao Ligacao Esgoto (Integer) linha[9], // id Hidrometro new Integer(1), // Tipo do documento (Integer) linha[10], // Ano mes de referencia // documento (Integer) linha[11], // Referencia do vencimento da // conta (BigDecimal) linha[13], // Valor da agua (BigDecimal) linha[14], // Valor do Esgoto (BigDecimal) linha[15], // Valor dos debitos (BigDecimal) linha[16], // Valor dos cr�ditos (BigDecimal) linha[17]); // Valor do imposto Integer idImovel = (Integer) linha[12]; // Codigo do imovel // que esta sendo // processado Integer maiorReferenciaConta = (Integer) linha[19]; // Pesquisamos a esfera de poder do cliente responsavel helper .setIdEsferaPoder(this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdPrincipalCategoriaImovel(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel().obterPrincipalSubcategoria( categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdPrincipalSubCategoriaImovel(subcategoria .getComp_id().getSubcategoria().getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaPoder(clienteTemp.getClienteTipo() .getEsferaPoder().getId()); } } // Verificamos se o helper que foi criado � referente a ultima // conta do imovel selecionado if (helper.getAnoMesReferenciaDocumento().equals( maiorReferenciaConta)) { helper.setQuantidadeLigacoes(1); } // Integer qtdAtualizada = this.repositorioGerencialCobranca. // atualizarPendenciaContasGerencialPorAno // (helper,anoMesArrecadacaoMenosUm); // // System.out.println("Qtd Atualizada = " + qtdAtualizada); // // if ( qtdAtualizada != null && qtdAtualizada == 0){ // // this.repositorioGerencialCobranca.inserirPendenciaContasGerencialPorAno( // anoMesArrecadacaoMenosUm, helper); // // } String sChaveBusca = helper.getIdGerenciaRegional().toString() + helper.getIdUnidadeNegocio().toString() + helper.getIdLocalidade().toString() + helper.getIdElo().toString() + helper.getIdSetorComercial().toString() + helper.getCodigoSetorComercial().toString() + helper.getIdPerfilImovel().toString() + helper.getIdEsferaPoder().toString() + helper.getIdSituacaoLigacaoAgua().toString() + helper.getIdSituacaoLigacaoEsgoto().toString() + helper.getIdPrincipalCategoriaImovel().toString() + helper.getIdPrincipalSubCategoriaImovel().toString() + helper.getIdHidrometro().toString() + helper.getIdTipoDocumento().toString() + helper.getAnoMesReferenciaDocumento().toString() + helper.getIdReferenciaVencimentoConta().toString() + helper.getIdFaixaValorTotalPendente().toString(); ResumoPendenciaContasGerencialPorAnoHelper jaCadastrado = mapHelper.get(sChaveBusca); if (jaCadastrado != null) { jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + helper.getQuantidadeLigacoes()); jaCadastrado.setQuantidadeDocumentos(jaCadastrado.getQuantidadeDocumentos() + 1); jaCadastrado.setValorPendenteAgua(jaCadastrado.getValorPendenteAgua().add( helper.getValorPendenteAgua())); jaCadastrado.setValorPendenteEsgoto(jaCadastrado.getValorPendenteEsgoto().add( helper.getValorPendenteEsgoto())); jaCadastrado.setValorPendenteCredito(jaCadastrado.getValorPendenteCredito().add( helper.getValorPendenteCredito())); jaCadastrado.setValorPendenteDebito(jaCadastrado.getValorPendenteDebito().add( helper.getValorPendenteDebito())); jaCadastrado.setValorPendenteImposto(jaCadastrado.getValorPendenteImposto().add( helper.getValorPendenteImposto())); //mapHelper.put(sChaveBusca, jaCadastrado); } else { mapHelper.put(sChaveBusca, helper); } // Verificamos se o objeto ja possue uma quebra cadastrada // if (quebra.contains(helper)) { // int posicao = quebra.indexOf(helper); // count++; // ResumoPendenciaContasGerencialPorAnoHelper jaCadastrado = (ResumoPendenciaContasGerencialPorAnoHelper) quebra // .get(posicao); // // jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() // + helper.getQuantidadeLigacoes()); // // jaCadastrado.setQuantidadeDocumentos(jaCadastrado.getQuantidadeDocumentos() + 1); // // jaCadastrado.setValorPendenteAgua(jaCadastrado.getValorPendenteAgua().add( // helper.getValorPendenteAgua())); // // jaCadastrado.setValorPendenteEsgoto(jaCadastrado.getValorPendenteEsgoto().add( // helper.getValorPendenteEsgoto())); // // jaCadastrado.setValorPendenteCredito(jaCadastrado.getValorPendenteCredito().add( // helper.getValorPendenteCredito())); // // jaCadastrado.setValorPendenteDebito(jaCadastrado.getValorPendenteDebito().add( // helper.getValorPendenteDebito())); // // jaCadastrado.setValorPendenteImposto(jaCadastrado.getValorPendenteImposto().add( // helper.getValorPendenteImposto())); // } else { // quebra.add(helper); // } } obj = null; } Iterator<ResumoPendenciaContasGerencialPorAnoHelper> iteratorHelper = mapHelper.values().iterator(); while (iteratorHelper.hasNext()){ this.repositorioGerencialCobranca.inserirPendenciaContasGerencialPorAno( anoMesArrecadacaoMenosUm, iteratorHelper.next()); iteratorHelper.remove(); } //Inserirmos manualmente, por quest�o de performace // for (int j = 0; j < quebra.size(); j++) { // // this.repositorioGerencialCobranca.inserirPendenciaContasGerencialPorAno( // anoMesArrecadacaoMenosUm, // (ResumoPendenciaContasGerencialPorAnoHelper) quebra.get(j)); // // } //Incrementa o n� do indice da p�gina��o // quantidadeInicio = quantidadeInicio + quantidadeMaxima; // // /** // * Caso a cole��o de dados retornados for menor que a // * quantidade de registros seta a flag indicando que a // * pagina��o terminou. // */ // if (contasPendentes == null || // contasPendentes.size() < quantidadeMaxima) { // // flagTerminou = true; // } // // if (contasPendentes != null) { // contasPendentes.clear(); // contasPendentes = null; // } // // } } /** * Gera a segunda parte do resumo de pendencias Por ano * * @author Fernando Fontelles * @date 25/03/2010 */ private void gerarResumoPendenciaGuiasPagamentoGerenciaPorAno(int idSetor) throws ControladorException, ErroRepositorioException { //Vari�veis para a pagina��o da pesquisa // ======================================================================== boolean flagTerminou = false; final int quantidadeMaxima = 1000; int quantidadeInicio = 0; // ======================================================================== while(!flagTerminou){ //Devemos gravar como anomes de arrecadacao -1 SistemaParametro sistema = getControladorUtil() .pesquisarParametrosDoSistema(); Integer anoMesArrecadacaoMenosUm = Util.subtrairMesDoAnoMes(sistema .getAnoMesArrecadacao(), 1); List contasPendentes = this.repositorioGerencialCobranca .getGuiasPagamentoGerenciaPorAno(idSetor, quantidadeInicio, quantidadeMaxima); //List<ResumoPendenciaGuiasPagamentoGerencialPorAnoHelper> quebra = new ArrayList(); for (int i = 0; i < contasPendentes.size(); i++) { Object obj = contasPendentes.get(i); if (obj instanceof Object[]) { Object[] linha = (Object[]) obj; ResumoPendenciaGuiasPagamentoGerencialPorAnoHelper helper = new ResumoPendenciaGuiasPagamentoGerencialPorAnoHelper( (Integer) linha[0], // Gerencia Regional (Integer) linha[1], // Unidade Negocio (Integer) linha[2], // Elo (Integer) linha[3], // Localidade (Integer) linha[4], // Setor Comercial (Integer) linha[5], // Codigo Setor Comercial (Integer) linha[6], // Perfil do imovel (Integer) linha[7], // Situacao Ligacao Agua (Integer) linha[8], // Situacao Ligacao Esgoto (Integer) linha[9], // Hidrometro new Integer(7), // Tipo do documento (Integer) linha[10], // Ano mes de referencia // documento (Integer) linha[11], // Tipo do financiamento (Integer) linha[12], // Referencia do vencimento da // conta (BigDecimal) linha[13]);// Valor dos debitos Integer idImovel = (Integer) linha[14]; // Codigo do imovel que // esta sendo processado // Pesquisamos a esfera de poder do cliente responsavel helper .setIdEsferaPoder(this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdPrincipalCategoriaImovel(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel().obterPrincipalSubcategoria( categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdPrincipalSubCategoriaImovel(subcategoria .getComp_id().getSubcategoria().getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaPoder(clienteTemp.getClienteTipo() .getEsferaPoder().getId()); } } //Atualiza uma linhda de registro na base Integer qtdAtualizada = this.repositorioGerencialCobranca .atualizarGuiasPagamentoGerenciaPorAno (anoMesArrecadacaoMenosUm, helper); //Se nao atualizou, insere uma nova linha na tabela if ( qtdAtualizada != null && qtdAtualizada == 0 ){ this.repositorioGerencialCobranca.inserirGuiasPagamentoGerenciaPorAno( anoMesArrecadacaoMenosUm, helper); } // Verificamos se o objeto ja possue uma quebra cadastrada // if (quebra.contains(helper)) { // // int posicao = quebra.indexOf(helper); // // ResumoPendenciaGuiasPagamentoGerencialPorAnoHelper jaCadastrado = // (ResumoPendenciaGuiasPagamentoGerencialPorAnoHelper) quebra // .get(posicao); // jaCadastrado.setQuantidadeDocumentos(jaCadastrado // .getQuantidadeDocumentos() + 1); // // jaCadastrado.setValorPendenteDebito(jaCadastrado // .getValorPendenteDebito().add( // helper.getValorPendenteDebito())); // // } else { // // quebra.add(helper); // // } } } // Inserirmos manualmente, por quest�o de performace // for (int j = 0; j < quebra.size(); j++) { // // this.repositorioGerencialCobranca // .inserirGuiasPagamentoGerenciaPorAno( // anoMesArrecadacaoMenosUm, // (ResumoPendenciaGuiasPagamentoGerencialPorAnoHelper) quebra // .get(j)); // // } //Incrementa o n� do indice da p�gina��o quantidadeInicio = quantidadeInicio + quantidadeMaxima; /** * Caso a cole��o de dados retornados for menor que a * quantidade de registros seta a flag indicando que a * pagina��o terminou. */ if (contasPendentes == null || contasPendentes.size() < quantidadeMaxima) { flagTerminou = true; } if (contasPendentes != null) { contasPendentes.clear(); contasPendentes = null; } } } /** * Gera a terceira parte do resumo de pendencias por ano * * @author Fernando Fontelles Filho * @date 26/03/2010 */ private void gerarResumoPendenciaDebitosACobrarGerenciaPorAno(int idSetor) throws ControladorException, ErroRepositorioException { //Vari�veis para a pagina��o da pesquisa // ======================================================================== boolean flagTerminou = false; final int quantidadeMaxima = 1000; int quantidadeInicio = 0; // ======================================================================== while(!flagTerminou){ //Devemos gravar como anomes de arrecadacao -1 SistemaParametro sistema = getControladorUtil() .pesquisarParametrosDoSistema(); Integer anoMesArrecadacaoMenosUm = Util.subtrairMesDoAnoMes(sistema .getAnoMesArrecadacao(), 1); List debitosACobrar = this.repositorioGerencialCobranca .getDebitosACobrarGerenciaPorAno(idSetor, quantidadeInicio, quantidadeMaxima); //List<ResumoPendenciaDebitosACobrarGerencialPorAnoHelper> quebra = new ArrayList(); for (int i = 0; i < debitosACobrar.size(); i++) { Object obj = debitosACobrar.get(i); if (obj instanceof Object[]) { Object[] linha = (Object[]) obj; ResumoPendenciaDebitosACobrarGerencialPorAnoHelper helper = new ResumoPendenciaDebitosACobrarGerencialPorAnoHelper( (Integer) linha[0], // Gerencia Regional (Integer) linha[1], // Unidade Negocio (Integer) linha[2], // Elo (Integer) linha[3], // Localidade (Integer) linha[4], // Setor Comercial (Integer) linha[5], // Codigo Setor Comercial (Integer) linha[6], // Perfil do imovel (Integer) linha[7], // Situacao Ligacao Agua (Integer) linha[8], // Situacao Ligacao Esgoto (Integer) linha[9], // Indicador de Hidrometro new Integer(6), // Tipo do documento (Integer) linha[10], // Referencia do vencimento da conta (Integer) linha[11], // Tipo de Financiamento (BigDecimal) linha[12]); // Valor dos debitos Integer idImovel = (Integer) linha[13]; // Codigo do imovel que esta sendo processado // Pesquisamos a esfera de poder do cliente responsavel helper.setIdEsferaPoder( this.repositorioGerencialCadastro.pesquisarEsferaPoderClienteResponsavelImovel(idImovel) ); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdPrincipalCategoriaImovel(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel().obterPrincipalSubcategoria( categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdPrincipalSubCategoriaImovel(subcategoria .getComp_id().getSubcategoria().getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaPoder(clienteTemp.getClienteTipo() .getEsferaPoder().getId()); } } //Atualiza uma linha na base de dados Integer qtdAtualizada = this.repositorioGerencialCobranca. atualizarPendendiciaDebitosACobrarGerenciaPorAno (anoMesArrecadacaoMenosUm, helper ); //Se nao atualizou nenhuma linha, insere os dados em uma nova linha if ( qtdAtualizada != null && qtdAtualizada == 0 ){ this.repositorioGerencialCobranca .inserirPendendiciaDebitosACobrarGerenciaPorAno( anoMesArrecadacaoMenosUm, helper); } // Verificamos se o objeto ja possue uma quebra cadastrada // if (quebra.contains(helper)) { // // int posicao = quebra.indexOf(helper); // ResumoPendenciaDebitosACobrarGerencialPorAnoHelper jaCadastrado = // (ResumoPendenciaDebitosACobrarGerencialPorAnoHelper) quebra // .get(posicao); // jaCadastrado.setQuantidadeDocumentos(jaCadastrado // .getQuantidadeDocumentos() + 1); // jaCadastrado.setValorPendenteDebito(jaCadastrado // .getValorPendenteDebito().add( // helper.getValorPendenteDebito())); // // } else { // // quebra.add(helper); // // } } } // Inserirmos manualmente, por quest�o de performace // for (int j = 0; j < quebra.size(); j++) { // this.repositorioGerencialCobranca // .inserirPendendiciaDebitosACobrarGerenciaPorAno( // anoMesArrecadacaoMenosUm, // (ResumoPendenciaDebitosACobrarGerencialPorAnoHelper) quebra // .get(j)); // } //Incrementa o n� do indice da p�gina��o quantidadeInicio = quantidadeInicio + quantidadeMaxima; /** * Caso a cole��o de dados retornados for menor que a * quantidade de registros seta a flag indicando que a * pagina��o terminou. */ if (debitosACobrar == null || debitosACobrar.size() < quantidadeMaxima) { flagTerminou = true; } if (debitosACobrar != null) { debitosACobrar.clear(); debitosACobrar = null; } } } /** * Gera a ultima parte do resumo de pendencias Por Ano * * @author Fernando Fontelles Filho * @date 26/03/2010 */ private void gerarResumoPendenciaCreditosARealizarGerenciaPorAno(int idSetor) throws ControladorException, ErroRepositorioException { //Vari�veis para a pagina��o da pesquisa // ======================================================================== boolean flagTerminou = false; final int quantidadeMaxima = 1000; int quantidadeInicio = 0; // ======================================================================== while(!flagTerminou){ //Devemos gravar como anomes de arrecadacao -1 SistemaParametro sistema = getControladorUtil() .pesquisarParametrosDoSistema(); Integer anoMesArrecadacaoMenosUm = Util.subtrairMesDoAnoMes(sistema .getAnoMesArrecadacao(), 1); List creditosARealizar = this.repositorioGerencialCobranca .getCreditoARealizarGerenciaPorAno(idSetor, quantidadeInicio, quantidadeMaxima); // List<ResumoPendenciaCreditoARealizarGerencialPorAnoHelper> quebra = // new ArrayList<ResumoPendenciaCreditoARealizarGerencialPorAnoHelper>(); for (int i = 0; i < creditosARealizar.size(); i++) { Object obj = creditosARealizar.get(i); if (obj instanceof Object[]) { Object[] linha = (Object[]) obj; ResumoPendenciaCreditoARealizarGerencialPorAnoHelper helper = new ResumoPendenciaCreditoARealizarGerencialPorAnoHelper( (Integer) linha[0], // Gerencia Regional (Integer) linha[1], // Unidade Negocio (Integer) linha[2], // Elo (Integer) linha[3], // Localidade (Integer) linha[4], // Setor Comercial (Integer) linha[5], // Codigo Setor Comercial (Integer) linha[6], // Perfil do imovel (Integer) linha[7], // Situacao Ligacao Agua (Integer) linha[8], // Situacao Ligacao Esgoto (Integer) linha[9], // Indicador de Hidrometro new Integer(10), // Tipo do documento (Integer) linha[10], // Ano mes de referencia // documento (BigDecimal) linha[11]); // Valor dos Creditos Integer idImovel = (Integer) linha[12]; // Codigo do imovel que // esta sendo processado // Pesquisamos a esfera de poder do cliente responsavel helper .setIdEsferaPoder(this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdPrincipalCategoriaImovel(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel().obterPrincipalSubcategoria( categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdPrincipalSubCategoriaImovel(subcategoria .getComp_id().getSubcategoria().getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaPoder(clienteTemp.getClienteTipo() .getEsferaPoder().getId()); } } //Atualiza uma linha da tabela Integer qtdAtualizada = this.repositorioGerencialCobranca. atualizarPendendiciaCreditosARealizerGerenciaPorAno (anoMesArrecadacaoMenosUm, helper); //Se nao atualizou nenhuma linha � inserida uma nova linha na tabela if ( qtdAtualizada != null && qtdAtualizada == 0 ){ this.repositorioGerencialCobranca .inserirPendendiciaCreditosARealizerGerenciaPorAno( anoMesArrecadacaoMenosUm, helper); } // Verificamos se o objeto ja possue uma quebra cadastrada // if (quebra.contains(helper)) { // // int posicao = quebra.indexOf(helper); // // ResumoPendenciaCreditoARealizarGerencialPorAnoHelper jaCadastrado = // (ResumoPendenciaCreditoARealizarGerencialPorAnoHelper) quebra // .get(posicao); // // jaCadastrado.setQuantidadeDocumentos(jaCadastrado // .getQuantidadeDocumentos() + 1); // // jaCadastrado.setValorPendenteCredito(jaCadastrado // .getValorPendenteCredito().add( // helper.getValorPendenteCredito())); // // } else { // quebra.add(helper); // } } } // Inserirmos manualmente, por quest�o de performace // for (int j = 0; j < quebra.size(); j++) { // this.repositorioGerencialCobranca // .inserirPendendiciaCreditosARealizerGerenciaPorAno( // anoMesArrecadacaoMenosUm, // (ResumoPendenciaCreditoARealizarGerencialPorAnoHelper) quebra // .get(j)); // } //Incrementa o n� do indice da p�gina��o quantidadeInicio = quantidadeInicio + quantidadeMaxima; /** * Caso a cole��o de dados retornados for menor que a * quantidade de registros seta a flag indicando que a * pagina��o terminou. */ if (creditosARealizar == null || creditosARealizar.size() < quantidadeMaxima) { flagTerminou = true; } if (creditosARealizar != null) { creditosARealizar.clear(); creditosARealizar = null; } } } /** * M�todo que gera as guias de pagamento do resumo da pendencia * [UC0335] - Gerar Resumo de pendencia * * @author Arthur Carvalho * @date 30/09/2010 */ public void gerarGuiaPagamentoPorClienteResumoPendencia(int idLocalidade, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.LOCALIDADE, idLocalidade); try { // System.out.println( " ***RESUMO DE PENDENCIAS DAS CONTAS POR GERENCIA // - LOCALIDADE " + idLocalidade + "***"); List contasPendentes = this.repositorioGerencialCobranca .getGuiasPagamentoPorClienteGerencia(idLocalidade); List<ResumoPendenciaGuiasPagamentoGerenciaHelper> quebra = new ArrayList(); for (int i = 0; i < contasPendentes.size(); i++) { // System.out.println( " ***Agrupando objeto " + i + " de " + // contasPendentes.size() + " da localidade " + idLocalidade + // "***"); Object obj = contasPendentes.get(i); if (obj instanceof Object[]) { Object[] linha = (Object[]) obj; ResumoPendenciaGuiasPagamentoGerenciaHelper helper = new ResumoPendenciaGuiasPagamentoGerenciaHelper( (Integer) linha[0], // Gerencia Regional (Integer) linha[1], // Unidade Negocio (Integer) linha[2], // Elo (Integer) linha[3], // Localidade (Integer) linha[4], // Setor Comercial (Integer) linha[5], // Rota (Integer) linha[6], // Quadra (Integer) linha[7], // Codigo Setor Comercial (Integer) linha[8], // Numero da quadra (Integer) linha[9], // Perfil do imovel (Integer) linha[10], // Situacao Ligacao Agua (Integer) linha[11], // Situacao Ligacao Esgoto (Integer) linha[12], // Perfil liga��o Agua (Integer) linha[13], // Perfil liga��o Esgoto (Integer) linha[14], // Volume Fixado Agua (Integer) linha[15], // Volume Fixado Agua (Integer) linha[16], // Volume Fixado Esgoto new Integer(7), // Tipo do documento (Integer) linha[17], // Ano mes de referencia // documento (Integer) linha[18], // Tipo do financiamento (Integer) linha[19], // Referencia do vencimento da // conta (BigDecimal) linha[20],// Valor dos debitos (Integer) linha[22], //tarifa consumo (Short) linha[23]);// codigo rota // Integer idImovel = (Integer) linha[21]; // Codigo do imovel que // esta sendo processado // Pesquisamos a esfera de poder do cliente responsavel // helper // .setIdEsferaPoder(this.repositorioGerencialCadastro // .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // // Pesquisamos o tipo de cliente responsavel do imovel // helper // .setIdTipoClienteResponsavel(this.repositorioGerencialCadastro // .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel // Categoria categoria = null; // categoria = this.getControladorImovel() // .obterPrincipalCategoriaImovel(idImovel); // if (categoria != null) { // helper.setIdPrincipalCategoriaImovel(categoria.getId()); // // Pesquisando a principal subcategoria // ImovelSubcategoria subcategoria = this // .getControladorImovel().obterPrincipalSubcategoria( // categoria.getId(), idImovel); // if (subcategoria != null) { // helper.setIdPrincipalSubCategoriaImovel(subcategoria // .getComp_id().getSubcategoria().getId()); // } // } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel // if (helper.getIdEsferaPoder().equals(0)) { // Imovel imovel = new Imovel(); // imovel.setId(idImovel); // Cliente clienteTemp = this.getControladorImovel() // .consultarClienteUsuarioImovel(imovel); // if (clienteTemp != null) { // helper.setIdEsferaPoder(clienteTemp.getClienteTipo() // .getEsferaPoder().getId()); // } // } // if (helper.getIdTipoClienteResponsavel().equals(0)) { // Imovel imovel = new Imovel(); // imovel.setId(idImovel); // Cliente clienteTemp = this.getControladorImovel() // .consultarClienteUsuarioImovel(imovel); // if (clienteTemp != null) { // helper.setIdTipoClienteResponsavel(clienteTemp // .getClienteTipo().getId()); // } // } // Verificamos se o objeto ja possue uma quebra cadastrada if (quebra.contains(helper)) { int posicao = quebra.indexOf(helper); ResumoPendenciaGuiasPagamentoGerenciaHelper jaCadastrado = (ResumoPendenciaGuiasPagamentoGerenciaHelper) quebra .get(posicao); jaCadastrado.setQuantidadeDocumentos(jaCadastrado .getQuantidadeDocumentos() + 1); jaCadastrado.setValorPendenteDebito(jaCadastrado .getValorPendenteDebito().add( helper.getValorPendenteDebito())); } else { quebra.add(helper); } } } // Devemos gravar como anomes de arrecadacao -1 SistemaParametro sistema = getControladorUtil() .pesquisarParametrosDoSistema(); Integer anoMesArrecadacaoMenosUm = Util.subtrairMesDoAnoMes(sistema .getAnoMesArrecadacao(), 1); // Inserirmos manualmente, por quest�o de performace for (int j = 0; j < quebra.size(); j++) { this.repositorioGerencialCobranca .inserirGuiasPagamentoGerencia( anoMesArrecadacaoMenosUm, (ResumoPendenciaGuiasPagamentoGerenciaHelper) quebra .get(j)); } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NA LOCALIDADE " + idLocalidade); ex.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new ControladorException("erro.sistema", ex); } } /** * [UC0489] - Consultar Resumo das A��es de Cobran�a Popup de Motivo de * Encerramento * * @author Ivan Sergio * @date 23/12/2010 * @return Collection CobrancaAcaoMotivoEncerramentoHelper * @throws ErroRepositorioException */ public Collection consultarResumoCobrancaAcaoTipoCorte( Integer idCobrancaAcao, Integer idCobrancaAcaoSituacao, InformarDadosGeracaoResumoAcaoConsultaHelper informarDadosGeracaoResumoAcaoConsultaHelper, boolean ehExecucao) throws ControladorException { Collection cobrancaAcaoTipoCorte = null; try { cobrancaAcaoTipoCorte = repositorioGerencialCobranca .consultarCobrancaAcaoTipoCorte( idCobrancaAcao, idCobrancaAcaoSituacao, informarDadosGeracaoResumoAcaoConsultaHelper, ehExecucao); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return cobrancaAcaoTipoCorte; } }