package gcom.arrecadacao; import gcom.arrecadacao.aviso.AvisoBancario; import gcom.arrecadacao.aviso.bean.AvisoBancarioHelper; import gcom.arrecadacao.aviso.bean.MovimentarPagamentosDevolucoesHelper; import gcom.arrecadacao.aviso.bean.PagamentosDevolucoesHelper; import gcom.arrecadacao.aviso.bean.ValoresArrecadacaoDevolucaoAvisoBancarioHelper; import gcom.arrecadacao.banco.Agencia; import gcom.arrecadacao.banco.Banco; import gcom.arrecadacao.bean.ConsultarRelatorioAnalisePagamentoCartaoDebitoHelper; import gcom.arrecadacao.bean.MovimentoArrecadadoresPorNSAHelper; import gcom.arrecadacao.bean.PesquisarAnaliseArrecadacaoHelper; import gcom.arrecadacao.bean.PesquisarAnaliseAvisosBancariosHelper; import gcom.arrecadacao.bean.PesquisarAvisoBancarioPorContaCorrenteHelper; import gcom.arrecadacao.debitoautomatico.DebitoAutomatico; import gcom.arrecadacao.debitoautomatico.DebitoAutomaticoMovimento; import gcom.arrecadacao.pagamento.FiltroPagamento; import gcom.arrecadacao.pagamento.GuiaPagamento; import gcom.arrecadacao.pagamento.Pagamento; import gcom.arrecadacao.pagamento.PagamentoCartaoDebito; import gcom.arrecadacao.pagamento.PagamentoHistorico; import gcom.arrecadacao.pagamento.PagamentoSituacao; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteEndereco; import gcom.cadastro.cliente.ClienteFone; import gcom.cadastro.cliente.ClienteImovel; import gcom.cadastro.cliente.ClienteRelacaoTipo; import gcom.cadastro.cliente.IClienteFone; import gcom.cadastro.endereco.LogradouroBairro; import gcom.cadastro.endereco.LogradouroCep; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.cobranca.CobrancaDocumento; import gcom.cobranca.CobrancaDocumentoItem; import gcom.cobranca.DocumentoTipo; import gcom.cobranca.parcelamento.Parcelamento; import gcom.cobranca.parcelamento.ParcelamentoPagamentoCartaoCredito; import gcom.fachada.Fachada; import gcom.faturamento.ImpostoTipo; import gcom.faturamento.conta.Conta; import gcom.faturamento.conta.ContaGeral; import gcom.faturamento.conta.ContaHistorico; import gcom.faturamento.conta.ContaMotivoCancelamento; import gcom.faturamento.conta.Fatura; import gcom.faturamento.credito.CreditoARealizar; import gcom.faturamento.credito.CreditoOrigem; import gcom.faturamento.credito.CreditoRealizado; import gcom.faturamento.credito.CreditoTipo; import gcom.faturamento.debito.DebitoACobrar; import gcom.faturamento.debito.DebitoACobrarGeral; import gcom.faturamento.debito.DebitoCobrado; import gcom.faturamento.debito.DebitoCreditoSituacao; import gcom.faturamento.debito.DebitoTipo; import gcom.financeiro.FinanciamentoTipo; import gcom.financeiro.lancamento.LancamentoItem; import gcom.financeiro.lancamento.LancamentoItemContabil; import gcom.financeiro.lancamento.LancamentoTipo; import gcom.micromedicao.bean.ConsultarArquivoTextoRoteiroEmpresaHelper; import gcom.relatorio.arrecadacao.GuiaDevolucaoRelatorioHelper; import gcom.relatorio.arrecadacao.RelatorioAnaliseArrecadacaoBean; import gcom.relatorio.arrecadacao.RelatorioAnaliseAvisosBancariosBean; import gcom.relatorio.arrecadacao.RelatorioAvisoBancarioPorContaCorrenteBean; import gcom.relatorio.arrecadacao.RelatorioDocumentoNaoAceitosBean; import gcom.relatorio.arrecadacao.RelatorioTranferenciaPagamentoBean; import gcom.relatorio.arrecadacao.dto.ResumoCreditosAvisosBancariosDTO; import gcom.relatorio.arrecadacao.pagamento.GuiaPagamentoRelatorioHelper; import gcom.util.CollectionUtil; import gcom.util.ConstantesSistema; import gcom.util.ControladorException; import gcom.util.ErroRepositorioException; import gcom.util.HibernateUtil; import gcom.util.Util; import gcom.util.filtro.GeradorHQLCondicional; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.math.BigInteger; import java.text.ParseException; import java.text.SimpleDateFormat; 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 java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArraySet; import org.hibernate.Hibernate; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.StatelessSession; import org.hibernate.type.Type; public class RepositorioArrecadacaoHBM implements IRepositorioArrecadacao { protected static IRepositorioArrecadacao instancia; protected RepositorioArrecadacaoHBM() { } public static IRepositorioArrecadacao getInstancia() { String dialect = HibernateUtil.getDialect(); if (dialect.toUpperCase().contains("ORACLE")){ if (instancia == null) { instancia = new RepositorioArrecadacaoHBM(); } } else { if (instancia == null) { instancia = new RepositorioArrecadacaoPostgresHBM(); } } return instancia; } public Integer pesquisarIdRegistroCodigo(String codigoRegistro) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT rc.id " + "FROM RegistroCodigo rc " + "WHERE rc.codigo = :codigoRegistro"; retorno = (Integer) session.createQuery(consulta).setString( "codigoRegistro", codigoRegistro).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Short pesquisarNumeroDiasFloat(Integer codigoBanco, Integer idFormaArrecadacao) throws ErroRepositorioException { Short retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT act.numeroDiaFloat " + "FROM ArrecadadorContratoTarifa act " + "INNER JOIN act.arrecadadorContrato ac " + "INNER JOIN act.arrecadacaoForma af " + "INNER JOIN ac.arrecadador arrec " + "WHERE arrec.codigoAgente = :codigoBanco AND " + "ac.dataContratoEncerramento is null AND " + "af.id = :idFormaArrecadacao"; retorno = (Short) session.createQuery(consulta).setInteger( "codigoBanco", codigoBanco).setInteger( "idFormaArrecadacao", idFormaArrecadacao).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public AvisoBancario pesquisarAvisoBancario(Integer codigoBanco, Date dataGeracaoArquivo, Date dataPrevistaCredito,Integer idArrecadadorMovimento, Integer idFormaArrecadacao) throws ErroRepositorioException { AvisoBancario retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT ab " + "FROM AvisoBancario ab " + "INNER JOIN ab.arrecadador arrec " + "LEFT JOIN ab.arrecadadorMovimento arrecMov " + "WHERE arrec.codigoAgente = :codigoBanco AND " + "ab.dataLancamento = :dataGeracaoArquivo AND " + (idFormaArrecadacao != null ? "ab.arrecadacaoForma.id = :idFormaArrecadacao AND " : "") + "(ab.valorArrecadacaoCalculado = 0 OR arrecMov.id = :idArrecadadorMovimento) AND " + "(ab.dataPrevista = :dataPrevistaCredito OR ab.dataRealizada = :dataPrevistaCredito)"; retorno = (AvisoBancario) session.createQuery(consulta).setInteger( "codigoBanco", codigoBanco).setDate("dataGeracaoArquivo", dataGeracaoArquivo).setInteger("idFormaArrecadacao", idFormaArrecadacao) .setDate("dataPrevistaCredito", dataPrevistaCredito) .setInteger("idArrecadadorMovimento",idArrecadadorMovimento) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Double pesquisarDeducoesAvisoBancario(String codigoAgente, Date dataLancamento, String numeroSequencial) throws ErroRepositorioException { Double retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT sum(vd.valorDeducao) " + "FROM AvisoDeducoes vd " + "LEFT JOIN vd.avisoBancario aviso " + "LEFT JOIN aviso.arrecadador arrecadador " + "WHERE arrecadador.codigoAgente = :codigoAgente " + "AND aviso.dataLancamento = :dataLancamento " + "AND aviso.numeroSequencial = :numeroSequencial"; BigDecimal big = (BigDecimal) session.createQuery(consulta) .setShort("codigoAgente", Short.parseShort(codigoAgente)) .setDate("dataLancamento", dataLancamento).setShort( "numeroSequencial", Short.parseShort(numeroSequencial)) .setMaxResults(1).uniqueResult(); if (big != null) { retorno = new Double(big.toString()); } else { retorno = null; } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Short pesquisarValorMaximoNumeroSequencial(Date dataLancamento, String idArrecadador) throws ErroRepositorioException { Short retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT max(aviso.numeroSequencial) " + "FROM AvisoBancario aviso " + "LEFT JOIN aviso.arrecadador arrecadador " + "WHERE arrecadador.id = :idArrecadador " + "AND aviso.dataLancamento = :dataLancamento"; retorno = (Short) session.createQuery(consulta).setInteger( "idArrecadador", Integer.parseInt(idArrecadador)).setDate( "dataLancamento", dataLancamento).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * < <Descri��o do m�todo>> * * @param imovel * Descri��o do par�metro * @param anoMesReferencia * Descri��o do par�metro * @return Descri��o do retorno * @exception ErroRepositorioException * Descri��o da exce��o */ public Integer pesquisarExistenciaGuiaPagamento(Imovel imovel, Integer idDebitoTipo, BigDecimal valorPagamento) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select gp.id from GuiaPagamento gp " + "inner join gp.imovel " + "inner join gp.debitoTipo " + "where gp.debitoTipo = :idDebitoTipo " + "and gp.imovel.id = :imovel and " + "gp.debitoCreditoSituacaoAtual.id IN(:normal, :incluida, :retificada) " + "and gp.valorDebito = :valorPagamento " + "order by gp.dataVencimento" ; retorno = (Integer) session.createQuery(consulta).setInteger( "imovel", imovel.getId()).setInteger("idDebitoTipo", idDebitoTipo).setInteger("normal", DebitoCreditoSituacao.NORMAL).setInteger("incluida", DebitoCreditoSituacao.INCLUIDA).setInteger("retificada", DebitoCreditoSituacao.RETIFICADA). setBigDecimal("valorPagamento", valorPagamento).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * < <Descri��o do m�todo>> * * @param imovel * Descri��o do par�metro * @param anoMesReferencia * Descri��o do par�metro * @return Descri��o do retorno * @exception ErroRepositorioException * Descri��o da exce��o */ public GuiaPagamento pesquisarExistenciaGuiaPagamento(Imovel imovel, BigDecimal valorPagamento) throws ErroRepositorioException { GuiaPagamento retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select gp from GuiaPagamento gp " + "inner join gp.imovel " + "inner join gp.debitoTipo " + "where gp.imovel.id = :imovel and " + "gp.debitoCreditoSituacaoAtual.id IN(:normal, :incluida, :retificada) " + "and gp.valorDebito = :valorPagamento " + "order by gp.dataVencimento" ; retorno = (GuiaPagamento) session.createQuery(consulta).setInteger( "imovel", imovel.getId()).setInteger("normal", DebitoCreditoSituacao.NORMAL).setInteger("incluida", DebitoCreditoSituacao.INCLUIDA).setInteger("retificada", DebitoCreditoSituacao.RETIFICADA). setBigDecimal("valorPagamento", valorPagamento).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * < <Descri��o do m�todo>> * * @param imovel * Descri��o do par�metro * @param anoMesReferencia * Descri��o do par�metro * @return Descri��o do retorno * @exception ErroRepositorioException * Descri��o da exce��o */ public Integer pesquisarExistenciaGuiaPagamentoCliente(Integer idCliente, Integer idDebitoTipo) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select gp.id from GuiaPagamento gp " + "inner join gp.cliente clie " + "inner join gp.debitoTipo dbtp " + "where dbtp.id = :idDebitoTipo " + "and clie.id = :idCliente and " + "gp.debitoCreditoSituacaoAtual.id IN(:normal, :incluida, :retificada)"; retorno = (Integer) session.createQuery(consulta).setInteger( "idCliente", idCliente).setInteger("idDebitoTipo", idDebitoTipo).setInteger("normal", DebitoCreditoSituacao.NORMAL).setInteger("incluida", DebitoCreditoSituacao.INCLUIDA).setInteger("retificada", DebitoCreditoSituacao.RETIFICADA).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Integer pesquisarIdArrecadacaoForma(String codigoArrecadacaoForma) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select af.id from ArrecadacaoForma af " + "where af.codigoArrecadacaoForma = :codigoArrecadacaoForma "; retorno = (Integer) session.createQuery(consulta).setString( "codigoArrecadacaoForma", codigoArrecadacaoForma) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public ArrecadadorContrato pesquisarNumeroSequecialArrecadadorContrato( Integer idArrecadadorContrato) throws ErroRepositorioException { ArrecadadorContrato retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT ac " + "FROM ArrecadadorContrato ac " + "WHERE ac.id = :idArrecadadorContrato AND " + "ac.dataContratoEncerramento is null"; retorno = (ArrecadadorContrato) session.createQuery(consulta) .setInteger("idArrecadadorContrato", idArrecadadorContrato).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Integer verificarExistenciaBanco(Integer idBanco) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select banco.id " + "from Banco banco " + "where banco.id = :idBanco"; retorno = (Integer) session.createQuery(consulta).setInteger( "idBanco", idBanco.intValue()).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Integer verificarExistenciaAgencia(String codigoAgencia, Integer idBanco) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select agencia.id " + "from Agencia agencia " + "where agencia.codigoAgencia = :codigoAgencia and agencia.banco.id = :idBanco"; retorno = (Integer) session.createQuery(consulta).setString( "codigoAgencia", codigoAgencia).setInteger("idBanco", idBanco).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa a agencia * * @author S�vio Luiz * @date 05/11/2007 * * @return Agencia * @throws ErroRepositorioException */ public Agencia pesquisarAgencia(String codigoAgencia, Integer idBanco) throws ErroRepositorioException { Agencia retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select agencia " + "from Agencia agencia " + "where agencia.codigoAgencia = :codigoAgencia and agencia.banco.id = :idBanco"; retorno = (Agencia) session.createQuery(consulta).setString( "codigoAgencia", codigoAgencia).setInteger("idBanco", idBanco).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Integer pesquisarIdDepositoArrecadacao(Integer codigoBanco, String codigoConvenio) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT ctba.id " + "FROM ArrecadadorContrato ac " + "INNER JOIN ac.arrecadador arrec " + "INNER JOIN ac.contaBancariaDepositoArrecadacao ctba " + "WHERE arrec.codigoAgente = :codigoBanco AND " + "ac.dataContratoEncerramento is null "; if (codigoConvenio != null){ consulta += "AND ac.codigoConvenio = :codigoConvenio "; retorno = (Integer) session.createQuery(consulta).setInteger( "codigoBanco", codigoBanco.intValue()).setString( "codigoConvenio", codigoConvenio).setMaxResults(1) .uniqueResult(); }else{ retorno = (Integer) session.createQuery(consulta).setInteger( "codigoBanco", codigoBanco.intValue()).setMaxResults(1) .uniqueResult(); } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro do movimento dos arrecadadores * * [UC0263] - Filtrar Movimento dos Arrecadadores * * @author Raphael Rossiter * @date 02/03/2006 * * @param filtroArrecadadorMovimento * @return Uma cole��o de objetos do tipo ArrecadadorMovimento de acordo com * os par�metros recebidos atrav�s do filtro. Est� consulta inclui * os movimentos abertos e fechados * @throws ErroRepositorioException */ public Collection<ArrecadadorMovimento> filtrarMovimentoArrecadadores( FiltroArrecadadorMovimento filtroArrecadadorMovimento) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); try { retorno = new ArrayList( new CopyOnWriteArrayList<ArrecadadorMovimento>( GeradorHQLCondicional .gerarCondicionalQuery( filtroArrecadadorMovimento, "arrecadadorMovimento", "SELECT DISTINCT arrecadadorMovimento " + "FROM ArrecadadorMovimento arrecadadorMovimento " + "LEFT JOIN arrecadadorMovimento.arrecadadorMovimentoItens " + FiltroArrecadadorMovimento.ALIAS_ARRECADADOR_MOVIMENTO_ITEM + "", session).list())); /* * if * (!filtroArrecadadorMovimento.getColecaoCaminhosParaCarregamentoEntidades().isEmpty()) { * PersistenciaUtil.processaObjetosParaCarregamento(filtroArrecadadorMovimento.getColecaoCaminhosParaCarregamentoEntidades(), * retorno); } */ } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Calcula o valor total dos avisos banc�rios de um determinado movimento * * @author Raphael Rossiter * @date 06/03/2006 * * @param arrecadadorMovimento * @return Um BigDecimal que representa o somat�rio de todos os avisos * banc�rios de um determinado movimento * @throws ErroRepositorioException */ public BigDecimal obterTotalArrecadacaoAvisoBancarioPorMovimentoArrecadadores( ArrecadadorMovimento arrecadadorMovimento) throws ErroRepositorioException { BigDecimal retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT SUM(avbc.valorArrecadacaoCalculado - avbc.valorDevolucaoCalculado) " + "FROM AvisoBancario avbc " + "INNER JOIN avbc.arrecadadorMovimento armv " + "WHERE armv.id = :idArrecadadorMovimento "; retorno = (BigDecimal) session.createQuery(consulta).setInteger( "idArrecadadorMovimento", arrecadadorMovimento.getId()) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Obt�m o n�mero de registros em ocorr�ncia de um determinado movimento * (n�mero de linhas da tabela ARRECADADOR_MOVIMENTO_ITEM com ARMV_ID = * ARMV_ID da tabela ARRECADADOR_MOVIMENTO e AMIT_DSOCORRENCIA diferente de * "OK") * * @author Raphael Rossiter * @date 06/03/2006 * * @param arrecadadorMovimento * @return Um Integer que representa a quantidade de registros selecionados * @throws ErroRepositorioException */ public Integer obterNumeroRegistrosEmOcorrenciaPorMovimentoArrecadadores( ArrecadadorMovimento arrecadadorMovimento, String descricaoOcorrencia) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT COUNT(*) " + "FROM ArrecadadorMovimentoItem amit " + "INNER JOIN amit.arrecadadorMovimento armv " + "WHERE armv.id = :idArrecadadorMovimento " + "AND amit.descricaoOcorrencia <> :descricaoOcorrencia"; retorno = (Integer) session.createQuery(consulta).setInteger( "idArrecadadorMovimento", arrecadadorMovimento.getId()) .setString("descricaoOcorrencia", descricaoOcorrencia) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Obt�m o n�mero de registros que n�o foram aceitos de um determinado * movimento (n�mero de linhas da tabela ARRECADADOR_MOVIMENTO_ITEM com * ARMV_ID = ARMV_ID da tabela ARRECADADOR_MOVIMENTO e AMIT_ICACEITACAO * igual a 2 (N�O)) * * @author Raphael Rossiter * @date 08/03/2006 * * @param arrecadadorMovimento * @return Um integer que representa a quantidade de registros selecionados * @throws ControladorException */ public Integer obterNumeroRegistrosNaoAceitosPorMovimentoArrecadadores( ArrecadadorMovimento arrecadadorMovimento, Short indicadorAceitacao) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT COUNT(*) " + "FROM ArrecadadorMovimentoItem amit " + "INNER JOIN amit.arrecadadorMovimento armv " + "WHERE armv.id = :idArrecadadorMovimento " + "AND amit.indicadorAceitacao = :indicadorAceitacao"; retorno = (Integer) session.createQuery(consulta).setInteger( "idArrecadadorMovimento", arrecadadorMovimento.getId().intValue()).setInteger( "indicadorAceitacao", indicadorAceitacao.intValue()) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Seleciona os avisos banc�rios de um determinado movimento * * @author Raphael Rossiter * @date 09/03/2006 * * @param arrecadadorMovimento * @return Uma Collection com os avisos banc�rios de um determinado * movimento * @throws ErroRepositorioException */ public Collection<AvisoBancario> obterAvisosBancariosPorArrecadadorMovimento( ArrecadadorMovimento arrecadadorMovimento) throws ErroRepositorioException { Collection<AvisoBancario> retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT avbc " + "FROM AvisoBancario avbc " + "INNER JOIN avbc.arrecadadorMovimento armv " + "WHERE armv.id = :idArrecadadorMovimento "; retorno = session.createQuery(consulta).setInteger( "idArrecadadorMovimento", arrecadadorMovimento.getId().intValue()).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Calcula o valor total dos pagamentos associados a um determinado aviso * banc�rio (soma (PGMT_VLPAGAMENTO) da tabela PAGAMENTO com AVBC_ID = * AVBC_ID da tabela AVISO_BANCARIO) * * @author Raphael Rossiter * @date 09/03/2006 * * @param avisoBancario * @return Um BigDecimal que representa o somat�rio de todos os pagamentos * de um determinado aviso * @throws ErroRepositorioException */ public BigDecimal obterTotalPagamentoPorAvisoBancario( AvisoBancario avisoBancario) throws ErroRepositorioException { BigDecimal retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT SUM(pgmt.valorPagamento) " + "FROM Pagamento pgmt " + "INNER JOIN pgmt.avisoBancario avbc " + "WHERE avbc.id = :idAvisoBancario "; retorno = (BigDecimal) session.createQuery(consulta).setInteger( "idAvisoBancario", avisoBancario.getId().intValue()) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Calcula o valor total das devolu��es associados a um determinado aviso * banc�rio (soma (DEVL_VLDEVOLUCAO) da tabela DEVOLUCAO com AVBC_ID = * AVBC_ID da tabela AVISO_BANCARIO) * * @author Raphael Rossiter * @date 09/03/2006 * * @param avisoBancario * @return Um BigDecimal que representa o somat�rio de todos as devolu��es * de um determinado aviso * @throws ErroRepositorioException */ public BigDecimal obterTotalDevolucaoPorAvisoBancario( AvisoBancario avisoBancario) throws ErroRepositorioException { BigDecimal retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT SUM(devl.valorDevolucao) " + "FROM Devolucao devl " + "INNER JOIN devl.avisoBancario avbc " + "WHERE avbc.id = :idAvisoBancario "; retorno = (BigDecimal) session.createQuery(consulta).setInteger( "idAvisoBancario", avisoBancario.getId().intValue()) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0270] Apresentar An�lise do Movimento dos Arrecadadores * * O sistema seleciona os itens do movimento do arrecadador. * * [SF0001] Consultar os Itens do Movimento do Arrecadador * * @author Raphael Rossiter,Vivianne Sousa * @data 20/03/2006,05/12/2006 * * @param arrecadadorMovimento * @return Collection<ArrecadadorMovimentoItem> */ public Collection<ArrecadadorMovimentoItem> consultarItensMovimentoArrecadador( ArrecadadorMovimento arrecadadorMovimento, Integer idImovel, Short indicadorAceitacao, String descricaoOcorrencia) throws ErroRepositorioException { Collection<ArrecadadorMovimentoItem> retorno = new ArrayList<ArrecadadorMovimentoItem>(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT amit " + "FROM ArrecadadorMovimentoItem amit " + "INNER JOIN FETCH amit.registroCodigo rgcd " + "INNER JOIN amit.arrecadadorMovimento armv " + "WHERE armv.id = :idArrecadadorMovimento "; if (idImovel != null && !idImovel.equals("")) { consulta = consulta + " AND amit.imovel.id = " + idImovel; } if (indicadorAceitacao != null && !indicadorAceitacao.equals("")) { consulta = consulta + " AND amit.indicadorAceitacao = " + indicadorAceitacao; } if (descricaoOcorrencia != null && !descricaoOcorrencia.equals("")) { if (descricaoOcorrencia .equals("" + ConstantesSistema.SEM_ITENS)) { // sem itens em ocorr�ncia consulta = consulta + " AND amit.descricaoOcorrencia = 'OK' "; } else { // com itens em ocorr�ncia consulta = consulta + " AND amit.descricaoOcorrencia <> 'OK' "; } } retorno = session.createQuery(consulta).setInteger( "idArrecadadorMovimento", arrecadadorMovimento.getId()) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0270] Apresentar An�lise do Movimento dos Arrecadadores * * O sistema seleciona os itens do movimento do arrecadador. * * [SF0001] Consultar os Itens do Movimento do Arrecadador * * @author Raphael Rossiter,Vivianne Sousa, Kassia Albuquerque * @data 20/03/2006,05/12/2006,22/08/2007 * * @param arrecadadorMovimento * @return Collection<ArrecadadorMovimentoItem> */ public Collection<ArrecadadorMovimentoItem> consultarItensMovimentoArrecadador( ArrecadadorMovimento arrecadadorMovimento, Integer idImovel, Short indicadorAceitacao, String descricaoOcorrencia,String codigoArrecadacaoForma) throws ErroRepositorioException { Collection<ArrecadadorMovimentoItem> retorno = new ArrayList<ArrecadadorMovimentoItem>(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT amit " + "FROM ArrecadadorMovimentoItem amit " + "INNER JOIN FETCH amit.registroCodigo rgcd " + "INNER JOIN amit.arrecadadorMovimento armv " + "WHERE armv.id = :idArrecadadorMovimento "; if (idImovel != null && !idImovel.equals("")) { consulta = consulta + " AND amit.imovel.id = " + idImovel; } if (indicadorAceitacao != null && !indicadorAceitacao.equals("")) { consulta = consulta + " AND amit.indicadorAceitacao = " + indicadorAceitacao; } if (descricaoOcorrencia != null && !descricaoOcorrencia.equals("")) { if (descricaoOcorrencia .equals("" + ConstantesSistema.SEM_ITENS)) { // sem itens em ocorr�ncia consulta = consulta + " AND amit.descricaoOcorrencia = 'OK' "; } else { // com itens em ocorr�ncia consulta = consulta + " AND amit.descricaoOcorrencia <> 'OK' "; } } // ------------- Forma de Arrecada��o -------- Kassia Albuquerque if (codigoArrecadacaoForma != null && !codigoArrecadacaoForma.equals("")) { if (codigoArrecadacaoForma.equalsIgnoreCase("1")){ consulta = consulta + " AND ( substr(amit_cnregistro, 117,1) = '1' OR substr(amit_cnregistro, 117,1) is null )" + "AND rgcd.id = 7"; }else if (codigoArrecadacaoForma.equalsIgnoreCase("Z")){ consulta = consulta + " AND rgcd.id = 6 OR (rgcd.id = 7 AND substr(amit_cnregistro, 117,1) = 'Z')"; }else{ consulta = consulta + " AND rgcd.id = 7 and substr(amit_cnregistro, 117,1) = '"+ codigoArrecadacaoForma + "'"; } } retorno = session.createQuery(consulta).setInteger( "idArrecadadorMovimento", arrecadadorMovimento.getId()) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Faz a pesquisa de devolu��o fazendo os carregamentos de clienteContas, * clienteImoveis, clientesGuiaPagamento * * @author Rafael Corr�a * @date * * @param FiltroDevolucao * @return Collection<Devolucao> * @throws ErroRepositorioException */ public Collection<Devolucao> pesquisarDevolucao( FiltroDevolucao filtroDevolucao) throws ErroRepositorioException { Collection<Devolucao> retorno = null; Session session = HibernateUtil.getSession(); try { retorno = new ArrayList( new CopyOnWriteArraySet<Devolucao>( GeradorHQLCondicional.gerarCondicionalQuery( filtroDevolucao, "devolucao", "select distinct devolucao from gcom.arrecadacao.Devolucao devolucao " + "left join fetch devolucao.guiaDevolucao " + "left join fetch devolucao.guiaDevolucao.conta conta " + "left join fetch conta.clienteContas clienteContas " + "left join fetch devolucao.imovel imov " + "left join fetch imov.localidade loca " + "left join fetch imov.setorComercial " + "left join fetch imov.quadra " + "left join fetch devolucao.debitoTipo " + "left join fetch devolucao.avisoBancario avis " + "left join fetch avis.arrecadador arre " + "left join fetch arre.cliente " + "left join fetch devolucao.devolucaoSituacaoAtual " + "left join fetch devolucao.guiaDevolucao.documentoTipo " + "left join fetch loca.gerenciaRegional " + "left join devolucao.imovel.clienteImoveis clienteImoveis " + "left join devolucao.guiaDevolucao.guiaPagamento.clientesGuiaPagamento clientesGuiaPagamento ", session).list())); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * @author Rafael Corr�a * @date 21/12/2006 * * @param FiltroPagamento * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentoImovel(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection<Pagamento> retorno = null; // Collection<Pagamento> colecaoPagamenorioto = null; String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamento(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = " select distinct pagamento " + " from gcom.arrecadacao.pagamento.Pagamento pagamento " + " INNER JOIN FETCH pagamento.avisoBancario avbc " + " INNER JOIN FETCH avbc.arrecadador arrec " + " INNER JOIN FETCH arrec.cliente clie " + " INNER JOIN FETCH pagamento.documentoTipo doctoTp " + " LEFT JOIN FETCH pagamento.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.conta conta " + " LEFT JOIN FETCH contaGeral.contaHistorico contaHistorico " + " LEFT JOIN FETCH pagamento.guiaPagamento gpag " + " LEFT JOIN FETCH gpag.debitoTipo dbtpGpag " + " LEFT JOIN FETCH pagamento.debitoACobrarGeral dbcbGeral " + " LEFT JOIN FETCH dbcbGeral.debitoACobrar dbcb " + " LEFT JOIN FETCH dbcb.debitoTipo dbtpDbcb " + " LEFT JOIN FETCH pagamento.debitoTipo dbtp " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAtual pagtoSitAtual " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAnterior pagtoSitAnterior " + condicionais ; if(localidadeInicial != null && localidadeFinal != null && !localidadeInicial.equals("") && !localidadeFinal.equals("")){ hql = hql + " order by pagamento.localidade.id, pagamento.imovel.id, " + " pagamento.anoMesReferenciaPagamento, pagamento.dataPagamento "; }else{ hql = hql + " order by pagamento.anoMesReferenciaPagamento desc , pagamento.dataPagamento desc "; } retorno = session.createQuery(hql).list(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Exclui os dados di�rios da arrecada��o do ano/m�s da arrecada��o corrente * * [UC0301] Gerar Dados Di�rios da Arrecada��o * * @author Pedro Alexandre * @date 11/04/2006 * * @param anoMesReferenciaArrecadacao * @throws ErroRepositorioException */ public void excluirDadosDiariosArrecadacaoPorAnoMesArrecadacao( int anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta; try { // Constroi o hql para remover os dados di�rios da arrecada��o // referentes ao ano/m�s de arrecada��o atual consulta = "delete ArrecadacaoDadosDiarios ardd where ardd.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao"; // Executa o hql session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .executeUpdate(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } } /** * Exclui os dados di�rios da arrecada��o do ano/m�s da arrecada��o corrente * por localidade * * [UC0301] Gerar Dados Di�rios da Arrecada��o * * @author Pedro Alexandre * @date 11/04/2006 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @throws ErroRepositorioException */ public void excluirDadosDiariosArrecadacaoPorAnoMesArrecadacaoPorLocalidade( int anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta; try { // Constroi o hql para remover os dados di�rios da arrecada��o // referentes ao ano/m�s de arrecada��o atual consulta = "delete ArrecadacaoDadosDiarios ardd where ardd.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao and ardd.localidade.id = :idLocalidade"; // Executa o hql session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade).executeUpdate(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } } /** * Exclui os dados di�rios da devolucao do ano/m�s da arrecada��o corrente * por localidade * * [UC0301] Gerar Dados Di�rios da Arrecada��o * * @author Francisco do Nascimento * @date 22/10/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @throws ErroRepositorioException */ public void excluirDadosDiariosDevolucaoPorAnoMesArrecadacaoPorLocalidade( int anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta; try { // Constroi o hql para remover os dados di�rios de devolucao // referentes ao ano/m�s de arrecada��o atual consulta = "delete DevolucaoDadosDiarios dvdd where dvdd.anoMesReferencia = :anoMesReferenciaArrecadacao and dvdd.localidade.id = :idLocalidade"; // Executa o hql session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade).executeUpdate(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } } /** * Acumula a quantidade e o valor dos pagamentos com ano/m�s de refer�ncia * da arrecada��o igual ao ano/m�s de refer�ncia da arrecada��o corrente * * [UC0301] Gerar Dados Di�rios da Arrecada��o * * @author Pedro Alexandre * @date 11/04/2006 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection acumularQuantidadeEValorPagamentoPorAnoMesArrecadacao( int anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a vari�velque vai armazenar a cole��o de pagamentos Collection retorno = new ArrayList(); // Cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta; try { // Cria o hql para acumular o valor e quantidade de pagamentos consulta = acumularQuantidadeEValorPagamentoPorAnoMesArrecadacaoMontarQuery(); retorno = session.createSQLQuery(consulta) .addScalar("idImovel", Hibernate.INTEGER) .addScalar("somaValor", Hibernate.BIG_DECIMAL) .addScalar("qtdPagamento", Hibernate.INTEGER) .addScalar("idSetor", Hibernate.INTEGER) .addScalar("codigoSetor", Hibernate.INTEGER) .addScalar("idRota", Hibernate.INTEGER) .addScalar("idQuadra", Hibernate.INTEGER) .addScalar("numeroQuadra", Hibernate.INTEGER) .addScalar("idPerfil", Hibernate.INTEGER) .addScalar("idLast", Hibernate.INTEGER) .addScalar("idLest", Hibernate.INTEGER) .addScalar("idGreg", Hibernate.INTEGER) .addScalar("idAviso", Hibernate.INTEGER) .addScalar("idArrecadador", Hibernate.INTEGER) .addScalar("idTipoDocumento", Hibernate.INTEGER) .addScalar("idFormaArrec", Hibernate.INTEGER) .addScalar("dataPagamento", Hibernate.DATE) .addScalar("idUN", Hibernate.INTEGER) .addScalar("idTipoDocumentoAgregador", Hibernate.INTEGER) .addScalar("qtdDocumentosAgregados", Hibernate.INTEGER) // .addScalar("idTipoDocumentoAgregador", Hibernate.INTEGER) // .addScalar("idCobrancaDocumento", Hibernate.INTEGER) // .addScalar("idFatura", Hibernate.INTEGER) // .addScalar("qtdFaturas", Hibernate.INTEGER) // .addScalar("qtdCobrancaDocumento", Hibernate.INTEGER) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .list(); // System.out.println(">>> " + session.createQuery(consulta).getQueryString()); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } // Retorna a cole��o de pagamentos return retorno; } /** * Contrucao da query usada no metodo acumularQuantidadeEValorPagamentoPorAnoMesArrecadacao * @author Pedro Alexandre, Francisco do Nascimento * @date 11/04/2006, 01/04/2008 * * @see acumularQuantidadeEValorPagamentoPorAnoMesArrecadacao */ private String acumularQuantidadeEValorPagamentoPorAnoMesArrecadacaoMontarQuery(){ String queryFinal = ""; String parteSelect = "select imov.imov_id as idImovel," + "sum(pgmt.pgmt_vlpagamento) as somaValor," + "count(pgmt.pgmt_id) as qtdPagamento," + "stcm.stcm_id as idSetor," + "stcm.stcm_cdsetorcomercial as codigoSetor," + "qdra.rota_id as idRota," + "qdra.qdra_id as idQuadra," + "qdra.qdra_nnquadra as numeroQuadra," + "imov.iper_id as idPerfil," + "imov.last_id as idLast," + "imov.lest_id as idLest," + "uneg.greg_id as idGreg," + "avbc.avbc_id as idAviso," + "avbc.arrc_id as idArrecadador," + "pgmt.dotp_id as idTipoDocumento," + "pgmt.arfm_id as idFormaArrec," + "pgmt.pgmt_dtpagamento as dataPagamento," + "uneg.uneg_id as idUN, " + "pgmt.dotp_idagregador as idTipoDocumentoAgregador "; String parteFrom = " from arrecadacao.pagamento pgmt " + "left join arrecadacao.aviso_bancario avbc on pgmt.avbc_id = avbc.avbc_id " + "left join cadastro.localidade loca on pgmt.loca_id = loca.loca_id " + "left join cadastro.unidade_negocio uneg on uneg.uneg_id = loca.uneg_id " + "left join cadastro.imovel imov on pgmt.imov_id = imov.imov_id " + "left join cadastro.setor_comercial stcm on imov.stcm_id = stcm.stcm_id " + "left join cadastro.quadra qdra on qdra.qdra_id = imov.qdra_id "; String parteWhere = "where pgmt.pgmt_amreferenciaarrecadacao = :anoMesReferenciaArrecadacao " + "and loca.loca_id = :idLocalidade "; String parteGroupBy = "group by imov.imov_id, stcm.stcm_id, stcm.stcm_cdsetorcomercial, qdra.rota_id, " + "qdra.qdra_id, qdra.qdra_nnquadra, imov.iper_id, imov.last_id, imov.lest_id, uneg.greg_id, " + "avbc.avbc_id, avbc.arrc_id, pgmt.dotp_id, pgmt.arfm_id, pgmt.pgmt_dtpagamento, uneg.uneg_id, " + "pgmt.dotp_idagregador "; // Caso o tipo do documento agregador seja igual ao tipo de documento do pagamento // DocumentoTipoAgregador, IdDocumento, CountDocumento queryFinal = parteSelect + ", count(distinct pgmt.pgmt_id) as qtdDocumentosAgregados " + parteFrom + parteWhere + " and (pgmt.dotp_id = pgmt.dotp_idagregador or (pgmt.cbdo_id is null and pgmt.fatu_id is null)) " + parteGroupBy // UNION > Caso a identificacao do documento agregador seja diferente de nulo + " UNION " + parteSelect + ", count(distinct pgmt.cbdo_id) as qtdDocumentosAgregados " + parteFrom + parteWhere + " and pgmt.dotp_id <> pgmt.dotp_idagregador and pgmt.cbdo_id is not null " + parteGroupBy // UNION > Caso a identificacao da fatura seja diferente de nulo + " UNION " + parteSelect + ", count(distinct pgmt.fatu_id) as qtdDocumentosAgregados " + parteFrom + parteWhere + " and pgmt.dotp_id <> pgmt.dotp_idagregador and pgmt.fatu_id is not null " + parteGroupBy ; return queryFinal; } /** * Acumula a quantidade e o valor das devolucoes com ano/m�s de refer�ncia * da arrecada��o igual ao ano/m�s de refer�ncia da arrecada��o corrente * * [UC0301] Gerar Dados Di�rios da Arrecada��o * * @author Francisco do Nascimento * @date 01/04/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection acumularQuantidadeEValorDevolucaoPorAnoMesArrecadacao( int anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a vari�velque vai armazenar a cole��o de pagamentos Collection retorno = new ArrayList(); // Cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta; try { // Cria o hql para acumular o valor e quantidade de pagamentos consulta = acumularQuantidadeEValorDevolucaoPorAnoMesArrecadacaoMontarQuery(); retorno = session.createSQLQuery(consulta) .addScalar("idImovel", Hibernate.INTEGER) .addScalar("somaValor", Hibernate.BIG_DECIMAL) .addScalar("qtdDevolucoes", Hibernate.INTEGER) .addScalar("idSetor", Hibernate.INTEGER) .addScalar("codigoSetor", Hibernate.INTEGER) .addScalar("idRota", Hibernate.INTEGER) .addScalar("idQuadra", Hibernate.INTEGER) .addScalar("numeroQuadra", Hibernate.INTEGER) .addScalar("idPerfil", Hibernate.INTEGER) .addScalar("idLast", Hibernate.INTEGER) .addScalar("idLest", Hibernate.INTEGER) .addScalar("idGreg", Hibernate.INTEGER) .addScalar("idAviso", Hibernate.INTEGER) .addScalar("idArrecadador", Hibernate.INTEGER) .addScalar("idFormaArrec", Hibernate.INTEGER) .addScalar("dataDevolucao", Hibernate.DATE) .addScalar("idUN", Hibernate.INTEGER) .addScalar("idTipoDocumentoAgregador", Hibernate.INTEGER) .addScalar("qtdDocumentosAgregados", Hibernate.INTEGER) .addScalar("tipoDevolucao", Hibernate.STRING) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade).list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } // Retorna a cole��o de pagamentos return retorno; } /** * Contrucao da query usada no metodo acumularQuantidadeEValorDevolucaoPorAnoMesArrecadacao * @author Francisco do Nascimento * @date 01/04/2008 * * @see acumularQuantidadeEValorDevolucaoPorAnoMesArrecadacao */ private String acumularQuantidadeEValorDevolucaoPorAnoMesArrecadacaoMontarQuery(){ String queryFinal = ""; String parteSelect = "select imov.imov_id as idImovel," + "sum(dev.devl_vldevolucao) as somaValor," + "count(dev.devl_id) as qtdDevolucoes," + "stcm.stcm_id as idSetor," + "stcm.stcm_cdsetorcomercial as codigoSetor," + "qdra.rota_id as idRota," + "qdra.qdra_id as idQuadra," + "qdra.qdra_nnquadra as numeroQuadra," + "imov.iper_id as idPerfil," + "imov.last_id as idLast," + "imov.lest_id as idLest," + "uneg.greg_id as idGreg," + "avbc.avbc_id as idAviso," + "avbc.arrc_id as idArrecadador," // + "dotp.id," + "avbc.arfm_id as idFormaArrec," + "dev.devl_dtdevolucao as dataDevolucao," + "uneg.uneg_id as idUN, " + "dev.dotp_idagregador as idTipoDocumentoAgregador "; String parteFrom = " from arrecadacao.devolucao dev " + "left join arrecadacao.aviso_bancario avbc on dev.avbc_id=avbc.avbc_id " // + "left join arrecadacao.arrecadador arrc on avbc.arrc_id = arrc.arrc_id " // + "left join arrecadacao.arrecadacao_forma arfm on avbc.arfm_id = arfm.arfm_id " + "left join cadastro.localidade loca on dev.loca_id = loca.loca_id " + "left join cadastro.unidade_negocio uneg on uneg.uneg_id = loca.uneg_id " // + "left join cadastro.gerencia_regional greg on uneg.greg_id = greg.greg_id " + "left join cadastro.imovel imov on dev.imov_id = imov.imov_id " + "left join cadastro.setor_comercial stcm on imov.stcm_id = stcm.stcm_id " + "left join cadastro.quadra qdra on imov.qdra_id = qdra.qdra_id " // + "left join micromedicao.rota rota on qdra.rota_id = rota.rota_id " // + "left join cadastro.imovel_perfil iper on imov.iper_id = iper_id " // + "left join cobranca.documentoTipoAgregador dotpa " ; String parteWhere = "where dev.devl_amreferenciaarrecadacao = :anoMesReferenciaArrecadacao " + "and dev.loca_id = :idLocalidade "; String parteGroupBy = "group by imov.imov_id, stcm.stcm_id, stcm.stcm_cdsetorcomercial, qdra.rota_id, qdra.qdra_id, qdra.qdra_nnquadra," + "imov.iper_id,imov.last_id,imov.lest_id,uneg.greg_id,avbc.avbc_id,avbc.arrc_id," + "avbc.arfm_id,dev.devl_dtdevolucao,uneg.uneg_id, dev.dotp_idagregador "; // Caso o tipo do documento agregador seja nulo => Tipo de Devolucao Normal queryFinal = parteSelect + ", count(dev.devl_id) as qtdDocumentosAgregados, 'N' as tipoDevolucao " // DocumentoTipoAgregador, IdDocumento, CountDocumento + parteFrom + parteWhere + " and dev.dotp_idagregador is null " + parteGroupBy // UNION > Caso a identificacao do documento agregador seja diferente de nulo e a identificacao do Credito a // Realizar seja diferente de nulo => Tipo de Devolucao Credito + " UNION " + parteSelect + ", count(distinct dev.cbdo_id) as qtdDocumentosAgregados, 'C' as tipoDevolucao " + parteFrom + parteWhere + " and dev.dotp_idagregador is not null and dev.cbdo_id is not null and dev.crar_id is not null " + parteGroupBy // UNION > Caso a identificacao do Credito a realizar seja nula => Tipo de Devolucao Desconto + " UNION " + parteSelect + ", count(distinct dev.cbdo_id) as qtdDocumentosAgregados, 'D' as tipoDevolucao " + parteFrom + parteWhere + " and dev.dotp_idagregador is not null and dev.cbdo_id is not null and dev.crar_id is null " + parteGroupBy ; return queryFinal; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * Atualiza a situa��o atual dos pagamentos (PGST_IDATUAL) com valor * correspondente a pagamento classificado (tabela PAGAMENTO_SITUACAO) e * atualiza o id da conta nos pagamentos (seta CNTA_ID da tabela PAGAMENTO * para CNTA_ID da tabela CONTA) * * [SF0002] Processar Pagamento de Conta * * @author Raphael Rossiter, Pedro Alexandre * @date 19/04/2006, 06/12/2006 * * @param mapPagamentosProcessados * @return void */ @SuppressWarnings("rawtypes") public void processarPagamentoConta( Map<Integer, Collection> mapPagamentosProcessados) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String processarPagamentoConta = "UPDATE Pagamento pgmt " + "SET pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacao, " + "pgmt.contaGeral.id = :conta, " + "ultimaAlteracao = :dataAlteracao " + "WHERE pgmt.id IN(:idsPagamentos)"; Collection colecaoIdsContas = mapPagamentosProcessados.keySet(); Iterator iteratorIdsContas = colecaoIdsContas.iterator(); try { int i = 1; while (iteratorIdsContas.hasNext()) { Integer idConta = (Integer) iteratorIdsContas.next(); Collection colecaoIdsPagamentos = mapPagamentosProcessados.get(idConta); session.createQuery(processarPagamentoConta) .setInteger("pagamentoSituacao", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("conta", idConta) .setTimestamp("dataAlteracao", new Date()) .setParameterList("idsPagamentos", colecaoIdsPagamentos) .executeUpdate(); if (i % 50 == 0) { session.flush(); session.clear(); } i++; } session.flush(); session.clear(); } catch (Exception e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] Classificar Pagamentos e Devolu��es * * Atualiza a situacao atual dos pagamentos (PGST_IDATUAL) (tabela * PAGAMENTO_SITUACAO) * * [SF0008] Processar Pagamento a Maior ou a Menor * * @author Raphael Rossiter * @date 19/04/2006 * * @param idsPagamentos * @return void */ public void atualizarSituacaoPagamento(String[] idsPagamentos, Integer pagamentoSituacao) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarSituacaoPagamento; try { atualizarSituacaoPagamento = "UPDATE Pagamento " + "SET pgst_idatual = :pagamentoSituacao, pgmt_tmultimaalteracao = :dataAlteracao " + "WHERE pgmt_id IN(:idsPagamentos)"; session.createQuery(atualizarSituacaoPagamento).setInteger( "pagamentoSituacao", pagamentoSituacao).setTimestamp( "dataAlteracao", new Date()).setParameterList( "idsPagamentos", idsPagamentos).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] Classificar Pagamentos e Devolu��es * * Atualiza a situacao atual dos pagamentos (PGST_IDATUAL) (tabela * PAGAMENTO_SITUACAO) * * [SF0008] Processar Pagamento a Maior ou a Menor * * @author Raphael Rossiter, Pedro Alexandre * @date 19/04/2006, 30/11/2006 * * @param colecaoIdsPagamentos * @param pagamentoSituacao * @throws ErroRepositorioException */ public void atualizarSituacaoPagamento(Collection colecaoIdsPagamentos, Integer pagamentoSituacao) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); // Iterator iteratorPagamentos = colecaoIdsPagamentos.iterator(); String atualizarSituacaoPagamento; // String idPagamento = null; try { atualizarSituacaoPagamento = "UPDATE Pagamento " + "SET pgst_idatual = :pagamentoSituacao, pgmt_tmultimaalteracao = :dataAlteracao " + "WHERE pgmt_id in(:idsPagamentos)"; session.createQuery(atualizarSituacaoPagamento).setInteger( "pagamentoSituacao", pagamentoSituacao).setTimestamp( "dataAlteracao", new Date()).setParameterList( "idsPagamentos", colecaoIdsPagamentos).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] Classificar Pagamentos e Devolu��es * * Atualiza a situacao anterior dos pagamentos (PGST_IDANTERIOR) (tabela * PAGAMENTO_SITUACAO) * * [SF0008] Processar Pagamento a Maior ou a Menor * * @author Raphael Rossiter * @date 19/04/2006 * * @param idsPagamentos * @return void */ public void atualizarSituacaoAnteriorPagamento(String[] idsPagamentos, Integer pagamentoSituacao) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarSituacaoPagamento; try { atualizarSituacaoPagamento = "UPDATE Pagamento " + "SET pgst_idanterior = :pagamentoSituacao, pgmt_tmultimaalteracao = :dataAlteracao " + "WHERE pgmt_id IN(:idsPagamentos)"; session.createQuery(atualizarSituacaoPagamento).setInteger( "pagamentoSituacao", pagamentoSituacao).setTimestamp( "dataAlteracao", new Date()).setParameterList( "idsPagamentos", idsPagamentos).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] Classificar Pagamentos e Devolu��es * * Atualiza a situacao atual das devolucoes (DVST_IDATUAL) com valor * correspondente a pagamento em duplicidade n�o encontrado (tabela * DEVOLUCAO_SITUACAO) * * [SF0011] Processar Devolu��es de Pagamentos * * @author Raphael Rossiter * @date 15/06/2006 * * @param idsDevolucoes * @return void */ public void atualizarSituacaoDevolucao(String[] idsDevolucao, Integer devolucaoSituacao) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarSituacaoDevolucao; try { for (int i = 0; i < idsDevolucao.length; i++) { Integer id = new Integer(idsDevolucao[i]); atualizarSituacaoDevolucao = "UPDATE Devolucao " + "SET dvst_idatual = :devolucaoSituacao, " + " devl_tmultimaalteracao = :dataAlteracao " + "WHERE devl_id =:idsDevolucao"; session.createQuery(atualizarSituacaoDevolucao).setInteger( "devolucaoSituacao", devolucaoSituacao).setTimestamp( "dataAlteracao", new Date()).setParameter( "idsDevolucao", id.intValue()).executeUpdate(); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] Classificar Pagamentos e Devolu��es * * Atualizar Valor Excedente do Pagamento * * [SF0009] Atualizar Valor Excedente do Pagamento * * @author Raphael Rossiter * @date 25/04/2006 * * @param pagamento * @return void */ public void atualizarValorExcedentePagamento(Pagamento pagamento) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarValorExcedente; try { atualizarValorExcedente = "UPDATE Pagamento " + "SET pgmt_vlexcedente = :valorExcedente, pgmt_tmultimaalteracao = :dataAlteracao " + "WHERE pgmt_id = :idPagamento "; session.createQuery(atualizarValorExcedente).setBigDecimal( "valorExcedente", pagamento.getValorExcedente()) .setTimestamp("dataAlteracao", new Date()).setInteger( "idPagamento", pagamento.getId()).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] Classificar Pagamentos e Devolu��es * * Atualizar Valor Excedente do Pagamento * * [SF0009] Atualizar Valor Excedente do Pagamento * * @author Raphael Rossiter, Pedro Alexandre * @date 25/04/2006, 29/11/2006 * * @param colecaoPagamento * @return void */ public void atualizarValorExcedentePagamento( Collection<Pagamento> colecaoPagamento) throws ErroRepositorioException { // StatelessSession session = HibernateUtil.getStatelessSession(); Session session = HibernateUtil.getSession(); Iterator iteratorPagamentos = colecaoPagamento.iterator(); String atualizarValorExcedente; Pagamento pagamento = null; try { atualizarValorExcedente = "UPDATE Pagamento pgmt " + "SET pgmt.valorExcedente = :valorExcedente, " + "pgmt.ultimaAlteracao = :dataAlteracao " + "WHERE pgmt.id = :idPagamento "; int i = 1; while (iteratorPagamentos.hasNext()) { pagamento = (Pagamento) iteratorPagamentos.next(); session.createQuery(atualizarValorExcedente).setBigDecimal( "valorExcedente", pagamento.getValorExcedente()) .setTimestamp("dataAlteracao", new Date()).setInteger( "idPagamento", pagamento.getId()) .executeUpdate(); if (i % 50 == 0) { session.flush(); session.clear(); } i++; } session.flush(); session.clear(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] Classificar Pagamentos e Devolu��es * * Atualiza a situa��o atual dos pagamentos (PGST_IDATUAL) com valor * correspondente a pagamento classificado (tabela PAGAMENTO_SITUACAO) e * atualiza o id da guia de pagamento nos pagamentos (seta GPAG_ID da tabela * PAGAMENTO para GPAG_ID da tabela GUIA_PAGAMENTO) * * [SF0004] Processar Pagamento de Guia de Pagamento * * @author Raphael Rossiter, Pedro Alexandre * @date 26/04/2006, 11/12/2006 * * @param mapPagamentosProcessados * @throws ErroRepositorioException */ public void processarPagamentoGuiaPagamento( Map<Integer, Collection> mapPagamentosProcessados) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String processarPagamentoGuiaPagamento = "UPDATE Pagamento " + "SET pgst_idatual = :pagamentoSituacao, " + "gpag_id = :guiaPagamento, " + "pgmt_tmultimaalteracao = :dataAlteracao " + "WHERE pgmt_id IN(:idsPagamentos)"; Collection colecaoIdsGuias = mapPagamentosProcessados.keySet(); Iterator iteratorIdsGuias = colecaoIdsGuias.iterator(); try { int i = 1; while (iteratorIdsGuias.hasNext()) { Integer idGuiaPagamento = (Integer) iteratorIdsGuias.next(); Collection colecaoIdsPagamentos = mapPagamentosProcessados .get(idGuiaPagamento); session .createQuery(processarPagamentoGuiaPagamento) .setInteger("pagamentoSituacao", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("guiaPagamento", idGuiaPagamento) .setTimestamp("dataAlteracao", new Date()) .setParameterList("idsPagamentos", colecaoIdsPagamentos) .executeUpdate(); if (i % 50 == 0) { session.flush(); session.clear(); } i++; } session.flush(); session.clear(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] Classificar Pagamentos e Devolu��es * * Atualiza a situa��o atual dos pagamentos (PGST_IDATUAL) com valor * correspondente a pagamento classificado (tabela PAGAMENTO_SITUACAO) e * atualiza o id do d�bito a cobrar nos pagamentos (seta DBAC_ID da tabela * PAGAMENTO para DBAC_ID da tabela DEBITO_A_COBRAR) * * [SF0004] Processar Pagamento de D�bito a Cobrar * * @author Raphael Rossiter ,Pedro Alexandre * @date 27/04/2006, 12/12/2006 * * @param mapPagamentosProcessados * @throws ErroRepositorioException */ public void processarPagamentoDebitoACobrar( Map<Integer, Collection> mapPagamentosProcessados) throws ErroRepositorioException { // StatelessSession session = HibernateUtil.getStatelessSession(); Session session = HibernateUtil.getSession(); String processarPagamentoGuiaPagamento = "UPDATE Pagamento pgmt " + "SET pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacao, " + "pgmt.debitoACobrarGeral.id = :debitoACobrar, " + "pgmt.ultimaAlteracao = :dataAlteracao " + "WHERE pgmt.id IN(:idsPagamentos)"; Collection colecaoIdsDebitosACobrar = mapPagamentosProcessados.keySet(); Iterator iteratorIdsDebitosACobrar = colecaoIdsDebitosACobrar .iterator(); try { int i = 1; while (iteratorIdsDebitosACobrar.hasNext()) { Integer idDebitoACobrar = (Integer) iteratorIdsDebitosACobrar .next(); Collection colecaoIdsPagamentos = mapPagamentosProcessados .get(idDebitoACobrar); session .createQuery(processarPagamentoGuiaPagamento) .setInteger("pagamentoSituacao", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("debitoACobrar", idDebitoACobrar) .setTimestamp("dataAlteracao", new Date()) .setParameterList("idsPagamentos", colecaoIdsPagamentos) .executeUpdate(); if (i % 50 == 0) { session.flush(); session.clear(); } i++; } session.flush(); session.clear(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona a guia de pagamento correspondente ao pagamento * atrav�s do im�vel, cliente e do tipo de d�bito (a partir da tabela * GUIA_PAGAMENTO com IMOV_ID, CLIE_ID e DBTP_ID da tabela PAGAMENTO e * DCST_IDATUAL com valor correspondente a normal da tabela * DEBITO_CREDITO_SITUACAO) * * [SF0003] Selecionar Guia de Pagamento pela Localidade, Im�vel, Cliente e * D�bito Tipo * * @author Raphael Rossiter, Pedro Alexandre, Pedro Alexandre, Pedro Alexandre * @date 26/04/2006, 14/03/2007, 05/06/2007, 02/10/2007 * * @param imovel * @param cliente * @param debitoTipo * @param anoMesFaturamento * * @return Collection<GuiaPagamento> */ public Collection<GuiaPagamento> selecionarGuiaPagamentoPelaLocalidadeImovelClienteDebitoTipo( Imovel imovel, Cliente cliente, DebitoTipo debitoTipo, Integer anoMesFaturamento) throws ErroRepositorioException { Collection<GuiaPagamento> retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { if (imovel != null) { consulta = "SELECT guiaPagamento " + "FROM GuiaPagamento guiaPagamento " + "WHERE guiaPagamento.imovel.id = :idImovel " + "AND guiaPagamento.debitoTipo.id = :idDebitoTipo " + "AND guiaPagamento.debitoCreditoSituacaoAtual.id = :idDebitoCreditoSituacao " //+ "AND guiaPagamento.anoMesReferenciaContabil < :anoMesFaturamento " + "ORDER BY guiaPagamento.dataVencimento"; retorno = session.createQuery(consulta) .setInteger("idImovel",imovel.getId()) .setInteger("idDebitoTipo",debitoTipo.getId()) .setInteger("idDebitoCreditoSituacao",DebitoCreditoSituacao.NORMAL) //.setInteger("anoMesFaturamento", anoMesFaturamento) .list(); } else if (cliente != null) { consulta = "SELECT guiaPagamento " + "FROM GuiaPagamento guiaPagamento " + "WHERE guiaPagamento.cliente.id = :idCliente " + "AND guiaPagamento.debitoTipo.id = :idDebitoTipo " + "AND guiaPagamento.debitoCreditoSituacaoAtual.id = :idDebitoCreditoSituacao " //+ "AND guiaPagamento.anoMesReferenciaContabil < :anoMesFaturamento " + "ORDER BY guiaPagamento.dataVencimento"; retorno = session.createQuery(consulta) .setInteger("idCliente",cliente.getId()) .setInteger("idDebitoTipo",debitoTipo.getId()) .setInteger("idDebitoCreditoSituacao",DebitoCreditoSituacao.NORMAL) //.setInteger("anoMesFaturamento", anoMesFaturamento) .list(); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona o d�bito a cobrar correspondente ao pagamento atrav�s * do im�vel e do tipo de d�bito (a partir da tabela DEBITO_A_COBRAR com * IMOV_ID e DBTP_ID da tabela PAGAMENTO e DCST_IDATUAL com valor * correspondente a normal da tabela DEBITO_CREDITO_SITUACAO) * * [SF0005] Selecionar D�bito a Cobrar pela Localidade, Im�vel e D�bito Tipo * * @author Raphael Rossiter, Pedro Alexandre, Pedro Alexandre * @date 26/04/2006, 05/06/2007, 02/10/2007 * * @param imovel, * @param debitoTipo * @param anoMesFaturamento * * @return Collection<DebitoACobrar> */ public Collection<DebitoACobrar> selecionarDebitoACobrarPelaLocalidadeImovelDebitoTipo( Imovel imovel, DebitoTipo debitoTipo, Integer anoMesFaturamento) throws ErroRepositorioException { Collection<DebitoACobrar> retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; Collection<DebitoACobrar> colDebitoACobrar = new ArrayList(); try { consulta = "SELECT deb FROM DebitoACobrar deb " + "WHERE deb.imovel.id = :idImovel " + "AND deb.debitoTipo.id = :idDebitoTipo " + "AND deb.debitoCreditoSituacaoAtual.id = :idDebitoCreditoSituacao " + "ORDER BY deb.geracaoDebito"; retorno = session.createQuery(consulta) .setInteger("idImovel",imovel.getId()) .setInteger("idDebitoTipo",debitoTipo.getId()) .setInteger("idDebitoCreditoSituacao",DebitoCreditoSituacao.NORMAL) .list(); Iterator iteRetorno = retorno.iterator(); while ( iteRetorno.hasNext() ){ DebitoACobrar deb = (DebitoACobrar) iteRetorno.next(); FiltroPagamento filtroPagamento = new FiltroPagamento(); filtroPagamento.adicionarParametro( new ParametroSimples( FiltroPagamento.DEBITO_A_COBRAR, deb.getId() ) ); filtroPagamento.adicionarCaminhoParaCarregamentoEntidade("debitoACobrarGeral"); filtroPagamento.adicionarCaminhoParaCarregamentoEntidade("debitoACobrarGeral.debitoACobrar"); Fachada fachada = Fachada.getInstancia(); Collection colPagamento = fachada.pesquisar( filtroPagamento, Pagamento.class.getName() ); if ( colPagamento != null && colPagamento.size() > 0 ){ Iterator itePagamento = colPagamento.iterator(); if ( itePagamento.hasNext() ){ Pagamento pgto = (Pagamento) itePagamento.next(); if ( pgto.getValorPagamento().compareTo( pgto.getDebitoACobrarGeral().getDebitoACobrar().getValorTotalComBonus() ) == 0 ){ colDebitoACobrar.add( pgto.getDebitoACobrarGeral().getDebitoACobrar() ); } } } } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return colDebitoACobrar; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * [SF0010] Selecionar Pagamentos n�o Classificados de Conta * * @author Raphael Rossiter * @date 26/04/2006 * * @param imovel, * anoMesReferenciaDevolucao * @return Collection<Pagamento> */ public Collection<Pagamento> selecionarPagamentosNaoClassificadosConta( Imovel imovel, Integer anoMesReferenciaDevolucao) throws ErroRepositorioException { Collection<Pagamento> retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "SELECT pgmt FROM Pagamento pgmt " + "WHERE pgmt.imovel.id = :idImovel AND pgmt.anoMesReferenciaPagamento = :anoMesReferenciaDevolucao " + "AND pgmt.pagamentoSituacaoAtual.id NOT IN(:classificado, :movimentoAberto)"; retorno = session.createQuery(consulta).setInteger("idImovel", imovel.getId()).setInteger("anoMesReferenciaDevolucao", anoMesReferenciaDevolucao).setInteger("classificado", PagamentoSituacao.PAGAMENTO_CLASSIFICADO).setInteger( "movimentoAberto", PagamentoSituacao.MOVIMENTO_ABERTO) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * [SF0012] Selecionar Pagamentos n�o classificados de guia de pagamento ou * d�bito a cobrar * * @author Raphael Rossiter * @date 15/06/2006 * * @param imovel, * anoMesReferenciaDevolucao * @return Collection<Pagamento> */ public Collection<Pagamento> selecionarPagamentosNaoClassificadosGuiaPagamentoDebitoACobrar( Imovel imovel, Cliente cliente, DebitoTipo debitoTipo) throws ErroRepositorioException { Collection<Pagamento> retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { if (imovel != null){ consulta = "SELECT pgmt FROM Pagamento pgmt " + "WHERE pgmt.imovel.id = :idImovel AND " + " pgmt.debitoTipo.id = :idDebitoTipo " + "AND pgmt.pagamentoSituacaoAtual.id NOT IN(:classificado, :movimentoAberto)"; retorno = session.createQuery(consulta) .setInteger("idImovel", imovel.getId()) .setInteger("idDebitoTipo", debitoTipo.getId()) .setInteger("classificado", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("movimentoAberto", PagamentoSituacao.MOVIMENTO_ABERTO).list(); } else if (cliente != null) { consulta = "SELECT pgmt FROM Pagamento pgmt " + "WHERE pgmt.cliente.id = :idCliente AND " + " pgmt.debitoTipo.id = :idDebitoTipo " + "AND pgmt.pagamentoSituacaoAtual.id NOT IN(:classificado, :movimentoAberto)"; retorno = session.createQuery(consulta) .setInteger("idCliente", cliente.getId()) .setInteger("idDebitoTipo", debitoTipo.getId()) .setInteger("classificado", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("movimentoAberto", PagamentoSituacao.MOVIMENTO_ABERTO).list(); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO) e com o tipo do documento correspondente a * conta * * @author Raphael Rossiter * @data 18/04/2006 * * @param anoMesReferenciaFaturamento * @return Collection<Pagamento> */ public Collection<Object[]> pesquisarPagamentosPorConta( Integer anoMesReferencia) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt, dotp.id, loca.id, imov.id, pgst.id " + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.documentoTipo as dotp " + "LEFT JOIN pgmt.localidade as loca " + "LEFT JOIN pgmt.imovel as imov " + "LEFT JOIN pgmt.pagamentoSituacaoAtual as pgst " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia AND dotp.id = :conta " + "ORDER BY loca.id, imov.id, pgmt.anoMesReferenciaPagamento, pgmt.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger("conta", DocumentoTipo.CONTA).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO) e com o tipo do documento correspondente a * conta * * @author Raphael Rossiter, Pedro Alexandre * @data 18/04/2006, 28/11/2006 * * @param anoMesReferencia * @param idLocalidade * @param idImovel * @param anoMesReferenciaPagamento * @return * @throws ErroRepositorioException */ @SuppressWarnings("unchecked") public Collection<Object[]> pesquisarPagamentosPorConta( Integer anoMesReferencia, Integer idLocalidade, Integer idImovel, Integer anoMesReferenciaPagamento) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = //"SELECT pgmt.id, pgmt.documentoTipo.id, pgmt.localidade.id, pgmt.valorPagamento, pgst.id, pgmt.dataPagamento, pgmt.anoMesReferenciaPagamento, pgmt.indicadorClassificadoRecuperacaoCredito " "SELECT pgmt " + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.imovel as imov " + "LEFT JOIN pgmt.localidade as localidade " + "LEFT JOIN pgmt.pagamentoSituacaoAtual as pgst " + "LEFT JOIN pgmt.documentoTipo as documentoTipo " + "LEFT JOIN pgmt.localidade as localidade " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia AND imov.id = :idImovel " + "AND pgmt.anoMesReferenciaPagamento = :anoMesReferenciaPagamento " + "AND (pgst.id is null or pgst.id <> :idValorABaixar) " + "AND pgmt.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao " + "ORDER BY imov.id, pgmt.anoMesReferenciaPagamento, pgmt.dataPagamento "; retorno = session.createQuery(consulta) .setInteger("anoMesReferencia", anoMesReferencia) .setInteger("idImovel", idImovel) .setInteger("anoMesReferenciaPagamento", anoMesReferenciaPagamento) .setInteger("idValorABaixar", PagamentoSituacao.VALOR_A_BAIXAR) .setShort("indicadorClassificacao", ConstantesSistema.NAO) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO), com o tipo do documento correspondente a * guia de pagamento e o campo GPAG_ID informado * * @author Raphael Rossiter * @data 18/04/2006 * * @param anoMesReferenciaFaturamento * @return Collection<Object[]> */ public Collection<Object[]> pesquisarPagamentosPorGuiaPagamentoComGuiaInformada( Integer anoMesReferencia) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt, dotp.id, loca.id, imov.id, pgst.id, gpag " + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.documentoTipo as dotp " + "LEFT JOIN pgmt.localidade as loca " + "LEFT JOIN pgmt.imovel as imov " + "LEFT JOIN pgmt.pagamentoSituacaoAtual as pgst " + "LEFT JOIN pgmt.guiaPagamento as gpag " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia AND " + " dotp.id in (:guiaPagamento, :entradaParcelamento ) " + "AND pgmt.guiaPagamento IS NOT NULL " + "ORDER BY gpag.id, pgmt.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "guiaPagamento", DocumentoTipo.GUIA_PAGAMENTO) .setInteger("entradaParcelamento", DocumentoTipo.ENTRADA_DE_PARCELAMENTO).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO), com o tipo do documento correspondente a * guia de pagamento e o campo GPAG_ID informado * * @author Raphael Rossiter, Pedro Alexandre * @data 18/04/2006, 28/11/2006 * * @param anoMesReferenciaFaturamento * @param idLocalidade * @return Collection<Object[]> */ public Collection<Object[]> pesquisarPagamentosPorGuiaPagamentoComGuiaInformada( Integer anoMesReferencia, Integer idLocalidade) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt.id, dotp.id, loca.id, imov.id, pgst.id, gpag.id, pgmt.valorPagamento, pgmt.dataPagamento, pgmt.anoMesReferenciaPagamento, gpag.valorDebito " + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.documentoTipo as dotp " + "LEFT JOIN pgmt.localidade as loca " + "LEFT JOIN pgmt.imovel as imov " + "LEFT JOIN pgmt.pagamentoSituacaoAtual as pgst " + "LEFT JOIN pgmt.guiaPagamento as gpag " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia AND " + " dotp.id in (:guiaPagamento, :entradaParcelamento ) " + "AND pgmt.guiaPagamento IS NOT NULL AND loca.id = :idLocalidade " + "ORDER BY gpag.id, pgmt.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "guiaPagamento", DocumentoTipo.GUIA_PAGAMENTO).setInteger( "idLocalidade", idLocalidade) .setInteger("entradaParcelamento", DocumentoTipo.ENTRADA_DE_PARCELAMENTO).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO), com o tipo do documento correspondente a * guia de pagamento e o campo GPAG_ID n�o informado * * @author Raphael Rossiter * @data 18/04/2006 * * @param anoMesReferenciaFaturamento * @return Collection<Object[]> */ public Collection<Object[]> pesquisarPagamentosPorGuiaPagamentoSemGuiaInformada( Integer anoMesReferencia) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt.id, dotp.id, loca.id, imov.id, pgst.id, clie.id, dbtp.id, pgmt.valorPagamento, pgmt.dataPagamento, pgmt.anoMesReferenciaPagamento, gpag.valorDebito " + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.documentoTipo as dotp " + "LEFT JOIN pgmt.localidade as loca " + "LEFT JOIN pgmt.imovel as imov " + "LEFT JOIN pgmt.pagamentoSituacaoAtual as pgst " + "LEFT JOIN pgmt.cliente as clie " + "LEFT JOIN pgmt.debitoTipo as dbtp " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia AND " + " dotp.id in (:guiaPagamento, :entradaParcelamento ) " + "AND pgmt.guiaPagamento IS NULL " + "ORDER BY loca.id, imov.id, clie.id, dbtp.id, pgmt.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "guiaPagamento", DocumentoTipo.GUIA_PAGAMENTO) .setInteger("entradaParcelamento", DocumentoTipo.ENTRADA_DE_PARCELAMENTO) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO), com o tipo do documento correspondente a * guia de pagamento e o campo GPAG_ID n�o informado * * @author Raphael Rossiter, Pedro Alexandre * @data 18/04/2006, 12/12/2006 * * @param anoMesReferenciaFaturamento * @param idLocalidade * @return Collection<Object[]> */ public Collection<Object[]> pesquisarPagamentosPorGuiaPagamentoSemGuiaInformada( Integer anoMesReferencia, Integer idLocalidade) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt.id, dotp.id, loca.id, imov.id, pgst.id, clie.id, dbtp.id, pgmt.valorPagamento, pgmt.dataPagamento, pgmt.anoMesReferenciaPagamento " + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.documentoTipo as dotp " + "LEFT JOIN pgmt.localidade as loca " + "LEFT JOIN pgmt.imovel as imov " + "LEFT JOIN pgmt.pagamentoSituacaoAtual as pgst " + "LEFT JOIN pgmt.cliente as clie " + "LEFT JOIN pgmt.debitoTipo as dbtp " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia AND " + " dotp.id in (:guiaPagamento, :entradaParcelamento ) " + "AND pgmt.guiaPagamento IS NULL " + "AND loca.id = :idLocalidade " + "AND pgmt.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao " + "ORDER BY loca.id, imov.id, clie.id, dbtp.id, pgmt.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia) .setInteger("guiaPagamento", DocumentoTipo.GUIA_PAGAMENTO) .setInteger("entradaParcelamento", DocumentoTipo.ENTRADA_DE_PARCELAMENTO) .setShort("indicadorClassificacao", ConstantesSistema.NAO) .setInteger("idLocalidade", idLocalidade).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO), com o tipo do documento correspondente a * debito a cobrar e o campo DBAC_ID informado * * @author Raphael Rossiter, Pedro Alexandre * @data 18/04/2006, 28/11/2006 * * @param anoMesReferenciaFaturamento * @param idLocalidade * @return Collection<Object[]> */ public Collection<Object[]> pesquisarPagamentosPorDebitoACobrarComDebitoInformado( Integer anoMesReferencia, Integer idLocalidade) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt, "//0 + "dotp.id, " //1 + "loca.id, " //2 + "imov.id, " //3 + "pgst.id, " //4 + "dbac.id," //5 + "dbac.valorDebito," //6 + "dbac.numeroPrestacaoDebito," //7 + "dbac.numeroPrestacaoCobradas," //8 + "dbac.numeroParcelaBonus " //9 + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.documentoTipo as dotp " + "LEFT JOIN pgmt.localidade as loca " + "LEFT JOIN pgmt.imovel as imov " + "LEFT JOIN pgmt.pagamentoSituacaoAtual as pgst " + "INNER JOIN pgmt.debitoACobrarGeral as dbacGeral " + "INNER JOIN dbacGeral.debitoACobrar as dbac " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia " + "AND dotp.id = :debitoACobrar " + "AND loca.id = :idLocalidade " + "ORDER BY dbac.id, pgmt.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "debitoACobrar", DocumentoTipo.DEBITO_A_COBRAR).setInteger( "idLocalidade", idLocalidade).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO), com o tipo do documento correspondente a * debito a cobrar e o campo DBAC_ID n�o informado * * @author Raphael Rossiter * @data 18/04/2006 * * @param anoMesReferenciaFaturamento * @return Collection<Object[]> */ public Collection<Object[]> pesquisarPagamentosPorDebitoACobrarSemDebitoInformada( Integer anoMesReferencia) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt, dotp.id, loca.id, imov.id, pgst.id " + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.documentoTipo as dotp " + "LEFT JOIN pgmt.localidade as loca " + "LEFT JOIN pgmt.imovel as imov " + "LEFT JOIN pgmt.pagamentoSituacaoAtual as pgst " + "LEFT JOIN pgmt.debitoTipo as dbtp " + "LEFT JOIN pgmt.debitoACobrarGeral as dbacGeral " + "LEFT JOIN dbacGeral.debitoACobrar as dbac " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia AND dotp.id = :debitoACobrar " + "AND pgmt.debitoACobrarGeral IS NULL " + "ORDER BY loca.id, imov.id, dbtp.id, pgmt.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "debitoACobrar", DocumentoTipo.DEBITO_A_COBRAR).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO), com o tipo do documento correspondente a * debito a cobrar e o campo DBAC_ID n�o informado * * @author Raphael Rossiter, Pedro Alexandre * @data 18/04/2006, 28/11/2006 * * @param anoMesReferenciaFaturamento * @param idLocalidade * @return Collection<Object[]> */ public Collection<Object[]> pesquisarPagamentosPorDebitoACobrarSemDebitoInformada( Integer anoMesReferencia, Integer idLocalidade) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt, dotp.id, loca.id, imov.id, pgst.id " + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.documentoTipo as dotp " + "LEFT JOIN pgmt.localidade as loca " + "LEFT JOIN pgmt.imovel as imov " + "LEFT JOIN pgmt.pagamentoSituacaoAtual as pgst " + "LEFT JOIN pgmt.debitoTipo as dbtp " + "LEFT JOIN pgmt.debitoACobrarGeral as dbacGeral " + "LEFT JOIN dbacGeral.debitoACobrar as dbac " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia AND dotp.id = :debitoACobrar " + "AND pgmt.debitoACobrarGeral IS NULL " + "AND loca.id= :idLocalidade " + "AND pgmt.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao " + "ORDER BY loca.id, imov.id, dbtp.id, pgmt.dataPagamento "; retorno = session.createQuery(consulta) .setInteger("anoMesReferencia", anoMesReferencia) .setInteger("debitoACobrar", DocumentoTipo.DEBITO_A_COBRAR) .setInteger("idLocalidade", idLocalidade) .setShort("indicadorClassificacao", ConstantesSistema.NAO) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona as devolu��es com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela DEVOLUCAO para * DEVL_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO) e com o ano/m�s de refer�ncia preenchido * (DEVL_AMREFERENCIADEVOLUCAO com valor diferente de nulo) * * @author Raphael Rossiter * @data 14/06/2006 * * @param anoMesReferenciaFaturamento * @return Collection<Object[]> */ public Collection<Object[]> pesquisarDevolucoesEmDuplicidadeOUExcesso( Integer anoMesReferencia) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT devl, loca.id, imov.id, gdev.id " + "FROM Devolucao as devl " + "LEFT JOIN devl.localidade as loca " + "LEFT JOIN devl.imovel as imov " + "LEFT JOIN devl.guiaDevolucao as gdev " + "WHERE devl.anoMesReferenciaArrecadacao <= :anoMesReferencia AND " + "devl.anoMesReferenciaDevolucao IS NOT NULL " + "ORDER BY loca.id, imov.id, devl.anoMesReferenciaDevolucao, devl.dataDevolucao "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona as devolu��es com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela DEVOLUCAO para * DEVL_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO) e com o ano/m�s de refer�ncia preenchido * (DEVL_AMREFERENCIADEVOLUCAO com valor diferente de nulo) * * @author Raphael Rossiter, Pedro Alexandre * @data 14/06/2006, 28/11/2006 * * @param anoMesReferenciaFaturamento * @param idLocalidade * @return Collection<Object[]> */ public Collection<Object[]> pesquisarDevolucoesEmDuplicidadeOUExcesso( Integer anoMesReferencia, Integer idLocalidade) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT devl, loca.id, imov.id, gdev.id " + "FROM Devolucao as devl " + "LEFT JOIN devl.localidade as loca " + "LEFT JOIN devl.imovel as imov " + "LEFT JOIN devl.guiaDevolucao as gdev " + "WHERE devl.anoMesReferenciaArrecadacao <= :anoMesReferencia AND " + "devl.anoMesReferenciaDevolucao IS NOT NULL AND loca.id = :idLocalidade " + "ORDER BY loca.id, imov.id, devl.anoMesReferenciaDevolucao, devl.dataDevolucao "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "idLocalidade", idLocalidade).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona as devolu��es com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela DEVOLUCAO para * DEVL_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO) e com o ano/m�s de refer�ncia n�o * preenchido (DEVL_AMREFERENCIADEVOLUCAO com valor diferente nulo) * * @author Raphael Rossiter * @data 14/06/2006 * * @param anoMesReferenciaFaturamento * @return Collection<Object[]> */ public Collection<Object[]> pesquisarDevolucoesCobradasIndevidamente( Integer anoMesReferencia) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT devl, loca.id, imov.id, gdev.id, clie.id, dbtp.id " + "FROM Devolucao as devl " + "LEFT JOIN devl.localidade as loca " + "LEFT JOIN devl.imovel as imov " + "LEFT JOIN devl.guiaDevolucao as gdev " + "LEFT JOIN devl.cliente as clie " + "LEFT JOIN devl.debitoTipo as dbtp " + "WHERE devl.anoMesReferenciaArrecadacao <= :anoMesReferencia AND " + "devl.anoMesReferenciaDevolucao IS NULL " + "ORDER BY loca.id, imov.id, clie.id, dbtp.id, devl.dataDevolucao "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona as devolu��es com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela DEVOLUCAO para * DEVL_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO) e com o ano/m�s de refer�ncia n�o * preenchido (DEVL_AMREFERENCIADEVOLUCAO com valor diferente nulo) * * @author Raphael Rossiter, Pedro Alexandre * @data 14/06/2006, 28/11/2006 * * @param anoMesReferenciaFaturamento * @param idLocalidade * @return Collection<Object[]> */ public Collection<Object[]> pesquisarDevolucoesCobradasIndevidamente( Integer anoMesReferencia, Integer idLocalidade) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT devl, loca.id, imov.id, gdev.id, clie.id, dbtp.id, crar.id " + "FROM Devolucao as devl " + "LEFT JOIN devl.localidade as loca " + "LEFT JOIN devl.imovel as imov " + "LEFT JOIN devl.guiaDevolucao as gdev " + "LEFT JOIN devl.cliente as clie " + "LEFT JOIN devl.debitoTipo as dbtp " + "LEFT JOIN devl.creditoARealizarGeral as crar " + "WHERE devl.anoMesReferenciaArrecadacao <= :anoMesReferencia AND " + "devl.anoMesReferenciaDevolucao IS NULL AND loca.id = :idLocalidade " + "ORDER BY loca.id, imov.id, clie.id, dbtp.id, devl.dataDevolucao "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "idLocalidade", idLocalidade).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona a conta correspondente ao pagamento atrav�s do im�vel * e ano/m�s de refer�ncia do pagamento (a partir da tabela CONTA com * IMOV_ID = IMOV_ID da tabela PAGAMENTO, PGMT_AMREFERENCIAPAGAMENTO da * tabela PAGAMENTO e DCST_IDATUAL com o valor correspondente a normal, * retificada ou inclu�da, da tabela DEBTIO_CREDITO_SITUACAO) * * [SF0001] Selecionar Conta pelo Im�vel e Ano/M�s de Refer�ncia * * @author Raphael Rossiter, Pedro Alexandre, Pedro Alexandre * @date 18/04/2006, 05/06/2007, 02/10/2007 * * @param imovel * @param anoMesReferenciaPagamento * @param anoMesFaturamento * * @return Conta */ public Object[] selecionarContaPorImovelAnoMesReferencia(Imovel imovel, Integer anoMesReferenciaPagamento, Integer anoMesFaturamento) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT cnta.id, " + "cnta.valorAgua, " + "cnta.valorEsgoto, " + "cnta.debitos, " + "cnta.valorCreditos, " + "cnta.valorImposto, " + "cnta.referenciaContabil, " /** * Classificar detalhadamente documentos inexistentes por d�bito prescrito, * conta parcelada, conta cancelada ou erro de processamento * @author Wellington Rocha * @date 02/08/2012*/ + "dcst.id " + "FROM Conta as cnta " + "INNER JOIN cnta.imovel as imov " + "INNER JOIN cnta.debitoCreditoSituacaoAtual as dcst " + "WHERE imov.id = :imovelPagamento AND cnta.referencia = :anoMesReferenciaPagamento " + "AND dcst.id IN(:normal, :retificada, :incluida) "; retorno = (Object[]) session.createQuery(consulta) .setInteger("imovelPagamento", imovel.getId()) .setInteger("anoMesReferenciaPagamento", anoMesReferenciaPagamento) .setInteger("normal", DebitoCreditoSituacao.NORMAL) .setInteger("retificada", DebitoCreditoSituacao.RETIFICADA) .setInteger("incluida", DebitoCreditoSituacao.INCLUIDA) .setMaxResults(1).uniqueResult(); /** * Classificar detalhadamente documentos inexistentes por d�bito prescrito, * conta parcelada, conta cancelada ou erro de processamento * @author Wellington Rocha * @date 02/08/2012*/ if(retorno == null){ consulta = "SELECT cnta.id, " + "cnta.valorAgua, " + "cnta.valorEsgoto, " + "cnta.debitos, " + "cnta.valorCreditos, " + "cnta.valorImposto, " + "cnta.referenciaContabil, " + "dcst.id " + "FROM Conta as cnta " + "INNER JOIN cnta.imovel as imov " + "INNER JOIN cnta.debitoCreditoSituacaoAtual as dcst " + "WHERE imov.id = :imovelPagamento AND cnta.referencia = :anoMesReferenciaPagamento " + "AND dcst.id IN(:prescritas, :prescritasIncluidas, :canceladas, :parceladas, :erroProcessamento) "; retorno = (Object[]) session.createQuery(consulta) .setInteger("imovelPagamento", imovel.getId()) .setInteger("anoMesReferenciaPagamento", anoMesReferenciaPagamento) .setInteger("prescritas", DebitoCreditoSituacao.DEBITO_PRESCRITO) .setInteger("prescritasIncluidas", DebitoCreditoSituacao.DEBITO_PRESCRITO_CONTAS_INCLUIDAS) .setInteger("canceladas", DebitoCreditoSituacao.CANCELADA) .setInteger("parceladas", DebitoCreditoSituacao.PARCELADA) .setInteger("erroProcessamento", DebitoCreditoSituacao.ERRO_PROCESSAMENTO) .setMaxResults(1).uniqueResult(); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0319] Gerar Movimento de D�bito Autom�tico para o banco * * pesquisa todos os bancos que tenham contrato vigente para arrecadador * contas com forma de arrecada��o correspondente a debito autom�tico * * [SB0002] - Carregar Lista de Bancos * * @author S�vio Luiz * @date 18/04/2006 * * @return Cole��o de Bancos * @throws ErroRepositorioException */ public Collection<Banco> pesquisaBancosDebitoAutomatico() throws ErroRepositorioException { Collection<Banco> retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select banco.id " + "from Banco banco " + "where banco.id in( " //+ "select arrecadador.codigoAgente " + "select arrecadador.id " + "from ArrecadadorContratoTarifa arrcConTarifa " + "inner join arrcConTarifa.arrecadacaoForma arrecadadorForma " + "inner join arrcConTarifa.arrecadadorContrato arrecadadorContrato " + "inner join arrecadadorContrato.arrecadador arrecadador " + "where arrecadadorForma.id = :debitoAutomatico " + "and arrecadadorContrato.dataContratoEncerramento is null) " + "order by banco.id"; retorno = session.createQuery(consulta).setInteger( "debitoAutomatico", ArrecadacaoForma.DEBITO_AUTOMATICO) .list(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0319] Gerar Movimento de D�bito Autom�tico para o banco * * pesquisa os movimentos de d�bito autom�tico para o banco,referentes ao * grupo e ano/m�s de faturamento informados * * [SB0002] - Carregar Lista de Bancos * * @author S�vio Luiz, Raphael Rossiter, Anderson Italo * @date 18/04/2006, 01/12/2008, 04/02/2010 * * [FS0006] � Verificar a situa��o da conta * Caso a situa��o da conta sejam normal (0) ou retificada (1) ou inclu�da (2), * gerar movimentos de d�bito autom�tico para o banco. * Caso contr�rio retornar para o passo correspondente no subfluxo. * * @param idFaturamentoGrupo,anoMesReferenciaFaturamento,idBanco * @return Cole��o de DebitoAutomaticoMovimento * @throws ErroRepositorioException */ public Collection pesquisaDebitoAutomaticoMovimento( Collection colecaoFaturamentoGrupo, Integer anoMesReferenciaFaturamento, Collection colecaoidsBanco) throws ErroRepositorioException { Collection<DebitoAutomaticoMovimento> retorno = new ArrayList(); // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select banco,debAutoMovimento " + "from DebitoAutomaticoMovimento debAutoMovimento " + "inner join debAutoMovimento.faturamentoGrupo fatGrupo " + "inner join fetch debAutoMovimento.debitoAutomatico debAutomatico " + "inner join fetch debAutomatico.agencia agencia " + "inner join agencia.banco banco " + "left join fetch debAutoMovimento.contaGeral cntaGeral " + "left join fetch cntaGeral.conta conta " + "where debAutoMovimento.numeroSequenciaArquivoEnviado is null " + "and fatGrupo.id in (:colecaoFaturamentoGrupo) " + "and conta.referencia = :anoMesReferenciaFaturamento " + "and (conta.debitoCreditoSituacaoAtual.id = :normal or " + "conta.debitoCreditoSituacaoAtual.id = :retificada or " + "conta.debitoCreditoSituacaoAtual.id = :incluida) " + "and banco.id in (:idsBanco) and " /* * Colocado por Raphael Rossiter em 01/12/2008 - Analista: Rafael Pinto * OBJ: N�o gerar movimento de d�bito autom�tico para contas que j� foram pagas. */ + "NOT EXISTS (SELECT pgmt.id FROM Pagamento pgmt WHERE pgmt.contaGeral.id = conta.id) " + "order by banco.id"; retorno = session.createQuery(consulta).setParameterList( "idsBanco", colecaoidsBanco).setParameterList( "colecaoFaturamentoGrupo", colecaoFaturamentoGrupo).setInteger( "anoMesReferenciaFaturamento", anoMesReferenciaFaturamento) .setInteger("normal", DebitoCreditoSituacao.NORMAL) .setInteger("retificada", DebitoCreditoSituacao.RETIFICADA) .setInteger("incluida", DebitoCreditoSituacao.INCLUIDA) .list(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0319] Filtrar Aviso Bancario * * * @author Vivianne Sousa * @date 20/04/2006 * * @param avisoBancarioHelper * @return Cole��o de DebitoAutomaticoMovimento * @throws ErroRepositorioException */ public Collection filtrarAvisoBancarioAbertoFechado( AvisoBancarioHelper avisoBancarioHelper) throws ErroRepositorioException { // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; /* * Acr�scimo do atributo idAvisobanc�rio, para permitir a consulta pelo mesmo */ Integer idAvisoBancario = avisoBancarioHelper.getIdAvisoBancario(); Short arrecadadorCodAgente = avisoBancarioHelper .getCodigoAgenteArrecadador(); Date dataLancamentoInicio = avisoBancarioHelper .getDataLancamentoInicial(); Date dataLancamentoFim = avisoBancarioHelper.getDataLancamentoFinal(); Short indicadorCreditoDebito = avisoBancarioHelper .getIndicadorCreditoDebito(); Integer idContaBancaria = avisoBancarioHelper.getIdContaBancaria(); Integer idMovimento = avisoBancarioHelper.getIdMovimentoArrecadador(); Date dataPrevisaoCreditoDebitoInicio = avisoBancarioHelper .getDataPrevistaInicial(); Date dataPrevisaoCreditoDebitoFim = avisoBancarioHelper .getDataPrevistaFinal(); Date dataRealizacaoCreditoDebitoInicio = avisoBancarioHelper .getDataRealizadaInicial(); Date dataRealizacaoCreditoDebitoFim = avisoBancarioHelper .getDataRealizadaFinal(); int anoMesReferenciaArrecadacaoInicial = avisoBancarioHelper .getAnoMesReferenciaArrecadacaoInicial(); int anoMesReferenciaArrecadacaoFinal = avisoBancarioHelper .getAnoMesReferenciaArrecadacaoFinal(); BigDecimal valorRealizadoInicial = avisoBancarioHelper .getValorRealizadoInicial(); BigDecimal valorRealizadoFinal = avisoBancarioHelper .getValorRealizadoFinal(); BigDecimal valorPrevistoInicial = avisoBancarioHelper .getValorPrevistoInicial(); BigDecimal valorPrevistoFinal = avisoBancarioHelper .getValorPrevistoFinal(); String select = ""; select = this.selectFiltrarAvisoBancario(); int flag = 0; if (arrecadadorCodAgente == null && (dataLancamentoInicio == null || dataLancamentoFim == null) && (indicadorCreditoDebito == 0 || indicadorCreditoDebito == 3) && idContaBancaria == null && idMovimento == null && (dataPrevisaoCreditoDebitoInicio == null || dataPrevisaoCreditoDebitoFim == null) && (dataRealizacaoCreditoDebitoInicio == null || dataRealizacaoCreditoDebitoFim == null) && (anoMesReferenciaArrecadacaoInicial == 0 || anoMesReferenciaArrecadacaoFinal == 0) && (valorPrevistoInicial == null || valorPrevistoFinal == null) && (valorRealizadoInicial == null || valorRealizadoFinal == null) /* * Acr�scimo do atributo idAvisobanc�rio */ && idAvisoBancario == null) { flag = 1; // consulta = "select avisoBancario " + " from AvisoBancario // avisoBancario "; consulta = select; } else { // consulta = "select avisoBancario " + " from AvisoBancario // avisoBancario " + " where "; consulta = select + " where "; } /* * Acr�scimo do filtro idAvisobanc�rio, para que a consulta possa ser efetuada pelo id * */ if(idAvisoBancario != null) { consulta += " avisoBancario.id = " + idAvisoBancario + " and"; } if (arrecadadorCodAgente != null) { consulta += " avisoBancario.arrecadador.codigoAgente = " + arrecadadorCodAgente + " and"; } if ((dataLancamentoInicio != null) && (dataLancamentoFim != null)) { consulta += " avisoBancario.dataLancamento between :dataLancamentoInicio and " + ":dataLancamentoFim and"; } if (indicadorCreditoDebito != 0 && indicadorCreditoDebito != 3) { consulta += " avisoBancario.indicadorCreditoDebito = " + indicadorCreditoDebito + " and"; } if (idContaBancaria != null) { consulta += " avisoBancario.contaBancaria.id = " + idContaBancaria + " and"; } if (idMovimento != null) { consulta += " avisoBancario.arrecadadorMovimento.id = " + idMovimento + " and"; } if ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null)) { consulta += " avisoBancario.dataPrevista between :dataPrevisaoCreditoDebitoInicio and " + ":dataPrevisaoCreditoDebitoFim and"; } if ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null)) { consulta += " avisoBancario.dataRealizada between :dataRealizacaoCreditoDebitoInicio and " + ":dataRealizacaoCreditoDebitoFim and"; } if ((anoMesReferenciaArrecadacaoInicial != 0) && (anoMesReferenciaArrecadacaoFinal != 0)) { consulta += " avisoBancario.anoMesReferenciaArrecadacao between " + anoMesReferenciaArrecadacaoInicial + " and " + anoMesReferenciaArrecadacaoFinal + " and"; } if ((valorRealizadoInicial != null) && (valorRealizadoFinal != null)) { BigDecimal valorInicialNegativo = valorRealizadoFinal .multiply(new BigDecimal("-1.00")); BigDecimal valorFinalNegativo = valorRealizadoInicial .multiply(new BigDecimal("-1.00")); consulta += " ((avisoBancario.valorRealizado between " + valorInicialNegativo + " and " + valorFinalNegativo + ") or (avisoBancario.valorRealizado between " + valorRealizadoInicial + " and " + valorRealizadoFinal + "))" + " and"; } String consultarComOrderBy = ""; if (flag != 1) { consultarComOrderBy = Util.removerUltimosCaracteres(consulta, 4) + " order by avisoBancario.arrecadador.id,avisoBancario.dataLancamento,avisoBancario.numeroSequencial"; } else { consultarComOrderBy = Util.removerUltimosCaracteres(consulta, 0) + " order by avisoBancario.arrecadador.id,avisoBancario.dataLancamento,avisoBancario.numeroSequencial"; } // Consulta try { if ((((dataLancamentoInicio != null) && (dataLancamentoFim != null)) && ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null))) && ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null))) { return session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).list(); } else if (((dataLancamentoInicio != null) && (dataLancamentoFim != null)) && ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null))) { return session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).list(); } else if (((dataLancamentoInicio != null) && (dataLancamentoFim != null)) && ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null))) { return session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).list(); } else if (((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null)) && ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null))) { return session.createQuery(consultarComOrderBy).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).list(); } else if ((dataLancamentoInicio != null) && (dataLancamentoFim != null)) { return session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).list(); } else if ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null)) { return session.createQuery(consultarComOrderBy).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).list(); } else if ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null)) { return session.createQuery(consultarComOrderBy).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).list(); } else { return session.createQuery(consultarComOrderBy).list(); } // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } } /** * [UC0319] Gerar Movimento de D�bito Autom�tico para o banco * * pesquisa 2 campos do arrecadador contrato * * * @author S�vio Luiz * @date 20/04/2006 * * @param idBanco * @return C�digo do Conv�nio, numero sequencial de envio * @throws ErroRepositorioException */ public Object[] pesquisaCamposArrecadadorContrato(Integer idBanco) throws ErroRepositorioException { Object[] retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select arreContrato.id, "// 0 + "arreContrato.codigoConvenio, "// 1 + "arreContrato.numeroSequencialArquivoEnvioDebitoAutomatico, "// 2 + "arreContrato.descricaoEmail, "// 3 + "arreContrato.tamanhoMaximoIdentificacaoImovel "// 4 + "from ArrecadadorContrato arreContrato " + "inner join arreContrato.arrecadador arrec " //+ "where arrec.codigoAgente = :idBanco and " + "where arrec.id = :idBanco and " + "arreContrato.dataContratoEncerramento is null"; retorno = (Object[]) session.createQuery(consulta).setInteger( "idBanco", idBanco).setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0319] Gerar Movimento de D�bito Autom�tico para o banco * * pesquisa a agencia passando o id do banco * * * @author S�vio Luiz * @date 20/04/2006 * * @param idBanco * @return Agencia * @throws ErroRepositorioException */ public Agencia pesquisaAgenciaPorBanco(Integer idBanco) throws ErroRepositorioException { Agencia retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select agencia " + "from Agencia agencia " + "inner join agencia.banco banco " + "where banco.id = :idBanco "; retorno = (Agencia) session.createQuery(consulta).setInteger( "idBanco", idBanco).setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0319] Gerar Movimento de D�bito Autom�tico para o banco * * atualiza o numero sequencial arquivo envio debito automatico * * * @author S�vio Luiz * @date 20/04/2006 * * @param idBanco * @return C�digo do Conv�nio, numero sequencial de envio * @throws ErroRepositorioException */ public void atualizarNumeroSequencialArrecadadorContrato( Integer idArrecadadorContrato, Integer numeroSequencialArquivo) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarImovel; try { atualizarImovel = "update gcom.arrecadacao.ArrecadadorContrato " + "set arct_nnnsaenviodebaut = :numeroSequencialArquivo,arct_tmultimaalteracao = :dataUltimaAlteracao where arct_id = :idArrecadadorContrato"; session.createQuery(atualizarImovel).setInteger( "idArrecadadorContrato", idArrecadadorContrato.intValue()) .setTimestamp("dataUltimaAlteracao", new Date()) .setInteger("numeroSequencialArquivo", numeroSequencialArquivo.intValue()).executeUpdate(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } } /** * [UC0319] Gerar Movimento de D�bito Autom�tico para o banco * * pesquisa o email do arrecadador contrato passando o c�digo do banco * * [SB0003] - Regerar arquivo TXT para um movimento de d�bito autom�tico * gerado anteriormente * * @author S�vio Luiz * @date 25/04/2006 * * @return String * @throws ErroRepositorioException */ public String pesquisarEmailArrecadadorContrato(Short codigoBanco) throws ErroRepositorioException { String retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select arrecadadorContrato.descricaoEmail " + "from ArrecadadorContrato arrecadadorContrato " + "inner join arrecadadorContrato.arrecadador arrecadador " + "where arrecadador.codigoAgente = :codigoBanco " + "and arrecadadorContrato.dataContratoEncerramento is null"; retorno = (String) session.createQuery(consulta).setShort( "codigoBanco", codigoBanco).setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Atualizar Devolucao * * @author Fernanda Paiva * @created 03/05/2006 * * @param valor * arrecadacao * * @return String * @throws ErroRepositorioException */ public void atualizaValorArrecadacaoAvisoBancaraio(BigDecimal valor, Integer codigoAvisoBancario) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizaAvisoBancario; try { // Atualiza em AvisoBancario o valor da arrecadacao atualizaAvisoBancario = "update gcom.arrecadacao.aviso.AvisoBancario " + "set avbc_vldevolucaocalculado = :valor, avbc_tmultimaalteracao = :ultimaAlteracao " + "where avbc_id = :codigoAvisoBancario"; session.createQuery(atualizaAvisoBancario).setBigDecimal("valor", (valor)).setInteger("codigoAvisoBancario", (codigoAvisoBancario)).setTimestamp("ultimaAlteracao", new Date()).executeUpdate(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } } /** * * Faz a pesquisa de guia de devolu��o para o relat�rio fazendo os * carregamentos de clienteContas, clienteImoveis, clientesGuiaPagamento * * @author Rafael Corr�a * @date 11/09/2006 * * @param FiltroGuiaDevolucao * @return Collection<GuiaDevolucao> * @throws ErroRepositorioException */ public Collection<GuiaDevolucao> pesquisarGuiaDevolucaoRelatorio( FiltroGuiaDevolucao filtroGuiaDevolucao) throws ErroRepositorioException { Collection<GuiaDevolucao> retorno = null; Session session = HibernateUtil.getSession(); try { retorno = new ArrayList( new CopyOnWriteArraySet<GuiaDevolucao>( GeradorHQLCondicional .gerarCondicionalQuery( filtroGuiaDevolucao, "guiaDevolucao", "select distinct guiaDevolucao from gcom.arrecadacao.GuiaDevolucao as guiaDevolucao " + "left join guiaDevolucao.conta.clienteContas clienteContas " + "left join guiaDevolucao.debitoACobrarGeral.debitoACobrar.imovel.clienteImoveis clienteImoveis " + "left join guiaDevolucao.guiaPagamento.clientesGuiaPagamento clientesGuiaPagamento ", session).list())); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * * [UC0324] - Filtrar Guia de Devolucao * * [SF0001] - Seleciona Guias de Devolu��o do Cliente * * Faz a pesquisa de guia de devolu��o fazendo os carregamentos de * clienteContas, clienteImoveis, clientesGuiaPagamento * * @author Rafael Corr�a * @date * * @param FiltroGuiaDevolucao * @return Collection<GuiaDevolucao> * @throws ErroRepositorioException */ public Collection<GuiaDevolucao> pesquisarGuiaDevolucao( FiltroGuiaDevolucao filtroGuiaDevolucao, Integer numeroPagina) throws ErroRepositorioException { Collection<GuiaDevolucao> retorno = null; Session session = HibernateUtil.getSession(); try { retorno = new ArrayList( new CopyOnWriteArraySet<GuiaDevolucao>( GeradorHQLCondicional .gerarCondicionalQuery( filtroGuiaDevolucao, "guiaDevolucao", "select distinct guiaDevolucao from gcom.arrecadacao.GuiaDevolucao as guiaDevolucao " + "left join guiaDevolucao.conta.clienteContas clienteContas " + "left join guiaDevolucao.debitoACobrarGeral.debitoACobrar.imovel.clienteImoveis clienteImoveis " + "left join guiaDevolucao.guiaPagamento.clientesGuiaPagamento clientesGuiaPagamento ", session).setFirstResult( 10 * numeroPagina) .setMaxResults(10).list())); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * * [UC0324] - Filtrar Guia de Devolucao * * [SF0001] - Seleciona Guias de Devolu��o do Cliente * * Cria um contador para a pesquisa de guia de devolu��o para ser utilizado * pelo componente de pagina��o * * @author Rafael Corr�a * @date * * @param FiltroGuiaDevolucao * @return Collection<GuiaDevolucao> * @throws ErroRepositorioException */ public Integer pesquisarGuiaDevolucaoCount( FiltroGuiaDevolucao filtroGuiaDevolucao) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); filtroGuiaDevolucao.limparCamposOrderBy(); try { retorno = (Integer) GeradorHQLCondicional .gerarCondicionalQuery( filtroGuiaDevolucao, "guiaDevolucao", "select count (guiaDevolucao.id) from gcom.arrecadacao.GuiaDevolucao as guiaDevolucao " + "left join guiaDevolucao.conta.clienteContas clienteContas " + "left join guiaDevolucao.debitoACobrarGeral debitoACobrarGeral " + "left join debitoACobrarGeral.debitoACobrar debitoACobrar " + "left join debitoACobrar.imovel imovel " + "left join imovel.clienteImoveis clienteImoveis " + "left join guiaDevolucao.guiaPagamento.clientesGuiaPagamento clientesGuiaPagamento " , session).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Consulta ResumoArrecadacao para a gera��o do relat�rio '[UC0345] Gerar * Relat�rio de Resumo Arrecada��o' de acordo com a op��o de totaliza��o. * * @author Vivianne Sousa, Diogo Peixoto * @created 23/05/2006, 27/04/2011 * @param anoMesReferencia * @param estadoMunicipio * * @return Collection * @throws ErroRepositorioException */ public Collection consultarResumoArrecadacaoRelatorioPorEstado( int anoMesReferencia, boolean estadoMunicipio) throws ErroRepositorioException{ Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; String joinMunicipio = ""; if(estadoMunicipio){ joinMunicipio = " INNER JOIN ra.localidade loc INNER JOIN loc.municipio "; } try { consulta = "select sum(ra.valorItemArrecadacao)," + " rt.descricao," + " lt.descricao," + " li.descricao," + " lic.descricao," + " lt.indicadorImpressao," + " lt.indicadorTotal," + " lt.id," + " lt.lancamentoTipo.id," + " ra.categoria.id," + " rt.id," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento" + " from ResumoArrecadacao ra" + " left join ra.lancamentoTipo lt" + " left join ra.lancamentoItem li" + " left join ra.lancamentoItemContabil lic" + " left join ra.recebimentoTipo rt" + joinMunicipio + " where ra.anoMesReferencia = :anoMesReferencia and" + " (ra.categoria.id = 1 or" + " ra.categoria.id = 2 or" + " ra.categoria.id = 3 or" + " ra.categoria.id = 4)" + " group by " + " rt.descricao," + " lt.descricao," + " li.descricao," + " lic.descricao," + " lt.indicadorImpressao," + " lt.indicadorTotal," + " lt.id," + " lt.lancamentoTipo.id," + " ra.categoria.id, rt.id, rt.numeroSequencia, " + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento" + " order by rt.numeroSequencia, " + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento," + " ra.categoria.id"; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Consulta ResumoArrecadacao para a gera��o do relat�rio '[UC0345] Gerar * Relat�rio de Resumo Arrecada��o' de acordo com a op��o de totaliza��o. * * @author Vivianne Sousa * @created 23/05/2006 * * * @return * @throws ErroRepositorioException */ public Collection consultarResumoArrecadacaoRelatorioPorEstadoPorGerenciaRegional( int anoMesReferencia) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select sum(ra.valorItemArrecadacao)," + " rt.descricao," + " lt.descricao," + " li.descricao," + " lic.descricao," + " lt.indicadorImpressao," + " lt.indicadorTotal," + " lt.id," + " lt.lancamentoTipo.id," + " ra.categoria.id," + " ra.gerenciaRegional.nome," + " ra.gerenciaRegional.id," + " rt.id," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento" + " from ResumoArrecadacao ra" + " left join ra.lancamentoTipo lt" + " left join ra.lancamentoItem li" + " left join ra.lancamentoItemContabil lic" + " left join ra.recebimentoTipo rt" + " where ra.anoMesReferencia = :anoMesReferencia and" + " (ra.categoria.id = 1 or" + " ra.categoria.id = 2 or" + " ra.categoria.id = 3 or" + " ra.categoria.id = 4)" + " group by " + " ra.gerenciaRegional.nome," + " ra.gerenciaRegional.id," + " rt.descricao," + " lt.descricao," + " li.descricao," + " lic.descricao," + " lt.indicadorImpressao," + " lt.indicadorTotal," + " lt.id," + " lt.lancamentoTipo.id," + " ra.categoria.id," + " rt.id, rt.numeroSequencia, " + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento" + " order by ra.gerenciaRegional.id," + " rt.numeroSequencia," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento," + " ra.categoria.id"; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Consulta ResumoArrecadacao para a gera��o do relat�rio '[UC0345] Gerar * Relat�rio de Resumo Arrecada��o' de acordo com a op��o de totaliza��o. * * @author Vivianne Sousa * @created 23/05/2006 * * * @return * @throws ErroRepositorioException */ public Collection consultarResumoArrecadacaoRelatorioPorEstadoPorLocalidade( int anoMesReferencia) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select " + " sum(ra.valorItemArrecadacao),"//0 + " rt.descricao," //1 + " lt.descricao," //2 + " li.descricao," //3 + " lic.descricao," //4 + " lt.indicadorImpressao," //5 + " lt.indicadorTotal," //6 + " lt.id,"//7 + " lt.lancamentoTipo.id,"//8 + " ra.categoria.id,"//9 + " ra.gerenciaRegional.nome,"//10 + " ra.gerenciaRegional.id,"//11 + " ra.localidade.descricao," //12 + " ra.localidade.id,"//13 + " rt.id," //14 + " ra.sequenciaTipoLancamento,"//15 + " ra.sequenciaItemTipoLancamento,"//16 + " ra.unidadeNegocio.nome, " //17 + " ra.unidadeNegocio.id, " //18 + " ra.localidade.codigoCentroCusto " //19 + " from ResumoArrecadacao ra" + " left join ra.lancamentoTipo lt" + " left join ra.lancamentoItem li" + " left join ra.lancamentoItemContabil lic" + " left join ra.recebimentoTipo rt" + " where ra.anoMesReferencia = :anoMesReferencia and" + " (ra.categoria.id = 1 or" + " ra.categoria.id = 2 or" + " ra.categoria.id = 3 or" + " ra.categoria.id = 4)" + " group by " + " ra.gerenciaRegional.nome," + " ra.gerenciaRegional.id," + " ra.localidade.descricao," + " ra.localidade.id," + " rt.descricao," + " lt.descricao," + " li.descricao," + " lic.descricao," + " lt.indicadorImpressao," + " lt.indicadorTotal," + " lt.id," + " lt.lancamentoTipo.id," + " ra.categoria.id," + " rt.id, rt.numeroSequencia, " + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento," + " ra.unidadeNegocio.nome, " + " ra.unidadeNegocio.id, " + " ra.localidade.codigoCentroCusto " + " order by " + " ra.localidade.id," + " ra.unidadeNegocio.id," + " ra.gerenciaRegional.id," + " rt.numeroSequencia," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento," + " ra.categoria.id," + " ra.localidade.codigoCentroCusto "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Consulta ResumoArrecadacao para a gera��o do relat�rio '[UC0345] Gerar * Relat�rio de Resumo Arrecada��o' de acordo com a op��o de totaliza��o. * * @author Vivianne Sousa * @created 23/05/2006 * * * @return * @throws ErroRepositorioException */ public Collection consultarResumoArrecadacaoRelatorioPorGerenciaRegional( int anoMesReferencia, Integer gerenciaRegional) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select sum(ra.valorItemArrecadacao)," + " rt.descricao," + " lt.descricao," + " li.descricao," + " lic.descricao," + " lt.indicadorImpressao," + " lt.indicadorTotal," + " lt.id," + " lt.lancamentoTipo.id," + " ra.categoria.id," + " ra.gerenciaRegional.nome," + " ra.gerenciaRegional.id," + " rt.id," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento" + " from ResumoArrecadacao ra" + " left join ra.lancamentoTipo lt" + " left join ra.lancamentoItem li" + " left join ra.lancamentoItemContabil lic" + " left join ra.recebimentoTipo rt" + " where ra.anoMesReferencia = :anoMesReferencia and" + " ra.gerenciaRegional = :gerenciaRegional and " + " (ra.categoria.id = 1 or" + " ra.categoria.id = 2 or" + " ra.categoria.id = 3 or" + " ra.categoria.id = 4)" + " group by " + " rt.descricao," + " lt.descricao," + " li.descricao," + " lic.descricao," + " lt.indicadorImpressao," + " lt.indicadorTotal," + " lt.id," + " lt.lancamentoTipo.id," + " ra.categoria.id," + " ra.gerenciaRegional.nome," + " ra.gerenciaRegional.id," + " rt.id, rt.numeroSequencia, " + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento" + " order by rt.numeroSequencia," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento," + " ra.categoria.id"; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "gerenciaRegional", gerenciaRegional).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Consulta ResumoArrecadacao para a gera��o do relat�rio '[UC0345] Gerar * Relat�rio de Resumo Arrecada��o' de acordo com a op��o de totaliza��o. * * @author Vivianne Sousa * @created 23/05/2006 * * * @return * @throws ErroRepositorioException */ public Collection consultarResumoArrecadacaoRelatorioPorGerenciaRegionalPorLocalidade( int anoMesReferencia, Integer gerenciaRegional) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select sum(ra.valorItemArrecadacao)," + " rt.descricao," + " lt.descricao," + " li.descricao," + " lic.descricao," + " lt.indicadorImpressao," + " lt.indicadorTotal," + " lt.id," + " lt.lancamentoTipo.id," + " ra.categoria.id," + " ra.gerenciaRegional.nome," + " ra.gerenciaRegional.id," + " ra.localidade.descricao," + " ra.localidade.id," + " rt.id," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento, ra.localidade.codigoCentroCusto" + " from ResumoArrecadacao ra" + " left join ra.lancamentoTipo lt" + " left join ra.lancamentoItem li" + " left join ra.lancamentoItemContabil lic" + " left join ra.recebimentoTipo rt" + " where ra.anoMesReferencia = :anoMesReferencia and" + " ra.gerenciaRegional = :gerenciaRegional and" + " (ra.categoria.id = 1 or" + " ra.categoria.id = 2 or" + " ra.categoria.id = 3 or" + " ra.categoria.id = 4)" + " group by " + " ra.localidade.descricao," + " ra.localidade.id," + " rt.descricao," + " lt.descricao," + " li.descricao," + " lic.descricao," + " lt.indicadorImpressao," + " lt.indicadorTotal," + " lt.id," + " lt.lancamentoTipo.id," + " ra.categoria.id," + " ra.gerenciaRegional.nome," + " ra.gerenciaRegional.id," + " rt.id," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento, ra.localidade.codigoCentroCusto" + " order by " + " ra.localidade.codigoCentroCusto," + " ra.localidade.id," + " rt.id," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento," + " ra.categoria.id"; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "gerenciaRegional", gerenciaRegional).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Consulta ResumoArrecadacao para a gera��o do relat�rio '[UC0345] Gerar * Relat�rio de Resumo Arrecada��o' de acordo com a op��o de totaliza��o. * * @author Vivianne Sousa * @created 23/05/2006 * * * @return * @throws ErroRepositorioException */ public Collection consultarResumoArrecadacaoRelatorioPorLocalidade( int anoMesReferencia, Integer localidade) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select sum(ra.valorItemArrecadacao)," + " rt.descricao," + " lt.descricao," + " li.descricao," + " lic.descricao," + " lt.indicadorImpressao," + " lt.indicadorTotal," + " lt.id," + " lt.lancamentoTipo.id," + " ra.categoria.id," + " ra.localidade.descricao," + " ra.localidade.id," + " rt.id," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento, ra.localidade.codigoCentroCusto" + " from ResumoArrecadacao ra" + " left join ra.lancamentoTipo lt" + " left join ra.lancamentoItem li" + " left join ra.lancamentoItemContabil lic" + " left join ra.recebimentoTipo rt" + " where ra.anoMesReferencia = :anoMesReferencia and" + " ra.localidade = :localidade and" + " (ra.categoria.id = 1 or" + " ra.categoria.id = 2 or" + " ra.categoria.id = 3 or" + " ra.categoria.id = 4)" + " group by " + " rt.descricao," + " lt.descricao," + " li.descricao," + " lic.descricao," + " lt.indicadorImpressao," + " lt.indicadorTotal," + " lt.id," + " lt.lancamentoTipo.id," + " ra.categoria.id," + " ra.localidade.descricao," + " ra.localidade.id," + " rt.id," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento, ra.localidade.codigoCentroCusto" + " order by rt.id," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento," + " ra.categoria.id"; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "localidade", localidade).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Consulta ResumoArrecadacao para a gera��o do relat�rio '[UC0345] Gerar * Relat�rio de Resumo Arrecada��o' de acordo com a op��o de totaliza��o. * * Caso a op��o seja Estado por Munic�pio, o valor do idMunicipio deve ser null * caso seja Munic�pio, o valor do idMunicipio deve ser diferente de null * * @author Diogo Peixoto * @created 20/04/2011 * * @param anoMesReferencia * * @return * @throws ErroRepositorioException */ public Collection consultarResumoArrecadacaoRelatorioPorEstadoPorMunicipio(int anoMesReferencia) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); StringBuilder sb = new StringBuilder(); try { sb.append("SELECT SUM(ra.valorItemArrecadacao), "); //0 sb.append("rt.descricao, "); //1 sb.append("lt.descricao, "); //2 sb.append("li.descricao, "); //3 sb.append("lic.descricao, "); //4 sb.append("lt.indicadorImpressao, "); //5 sb.append("lt.indicadorTotal, "); //6 sb.append("lt.id, "); //7 sb.append("lt.lancamentoTipo.id, "); //8 sb.append("ra.categoria.id, "); //9 sb.append("ra.localidade.descricao, "); //10 sb.append("ra.localidade.id, "); //11 sb.append("muni.nome, "); //12 sb.append("muni.id, "); //13 sb.append("rt.id, "); //14 sb.append("ra.sequenciaTipoLancamento, "); //15 sb.append("ra.sequenciaItemTipoLancamento "); //16 sb.append("FROM ResumoArrecadacao ra LEFT JOIN ra.lancamentoTipo lt "); sb.append("LEFT JOIN ra.lancamentoItem li "); sb.append("LEFT JOIN ra.lancamentoItemContabil lic "); sb.append("LEFT JOIN ra.recebimentoTipo rt "); sb.append("INNER JOIN ra.localidade loc "); sb.append("INNER JOIN loc.municipio muni "); sb.append("WHERE ra.anoMesReferencia = :anoMesReferencia and "); sb.append("(ra.categoria.id = 1 or" + " ra.categoria.id = 2 or "); sb.append("ra.categoria.id = 3 or" + " ra.categoria.id = 4) "); sb.append("GROUP BY "); sb.append("muni.nome, "); sb.append("muni.id, "); sb.append("ra.localidade.descricao, "); sb.append("ra.localidade.id, "); sb.append("rt.descricao, "); sb.append("lt.descricao, "); sb.append("li.descricao, "); sb.append("lic.descricao, "); sb.append("lt.indicadorImpressao, "); sb.append("lt.indicadorTotal, "); sb.append("lt.id, "); sb.append("lt.lancamentoTipo.id, "); sb.append("ra.categoria.id, "); sb.append("rt.id, "); sb.append("rt.numeroSequencia, "); sb.append("ra.sequenciaTipoLancamento, "); sb.append("ra.sequenciaItemTipoLancamento "); sb.append("ORDER BY muni.id, "); sb.append("ra.localidade.id, "); sb.append("rt.id, "); sb.append("ra.sequenciaTipoLancamento, "); sb.append("ra.sequenciaItemTipoLancamento, "); sb.append("ra.categoria.id "); retorno = session.createQuery(sb.toString()).setInteger("anoMesReferencia", anoMesReferencia).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Consulta ResumoArrecadacao para a gera��o do relat�rio '[UC0345] Gerar * Relat�rio de Resumo Arrecada��o' de acordo com a op��o de totaliza��o. * * @author Diogo Peixoto * @created 20/04/2011 * * @param anoMesReferencia * @param idMunicipio * * @return * @throws ErroRepositorioException */ public Collection consultarResumoArrecadacaoRelatorioPorMunicipio(int anoMesReferencia, Integer idMunicipio) throws ErroRepositorioException{ Collection retorno = null; Session session = HibernateUtil.getSession(); StringBuilder sb = new StringBuilder(); try { sb.append("SELECT SUM(ra.valorItemArrecadacao), "); //0 sb.append("rt.descricao, "); //1 sb.append("lt.descricao, "); //2 sb.append("li.descricao, "); //3 sb.append("lic.descricao, "); //4 sb.append("lt.indicadorImpressao, "); //5 sb.append("lt.indicadorTotal, "); //6 sb.append("lt.id, "); //7 sb.append("lt.lancamentoTipo.id, "); //8 sb.append("ra.categoria.id, "); //9 sb.append("muni.nome, "); //10 sb.append("muni.id, "); //11 sb.append("rt.id, "); //12 sb.append("ra.sequenciaTipoLancamento, "); //13 sb.append("ra.sequenciaItemTipoLancamento "); //14 sb.append("FROM ResumoArrecadacao ra LEFT JOIN ra.lancamentoTipo lt "); sb.append("LEFT JOIN ra.lancamentoItem li "); sb.append("LEFT JOIN ra.lancamentoItemContabil lic "); sb.append("LEFT JOIN ra.recebimentoTipo rt "); sb.append("INNER JOIN ra.localidade loc "); sb.append("INNER JOIN loc.municipio muni "); sb.append("WHERE ra.anoMesReferencia = :anoMesReferencia and "); sb.append(" muni.id = :municipio and"); sb.append("(ra.categoria.id = 1 or" + " ra.categoria.id = 2 or "); sb.append("ra.categoria.id = 3 or" + " ra.categoria.id = 4) "); sb.append("GROUP BY "); sb.append("rt.descricao, "); sb.append("lt.descricao, "); sb.append("li.descricao, "); sb.append("lic.descricao, "); sb.append("lt.indicadorImpressao, "); sb.append("lt.indicadorTotal, "); sb.append("lt.id, "); sb.append("lt.lancamentoTipo.id, "); sb.append("ra.categoria.id, "); sb.append("muni.nome, "); sb.append("muni.id, "); sb.append("rt.id, "); sb.append("ra.sequenciaTipoLancamento, "); sb.append("ra.sequenciaItemTipoLancamento "); sb.append("ORDER BY "); sb.append("rt.id, "); sb.append("ra.sequenciaTipoLancamento, "); sb.append("ra.sequenciaItemTipoLancamento, "); sb.append("ra.categoria.id "); retorno = session.createQuery(sb.toString()).setInteger("anoMesReferencia", anoMesReferencia) .setInteger("municipio", idMunicipio).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * M�todo que vai retornar a quantidade de registros do relat�rio '[UC0345] Gerar * Relat�rio de Resumo Arrecada��o' de acordo com a op��o de totaliza��o. * * @author Vivianne Sousa, Diogo Peixoto * @created 02/06/2006, 20/04/2011 * * * @return Quantidade de Registros * @throws ErroRepositorioException */ public Integer consultarQtdeRegistrosResumoArrecadacaoRelatorio(int anoMesReferencia, Integer localidade, Integer gerenciaRegional, Integer municipio, String opcaoTotalizacao) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { if(opcaoTotalizacao.equals("municipio")){ consulta = "select count(ra.id)" + " from ResumoArrecadacao ra " + "INNER JOIN ra.localidade loc " + " where ra.anoMesReferencia = :anoMesReferencia " + " and loc.municipio = :municipio " + " and (ra.categoria.id = 1 or" + " ra.categoria.id = 2 or" + " ra.categoria.id = 3 or" + " ra.categoria.id = 4)"; }else{ consulta = "select count(ra.id)" + " from ResumoArrecadacao ra" + " where ra.anoMesReferencia = :anoMesReferencia and" + " (ra.categoria.id = 1 or" + " ra.categoria.id = 2 or" + " ra.categoria.id = 3 or" + " ra.categoria.id = 4)"; } if (opcaoTotalizacao.equals("localidade") && localidade != null) { consulta = consulta + " and ra.localidade = :localidade"; retorno = (Integer) session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "localidade", localidade).uniqueResult(); } else if (opcaoTotalizacao.equals("municipio") && municipio != null) { retorno = (Integer) session.createQuery(consulta).setInteger("anoMesReferencia", anoMesReferencia) .setInteger("municipio", municipio).uniqueResult(); } else if ((opcaoTotalizacao.equals("gerenciaRegionalLocalidade") || opcaoTotalizacao .equals("gerenciaRegional")) && gerenciaRegional != null) { consulta = consulta + " and ra.gerenciaRegional = :gerenciaRegional"; retorno = (Integer) session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "gerenciaRegional", gerenciaRegional).uniqueResult(); } else { retorno = (Integer) session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).uniqueResult(); } } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0352] Emitir Conta * * pesquisa o nome do banco e c�digo da agencia passando o id do im�vel * * [SB0017] - Gerar Linhas das contas com D�bito Autom�tico * * @author S�vio Luiz * @date 26/05/2006 * * @return String * @throws ErroRepositorioException */ public Object[] pesquisarParmsDebitoAutomatico(Integer idImovel) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select banco.descricao," + "agencia.codigoAgencia, " + "banco.id, " + "debAutomatico.identificacaoClienteBanco " + "from DebitoAutomatico debAutomatico " + "inner join debAutomatico.agencia agencia " + "inner join debAutomatico.imovel imov " + "inner join agencia.banco banco " + "where imov.id = :idImovel " + "and debAutomatico.dataExclusao is null "; retorno = (Object[]) session.createQuery(consulta).setInteger( "idImovel", idImovel).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Inseri os resumos das arrecada��es gerados pelo batch no sistema * * @author Pedro Alexandre * @date 17/05/2006 * * @param colecaoResumoArrecadacao * @throws ErroRepositorioException */ public void inserirResumoArrecadacao( Collection<ResumoArrecadacao> colecaoResumoArrecadacao) throws ErroRepositorioException { StatelessSession session = HibernateUtil.getStatelessSession(); try { // Caso a cole��o de resumos da arrecada��o seja diferente de nulo // insere os resumos e a cada 50 registros inseridos comita e limpa // a sess�o if (colecaoResumoArrecadacao != null) { // int i = 1; for (ResumoArrecadacao resumoArrecadacao : colecaoResumoArrecadacao) { session.insert(resumoArrecadacao); } } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // session.clear(); HibernateUtil.closeSession(session); } } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Verifica se j� existe resumo da arrecada��o para o ano/m�s de refer�ncia * da arrecada��o * * [FS0003] - Verificar a exist�ncia do resumo da arrecada��o * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection pesquisarResumoArrecadacaoPorAnoMesArrecadacao( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from ResumoArrecadacao resumoArrecadacao " + "where resumoArrecadacao.anoMesReferencia = :anoMesReferenciaArrecadacao "; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } // Retorna a cole��o de resumo de faturamento pesquisada // ou nulo se n�o existir dados para o ano/m�s da arrecada��o informado return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Verifica se j� existe resumo da arrecada��o para o ano/m�s de refer�ncia * da arrecada��o * * [FS0003] - Verificar a exist�ncia do resumo da arrecada��o * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection pesquisarResumoArrecadacaoPorAnoMesArrecadacao( Integer anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from ResumoArrecadacao resumoArrecadacao " + "where resumoArrecadacao.anoMesReferencia = :anoMesReferenciaArrecadacao " + "and resumoArrecadacao.localidade.id = :idLocalidade"; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade).list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } // Retorna a cole��o de resumo de faturamento pesquisada // ou nulo se n�o existir dados para o ano/m�s da arrecada��o informado return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa os pagamentos classificados de conta do ano/m�s de refer�ncia da * arrecada��o com a situa��o atual(PGST_IDATUAL) igual a pagamento * classificado ou baixar valor excedente e com o c�digo da conta diferente * de nulo (CNTA_ID <> NULL) * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentosClassificadosContas( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Pagamento> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao " + "and (pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " or " + "pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.VALOR_A_BAIXAR + ") " + "and pgmt.contaGeral.id is not null " + "order by pgmt.contaGeral.id"; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa os pagamentos classificados de guia de pagamento do ano/m�s de * refer�ncia da arrecada��o com a situa��o atual(PGST_IDATUAL) igual a * pagamento classificado ou baixar valor excedente e com o c�digo da guia * de pagamento diferente de nulo (GPAG_ID <> NULL) * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentosClassificadosGuiasPagamento( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Pagamento> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao = :anoMesRefereciaArrecadacao " + "and (pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " or " + "pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.VALOR_A_BAIXAR + ") " + "and pgmt.guiaPagamento.id is not null" + "order by pgmt.guiaPagamento.id"; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa os pagamentos classificados de d�bito a cobrar do ano/m�s de * refer�ncia da arrecada��o com a situa��o atual(PGST_IDATUAL) igual a * pagamento classificado ou baixar valor excedente e com o c�digo do d�bito * a cobrar diferente de nulo (DBAC_ID <> NULL) * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentosClassificadosDebitoACobrar( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Pagamento> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao " + "and (pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " or " + "pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.VALOR_A_BAIXAR + ") " + "and pgmt.debitoACobrarGeral.id is not null " + "order by pgmt.debitoACobrarGeral.id"; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa os pagamentos n�o classificados do m�s, que s�o do ano/m�s de * refer�ncia da arrecada��o com a situa��o atual(PGST_IDATUAL) diferente de * pagamento classificado * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentosNaoClassificadosMes( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Pagamento> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao " + "and pgmt.pagamentoSituacaoAtual.id <> " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa as devolu��es classificadas do ano/m�s de refer�ncia da * arrecada��o e com situa��o atual igual a devolu��o classificada ou * devolu��o de outros valores * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<Devolucao> pesquisarDevolucoesClassificadas( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Devolucao> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from Devolucao devl " + "where devl.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao " + "and (devl.devolucaoSituacaoAtual.id = " + DevolucaoSituacao.DEVOLUCAO_CLASSIFICADA + " or " + "devl.devolucaoSituacaoAtual.id = " + DevolucaoSituacao.DEVOLUCAO_OUTROS_VALORES + ") "; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa as devolu��es n�o classificadas do m�s, para situa��o atual * diferente de devolu��o classificada e devolu��o de outros valores * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<Devolucao> pesquisarDevolucoesNaoClassificadasMes( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Devolucao> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from Devolucao devl " + "where devl.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao " + "and devl.devolucaoSituacaoAtual.id <> " + DevolucaoSituacao.DEVOLUCAO_CLASSIFICADA + " and " + "devl.devolucaoSituacaoAtual.id <> " + DevolucaoSituacao.DEVOLUCAO_OUTROS_VALORES; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa os pagamentos de contas efetuados em meses anteriores * classificados no m�s, que s�oos do ano/m�s de refer�ncia anterior ao da * arrecada��o, que foram classificados no m�s, com situa��o atual igual a * pagamento classificado ou baixar valor excedente e com c�digo da conta * diferente de nulo (CNTA_ID <> NULL) * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentosContasEfetuadosEmMesesAnterioresClassificadosMes( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Pagamento> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao < :anoMesReferenciaArrecadacao " + "and (pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " or " + "pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.VALOR_A_BAIXAR + ") " + "and pgmt.contaGeral.id is not null " + "order by pgmt.contaGeral.id"; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa os pagamentos de guias de pagamento efetuados em meses * anteriores classificados no m�s, que s�o os do ano/m�s de refer�ncia * anterior ao da arrecada��o, que foram classificados no m�s, com situa��o * atual igual a pagamento classificado ou baixar valor excedente e com * c�digo da guia de pagamento diferente de nulo (GPAG_ID <> NULL) * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentosGuiasPagamentoEfetuadosEmMesesAnterioresClassificadosMes( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Pagamento> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao < :anoMesRefereciaArrecadacao " + "and (pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " or " + "pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.VALOR_A_BAIXAR + ") " + "and pgmt.guiaPagamento.id is not null" + "order by pgmt.guiaPagamento.id"; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa os pagamentos de d�bitos a cobrar efetuados em meses anteriores * classificados no m�s, que s�o os do ano/m�s de refer�ncia anterior ao da * arrecada��o, que foram classificados no m�s, com situa��o atual igual a * pagamento classificado ou baixar valor excedente e com c�digo do d�bito a * cobrar diferente de nulo (DBAC_ID <> NULL) * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentosDebitoACobrarEfetuadosEmMesesAnterioresClassificadosMes( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Pagamento> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao < :anoMesReferenciaArrecadacao " + "and (pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " or " + "pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.VALOR_A_BAIXAR + ") " + "and pgmt.debitoACobrarGeral.id is not null " + "order by pgmt.debitoACobrarGeral.id"; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa as devolu��es efetuadas em meses anteriores classificadas no * m�s, que s�o as do ano/m�s de refer�ncia anterior ao da arrecada��o e que * foram classificadas no m�s, comsitua��o atual igual a devolu��o * classificada ou devolu��o de outros valores. * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<Devolucao> pesquisarDevolucoesEfetuadasEmMesesAnterioresClassificadasNoMes( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Devolucao> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from Devolucao devl " + "where devl.anoMesReferenciaArrecadacao < :anoMesReferenciaArrecadacao " + "and (devl.devolucaoSituacaoAtual.id = " + DevolucaoSituacao.DEVOLUCAO_CLASSIFICADA + " or " + "devl.devolucaoSituacaoAtual.id = " + DevolucaoSituacao.DEVOLUCAO_OUTROS_VALORES + ") "; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa os pagamentos n�o classificados com baixa comandada, que s�o os * que est�o com a situa��o atual com o valor correspondente a baixar * excedente * * @author Pedro Alexandre * @date 16/05/2006 * * @return * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentosNaoClassificadosComBaixaComandada() throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Pagamento> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from Pagamento pgmt " + "where pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacaoAtual "; // Executa o hql retorno = session.createQuery(consulta).setInteger( "pagamentoSituacaoAtual", PagamentoSituacao.VALOR_A_BAIXAR) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa os pagamentos n�o classificados, que s�o os do ano/m�s de * refer�ncia igual ou anterior ao da arrecada��o e que est�o n�o * classificados,com situa��o atual diferente de pagamento classificado e de * baixar valor excedente * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentosNaoClassificados( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Pagamento> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from Pagamento pgmt " + " where pgmt.anoMesReferenciaArrecadacao <= :anoMesReferenciaArrecadacao" + " and pgmt.pagamentoSituacaoAtual.id <> " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " and pgmt.pagamentoSituacaoAtual.id <> " + PagamentoSituacao.VALOR_A_BAIXAR; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa as devolu��es n�o classificadas, que s�o as do ano/m�s de * refer�ncia igual ou anterior ao da arrecada��o e que continuam n�o * classificados, com situa��o atual com o valor diferente de devolu��o * classificada e devolu��o de outros valores. * * @author Pedro Alexandre * @date 16/05/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<Devolucao> pesquisarDevolucoesNaoClassificadas( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Devolucao> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from Devolucao devl " + "where devl.anoMesReferenciaArrecadacao <= :anoMesReferenciaArrecadacao " + "and devl.devolucaoSituacaoAtual.id <> " + DevolucaoSituacao.DEVOLUCAO_CLASSIFICADA + " and " + "devl.devolucaoSituacaoAtual.id <> " + DevolucaoSituacao.DEVOLUCAO_OUTROS_VALORES; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 100 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor de �gua por categoria e localidade paa os pagamentos * classificados de conta * * @author Pedro Alexandre, Pedro Alexandre * @date 22/05/2006, 22/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorAguaPagamentosClassificadosConta( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "select sum(ctcg.valorAgua) " + "from ContaCategoria ctcg " + "where ctcg.comp_id.categoria.id= :idCategoria " + " and ctcg.comp_id.conta.id in ( select distinct(pgmt.contaGeral.id) " + "from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao " + "and pgmt.localidade.id =:idLocalidade " + "and (pgmt.pagamentoSituacaoAtual.id = :idPagamentoClassificado or " + "pgmt.pagamentoSituacaoAtual.id = :idPagamentoValorABaixar) " + "and pgmt.contaGeral.id is not null )"; retorno = (BigDecimal) session.createQuery(consulta) .setInteger("idCategoria", idCategoria) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar", PagamentoSituacao.VALOR_A_BAIXAR) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 200 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor de esgoto por categoria e localidade paa os pagamentos * classificados de conta * * @author Pedro Alexandre * @date 22/05/2006 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorEsgotoPagamentosClassificadosConta( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "select sum(ctcg.valorEsgoto) " + "from ContaCategoria ctcg " + "where ctcg.comp_id.categoria.id= :idCategoria " + " and ctcg.comp_id.conta.id in ( select distinct(pgmt.contaGeral.id) " + "from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao " + "and pgmt.localidade.id = :idLocalidade " + "and (pgmt.pagamentoSituacaoAtual.id = :idPagamentoClassificado or " + "pgmt.pagamentoSituacaoAtual.id = :idPagamentoValorABaixar) " + "and pgmt.contaGeral.id is not null " + ") "; retorno = (BigDecimal) session.createQuery(consulta).setInteger( "idCategoria", idCategoria).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade).setInteger( "idPagamentoClassificado", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar", PagamentoSituacao.VALOR_A_BAIXAR).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 700 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor do d�bitos cobrados por localidade, categoria dos * pagamentos classificados de conta para tipo de financiamento igual a * parcelamento de servi�o e grupo de parcelamento igual a juros cobrados * * @author Pedro Alexandre * @date 22/05/2006 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorDebitoCobradoPagamentosClassificadosContaFinanciamentoTipoParcelamentoServicoGrupoParcelamentoIgualJurosCobrados( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "select sum(dccg.valorCategoria) " + "from DebitoCobradoCategoria dccg " + "where dccg.categoria.id= :idCategoria " + " and dccg.debitoCobrado.id in ( select dbcb.id from DebitoCobrado dbcb " + "where dbcb.financiamentoTipo.id = :idFinanciamentoTipo " + " and dbcb.conta.id in( select distinct(pgmt.contaGeral.id) " + "from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao " + "and pgmt.localidade.id = :idLocalidade " + "and (pgmt.pagamentoSituacaoAtual.id = :idPagamentoClassificado or " + "pgmt.pagamentoSituacaoAtual.id = :idPagamentoValorABaixar) " + "and pgmt.contaGeral.id is not null " + ") )"; retorno = (BigDecimal) session.createQuery(consulta) .setInteger("idCategoria", idCategoria) .setInteger("idFinanciamentoTipo",FinanciamentoTipo.JUROS_PARCELAMENTO) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 900 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor dos cr�ditos realizados por localidade, categoria e item * cont�bil para os pagamentos classificados de contas, para origem de * cr�dito igual a valores cobrados indevidamente. * * @author Pedro Alexandre, Pedro Alexandre * @date 22/05/2006, 23/05/2008 * * @param idLocalidade * @param referencia * @param idCategoria * @param idLancamentoItemContabil * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorCreditoRealizadoPagamentosClassificadosContaOrigemCreditoValoresCobradosIndevidamente( Integer idLocalidade, Integer referencia, Integer idCategoria, Integer idLancamentoItemContabil, Collection idsCreditosOrigem) throws ErroRepositorioException { BigDecimal retorno = null; Session session = HibernateUtil.getSession(); try { StringBuilder consultaPagamento = new StringBuilder(); consultaPagamento.append("SELECT distinct pgmt.cnta_id ") .append("FROM arrecadacao.pagamento pgmt ") .append("WHERE pgmt.pgmt_amreferenciaarrecadacao = :referencia ") .append("and pgmt.loca_id= :idLocalidade ") .append("and (pgmt.pgst_idatual = :classificado or (pgmt.pgst_idatual= :valorABaixar and pgmt.pgst_idanterior = :valorNaoConfere ) ) ") .append("and pgmt.cnta_id is not null "); StringBuilder consultaCredito = new StringBuilder(); consultaCredito.append("SELECT crrz.crrz_id ") .append("FROM faturamento.credito_realizado crrz ") .append("WHERE crrz.lict_id = :idLancamentoItemContabil ") .append("and crrz.crog_id in (:idsCreditosOrigem) ") .append("and crrz.cnta_id in ( ") .append(consultaPagamento.toString()) .append(" ) "); StringBuilder consulta = new StringBuilder(); consulta.append("SELECT sum(crcg.crcg_vlcategoria) as col_0 ") .append("FROM faturamento.cred_realizado_catg crcg ") .append("WHERE crcg.catg_id = :idCategoria ") .append("and crcg.crrz_id in ( ") .append(consultaCredito.toString()) .append(" ) "); retorno = (BigDecimal) session.createSQLQuery(consulta.toString()) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setParameterList("idsCreditosOrigem", idsCreditosOrigem) .setInteger("idLocalidade", idLocalidade) .setInteger("referencia", referencia) .setInteger("classificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("valorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("valorNaoConfere",PagamentoSituacao.VALOR_NAO_CONFERE) .setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 1000 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor dos cr�ditos realizados por localidade e categoria para * os pagamentos classificados de contas, para origem de cr�dito igual a * descontos concedidos. */ public BigDecimal acumularValorCreditoRealizadoPagamentosClassificadosContaOrigemCredito( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria, Integer[] idsCreditosOrigem) throws ErroRepositorioException { BigDecimal retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select " + "sum(crcg.crcg_vlcategoria) as col_0 " + "from " + "faturamento.cred_realizado_catg crcg " + "where " + "crcg.catg_id=:idCategoria " + "and (crcg.crrz_id in ( " + "select " + "crrz.crrz_id " + "from " + "faturamento.credito_realizado crrz " + "where " + "crrz.crog_id in (:idsCreditosOrigem) " + "and (crrz.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or ( " + "pgmt.pgst_idatual= :idPagamentoValorABaixar and pgmt.pgst_idanterior= :idPagamentoValorNaoConfere)) " + "and (pgmt.cnta_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setParameterList("idsCreditosOrigem",idsCreditosOrigem) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade",idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade",idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("idPagamentoValorNaoConfere",PagamentoSituacao.VALOR_NAO_CONFERE) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 1700 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor da entrada do parcelamento por localidade e categoria dos * pagamentos classificados de guias de pagamento com tipo de financiamento * igual a entrada de parcelamento * * @author Pedro Alexandre, Pedro Alexandre * @date 22/05/2006, 22/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorEntradaParcelamentoPagamentosClassificadosGuiaPagamentoFinanciamentoTipoEntradaParcelamento( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(gpcg.gpcg_vlcategoria) as col_0 " + "from " + "faturamento.guia_pagamento_categoria gpcg " + "where " + "gpcg.catg_id=:idCategoria " + "and (gpcg.gpag_id in ( " + "select " + "gpag.gpag_id " + "from " + "faturamento.guia_pagamento gpag " + "where " + "gpag.fntp_id=:idFinanciamentoTipo " + "and (gpag.gpag_id in (" + "select " + "distinct pgmt.gpag_id as col_0 " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or ( " + "pgmt.pgst_idatual= :idPagamentoValorABaixar and pgmt.pgst_idanterior= :idPagamentoValorNaoConfere ) ) " + "and (pgmt.gpag_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idFinanciamentoTipo",FinanciamentoTipo.ENTRADA_PARCELAMENTO) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("idPagamentoValorNaoConfere",PagamentoSituacao.VALOR_NAO_CONFERE) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 1800 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor da guia de pagamento por localidade, categoria e item * cont�bil dos pagamentos classificados de guias de pagamento com tipo de * financiamento igual a servi�o * * @author Pedro Alexandre, Pedro Alexandre * @date 22/05/2006, 23/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idLancamentoItemContabil * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorEntradaParcelamentoPagamentosClassificadosGuiaPagamentoFinanciamentoTipoServico( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idLancamentoItemContabil, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(gpcg.gpcg_vlcategoria) as col_0 " + "from " + "faturamento.guia_pagamento_categoria gpcg " + "where " + "gpcg.catg_id= :idCategoria " + " and (gpcg.gpag_id in ( " + "select " + "gpag.gpag_id " + "from " + "faturamento.guia_pagamento gpag " + "where " + "gpag.lict_id= :idLancamentoItemContabil " + "and gpag.fntp_id != :idFinanciamentoTipo " + "and (gpag.gpag_id in (" + "select " + "distinct pgmt.gpag_id as col_0 " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or ( " + "pgmt.pgst_idatual= :idPagamentoValorABaixar and pgmt.pgst_idanterior= :idPagamentoValorNaoConfere ) ) " + "and (pgmt.gpag_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setInteger("idFinanciamentoTipo",FinanciamentoTipo.ENTRADA_PARCELAMENTO) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("idPagamentoValorNaoConfere",PagamentoSituacao.VALOR_NAO_CONFERE) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 1900 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor que falta ser cobrado dos d�bitos a cobrar dos pagamentos * classificados de d�bito a cobrar por localidade, categoria e item * cont�bil * * * @author Pedro Alexandre, Pedro Alexandre * @date 23/05/2006, 23/05/2008 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorQueFaltaSerCobradoPagamentosClassificadosDebitoACobrar( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idLancamentoItemContabil, Integer idCategoria) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa BigDecimal retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(dbcg.dbcg_vlcategoria-(trunc(dbcg.dbcg_vlcategoria/dbac.dbac_nnprestacaodebito, 2) * (dbac.dbac_nnprestacaocobradas + coalesce(dbac.dbac_nnparcelabonus,0)))) as col_0 " + "from " + "faturamento.deb_a_cobrar_catg dbcg " + "inner join " + "faturamento.debito_a_cobrar dbac on dbcg.dbac_id=dbac.dbac_id " + "where " + "dbcg.dbac_id=dbac.dbac_id " + "and dbac.lict_id= :idLancamentoItemContabil " + "and dbac.loca_id= :idLocalidade " + "and dbcg.catg_id= :idCategoria " + "and (dbac.dbac_id in (" + "select " + "distinct pgmt.dbac_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.dbac_id is not null) " + ")) " ; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setInteger("idLocalidade", idLocalidade) .setInteger("idCategoria", idCategoria) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 2600 * * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa as devolu��es classificadas para acumular o valor da devolu��o * por categoria com situa��o igual a devolu��o classificada. * * @author Pedro Alexandre, Pedro Alexandre * @date 25/05/2006, 21/05/2008 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection pesquisarDevolucoesClassificadasSituacaoAtualDevolucaoClassificada( Integer anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(devl.devl_vldevolucao) as col_0, " + "devl.imov_id as col_1 " + "from " + "arrecadacao.devolucao devl " + "left outer join arrecadacao.devolucao_situacao dvst on devl.dvst_idatual=dvst.dvst_id " + "where " + "devl.devl_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and dvst.dvst_id= :idDevolucaoSituacaoAtual " + "and devl.loca_id= :idLocalidade " + " and devl.dotp_idagregador is null " + "group by devl.imov_id "; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.INTEGER) .setInteger("idLocalidade",idLocalidade) .setInteger("idDevolucaoSituacaoAtual",DevolucaoSituacao.DEVOLUCAO_CLASSIFICADA) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 2440 * * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa as devolu��es do tipo descontos por pagamento a vista * * @author Francisco do Nascimento * @date 03/12/2008 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection pesquisarDevolucoesDescontosPagamentoAVista( Integer anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(devl.devl_vldevolucao) as col_0, " + "devl.imov_id as col_1 " + "from " + "arrecadacao.devolucao devl " + "where " + "devl.devl_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and devl.loca_id= :idLocalidade " + " and devl.dotp_idagregador is not null " + " and devl.crar_id is null " + "group by devl.imov_id "; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.INTEGER) .setInteger("idLocalidade",idLocalidade) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 2440 * * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa as devolu��es do tipo descontos por credito * * @author Francisco do Nascimento * @date 04/12/2008 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection pesquisarDevolucoesDescontosCreditos( Integer anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(devl.devl_vldevolucao) as col_0, " + "devl.imov_id as col_1 " + "from " + "arrecadacao.devolucao devl " + "where " + "devl.devl_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and devl.loca_id= :idLocalidade " + " and devl.dotp_idagregador is not null " + " and devl.crar_id is not null " + "group by devl.imov_id "; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.INTEGER) .setInteger("idLocalidade",idLocalidade) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 2700 * * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa as devolu��es classificadas para acumular o valor da devolu��o * por categoria e item cont�bil com situa��o igual a devolu��o de outros * valores. * * @author Pedro Alexandre, Pedro Alexandre * @date 25/05/2006, 21/05/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @param idLancamentoItemContabil * @return * @throws ErroRepositorioException */ public Collection pesquisarDevolucoesClassificadasSituacaoAtualDevolucaoOutrosValores( Integer anoMesReferenciaArrecadacao, Integer idLocalidade, Integer idLancamentoItemContabil) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(devl.devl_vldevolucao) as col_0, " + "devl.imov_id as col_1 " + "from " + "arrecadacao.devolucao devl " + "left outer join arrecadacao.devolucao_situacao dvst on devl.dvst_idatual=dvst.dvst_id " + "inner join faturamento.debito_tipo dbtp on devl.dbtp_id=dbtp.dbtp_id " + "inner join financeiro.lancamento_item_contabil lict on dbtp.lict_id=lict.lict_id " + "where " + "devl.loca_id= :idLocalidade " + "and devl.devl_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and dvst.dvst_id= :idDevolucaoSituacaoAtual " + "and lict.lict_id= :idLancamentoItemContabil " + " and devl.dotp_idagregador is null " + "group by devl.imov_id"; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.INTEGER) .setInteger("idDevolucaoSituacaoAtual",DevolucaoSituacao.DEVOLUCAO_OUTROS_VALORES) .setInteger("idLocalidade", idLocalidade) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLancamentoItemContabil",idLancamentoItemContabil) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 3500 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor de �gua por localidade e categoria para os pagamentos de * contas efetuados em meses anteriores classificados no m�s. * * @author Pedro Alexandre, Pedro Alexandre * @date 23/05/2006, 23/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorAguaPagamentosContasEfetuadosEmMesesAnterioresClassificadosNoMes( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(ctcg.ctcg_vlagua) as col_0 " + "from " + "faturamento.conta_categoria ctcg " + "where " + "ctcg.catg_id= :idCategoria " + "and (ctcg.cnta_id in ( " + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao< :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 3600 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor de esgoto por localidade e categoria para os pagamentos * de contas efetuados em meses anteriores classificados no m�s. * * @author Pedro Alexandre * @date 23/05/2006 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorEsgotoPagamentosContasEfetuadosEmMesesAnterioresClassificadosNoMes( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "select sum(ctcg.valorEsgoto) " + "from ContaCategoria ctcg " + "where ctcg.comp_id.categoria.id= :idCategoria " + " and ctcg.comp_id.conta.id in ( select distinct(pgmt.contaGeral.id) " + "from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao < :anoMesReferenciaArrecadacao " + "and pgmt.localidade.id = :idLocalidade " + "and (pgmt.pagamentoSituacaoAtual.id = :idPagamentoClassificado or " + "pgmt.pagamentoSituacaoAtual.id = :idPagamentoValorABaixar) " + "and pgmt.contaGeral.id is not null " + ") "; retorno = (BigDecimal) session.createQuery(consulta).setInteger( "idCategoria", idCategoria).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade).setInteger( "idPagamentoClassificado", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar", PagamentoSituacao.VALOR_A_BAIXAR).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 4100 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor dos d�bitos cobrados por localidade, categoria e item * cont�bil para os pagamentos de contas efetuados em meses anteriores * classificados no m�s para tipo de financiamento igual a parcelamento de * servi�o e grupo de parcelamento igual a juros cobrados. * * @author Pedro Alexandre, Pedro Alexandre * @date 23/05/2006, 23/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorDebitoCobradoPagamentosContasEfetuadosEmMesesAnterioresClassificadosNoMesFinanciamentoTipoParcelamentoServicoGrupoParcelamentoIgualJurosCobrados( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "select sum(dccg.valorCategoria) " + "from DebitoCobradoCategoria dccg " + "where dccg.categoria.id= :idCategoria " + " and dccg.debitoCobrado.id in ( select dbcb.id from DebitoCobrado dbcb " + "where dbcb.financiamentoTipo.id = :idFinanciamentoTipo " + " and dbcb.conta.id in( select distinct(pgmt.contaGeral.id) " + "from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao < :anoMesReferenciaArrecadacao " + "and pgmt.localidade.id = :idLocalidade " + "and (pgmt.pagamentoSituacaoAtual.id = :idPagamentoClassificado or " + "pgmt.pagamentoSituacaoAtual.id = :idPagamentoValorABaixar) " + "and pgmt.contaGeral.id is not null " + ") )"; retorno = (BigDecimal) session.createQuery(consulta) .setInteger("idCategoria", idCategoria) .setInteger("idFinanciamentoTipo",FinanciamentoTipo.JUROS_PARCELAMENTO) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 4300 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor dos cr�ditos realizados por localidade, categoria e item * cont�bil para os pagamentos de contas efetuados em meses anteriores * classificados no m�s, para origem do cr�dito igual a valores cobrados * indevidamente. * * @author Pedro Alexandre, Pedro Alexandre * @date 23/05/2006, 26/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @param idLancamentoItemContabil * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorCreditoRealizadoPagamentosContasEfetuadosEmMesesAnterioresClassificadosNoMesOrigemCreditoValoresCobradosIndevidamente( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria, Integer idLancamentoItemContabil) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Cole��o de cr�dito origem de valores cobrados indevidamente Collection idsCreditosOrigem = new ArrayList(); idsCreditosOrigem.add(CreditoOrigem.DEVOLUCAO_TARIFA_AGUA); idsCreditosOrigem.add(CreditoOrigem.DEVOLUCAO_TARIFA_ESGOTO); idsCreditosOrigem.add(CreditoOrigem.SERVICOS_INDIRETOS_PAGOS_INDEVIDAMENTE); idsCreditosOrigem.add(CreditoOrigem.DEVOLUCAO_JUROS_PARCELAMENTO); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(crcg.crcg_vlcategoria) as col_0 " + "from " + "faturamento.cred_realizado_catg crcg " + "where " + "crcg.catg_id= :idCategoria " + "and (crcg.crrz_id in ( " + "select " + "crrz.crrz_id " + "from " + "faturamento.credito_realizado crrz " + "where " + "crrz.lict_id= :idLancamentoItemContabil " + "and (crrz.crog_id in (:idsCreditosOrigem)) " + "and (crrz.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao > 201212 and pgmt.pgmt_amreferenciaarrecadacao < :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setParameterList("idsCreditosOrigem", idsCreditosOrigem) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 5100 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor das entrads do parcelamento por localidade e categoria * dos pagamento de guias de pagamento efetuados em meses anteriores * classificados no m�s com tipo de financiamento igual a entrada de * parcelamento. * * @author Pedro Alexandre, Pedro Alexandre * @date 23/05/2006, 23/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorEntradaParcelamentoPagamentosGuiaPagamentoEfetuadosEmMesesAnterioresClassificadosNoMesFinanciamentoTipoEntradaParcelamento( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(gpcg.gpcg_vlcategoria) as col_0 " + "from " + "faturamento.guia_pagamento_categoria gpcg " + "where " + "gpcg.catg_id= :idCategoria " + "and (gpcg.gpag_id in ( " + "select " + "gpag.gpag_id " + "from " + "faturamento.guia_pagamento gpag " + "where " + "gpag.fntp_id= :idFinanciamentoTipo " + "and (gpag.gpag_id in (" + "select " + "distinct pgmt.gpag_id as col_0 " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao > 201212 and pgmt.pgmt_amreferenciaarrecadacao < :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.gpag_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idFinanciamentoTipo",FinanciamentoTipo.ENTRADA_PARCELAMENTO) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 5200 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor das entrads do parcelamento por localidade, categoria e * item cont�bil dos pagamento de guias de pagamento efetuados em meses * anteriores classificados no m�s com tipo de financiamento igual a * servi�o. * * @author Pedro Alexandre, Pedro Alexandre * @date 23/05/2006, 26/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idLancamentoItemContabil * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorEntradaParcelamentoPagamentosGuiaPagamentoEfetuadosEmMesesAnterioresClassificadosNoMesFinanciamentoTipoServico( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idLancamentoItemContabil, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(gpcg.gpcg_vlcategoria) as col_0 " + "from " + "faturamento.guia_pagamento_categoria gpcg " + "where " + "gpcg.catg_id= :idCategoria " + "and (gpcg.gpag_id in ( " + "select " + "gpag.gpag_id " + "from " + "faturamento.guia_pagamento gpag " + "where " + "gpag.lict_id= :idLancamentoItemContabil " + "and gpag.fntp_id= :idFinanciamentoTipo " + "and (gpag.gpag_id in (" + "select " + "distinct pgmt.gpag_id as col_0 " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao > 201212 and pgmt.pgmt_amreferenciaarrecadacao < :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.gpag_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setInteger("idFinanciamentoTipo",FinanciamentoTipo.SERVICO_NORMAL) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 5300 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor que falta ser cobrado dos d�bitos a cobrar por * localidade, categoria e item cont�bil para os pagamentos de d�bitos a * cobrar efetuados em meses anteriores classificados no m�s. * * @author Pedro Alexandre, Pedro Alexandre * @date 23/05/2006, 26/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idLancamentoItemContabil * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorQueFaltaSerCobradoPagamentosDebitoACobrarEfetuadosEmMesesAnteriores( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idLancamentoItemContabil, Integer idCategoria) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa BigDecimal retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(dbcg.dbcg_vlcategoria-(trunc(dbcg.dbcg_vlcategoria/dbac.dbac_nnprestacaodebito,2)*dbac.dbac_nnprestacaocobradas)) as col_0 " + "from " + "faturamento.deb_a_cobrar_catg dbcg " + "inner join faturamento.debito_a_cobrar dbac on dbcg.dbac_id=dbac.dbac_id " + "where " + "dbcg.dbac_id=dbac.dbac_id " + "and dbac.lict_id=:idLancamentoItemContabil " + "and dbac.loca_id= :idLocalidade " + "and dbcg.catg_id=:idCategoria " + "and (dbac.dbac_id in (" + "select " + "distinct pgmt.dbac_id as col_0 " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao > 201212 and pgmt.pgmt_amreferenciaarrecadacao < :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.dbac_id is not null) " + ")) " ; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setInteger("idLocalidade", idLocalidade) .setInteger("idCategoria", idCategoria) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 5500 * * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa as devolu��es efetuadas em meses anteriores classificadas no m�s * para acumular o valor da devolu��o por localidade e categoria com * situa��o atual igual a devolu��o classificada. * * @author Pedro Alexandre, Pedro Alexandre * @date 30/05/2006, 22/05/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection pesquisarDevolucoesEfetuadasEmMesesAnterioresClassificadasNoMesSituacaoAtualDevolucaoClassificada( Integer anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(devl.devl_vldevolucao) as col_0, " + "devl.imov_id as col_1 " + "from " + "arrecadacao.devolucao devl " + "where " + "devl.devl_amreferenciaarrecadacao< :anoMesReferenciaArrecadacao " + "and devl.dvst_idatual= :idDevolucaoSituacaoAtual " + "and devl.loca_id= :idLocalidade " + "group by devl.imov_id"; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.INTEGER) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idDevolucaoSituacaoAtual",DevolucaoSituacao.DEVOLUCAO_CLASSIFICADA) .setInteger("idLocalidade", idLocalidade) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 5600 * * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa as devolu��es efetuadas em meses anteriores classificadas no m�s * para acumular o valor da devolu��o por localidade, categoria e item * cont�bil, com situa��o atual igual a devolu��o de outros valores. * * @author Pedro Alexandre, Pedro Alexandre * @date 31/05/2006, 21/05/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @param idLancamentoItemContabil * @return * @throws ErroRepositorioException */ public Collection pesquisarDevolucoesEfetuadasEmMesesAnterioresClassificadasNoMesSituacaoAtualDevolucaoOutrosValores( Integer anoMesReferenciaArrecadacao, Integer idLocalidade, Integer idLancamentoItemContabil) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(devl.devl_vldevolucao) as col_0, " + "devl.imov_id as col_1 " + "from " + "arrecadacao.devolucao devl " + "left outer join arrecadacao.devolucao_situacao dvst on devl.dvst_idatual=dvst.dvst_id " + "inner join faturamento.debito_tipo dbtp on devl.dbtp_id=dbtp.dbtp_id " + "inner join financeiro.lancamento_item_contabil lict on dbtp.lict_id=lict.lict_id " + "where " + "devl.devl_amreferenciaarrecadacao < :anoMesReferenciaArrecadacao " + "and dvst.dvst_id= :idDevolucaoSituacaoAtual " + "and devl.loca_id= :idLocalidade " + "and lict.lict_id=:idLancamentoItemContabil " + "group by devl.imov_id"; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.INTEGER) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idDevolucaoSituacaoAtual",DevolucaoSituacao.DEVOLUCAO_OUTROS_VALORES) .setInteger("idLocalidade", idLocalidade) .setInteger("idLancamentoItemContabil",idLancamentoItemContabil) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 6200 (SOMA DOS SEQ.100,200,3500 e * 3600) * * [UC0276] - Encerrar Arrecada��o do M�s * * Este met�do acumular os valores dos sequencias : 100, 200, 3500 e * 3600,para ser acumuldo � soma dos recebimentos de valores contabilizados * como perdas. * * @author Pedro Alexandre, Pedro Alexandre * @date 02/06/2006, 26/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorAgua_EsgotoPagamentosClassificadosNoMes_EfetuadosEmMesesAnterioresContaContabilizadasComoPerdas( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select sum(coalesce(ctcg.ctcg_vlagua,0) + coalesce(ctcg.ctcg_vlesgoto,0)) as col_0 "+ "from " + "faturamento.conta_categoria ctcg " + "where " + "ctcg.catg_id= :idCategoria " + "and (ctcg.cnta_id in ( " + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "inner join faturamento.conta cnta on pgmt.cnta_id=cnta.cnta_id " + "where " + "pgmt.pgmt_amreferenciaarrecadacao<= :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idValorABaixar) " + "and (pgmt.cnta_id is not null) " + "and (cnta.cnta_amreferenciabaixacontabil is not null) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idValorABaixar", PagamentoSituacao.VALOR_A_BAIXAR) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 6200 (SOMA DOS SEQ. * 300,400,500,600,700,3700,3800,3900,4000 e 4100) * * [UC0276] - Encerrar Arrecada��o do M�s * * Este met�do acumular os valores dos sequencias : 300, 400, 500, 600, 700, * 3700, 3800, 3900, 4000 e 4100,para ser acumulado � soma dos recebimentos * de valores contabilizados como perdas. * * @author Pedro Alexandre, Pedro Alexandre * @date 02/06/2006, 26/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorDebitoCobradoPagamentosClassificadosNoMes_EfetuadosEmMesesAnterioresContaContabilizadaComoPerdasFinanciamentoTipoServico_ParcelamentoAgua_ParcelamentoEsgoto_ParcelamentoServico( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { Collection<Integer> idsTipoFinanciamento = new ArrayList(); idsTipoFinanciamento.add(FinanciamentoTipo.SERVICO_NORMAL); idsTipoFinanciamento.add(FinanciamentoTipo.PARCELAMENTO_AGUA); idsTipoFinanciamento.add(FinanciamentoTipo.PARCELAMENTO_ESGOTO); idsTipoFinanciamento.add(FinanciamentoTipo.PARCELAMENTO_SERVICO); BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(dccg.dccg_vlcategoria) as col_0 " + "from " + "faturamento.debito_cobrado_categoria dccg " + "where " + "dccg.catg_id= :idCategoria " + "and (dccg.dbcb_id in ( " + "select " + "dbcb.dbcb_id " + "from " + "faturamento.debito_cobrado dbcb " + "where " + "(dbcb.fntp_id in (:idsTipoFinanciamento)) " + "and (dbcb.cnta_id in ( " + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt, " + "faturamento.conta cnta " + "where " + "pgmt.cnta_id=cnta.cnta_id " + "and pgmt.pgmt_amreferenciaarrecadacao<= :anoMesReferenciaArrecadacao " + "and pgmt.loca_id=:idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual=:idValorABaixar) " + "and (pgmt.cnta_id is not null) " + "and (cnta.cnta_amreferenciabaixacontabil is not null) " + ") " + ") " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setParameterList("idsTipoFinanciamento", idsTipoFinanciamento) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idValorABaixar", PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 6200 (SOMA DOS * SEQ.800,900,1000,4200,4300 e 4400) * * [UC0276] - Encerrar Arrecada��o do M�s * * Este met�do acumular os valores dos sequencias : 800, 900, 1000, 4200, * 4300 e 4400, para ser acumulado negativamente � soma dos recebimentos de * valores contabilizados como perdas. * * @author Pedro Alexandre, Pedro Alexandre * @date 02/06/2006, 26/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorCreditoRealizadoPagamentosClassificadosNoMes_EfetuadosMesesAnterioresContaContabilizadaComoPerdasOrigemCredito_ContasPagasEmDuplicidadeExcesso_ValoresCobradosIndevidamente_DescontosConcedidos( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { Collection<Integer> idsCreditoOrigem = new ArrayList(); idsCreditoOrigem.add(CreditoOrigem.CONTAS_PAGAS_EM_DUPLICIDADE_EXCESSO); idsCreditoOrigem.add(CreditoOrigem.VALORES_COBRADOS_INDEVIDAMENTE); idsCreditoOrigem.add(CreditoOrigem.DESCONTOS_CONCEDIDOS_NO_PARCELAMENTO); /** * Contabilizar cr�ditos com cr�dito origem correspondente * a Contas Pagas em Excesso * * @author Wellington Rocha * @date */ idsCreditoOrigem.add(CreditoOrigem.CONTAS_PAGAS_EM_EXCESSO); BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(crcg.crcg_vlcategoria) as col_0 " + "from " + "faturamento.cred_realizado_catg crcg " + "where " + "crcg.catg_id= :idCategoria " + "and (crcg.crrz_id in ( " + "select " + "crrz.crrz_id " + "from " + "faturamento.credito_realizado crrz " + "where(crrz.crog_id in (:idsCreditoOrigem)) " + "and (crrz.cnta_id in ( " + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "inner join faturamento.conta cnta on pgmt.cnta_id=cnta.cnta_id " + "where " + "pgmt.pgmt_amreferenciaarrecadacao<= :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + "and (cnta.cnta_amreferenciabaixacontabil is not null) " + ") " + ") " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setParameterList("idsCreditoOrigem", idsCreditoOrigem) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar", PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 6200 (SOMA DOS * SEQ.1200,1300,1400,1500,4600,4700,4800 e 4900) * * [UC0276] - Encerrar Arrecada��o do M�s * * Este met�do acumular os valores dos sequencias : 1200, 1300, 1400, 1500, * 4600, 4700, 4800 e 4900, para ser acumulado negativamente � soma dos * recebimentos de valores contabilizados como perdas. * * @author Pedro Alexandre, Pedro Alexandre * @date 02/06/2006, 22/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection pesquisarContasImpostosDeduzidosPagamentosClassificadosNoMes_MesesAnterioresContaContabilizadasComoPerdasImpostoTipo_IR_CSLL_COFINS_PISPASEP( Integer idLocalidade, Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { Collection retorno = new ArrayList(); // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "cnid.cnid_vlimposto as col_0, " + "imov.imov_id as col_1 " + "from " + "faturamento.conta_impostos_deduzidos cnid " + "inner join faturamento.conta cnta on cnid.cnta_id=cnta.cnta_id " + "inner join cadastro.imovel imov on cnta.imov_id=imov.imov_id " + "where " + "(cnid.imtp_id=:ir " + "or cnid.imtp_id=:csll " + "or cnid.imtp_id=:cofins " + "or cnid.imtp_id=:pispasep) " + "and (cnta.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt, " + "faturamento.conta cnta " + "where " + "pgmt.cnta_id=cnta.cnta_id " + "and pgmt.pgmt_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and pgmt.loca_id=:idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual=:idValorABaixar) " + "and (pgmt.cnta_id is not null) " + "and (cnta.cnta_amreferenciabaixacontabil is not null) " + ")) " + ""; retorno = session.createSQLQuery(consulta) .addScalar("col_0", Hibernate.BIG_DECIMAL) .addScalar("col_1", Hibernate.INTEGER) .setInteger("ir",ImpostoTipo.IR) .setInteger("csll",ImpostoTipo.CSLL) .setInteger("cofins",ImpostoTipo.COFINS) .setInteger("pispasep",ImpostoTipo.PIS_PASEP) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("idLocalidade",idLocalidade) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .list(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa os d�bitos cobrados das contas dos pagamentos classificados de * contas e dos pagamentos anteriores de conta classificados no m�s. * * @author Pedro Alexandre * @date 02/06/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<DebitoCobrado> pesquisarDebitosCobradosContasPagamentosClassificados_PagamentosAnterioresContaClassificadosNoMes( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<DebitoCobrado> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from DebitoCobrado dbcb " + "where dbcb.conta.id in (" + "select pgmt.contaGeral.id from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao " + "and (pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " or " + "pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.VALOR_A_BAIXAR + ") " + "and pgmt.contaGeral.id is not null " + "order by pgmt.contaGeral.id)"; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa os cr�ditos realizados das contas dos pagamentos classificados * de contas e dos pagamentos anteriores de conta classificados no m�s. * * @author Pedro Alexandre * @date 02/06/2006 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection<CreditoRealizado> pesquisarCreditosRealizadosContasPagamentosClassificados_PagamentosAnterioresContaClassificadosNoMes( Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<CreditoRealizado> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "from CreditoRealizado crrz " + "where crrz.conta.id in (" + "select pgmt.contaGeral.id from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao " + "and (pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " or " + "pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.VALOR_A_BAIXAR + ") " + "and pgmt.contaGeral.id is not null " + "order by pgmt.contaGeral.id)"; // Executa o hql retorno = session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Conta do Cliente * pesquisarPagamentoClienteConta * * @author Rafael Corr�a * @date 12/12/06 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarPagamentoClienteConta(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal ) throws ErroRepositorioException { Collection<Pagamento> retorno = null; // Collection<Pagamento> colecaoPagamento = null; String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamentoCliente( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal ); // hql = " select distinct pagamento " // + " from gcom.arrecadacao.pagamento.Pagamento as pagamento " // + " inner join pagamento.conta as conta " // + " inner join conta.clienteContas as clienteContas " // + " left join clienteContas.clienteRelacaoTipo as // clienteRelacaoTipo " // + condicionais // + " order by pagamento.localidade.id, pagamento.imovel.id, " // + " pagamento.anoMesReferenciaPagamento, pagamento.dataPagamento // " // + " "; hql = " select c.pgmt_id as idPagamento, i.cnta_id as idConta, i.cnta_amreferenciaconta as anoMesConta, i.cnta_vlagua as valorAguaConta, " + " i.cnta_vlesgoto as valorEsgotoConta, i.cnta_vldebitos as valorDebitosConta, i.cnta_vlcreditos as valorCreditosConta, " + " c.pgmt_dtpagamento as dataPagamento, c.pgmt_amreferenciapagamento as anoMesPagamento, " + " c.pgmt_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, " + " k.pgst_id as idSituacaoPagamentoAnterior, k.pgst_dsabreviado as situacaoPagamentoAnterior, c.dotp_id as idDocumentoTipo, c.imov_id as idImovel " + " FROM arrecadacao.pagamento c " + " INNER JOIN " + " faturamento.conta i " + " on i.cnta_id = c.cnta_id " + " INNER JOIN " + " cadastro.cliente_conta b " + " on b.cnta_id = c.cnta_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao k " + " on c.pgst_idanterior = k.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE " + condicionais + " order by c.loca_id, c.imov_id, c.pgmt_amreferenciapagamento, c.pgmt_dtpagamento "; // colecaoPagamento = session.createQuery(hql).list(); retorno = session .createSQLQuery(hql) .addScalar("idPagamento", Hibernate.INTEGER) .addScalar("idConta", Hibernate.INTEGER) .addScalar("anoMesConta", Hibernate.INTEGER) .addScalar("valorAguaConta", Hibernate.BIG_DECIMAL) .addScalar("valorEsgotoConta", Hibernate.BIG_DECIMAL) .addScalar("valorDebitosConta", Hibernate.BIG_DECIMAL) .addScalar("valorCreditosConta", Hibernate.BIG_DECIMAL) .addScalar("dataPagamento", Hibernate.DATE) .addScalar("anoMesPagamento", Hibernate.INTEGER) .addScalar("valorPagamento", Hibernate.BIG_DECIMAL) .addScalar("idSituacaoPagamentoAtual", Hibernate.INTEGER) .addScalar("situacaoPagamentoAtual", Hibernate.STRING) .addScalar("idSituacaoPagamentoAnterior", Hibernate.INTEGER) .addScalar("situacaoPagamentoAnterior", Hibernate.STRING) .addScalar("idDocumentoTipo", Hibernate.INTEGER).addScalar( "idImovel", Hibernate.INTEGER).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Guia de Pagamento do Cliente * pesquisarPagamentoClienteGuiaPagamento * * @author Rafael Corr�a * @date 12/12/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection pesquisarPagamentoClienteGuiaPagamento(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection retorno = null; // Collection<Pagamento> colecaoPagamento = null; String hql = ""; Session session = HibernateUtil.getSession(); try { // 2. O sistema seleciona os pagamentos de guia de pagamento do // cliente informado (a partir da tabela // PAGAMENTO com CLIE_ID = Id do cliente informado ou com GPAG_ID = // GPAG_ID da tabela // CLIENTE_GUIA_PAGAMENTO com CLIE_ID = Id do cliente informado e // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamentoCliente( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = " SELECT c.pgmt_id as idPagamento, b1.gpag_id as idGuiaPagamento, c.clie_id as idCliente, b1.gpag_vldebito as valorGuia, " + " c.pgmt_dtpagamento as dataPagamento, c.pgmt_amreferenciapagamento as anoMesPagamento, k.dbtp_id as idTipoDebitoGuia, k.dbtp_dsdebitotipo as tipoDebitoGuia, " + " m.dbtp_id as idTipoDebitoPagamento, m.dbtp_dsdebitotipo as tipoDebitoPagamento, " + " c.pgmt_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, " + " l.pgst_id as idSituacaoPagamentoAnterior, l.pgst_dsabreviado as situacaoPagamentoAnterior, c.dotp_id as idDocumentoTipo, " + " c.imov_id as idImovel, c.loca_id as idLocalidade " + " FROM arrecadacao.pagamento c " + " INNER JOIN " + " faturamento.guia_pagamento b1 " + " on b1.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente_guia_pagamento b " + " on b.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " INNER JOIN " + " faturamento.debito_tipo k " + " on b1.dbtp_id = k.dbtp_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao l " + " on c.pgst_idanterior = l.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE " + condicionais + " union " + " SELECT c.pgmt_id as idPagamento, b1.gpag_id as idGuiaPagamento, c.clie_id as idCliente, b1.gpag_vldebito as valorGuia, " + " c.pgmt_dtpagamento as dataPagamento, c.pgmt_amreferenciapagamento as anoMesPagamento, k.dbtp_id as idTipoDebitoGuia, k.dbtp_dsdebitotipo as tipoDebitoGuia, " + " m.dbtp_id as idTipoDebitoPagamento, m.dbtp_dsdebitotipo as tipoDebitoPagamento, " + " c.pgmt_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, " + " l.pgst_id as idSituacaoPagamentoAnterior, l.pgst_dsabreviado as situacaoPagamentoAnterior, c.dotp_id as idDocumentoTipo, " + " c.imov_id as idImovel, c.loca_id as idLocalidade " + " FROM arrecadacao.pagamento c " + " INNER JOIN " + " faturamento.guia_pagamento b1 " + " on b1.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente_guia_pagamento b " + " on b.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " INNER JOIN " + " faturamento.debito_tipo k " + " on b1.dbtp_id = k.dbtp_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao l " + " on c.pgst_idanterior = l.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE " + condicionais + " union " + " SELECT c.pgmt_id as idPagamento, b.gpag_id as idGuiaPagamento, c.clie_id as idCliente, b.gpag_vldebito as valorGuia, " + " c.pgmt_dtpagamento as dataPagamento, c.pgmt_amreferenciapagamento as anoMesPagamento, k.dbtp_id as idTipoDebitoGuia, k.dbtp_dsdebitotipo as tipoDebitoGuia, " + " m.dbtp_id as idTipoDebitoPagamento, m.dbtp_dsdebitotipo as tipoDebitoPagamento, " + " c.pgmt_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, " + " l.pgst_id as idSituacaoPagamentoAnterior, l.pgst_dsabreviado as situacaoPagamentoAnterior, c.dotp_id as idDocumentoTipo, " + " c.imov_id as idImovel, c.loca_id as idLocalidade " + " FROM arrecadacao.pagamento c " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = c.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " LEFT OUTER JOIN " + " faturamento.guia_pagamento b " + " on b.gpag_id = c.gpag_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo k " + " on b.dbtp_id = k.dbtp_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao l " + " on c.pgst_idanterior = l.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE "; idTipoRelacao = null; String condicionaisClientePagamento = this .criarCondicionaisPagamentoCliente(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = hql + condicionaisClientePagamento + " order by idLocalidade, idImovel, idTipoDebitoPagamento, dataPagamento "; // hql = " select distinct pagamento " // + " from gcom.arrecadacao.pagamento.Pagamento as pagamento " // + " inner join pagamento.guiaPagamento as guiaPagamento " // + " left join guiaPagamento.cliente as cliente " // + " left join cliente.clienteImoveis as clienteImoveis " // + " left join clienteImoveis.clienteRelacaoTipo as // clienteRelacaoTipo " // + condicionais // + " order by pagamento.localidade.id, pagamento.imovel.id, " // + " pagamento.debitoTipo.id, pagamento.dataPagamento " // + " "; retorno = session .createSQLQuery(hql) .addScalar("idPagamento", Hibernate.INTEGER) .addScalar("idGuiaPagamento", Hibernate.INTEGER) .addScalar("idCliente", Hibernate.INTEGER) .addScalar("valorGuia", Hibernate.BIG_DECIMAL) .addScalar("dataPagamento", Hibernate.DATE) .addScalar("anoMesPagamento", Hibernate.INTEGER) .addScalar("idTipoDebitoGuia", Hibernate.INTEGER) .addScalar("tipoDebitoGuia", Hibernate.STRING) .addScalar("idTipoDebitoPagamento", Hibernate.INTEGER) .addScalar("tipoDebitoPagamento", Hibernate.STRING) .addScalar("valorPagamento", Hibernate.BIG_DECIMAL) .addScalar("idSituacaoPagamentoAtual", Hibernate.INTEGER) .addScalar("situacaoPagamentoAtual", Hibernate.STRING) .addScalar("idSituacaoPagamentoAnterior", Hibernate.INTEGER) .addScalar("situacaoPagamentoAnterior", Hibernate.STRING) .addScalar("idDocumentoTipo", Hibernate.INTEGER).addScalar( "idImovel", Hibernate.INTEGER).addScalar( "idLocalidade", Hibernate.INTEGER).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Debito a Cobrar do Cliente * pesquisarPagamentoClienteDebitoACobrar * * @author Rafael Corr�a * @date 12/12/06 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarPagamentoClienteDebitoACobrar(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection<Pagamento> retorno = null; // Collection<Pagamento> colecaoPagamento = null; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamentoCliente( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); // 3. O sistema seleciona os pagamentos de d�bito a cobrar do // cliente informado (a partir da tabela // PAGAMENTO com DBAC_ID = DBAC_ID da tabela DEBITO_A_COBRAR com // IMOV_ID = IMOV_ID da tabela // CLIENTE_IMOVEL com CLIE_ID = Id do cliente informado e CRTP_ID // com valor correspondente a um dos // tipos de rela��o do Cliente com o Im�vel, caso selecionados e // demais par�metros de sele��o informados) hql = " SELECT c.pgmt_id as idPagamento, c.imov_id as idImovel, c.dbac_id as idDebitoACobrar, " + " b1.dbac_vldebito as valorDebito, b1.dbac_nnprestacaocobradas as numeroPrestacaoCobradas, " + " b1.dbac_nnprestacaodebito as numeroPrestacaoDebito, c.pgmt_dtpagamento as dataPagamento, " + " c.pgmt_amreferenciapagamento as anoMesPagamento, k.dbtp_id as idTipoDebitoDebito, k.dbtp_dsdebitotipo as tipoDebitoDebito, " + " m.dbtp_id as idTipoDebitoPagamento, m.dbtp_dsdebitotipo as tipoDebitoPagamento, c.pgmt_vlpagamento as valorPagamento, " + " j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, j.pgst_id as idSituacaoPagamentoAnterior, " + " j.pgst_dsabreviado as situacaoPagamentoAnterior, c.dotp_id as idDocumentoTipo, b1.imov_id as idImovelDebito," + " c.loca_id as idLocalidade, b1.dbac_nnparcelabonus as numeroParcelaBonus " + " FROM arrecadacao.pagamento c " + " INNER JOIN " + " faturamento.debito_a_cobrar b1 " + " on b1.dbac_id = c.dbac_id " + " INNER JOIN " + " cadastro.cliente_imovel b " + " on b.imov_id = b1.imov_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " INNER JOIN " + " faturamento.debito_tipo k " + " on b1.dbtp_id = k.dbtp_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao l " + " on c.pgst_idanterior = l.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE " + condicionais + " order by idLocalidade, idImovel, idTipoDebitoPagamento, dataPagamento "; retorno = session .createSQLQuery(hql) .addScalar("idPagamento", Hibernate.INTEGER) .addScalar("idImovel", Hibernate.INTEGER) .addScalar("idDebitoACobrar", Hibernate.INTEGER) .addScalar("valorDebito", Hibernate.BIG_DECIMAL) .addScalar("numeroPrestacaoCobradas", Hibernate.SHORT) .addScalar("numeroPrestacaoDebito", Hibernate.SHORT) .addScalar("dataPagamento", Hibernate.DATE) .addScalar("anoMesPagamento", Hibernate.INTEGER) .addScalar("idTipoDebitoDebito", Hibernate.INTEGER) .addScalar("tipoDebitoDebito", Hibernate.STRING) .addScalar("idTipoDebitoPagamento", Hibernate.INTEGER) .addScalar("tipoDebitoPagamento", Hibernate.STRING) .addScalar("valorPagamento", Hibernate.BIG_DECIMAL) .addScalar("idSituacaoPagamentoAtual", Hibernate.INTEGER) .addScalar("situacaoPagamentoAtual", Hibernate.STRING) .addScalar("idSituacaoPagamentoAnterior", Hibernate.INTEGER) .addScalar("situacaoPagamentoAnterior", Hibernate.STRING) .addScalar("idDocumentoTipo", Hibernate.INTEGER).addScalar( "idImovelDebito", Hibernate.INTEGER).addScalar( "idLocalidade", Hibernate.INTEGER). addScalar("numeroParcelaBonus",Hibernate.SHORT).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Debito a Cobrar do Cliente * pesquisarPagamentoLocalidade * * @author Rafael Corr�a * @date 12/12/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentoLocalidade(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, Integer numeroPagina, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection<Pagamento> retorno = null; // Collection<Pagamento> colecaoPagamento = null; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamento(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); // 3. O sistema seleciona os pagamentos de d�bito a cobrar do // cliente informado (a partir da tabela // PAGAMENTO com DBAC_ID = DBAC_ID da tabela DEBITO_A_COBRAR com // IMOV_ID = IMOV_ID da tabela // CLIENTE_IMOVEL com CLIE_ID = Id do cliente informado e CRTP_ID // com valor correspondente a um dos // tipos de rela��o do Cliente com o Im�vel, caso selecionados e // demais par�metros de sele��o informados) hql = " select distinct pagamento " + " from gcom.arrecadacao.pagamento.Pagamento pagamento " + " INNER JOIN FETCH pagamento.avisoBancario avbc " + " INNER JOIN FETCH avbc.arrecadador arrec " + " INNER JOIN FETCH arrec.cliente cliArrec " + " INNER JOIN FETCH pagamento.documentoTipo doctoTp " + " LEFT JOIN FETCH pagamento.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.conta conta " + " LEFT JOIN FETCH pagamento.imovel imov " + " LEFT JOIN FETCH imov.localidade locImov " + " LEFT JOIN FETCH imov.setorComercial setComImov " + " LEFT JOIN FETCH imov.quadra quadra " + " LEFT JOIN FETCH pagamento.localidade loc " + " LEFT JOIN FETCH loc.gerenciaRegional gr " + " LEFT JOIN FETCH pagamento.guiaPagamento gpag " + " LEFT JOIN FETCH gpag.debitoTipo dbtpGpag " + " LEFT JOIN FETCH pagamento.debitoACobrarGeral dbcbGeral " + " LEFT JOIN FETCH dbcbGeral.debitoACobrar dbcb " + " LEFT JOIN FETCH dbcb.debitoTipo dbtpDbcb " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAtual pagtoSitAtual " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAnterior pagtoSitAnterior " + condicionais + " "; // olecaoPagamento = session.createQuery(hql).list(); retorno = session.createQuery(hql) .setFirstResult(10 * numeroPagina).setMaxResults(10).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Aviso Bancario * pesquisarPagamentoAvisoBancario * * @author Rafael Corr�a * @date 12/12/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentoAvisoBancario( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection<Pagamento> retorno = null; // Collection<Pagamento> colecaoPagamento = null; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamento(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); // 3. O sistema seleciona os pagamentos de d�bito a cobrar do // cliente informado (a partir da tabela // PAGAMENTO com DBAC_ID = DBAC_ID da tabela DEBITO_A_COBRAR com // IMOV_ID = IMOV_ID da tabela // CLIENTE_IMOVEL com CLIE_ID = Id do cliente informado e CRTP_ID // com valor correspondente a um dos // tipos de rela��o do Cliente com o Im�vel, caso selecionados e // demais par�metros de sele��o informados) hql = " select distinct pagamento " + " from gcom.arrecadacao.pagamento.Pagamento pagamento " + " INNER JOIN FETCH pagamento.avisoBancario as avisoBancario " + " LEFT JOIN FETCH pagamento.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.conta conta " + " LEFT JOIN FETCH pagamento.guiaPagamento gpag " + " LEFT JOIN FETCH gpag.debitoTipo dbtpGpag " + " LEFT JOIN FETCH pagamento.debitoACobrarGeral dbcbGeral " + " LEFT JOIN FETCH dbcbGeral.debitoACobrar dbcb " + " LEFT JOIN FETCH dbcb.debitoTipo dbtpDbcb " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAtual pagtoSitAtual " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAnterior pagtoSitAnterior " + condicionais + " "; retorno = session.createQuery(hql).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Debito a Cobrar do Cliente * pesquisarPagamentoLocalidade * * @author Rafael Corr�a * @date 12/12/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentoMovimentoArrecadador( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal ) throws ErroRepositorioException { Collection<Pagamento> retorno = null; // Collection<Pagamento> colecaoPagamento = null; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamento(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal ); // 3. O sistema seleciona os pagamentos de d�bito a cobrar do // cliente informado (a partir da tabela // PAGAMENTO com DBAC_ID = DBAC_ID da tabela DEBITO_A_COBRAR com // IMOV_ID = IMOV_ID da tabela // CLIENTE_IMOVEL com CLIE_ID = Id do cliente informado e CRTP_ID // com valor correspondente a um dos // tipos de rela��o do Cliente com o Im�vel, caso selecionados e // demais par�metros de sele��o informados) hql = " select distinct pagamento " + " from gcom.arrecadacao.pagamento.Pagamento pagamento " + " INNER JOIN FETCH pagamento.arrecadadorMovimentoItem as arrecadadorMovimentoItem " + " INNER JOIN FETCH arrecadadorMovimentoItem.arrecadadorMovimento as arrecadadorMovimento " + " INNER JOIN FETCH pagamento.avisoBancario avbc " + " INNER JOIN FETCH avbc.arrecadador arrec " + " INNER JOIN FETCH pagamento.documentoTipo doctoTp " + " LEFT JOIN FETCH pagamento.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.conta conta " + " LEFT JOIN FETCH pagamento.debitoTipo dbtpPagto " + " LEFT JOIN FETCH pagamento.guiaPagamento gpag " + " LEFT JOIN FETCH gpag.debitoTipo dbtpGpag " + " LEFT JOIN FETCH pagamento.debitoACobrarGeral dbcbGeral " + " LEFT JOIN FETCH dbcbGeral.debitoACobrar dbcb " + " LEFT JOIN FETCH dbcb.debitoTipo dbtpDbcb " + " LEFT JOIN FETCH pagamento.arrecadacaoForma arrecForma " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAtual pagtoSitAtual " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAnterior pagtoSitAnterior " + " LEFT JOIN FETCH pagamento.cliente cli " + condicionais + " order by pagamento.localidade.id, pagamento.imovel.id, " + " pagamento.debitoTipo.id, pagamento.dataPagamento " + " "; retorno = session.createQuery(hql).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Debito a Cobrar do Cliente * pesquisarPagamentoLocalidade * * @author Rafael Corr�a * @date 12/12/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentoMovimentoArrecadadorParaPaginacao( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, Integer numeroPagina, String valorPagamentoInicial, String valorPagamentoFinal ) throws ErroRepositorioException { Collection<Pagamento> retorno = null; // Collection<Pagamento> colecaoPagamento = null; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamento(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); // 3. O sistema seleciona os pagamentos de d�bito a cobrar do // cliente informado (a partir da tabela // PAGAMENTO com DBAC_ID = DBAC_ID da tabela DEBITO_A_COBRAR com // IMOV_ID = IMOV_ID da tabela // CLIENTE_IMOVEL com CLIE_ID = Id do cliente informado e CRTP_ID // com valor correspondente a um dos // tipos de rela��o do Cliente com o Im�vel, caso selecionados e // demais par�metros de sele��o informados) hql = " select distinct pagamento " + " from gcom.arrecadacao.pagamento.Pagamento pagamento " + " INNER JOIN FETCH pagamento.arrecadadorMovimentoItem as arrecadadorMovimentoItem " + " INNER JOIN FETCH arrecadadorMovimentoItem.arrecadadorMovimento as arrecadadorMovimento " + " INNER JOIN FETCH pagamento.avisoBancario avbc " + " INNER JOIN FETCH avbc.arrecadador arrec " + " INNER JOIN FETCH pagamento.documentoTipo doctoTp " + " LEFT JOIN FETCH pagamento.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.conta conta " + " LEFT JOIN FETCH pagamento.debitoTipo dbtpPagto " + " LEFT JOIN FETCH pagamento.guiaPagamento gpag " + " LEFT JOIN FETCH gpag.debitoTipo dbtpGpag " + " LEFT JOIN FETCH pagamento.debitoACobrarGeral dbcbGeral " + " LEFT JOIN FETCH dbcbGeral.debitoACobrar dbcb " + " LEFT JOIN FETCH dbcb.debitoTipo dbtpDbcb " + " LEFT JOIN FETCH pagamento.arrecadacaoForma arrecForma " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAtual pagtoSitAtual " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAnterior pagtoSitAnterior " + " LEFT JOIN FETCH pagamento.cliente cli " + condicionais + " order by pagamento.localidade.id, pagamento.imovel.id, " + " pagamento.debitoTipo.id, pagamento.dataPagamento " + " "; retorno = session.createQuery(hql) .setFirstResult(10 * numeroPagina).setMaxResults(10).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos com os condicionais informados * criarCondicionaisPagamento * * @author Roberta Costa * @date 12/06/06 * * @param idImovel * @param idCliente * @param idTipoRelacao * @param localidadeInicial * @param localidadeFinal * @param idAvisoBancario * @param idArrecadador * @param periodoArrecadacaoInicial * @param periodoArrecadacaoFinal * @param periodoPagamentoInicio * @param periodoPagamentoFim * @param dataPagamentoInicial * @param dataPagamentoFinal * @param idsPagamentosSituacoes * @param idsDebitosTipos * @param idsArrecadacaoForma * @param idsDocumentosTipos * @return */ public String criarCondicionaisPagamento(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) { String sql = " where "; if (idImovel != null && !idImovel.equals("")) { sql = sql + " pagamento.imovel.id = " + idImovel + " and "; } if (idCliente != null && !idCliente.equals("")) { // sql = sql + " clienteContas.cliente.id = " + idCliente + " and " // ; sql = sql + " pagamento.cliente.id = " + idCliente + " and "; } if (idTipoRelacao != null && !idTipoRelacao.equals("")) { sql = sql + " clienteRelacaoTipo.id = " + idTipoRelacao + " and "; } if (localidadeInicial != null && localidadeFinal != null && !localidadeInicial.equals("") && !localidadeFinal.equals("")) { sql = sql + " pagamento.localidade.id >= " + localidadeInicial + " and "; sql = sql + " pagamento.localidade.id <= " + localidadeFinal + " and "; } if (idAvisoBancario != null && !idAvisoBancario.equals("")) { sql = sql + " pagamento.avisoBancario.id = " + idAvisoBancario + " and "; } if (idArrecadador != null && !idArrecadador.equals("")) { sql = sql + " pagamento.arrecadadorMovimentoItem.arrecadadorMovimento.id = " + idArrecadador + " and "; } if (periodoArrecadacaoInicial != null && !periodoArrecadacaoInicial.equals("")) { sql = sql + " pagamento.anoMesReferenciaArrecadacao >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoInicial) + " and "; } if (periodoArrecadacaoFinal != null && !periodoArrecadacaoFinal.equals("")) { sql = sql + " pagamento.anoMesReferenciaArrecadacao <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoFinal) + " and "; } if (periodoPagamentoInicio != null && !periodoPagamentoInicio.equals("")) { sql = sql + " pagamento.anoMesReferenciaPagamento >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoInicio) + " and "; } if (periodoPagamentoFim != null && !periodoPagamentoFim.equals("")) { sql = sql + " pagamento.anoMesReferenciaPagamento <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoFim) + " and "; } if (dataPagamentoInicial != null && !dataPagamentoInicial.equals("")) { // sql = sql + " pagamento.dataPagamento >= '" + // Util.formatarData(dataPagamentoInicial) + "' and " ; String data1 = Util.recuperaDataInvertida(dataPagamentoInicial); if (data1 != null && !data1.equals("") && data1.trim().length() == 8) { data1 = data1.substring(0, 4) + "-" + data1.substring(4, 6) + "-" + data1.substring(6, 8); } sql = sql + " pagamento.dataPagamento >= to_date('" + data1 + "','YYYY-MM-DD HH24:MI:SS') and "; } if (dataPagamentoFinal != null && !dataPagamentoFinal.equals("")) { // sql = sql + " pagamento.dataPagamento <= '" + // Util.formatarData(dataPagamentoFinal) + "' and " ; String data2 = Util.recuperaDataInvertida(dataPagamentoFinal); if (data2 != null && !data2.equals("") && data2.trim().length() == 8) { data2 = data2.substring(0, 4) + "-" + data2.substring(4, 6) + "-" + data2.substring(6, 8); } sql = sql + " pagamento.dataPagamento <= to_date('" + data2 + "','YYYY-MM-DD HH24:MI:SS') and "; } if (idsPagamentosSituacoes != null && !idsPagamentosSituacoes.equals("")) { String valoresIn = ""; for (int i = 0; i < idsPagamentosSituacoes.length; i++) { if (!idsPagamentosSituacoes[i].equals("")) { valoresIn = valoresIn + idsPagamentosSituacoes[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " pagamento.pagamentoSituacaoAtual.id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsDebitosTipos != null && !idsDebitosTipos.equals("") && !idsDebitosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDebitosTipos.length; i++) { if (!idsDebitosTipos[i].equals("")) { valoresIn = valoresIn + idsDebitosTipos[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " pagamento.debitoTipo.id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsArrecadacaoForma != null && !idsArrecadacaoForma.equals("") && !idsArrecadacaoForma[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsArrecadacaoForma.length; i++) { if (!idsArrecadacaoForma[i].equals("")) { valoresIn = valoresIn + idsArrecadacaoForma[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " pagamento.arrecadacaoForma.id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsDocumentosTipos != null && !idsDocumentosTipos.equals("") && !idsDocumentosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDocumentosTipos.length; i++) { if (!idsDocumentosTipos[i].equals("")) { valoresIn = valoresIn + idsDocumentosTipos[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " pagamento.documentoTipo.id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if ( valorPagamentoInicial != null && !valorPagamentoInicial.equals( "" ) && valorPagamentoFinal != null && !valorPagamentoFinal.equals( "" ) ){ sql += " pagamento.valorPagamento between " + Util.formatarMoedaRealparaBigDecimal( valorPagamentoInicial ) + " and " + Util.formatarMoedaRealparaBigDecimal( valorPagamentoFinal ) + " and "; } // retira o " and " q fica sobrando no final da query sql = Util.removerUltimosCaracteres(sql, 4); // [SB0006] Ordenar Pagamentos de Acordo com o Tipo de Documento // 1. Para os pagamentos com tipo de documento(DOPT_ID) com valor // correspondente a conta, // ordena os pagamentos pela localidade (LOCA_ID), matr�cula do im�vel // (IMOV_ID), ano/m�s // de refer�nca do pagamento(PGMT_AMREFERENCIAPAGAMENTO), e data de // pagamento (PGMT_DTPAGAMENTO) // 2. Para os pagamentos com tipo do documento(DOPT_ID) com o valor // correspondente a guia de // pagamento, ordena os pagamentos pela localidade (LOCA_ID), matr�cula // do im�vel(IMOV_ID), // tipo do d�bito(DBTP_ID), e data de pagamento (PGMT_DTPAGAMENTO) // 3. Para os pagamentos com tipo de documento(DOPT_ID) com o valor // correspondente a d�bito a // cobrar, ordena os pagamentos pela localidade (LOCA_ID), matr�cula do // im�vel(IMOV_ID), // tipo do d�bito(DBTP_ID), e data de pagamento (PGMT_DTPAGAMENTO) return sql; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos com os condicionais informados * criarCondicionaisPagamentoRelatorio * * @author Rafael Corr�a * @date 12/12/06 * * @param idImovel * @param idCliente * @param idTipoRelacao * @param localidadeInicial * @param localidadeFinal * @param idAvisoBancario * @param idArrecadador * @param periodoArrecadacaoInicial * @param periodoArrecadacaoFinal * @param periodoPagamentoInicio * @param periodoPagamentoFim * @param dataPagamentoInicial * @param dataPagamentoFinal * @param idsPagamentosSituacoes * @param idsDebitosTipos * @param idsArrecadacaoForma * @param idsDocumentosTipos * @return */ public String criarCondicionaisPagamentoCliente(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) { String sql = " "; if (idImovel != null && !idImovel.equals("")) { sql = sql + " c.imov_id = " + idImovel + " and "; } if (idCliente != null && !idCliente.equals("")) { sql = sql + " a.clie_id = " + idCliente + " and "; } if (idTipoRelacao != null && !idTipoRelacao.equals("")) { sql = sql + " b.crtp_id = " + idTipoRelacao + " and "; } if (localidadeInicial != null && localidadeFinal != null && !localidadeInicial.equals("") && !localidadeFinal.equals("")) { sql = sql + " c.loca_id >= " + localidadeInicial + " and "; sql = sql + " c.loca_id <= " + localidadeFinal + " and "; } if (idAvisoBancario != null && !idAvisoBancario.equals("")) { sql = sql + " c.avbc_id = " + idAvisoBancario + " and "; } if (idArrecadador != null && !idArrecadador.equals("")) { sql = sql + " f.armv_id = " + idArrecadador + " and "; } if (periodoArrecadacaoInicial != null && !periodoArrecadacaoInicial.equals("")) { sql = sql + " c.pgmt_amreferenciaarrecadacao >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoInicial) + " and "; } if (periodoArrecadacaoFinal != null && !periodoArrecadacaoFinal.equals("")) { sql = sql + " c.pgmt_amreferenciaarrecadacao <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoFinal) + " and "; } if (periodoPagamentoInicio != null && !periodoPagamentoInicio.equals("")) { sql = sql + " c.pgmt_amreferenciapagamento >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoInicio) + " and "; } if (periodoPagamentoFim != null && !periodoPagamentoFim.equals("")) { sql = sql + " c.pgmt_amreferenciapagamento <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoFim) + " and "; } if (dataPagamentoInicial != null && !dataPagamentoInicial.equals("")) { // sql = sql + " pagamento.dataPagamento >= '" + // Util.formatarData(dataPagamentoInicial) + "' and " ; String data1 = Util.recuperaDataInvertida(dataPagamentoInicial); if (data1 != null && !data1.equals("") && data1.trim().length() == 8) { data1 = data1.substring(0, 4) + "-" + data1.substring(4, 6) + "-" + data1.substring(6, 8); } sql = sql + " c.pgmt_dtpagamento >= to_date('" + data1 + "','YYYY-MM-DD HH24:MI:SS') and "; } if (dataPagamentoFinal != null && !dataPagamentoFinal.equals("")) { // sql = sql + " pagamento.dataPagamento <= '" + // Util.formatarData(dataPagamentoFinal) + "' and " ; String data2 = Util.recuperaDataInvertida(dataPagamentoFinal); if (data2 != null && !data2.equals("") && data2.trim().length() == 8) { data2 = data2.substring(0, 4) + "-" + data2.substring(4, 6) + "-" + data2.substring(6, 8); } sql = sql + " c.pgmt_dtpagamento <= to_date('" + data2 + "','YYYY-MM-DD HH24:MI:SS') and "; } if (idsPagamentosSituacoes != null && !idsPagamentosSituacoes.equals("")) { String valoresIn = ""; for (int i = 0; i < idsPagamentosSituacoes.length; i++) { if (!idsPagamentosSituacoes[i].equals("")) { valoresIn = valoresIn + idsPagamentosSituacoes[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " c.pgst_idatual in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsDebitosTipos != null && !idsDebitosTipos.equals("") && !idsDebitosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDebitosTipos.length; i++) { if (!idsDebitosTipos[i].equals("")) { valoresIn = valoresIn + idsDebitosTipos[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " c.dbtp_id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsArrecadacaoForma != null && !idsArrecadacaoForma.equals("") && !idsArrecadacaoForma[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsArrecadacaoForma.length; i++) { if (!idsArrecadacaoForma[i].equals("")) { valoresIn = valoresIn + idsArrecadacaoForma[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " c.arfm_id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsDocumentosTipos != null && !idsDocumentosTipos.equals("") && !idsDocumentosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDocumentosTipos.length; i++) { if (!idsDocumentosTipos[i].equals("")) { valoresIn = valoresIn + idsDocumentosTipos[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " c.dotp_id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if ( valorPagamentoInicial != null && !valorPagamentoInicial.equals( "" ) && valorPagamentoFinal != null && !valorPagamentoFinal.equals( "" ) ){ sql += " c.valorPagamento between " + Util.formatarMoedaRealparaBigDecimal( valorPagamentoInicial ) + " and " + Util.formatarMoedaRealparaBigDecimal( valorPagamentoFinal ) + " and "; } // retira o " and " q fica sobrando no final da query sql = Util.removerUltimosCaracteres(sql, 4); return sql; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos com os condicionais informados * criarCondicionaisPagamento * * @author Roberta Costa * @date 12/06/06 * * @param idImovel * @param idCliente * @param idTipoRelacao * @param localidadeInicial * @param localidadeFinal * @param idAvisoBancario * @param idArrecadador * @param periodoArrecadacaoInicial * @param periodoArrecadacaoFinal * @param periodoPagamentoInicio * @param periodoPagamentoFim * @param dataPagamentoInicial * @param dataPagamentoFinal * @param idsPagamentosSituacoes * @param idsDebitosTipos * @param idsArrecadacaoForma * @param idsDocumentosTipos * @return */ public String criarCondicionaisPagamentoRelatorio(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal ) { String sql = " WHERE "; if (idImovel != null && !idImovel.equals("")) { sql = sql + " imov.id = " + idImovel + " and "; } if (idCliente != null && !idCliente.equals("")) { // sql = sql + " clienteContas.cliente.id = " + idCliente + " and " // ; sql = sql + " cli.id = " + idCliente + " and "; } if (idTipoRelacao != null && !idTipoRelacao.equals("")) { sql = sql + " clienteRelacaoTipo.id = " + idTipoRelacao + " and "; } if (localidadeInicial != null && localidadeFinal != null && !localidadeInicial.equals("") && !localidadeFinal.equals("")) { sql = sql + " loc.id >= " + localidadeInicial + " and "; sql = sql + " loc.id <= " + localidadeFinal + " and "; } if (idAvisoBancario != null && !idAvisoBancario.equals("")) { sql = sql + " avbc.id = " + idAvisoBancario + " and "; } if (idArrecadador != null && !idArrecadador.equals("")) { sql = sql + " arrecMov.id = " + idArrecadador + " and "; } if (periodoArrecadacaoInicial != null && !periodoArrecadacaoInicial.equals("")) { sql = sql + " pagto.anoMesReferenciaArrecadacao >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoInicial) + " and "; } if (periodoArrecadacaoFinal != null && !periodoArrecadacaoFinal.equals("")) { sql = sql + " pagto.anoMesReferenciaArrecadacao <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoFinal) + " and "; } if (periodoPagamentoInicio != null && !periodoPagamentoInicio.equals("")) { sql = sql + " pagto.anoMesReferenciaPagamento >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoInicio) + " and "; } if (periodoPagamentoFim != null && !periodoPagamentoFim.equals("")) { sql = sql + " pagto.anoMesReferenciaPagamento <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoFim) + " and "; } if (dataPagamentoInicial != null && !dataPagamentoInicial.equals("")) { // sql = sql + " pagamento.dataPagamento >= '" + // Util.formatarData(dataPagamentoInicial) + "' and " ; String data1 = Util.recuperaDataInvertida(dataPagamentoInicial); if (data1 != null && !data1.equals("") && data1.trim().length() == 8) { data1 = data1.substring(0, 4) + "-" + data1.substring(4, 6) + "-" + data1.substring(6, 8); } sql = sql + " pagto.dataPagamento >= to_date('" + data1 + "','YYYY-MM-DD HH24:MI:SS') and "; } if (dataPagamentoFinal != null && !dataPagamentoFinal.equals("")) { // sql = sql + " pagamento.dataPagamento <= '" + // Util.formatarData(dataPagamentoFinal) + "' and " ; String data2 = Util.recuperaDataInvertida(dataPagamentoFinal); if (data2 != null && !data2.equals("") && data2.trim().length() == 8) { data2 = data2.substring(0, 4) + "-" + data2.substring(4, 6) + "-" + data2.substring(6, 8); } sql = sql + " pagto.dataPagamento <= to_date('" + data2 + "','YYYY-MM-DD HH24:MI:SS') and "; } if (idsPagamentosSituacoes != null && !idsPagamentosSituacoes.equals("")) { String valoresIn = ""; for (int i = 0; i < idsPagamentosSituacoes.length; i++) { if (!idsPagamentosSituacoes[i].equals("")) { valoresIn = valoresIn + idsPagamentosSituacoes[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " pagtoSitAtual.id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsDebitosTipos != null && !idsDebitosTipos.equals("") && !idsDebitosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDebitosTipos.length; i++) { if (!idsDebitosTipos[i].equals("")) { valoresIn = valoresIn + idsDebitosTipos[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " dbtp.id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsArrecadacaoForma != null && !idsArrecadacaoForma.equals("") && !idsArrecadacaoForma[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsArrecadacaoForma.length; i++) { if (!idsArrecadacaoForma[i].equals("")) { valoresIn = valoresIn + idsArrecadacaoForma[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " arrecForma.id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsDocumentosTipos != null && !idsDocumentosTipos.equals("") && !idsDocumentosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDocumentosTipos.length; i++) { if (!idsDocumentosTipos[i].equals("")) { valoresIn = valoresIn + idsDocumentosTipos[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " doctoTp.id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if ( valorPagamentoInicial != null && !valorPagamentoInicial.equals( "" ) && valorPagamentoFinal != null && !valorPagamentoFinal.equals( "" ) ){ sql += " pagto.valorPagamento between " + Util.formatarMoedaRealparaBigDecimal( valorPagamentoInicial ) + " and " + Util.formatarMoedaRealparaBigDecimal( valorPagamentoFinal ) + " and "; } // retira o " and " q fica sobrando no final da query sql = Util.removerUltimosCaracteres(sql, 4); // [SB0006] Ordenar Pagamentos de Acordo com o Tipo de Documento // 1. Para os pagamentos com tipo de documento(DOPT_ID) com valor // correspondente a conta, // ordena os pagamentos pela localidade (LOCA_ID), matr�cula do im�vel // (IMOV_ID), ano/m�s // de refer�nca do pagamento(PGMT_AMREFERENCIAPAGAMENTO), e data de // pagamento (PGMT_DTPAGAMENTO) // 2. Para os pagamentos com tipo do documento(DOPT_ID) com o valor // correspondente a guia de // pagamento, ordena os pagamentos pela localidade (LOCA_ID), matr�cula // do im�vel(IMOV_ID), // tipo do d�bito(DBTP_ID), e data de pagamento (PGMT_DTPAGAMENTO) // 3. Para os pagamentos com tipo de documento(DOPT_ID) com o valor // correspondente a d�bito a // cobrar, ordena os pagamentos pela localidade (LOCA_ID), matr�cula do // im�vel(IMOV_ID), // tipo do d�bito(DBTP_ID), e data de pagamento (PGMT_DTPAGAMENTO) return sql; } /** * Consulta dados da tabela dados diarios arrecadacao * * @author Fernanda Paiva * @created 09/06/2006 * * * @return * @throws ErroRepositorioException */ public Collection consultarDadosDiarios(int anoMesReferencia, int id, String descricao, int idElo) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { if (descricao == "ELO") { consulta = "select localidade.localidade.id,sum(re.valorPagamentos), re.gerenciaRegional.id, eloPolo.descricao, " + " eloPolo.localidade.id, re.anoMesReferenciaArrecadacao" + " from ArrecadacaoDadosDiarios re,Localidade localidade, Localidade eloPolo " + " where re.localidade.id = localidade.id " + "and localidade.localidade.id = eloPolo.id " + "and re.anoMesReferenciaArrecadacao = :anoMesReferencia and " + " re.gerenciaRegional.id = :id " + " group by localidade.localidade.id,re.gerenciaRegional.id, eloPolo.descricao, " + " eloPolo.localidade.id, re.anoMesReferenciaArrecadacao"; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger("id", id).list(); } if (descricao == "LOCALIDADE") { consulta = "select re.localidade.id, sum(re.valorPagamentos), re.gerenciaRegional.id, eloPolo.descricao, " + " eloPolo.id, re.anoMesReferenciaArrecadacao " + " from ArrecadacaoDadosDiarios re, Localidade eloPolo " + " where re.localidade.id = eloPolo.id and re.anoMesReferenciaArrecadacao = :anoMesReferencia and " + " re.gerenciaRegional.id = :id and eloPolo.localidade = :idElo" + " group by re.localidade.id, re.gerenciaRegional.id, eloPolo.descricao, " + " eloPolo.id, re.anoMesReferenciaArrecadacao "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger("id", id).setInteger("idElo", idElo).list(); } if (descricao == "ARRECADADOR") { consulta = "select cliente.nome, sum(re.valorPagamentos), " + " re.anoMesReferenciaArrecadacao, arrecadador.id " + " from ArrecadacaoDadosDiarios re, Arrecadador arrecadador " + "left join arrecadador.cliente cliente" + " where re.arrecadador.id = arrecadador.id and re.anoMesReferenciaArrecadacao = :anoMesReferencia " + " group by cliente.nome, re.anoMesReferenciaArrecadacao, arrecadador.id "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).list(); } if (descricao == "VALORES") { consulta = "select re.dataPagamento, sum(re.valorPagamentos), " + " re.anoMesReferenciaArrecadacao " + " from ArrecadacaoDadosDiarios re " + " where re.anoMesReferenciaArrecadacao = :anoMesReferencia " + " group by re.anoMesReferenciaArrecadacao, re.dataPagamento " + " order by re.anoMesReferenciaArrecadacao, re.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).list(); } if (descricao == "VALORESGERENCIA") { consulta = "select re.dataPagamento, sum(re.valorPagamentos), " + " re.anoMesReferenciaArrecadacao " + " from ArrecadacaoDadosDiarios re " + " where re.anoMesReferenciaArrecadacao = :anoMesReferencia and re.gerenciaRegional.id = :id " + " group by re.anoMesReferenciaArrecadacao, re.dataPagamento " + " order by re.anoMesReferenciaArrecadacao, re.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger("id", id).list(); } if (descricao == "VALORESELO") { consulta = "select re.dataPagamento, sum(re.valorPagamentos), " + " re.anoMesReferenciaArrecadacao " + " from ArrecadacaoDadosDiarios re,Localidade localidade, Localidade eloPolo " + " where re.anoMesReferenciaArrecadacao = :anoMesReferencia and eloPolo.localidade.id = :idElo " + " and re.localidade.id = localidade.id " + " and localidade.localidade.id = eloPolo.id " + " and re.gerenciaRegional.id = :id " + " group by re.anoMesReferenciaArrecadacao, re.dataPagamento " + " order by re.anoMesReferenciaArrecadacao, re.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger("id", id).setInteger("idElo", idElo).list(); } if (descricao == "VALORESLOCALIDADE") { consulta = "select re.dataPagamento, sum(re.valorPagamentos), " + " re.anoMesReferenciaArrecadacao " + " from ArrecadacaoDadosDiarios re, Localidade localidade, Localidade eloPolo " + " where re.anoMesReferenciaArrecadacao = :anoMesReferencia and eloPolo.id = :idElo " + " and re.localidade.id = eloPolo.id " + " and re.gerenciaRegional.id = :id " + " group by re.anoMesReferenciaArrecadacao, re.dataPagamento " + " order by re.anoMesReferenciaArrecadacao, re.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger("id", id).setInteger("idElo", idElo).list(); } if (descricao == "VALORESPORDIA") { consulta = "select re.dataPagamento, sum(re.valorPagamentos), " + " re.anoMesReferenciaArrecadacao " + " from ArrecadacaoDadosDiarios re, Localidade localidade " + " where re.anoMesReferenciaArrecadacao = :anoMesReferencia " + " and localidade.id = re.localidade.id " + "and localidade.id = :idLocalidade " + " group by re.anoMesReferenciaArrecadacao, re.dataPagamento " + " order by re.anoMesReferenciaArrecadacao, re.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "idLocalidade", idElo).list(); } if (descricao == "VALORESARRECADADOR") { consulta = "select re.dataPagamento, sum(re.valorPagamentos), " + " re.anoMesReferenciaArrecadacao " + " from ArrecadacaoDadosDiarios re " + " where re.anoMesReferenciaArrecadacao = :anoMesReferencia and re.arrecadador.id = :id " + " group by re.anoMesReferenciaArrecadacao, re.dataPagamento " + " order by re.anoMesReferenciaArrecadacao, re.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger("id", id).list(); } if (descricao == "VALORESCATEGORIA") { consulta = "select re.dataPagamento, sum(re.valorPagamentos), " + " re.anoMesReferenciaArrecadacao " + " from ArrecadacaoDadosDiarios re " + " where re.anoMesReferenciaArrecadacao = :anoMesReferencia and re.categoria.id = :id " + " group by re.anoMesReferenciaArrecadacao, re.dataPagamento " + " order by re.anoMesReferenciaArrecadacao, re.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger("id", id).list(); } if (descricao == "VALORESPERFIL") { consulta = "select re.dataPagamento, sum(re.valorPagamentos), " + " re.anoMesReferenciaArrecadacao " + " from ArrecadacaoDadosDiarios re " + " where re.anoMesReferenciaArrecadacao = :anoMesReferencia and re.imovelPerfil.id = :id " + " group by re.anoMesReferenciaArrecadacao, re.dataPagamento " + " order by re.anoMesReferenciaArrecadacao, re.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger("id", id).list(); } if (descricao == "VALORESDOCUMENTO") { consulta = "select re.dataPagamento, sum(re.valorPagamentos), " + " re.anoMesReferenciaArrecadacao " + " from ArrecadacaoDadosDiarios re " + " where re.anoMesReferenciaArrecadacao = :anoMesReferencia and re.documentoTipo.id = :id " + " group by re.anoMesReferenciaArrecadacao, re.dataPagamento " + " order by re.anoMesReferenciaArrecadacao, re.dataPagamento "; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger("id", id).list(); } } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0319] Filtrar Aviso Bancario * * @param avisoBancarioHelper * @return Cole��o de DebitoAutomaticoMovimento * @throws ErroRepositorioException */ public Integer filtrarAvisoBancarioAbertoFechadoCount( AvisoBancarioHelper avisoBancarioHelper, AvisoBancarioHelper avisoBancarioHelperNovo) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; Object resultado = null; Short arrecadadorCodAgente = avisoBancarioHelper .getCodigoAgenteArrecadador(); Date dataLancamentoInicio = avisoBancarioHelper .getDataLancamentoInicial(); Date dataLancamentoFim = avisoBancarioHelper.getDataLancamentoFinal(); Short indicadorCreditoDebito = avisoBancarioHelper .getIndicadorCreditoDebito(); Integer idContaBancaria = avisoBancarioHelper.getIdContaBancaria(); Integer idMovimento = avisoBancarioHelper.getIdMovimentoArrecadador(); Date dataPrevisaoCreditoDebitoInicio = avisoBancarioHelper .getDataPrevistaInicial(); Date dataPrevisaoCreditoDebitoFim = avisoBancarioHelper .getDataPrevistaFinal(); Date dataRealizacaoCreditoDebitoInicio = avisoBancarioHelper .getDataRealizadaInicial(); Date dataRealizacaoCreditoDebitoFim = avisoBancarioHelper .getDataRealizadaFinal(); int anoMesReferenciaArrecadacaoInicial = avisoBancarioHelper .getAnoMesReferenciaArrecadacaoInicial(); int anoMesReferenciaArrecadacaoFinal = avisoBancarioHelper .getAnoMesReferenciaArrecadacaoFinal(); BigDecimal valorRealizadoInicial = avisoBancarioHelper .getValorRealizadoInicial(); BigDecimal valorRealizadoFinal = avisoBancarioHelper .getValorRealizadoFinal(); BigDecimal valorPrevistoInicial = avisoBancarioHelper .getValorPrevistoInicial(); BigDecimal valorPrevistoFinal = avisoBancarioHelper .getValorPrevistoFinal(); String tipoAviso = avisoBancarioHelper.getTipoAviso(); int flag = 0; if (arrecadadorCodAgente == null && (dataLancamentoInicio == null || dataLancamentoFim == null) && (indicadorCreditoDebito == 0 || indicadorCreditoDebito == 3) && idContaBancaria == null && idMovimento == null && (dataPrevisaoCreditoDebitoInicio == null || dataPrevisaoCreditoDebitoFim == null) && (dataRealizacaoCreditoDebitoInicio == null || dataRealizacaoCreditoDebitoFim == null) && (anoMesReferenciaArrecadacaoInicial == 0 || anoMesReferenciaArrecadacaoFinal == 0) && (valorPrevistoInicial == null || valorPrevistoFinal == null) && (valorRealizadoInicial == null || valorRealizadoFinal == null) && tipoAviso.equalsIgnoreCase("1")) { flag = 1; consulta = "select count (avisoBancario.id) from AvisoBancario avisoBancario "; } else { consulta = "select count (avisoBancario.id) from AvisoBancario avisoBancario " + "where "; } if (arrecadadorCodAgente != null) { consulta += " avisoBancario.arrecadador.codigoAgente = " + arrecadadorCodAgente + " and"; } if ((dataLancamentoInicio != null) && (dataLancamentoFim != null)) { consulta += " avisoBancario.dataLancamento between :dataLancamentoInicio and " + ":dataLancamentoFim and"; } if (indicadorCreditoDebito != 0 && indicadorCreditoDebito != 3) { consulta += " avisoBancario.indicadorCreditoDebito = " + indicadorCreditoDebito + " and"; } if (idContaBancaria != null) { consulta += " avisoBancario.contaBancaria.id = " + idContaBancaria + " and"; } if (idMovimento != null) { consulta += " avisoBancario.arrecadadorMovimento.id = " + idMovimento + " and"; } if ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null)) { consulta += " avisoBancario.dataPrevista between :dataPrevisaoCreditoDebitoInicio and " + ":dataPrevisaoCreditoDebitoFim and"; } if ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null)) { consulta += " avisoBancario.dataRealizada between :dataRealizacaoCreditoDebitoInicio and " + ":dataRealizacaoCreditoDebitoFim and"; } if ((anoMesReferenciaArrecadacaoInicial != 0) && (anoMesReferenciaArrecadacaoFinal != 0)) { consulta += " avisoBancario.anoMesReferenciaArrecadacao between " + anoMesReferenciaArrecadacaoInicial + " and " + anoMesReferenciaArrecadacaoFinal + " and"; } if ((valorRealizadoInicial != null) && (valorRealizadoFinal != null)) { BigDecimal valorInicialNegativo = valorRealizadoFinal .multiply(new BigDecimal("-1.00")); BigDecimal valorFinalNegativo = valorRealizadoInicial .multiply(new BigDecimal("-1.00")); consulta += " ((avisoBancario.valorRealizado between " + valorInicialNegativo + " and " + valorFinalNegativo + ") or (avisoBancario.valorRealizado between " + valorRealizadoInicial + " and " + valorRealizadoFinal + "))" + " and"; } // tipoAviso if (tipoAviso != null) { if (tipoAviso.equalsIgnoreCase("3")) { BigDecimal valorSomatorioAcertoCredito = this .pesquisarSomatorioAvisoAcerto(1, avisoBancarioHelperNovo.getAvisoBancario() .getId(), 1); BigDecimal valorSomatorioAcertoDebito = this .pesquisarSomatorioAvisoAcerto(2, avisoBancarioHelperNovo.getAvisoBancario() .getId(), 1); BigDecimal valorSomatorioAcertoCredito2 = this .pesquisarSomatorioAvisoAcerto(1, avisoBancarioHelperNovo.getAvisoBancario() .getId(), 2); BigDecimal valorSomatorioAcertoDebito2 = this .pesquisarSomatorioAvisoAcerto(2, avisoBancarioHelperNovo.getAvisoBancario() .getId(), 2); if (valorSomatorioAcertoCredito == null) { valorSomatorioAcertoCredito = new BigDecimal("0.00"); } if (valorSomatorioAcertoDebito == null) { valorSomatorioAcertoDebito = new BigDecimal("0.00"); } if (valorSomatorioAcertoCredito2 == null) { valorSomatorioAcertoCredito2 = new BigDecimal("0.00"); } if (valorSomatorioAcertoDebito2 == null) { valorSomatorioAcertoDebito2 = new BigDecimal("0.00"); } // FECHADO consulta += " ((avisoBancario.valorArrecadacaoCalculado = " + "(( " + " avisoBancario.valorArrecadacaoInformado + " + valorSomatorioAcertoCredito + ") - " + valorSomatorioAcertoDebito + ")) and " + " (avisoBancario.valorDevolucaoCalculado = " + "(( " + " avisoBancario.valorDevolucaoInformado + " + valorSomatorioAcertoCredito2 + ") - " + valorSomatorioAcertoDebito2 + "))) and "; } else if (tipoAviso.equalsIgnoreCase("2")) { // ABERTO BigDecimal valorSomatorioAcertoCredito = this .pesquisarSomatorioAvisoAcerto(1, avisoBancarioHelperNovo.getAvisoBancario() .getId(), 1); BigDecimal valorSomatorioAcertoDebito = this .pesquisarSomatorioAvisoAcerto(2, avisoBancarioHelperNovo.getAvisoBancario() .getId(), 1); BigDecimal valorSomatorioAcertoCredito2 = this .pesquisarSomatorioAvisoAcerto(1, avisoBancarioHelperNovo.getAvisoBancario() .getId(), 2); BigDecimal valorSomatorioAcertoDebito2 = this .pesquisarSomatorioAvisoAcerto(2, avisoBancarioHelperNovo.getAvisoBancario() .getId(), 2); if (valorSomatorioAcertoCredito == null) { valorSomatorioAcertoCredito = new BigDecimal("0.00"); } if (valorSomatorioAcertoDebito == null) { valorSomatorioAcertoDebito = new BigDecimal("0.00"); } if (valorSomatorioAcertoCredito2 == null) { valorSomatorioAcertoCredito2 = new BigDecimal("0.00"); } if (valorSomatorioAcertoDebito2 == null) { valorSomatorioAcertoDebito2 = new BigDecimal("0.00"); } consulta += " ((avisoBancario.valorArrecadacaoCalculado <> " + "(( " + " avisoBancario.valorArrecadacaoInformado + " + valorSomatorioAcertoCredito + ") - " + valorSomatorioAcertoDebito + ")) or " + " (avisoBancario.valorDevolucaoCalculado <> " + "(( " + " avisoBancario.valorDevolucaoInformado + " + valorSomatorioAcertoCredito2 + ") - " + valorSomatorioAcertoDebito2 + "))) and "; } } String consultarComOrderBy = ""; if (flag != 1) { consultarComOrderBy = Util.removerUltimosCaracteres(consulta, 4); } else { consultarComOrderBy = Util.removerUltimosCaracteres(consulta, 0); } if (arrecadadorCodAgente != null) { // consultarComOrderBy += " group by avisoBancario.arrecadador.id "; } // Consulta try { if ((((dataLancamentoInicio != null) && (dataLancamentoFim != null)) && ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null))) && ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null))) { resultado = session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).uniqueResult(); } else if (((dataLancamentoInicio != null) && (dataLancamentoFim != null)) && ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null))) { resultado = session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).uniqueResult(); } else if (((dataLancamentoInicio != null) && (dataLancamentoFim != null)) && ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null))) { resultado = session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).uniqueResult(); } else if (((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null)) && ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null))) { resultado = session.createQuery(consultarComOrderBy).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).uniqueResult(); } else if ((dataLancamentoInicio != null) && (dataLancamentoFim != null)) { resultado = session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).uniqueResult(); } else if ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null)) { resultado = session.createQuery(consultarComOrderBy).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).uniqueResult(); } else if ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null)) { resultado = session.createQuery(consultarComOrderBy).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).uniqueResult(); } else { resultado = session.createQuery(consultarComOrderBy) .uniqueResult(); } if (resultado != null) { retorno = (Integer) resultado; } // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0319] Filtrar Aviso Bancario * * @param avisoBancarioHelper * @return Cole��o de DebitoAutomaticoMovimento * @throws ErroRepositorioException */ public Collection filtrarAvisoBancarioAbertoFechadoParaPaginacao( AvisoBancarioHelper avisoBancarioHelper, Integer numeroPagina) throws ErroRepositorioException { // Collection retorno = new ArrayList(); // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; Integer idAviso = avisoBancarioHelper.getAvisoBancario().getId(); String tipoAviso = avisoBancarioHelper.getTipoAviso(); Short arrecadadorCodAgente = avisoBancarioHelper .getCodigoAgenteArrecadador(); Date dataLancamentoInicio = avisoBancarioHelper .getDataLancamentoInicial(); Date dataLancamentoFim = avisoBancarioHelper.getDataLancamentoFinal(); Short indicadorCreditoDebito = avisoBancarioHelper .getIndicadorCreditoDebito(); Integer idContaBancaria = avisoBancarioHelper.getIdContaBancaria(); Integer idMovimento = avisoBancarioHelper.getIdMovimentoArrecadador(); Date dataPrevisaoCreditoDebitoInicio = avisoBancarioHelper .getDataPrevistaInicial(); Date dataPrevisaoCreditoDebitoFim = avisoBancarioHelper .getDataPrevistaFinal(); Date dataRealizacaoCreditoDebitoInicio = avisoBancarioHelper .getDataRealizadaInicial(); Date dataRealizacaoCreditoDebitoFim = avisoBancarioHelper .getDataRealizadaFinal(); int anoMesReferenciaArrecadacaoInicial = avisoBancarioHelper .getAnoMesReferenciaArrecadacaoInicial(); int anoMesReferenciaArrecadacaoFinal = avisoBancarioHelper .getAnoMesReferenciaArrecadacaoFinal(); BigDecimal valorRealizadoInicial = avisoBancarioHelper .getValorRealizadoInicial(); BigDecimal valorRealizadoFinal = avisoBancarioHelper .getValorRealizadoFinal(); BigDecimal valorPrevistoInicial = avisoBancarioHelper .getValorPrevistoInicial(); BigDecimal valorPrevistoFinal = avisoBancarioHelper .getValorPrevistoFinal(); int flag = 0; BigDecimal valorSomatorioAcertoCredito = this .pesquisarSomatorioAvisoAcerto(1, idAviso, 1); BigDecimal valorSomatorioAcertoDebito = this .pesquisarSomatorioAvisoAcerto(2, idAviso, 1); BigDecimal valorSomatorioAcertoCredito2 = this .pesquisarSomatorioAvisoAcerto(1, idAviso, 2); BigDecimal valorSomatorioAcertoDebito2 = this .pesquisarSomatorioAvisoAcerto(2, idAviso, 2); if (valorSomatorioAcertoCredito == null) { valorSomatorioAcertoCredito = new BigDecimal("0.00"); } if (valorSomatorioAcertoDebito == null) { valorSomatorioAcertoDebito = new BigDecimal("0.00"); } if (valorSomatorioAcertoCredito2 == null) { valorSomatorioAcertoCredito2 = new BigDecimal("0.00"); } if (valorSomatorioAcertoDebito2 == null) { valorSomatorioAcertoDebito2 = new BigDecimal("0.00"); } if (arrecadadorCodAgente == null && (dataLancamentoInicio == null || dataLancamentoFim == null) && (indicadorCreditoDebito == 0 || indicadorCreditoDebito == 3) && idContaBancaria == null && idMovimento == null && (dataPrevisaoCreditoDebitoInicio == null || dataPrevisaoCreditoDebitoFim == null) && (dataRealizacaoCreditoDebitoInicio == null || dataRealizacaoCreditoDebitoFim == null) && (anoMesReferenciaArrecadacaoInicial == 0 || anoMesReferenciaArrecadacaoFinal == 0) && (valorPrevistoInicial == null || valorPrevistoFinal == null) && (valorRealizadoInicial == null || valorRealizadoFinal == null) && tipoAviso.equalsIgnoreCase("1")) { flag = 1; consulta = "select avisoBancario, " + " case when (" + " (avisoBancario.valorArrecadacaoCalculado = " + " ((avisoBancario.valorArrecadacaoInformado + " + valorSomatorioAcertoCredito + " ) " + " - " + valorSomatorioAcertoDebito + ")" + " ) " + " and " + "(avisoBancario.valorDevolucaoCalculado = " + " ((avisoBancario.valorDevolucaoInformado + " + valorSomatorioAcertoCredito2 + " ) " + " - " + valorSomatorioAcertoDebito2 + ")" + " )) then 'FECHADO' " + " else 'ABERTO' end " + " from AvisoBancario avisoBancario "; } else { consulta = "select avisoBancario, " + " case when (" + " (avisoBancario.valorArrecadacaoCalculado = " + " ((avisoBancario.valorArrecadacaoInformado + " + valorSomatorioAcertoCredito + " ) " + " - " + valorSomatorioAcertoDebito + ")" + " ) " + " and " + "(avisoBancario.valorDevolucaoCalculado = " + " ((avisoBancario.valorDevolucaoInformado + " + valorSomatorioAcertoCredito2 + " ) " + " - " + valorSomatorioAcertoDebito2 + ")" + " )) then 'FECHADO' " + " else 'ABERTO' end " + " from AvisoBancario avisoBancario " + " where "; } if (idAviso != null) { consulta += " avisoBancario.id = " + idAviso + " and"; } if (arrecadadorCodAgente != null) { consulta += " avisoBancario.arrecadador.codigoAgente = " + arrecadadorCodAgente + " and"; } if ((dataLancamentoInicio != null) && (dataLancamentoFim != null)) { consulta += " avisoBancario.dataLancamento between :dataLancamentoInicio and " + ":dataLancamentoFim and"; } if (indicadorCreditoDebito != 0 && indicadorCreditoDebito != 3) { consulta += " avisoBancario.indicadorCreditoDebito = " + indicadorCreditoDebito + " and"; } if (idContaBancaria != null) { consulta += " avisoBancario.contaBancaria.id = " + idContaBancaria + " and"; } if (idMovimento != null) { consulta += " avisoBancario.arrecadadorMovimento.id = " + idMovimento + " and"; } if ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null)) { consulta += " avisoBancario.dataPrevista between :dataPrevisaoCreditoDebitoInicio and " + ":dataPrevisaoCreditoDebitoFim and"; } if ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null)) { consulta += " avisoBancario.dataRealizada between :dataRealizacaoCreditoDebitoInicio and " + ":dataRealizacaoCreditoDebitoFim and"; } if ((anoMesReferenciaArrecadacaoInicial != 0) && (anoMesReferenciaArrecadacaoFinal != 0)) { consulta += " avisoBancario.anoMesReferenciaArrecadacao between " + anoMesReferenciaArrecadacaoInicial + " and " + anoMesReferenciaArrecadacaoFinal + " and"; } if ((valorRealizadoInicial != null) && (valorRealizadoFinal != null)) { BigDecimal valorInicialNegativo = valorRealizadoFinal .multiply(new BigDecimal("-1.00")); BigDecimal valorFinalNegativo = valorRealizadoInicial .multiply(new BigDecimal("-1.00")); consulta += " ((avisoBancario.valorRealizado between " + valorInicialNegativo + " and " + valorFinalNegativo + ") or (avisoBancario.valorRealizado between " + valorRealizadoInicial + " and " + valorRealizadoFinal + "))" + " and"; } // tipoAviso if (tipoAviso != null) { if (tipoAviso.equalsIgnoreCase("3")) { // FECHADO consulta += " ((avisoBancario.valorArrecadacaoCalculado = " + " ((avisoBancario.valorArrecadacaoInformado + " + valorSomatorioAcertoCredito + " ) " + " - " + valorSomatorioAcertoDebito + ")" + " ) " + " and " + "(avisoBancario.valorDevolucaoCalculado = " + " ((avisoBancario.valorDevolucaoInformado + " + valorSomatorioAcertoCredito2 + " ) " + " - " + valorSomatorioAcertoDebito2 + ")" + " )) and "; } else if (tipoAviso.equalsIgnoreCase("2")) { // ABERTO consulta += " ((avisoBancario.valorArrecadacaoCalculado <> " + " ((avisoBancario.valorArrecadacaoInformado + " + valorSomatorioAcertoCredito + " ) " + " - " + valorSomatorioAcertoDebito + ")" + " ) " + " or " + "(avisoBancario.valorDevolucaoCalculado <> " + " ((avisoBancario.valorDevolucaoInformado + " + valorSomatorioAcertoCredito2 + " ) " + " - " + valorSomatorioAcertoDebito2 + ")" + " )) and "; } } String consultarComOrderBy = ""; if (flag != 1) { consultarComOrderBy = Util.removerUltimosCaracteres(consulta, 4) + " order by avisoBancario.arrecadador.id,avisoBancario.dataLancamento,avisoBancario.numeroSequencial"; } else { consultarComOrderBy = Util.removerUltimosCaracteres(consulta, 0) + " order by avisoBancario.arrecadador.id,avisoBancario.dataLancamento,avisoBancario.numeroSequencial"; } // Consulta try { if ((((dataLancamentoInicio != null) && (dataLancamentoFim != null)) && ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null))) && ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null))) { return session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).setFirstResult( 10 * numeroPagina).setMaxResults(10).list(); } else if (((dataLancamentoInicio != null) && (dataLancamentoFim != null)) && ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null))) { return session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).setFirstResult( 10 * numeroPagina).setMaxResults(10).list(); } else if (((dataLancamentoInicio != null) && (dataLancamentoFim != null)) && ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null))) { return session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).setFirstResult( 10 * numeroPagina).setMaxResults(10).list(); } else if (((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null)) && ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null))) { return session.createQuery(consultarComOrderBy).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).setFirstResult( 10 * numeroPagina).setMaxResults(10).list(); } else if ((dataLancamentoInicio != null) && (dataLancamentoFim != null)) { return session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).setFirstResult( 10 * numeroPagina).setMaxResults(10).list(); } else if ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null)) { return session.createQuery(consultarComOrderBy).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).setFirstResult( 10 * numeroPagina).setMaxResults(10).list(); } else if ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null)) { return session.createQuery(consultarComOrderBy).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).setFirstResult( 10 * numeroPagina).setMaxResults(10).list(); } else { return session.createQuery(consultarComOrderBy).setFirstResult( 10 * numeroPagina).setMaxResults(10).list(); } // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do Cliente * * @author Rafael Corr�a * @date 21/08/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection pesquisarPagamentoCliente(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, Integer numeroPagina, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection<Pagamento> retorno = null; // Collection<Pagamento> colecaoPagamento = null; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamentoCliente( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = " select c.pgmt_id as idPagamento, c.imov_id as idImovel, c.clie_id as idCliente, g.arrc_cdagente as codigoAgente, " + " f.avbc_dtlancamento as dataLancamento, f.avbc_nnsequencial as numeroSequencial, c.dotp_id as idDocumentoTipo, " + " n.dotp_dsdocumentotipo as nomeDocumentoTipo, c.pgmt_vlpagamento as valorPagamento, c.pgmt_dtpagamento as dataPagamento, " + " j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, " + " k.pgst_id as idSituacaoPagamentoAnterior, k.pgst_dsabreviado as situacaoPagamentoAnterior " + " FROM arrecadacao.pagamento c " + " INNER JOIN " + " faturamento.conta i " + " on i.cnta_id = c.cnta_id " + " INNER JOIN " + " cadastro.cliente_conta b " + " on b.cnta_id = c.cnta_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " INNER JOIN " + " cobranca.documento_tipo n " + " on n.dotp_id = c.dotp_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao k " + " on c.pgst_idanterior = k.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE " + condicionais + " union " + " SELECT c.pgmt_id as idPagamento, c.imov_id as idImovel, c.clie_id as idCliente, g.arrc_cdagente as codigoAgente, " + " f.avbc_dtlancamento as dataLancamento, f.avbc_nnsequencial as numeroSequencial, c.dotp_id as idDocumentoTipo, " + " n.dotp_dsdocumentotipo as nomeDocumentoTipo, c.pgmt_vlpagamento as valorPagamento, c.pgmt_dtpagamento as dataPagamento, " + " j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, " + " l.pgst_id as idSituacaoPagamentoAnterior, l.pgst_dsabreviado as situacaoPagamentoAnterior " + " FROM arrecadacao.pagamento c " + " INNER JOIN " + " faturamento.debito_a_cobrar b1 " + " on b1.dbac_id = c.dbac_id " + " INNER JOIN " + " cadastro.cliente_imovel b " + " on b.imov_id = b1.imov_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " INNER JOIN " + " cobranca.documento_tipo n " + " on n.dotp_id = c.dotp_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao l " + " on c.pgst_idanterior = l.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE " + condicionais + " union " + " SELECT c.pgmt_id as idPagamento, c.imov_id as idImovel, c.clie_id as idCliente, g.arrc_cdagente as codigoAgente, " + " f.avbc_dtlancamento as dataLancamento, f.avbc_nnsequencial as numeroSequencial, c.dotp_id as idDocumentoTipo, " + " n.dotp_dsdocumentotipo as nomeDocumentoTipo, c.pgmt_vlpagamento as valorPagamento, c.pgmt_dtpagamento as dataPagamento, " + " j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, " + " l.pgst_id as idSituacaoPagamentoAnterior, l.pgst_dsabreviado as situacaoPagamentoAnterior " + " FROM arrecadacao.pagamento c " + " INNER JOIN " + " faturamento.guia_pagamento b1 " + " on b1.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente_guia_pagamento b " + " on b.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " INNER JOIN " + " cobranca.documento_tipo n " + " on n.dotp_id = c.dotp_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao l " + " on c.pgst_idanterior = l.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE " + condicionais + " union " + " SELECT c.pgmt_id as idPagamento, c.imov_id as idImovel, c.clie_id as idCliente, g.arrc_cdagente as codigoAgente, " + " f.avbc_dtlancamento as dataLancamento, f.avbc_nnsequencial as numeroSequencial, c.dotp_id as idDocumentoTipo, " + " n.dotp_dsdocumentotipo as nomeDocumentoTipo, c.pgmt_vlpagamento as valorPagamento, c.pgmt_dtpagamento as dataPagamento, " + " j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, " + " l.pgst_id as idSituacaoPagamentoAnterior, l.pgst_dsabreviado as situacaoPagamentoAnterior " + " FROM arrecadacao.pagamento c " + " INNER JOIN " + " faturamento.guia_pagamento b1 " + " on b1.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente_guia_pagamento b " + " on b.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " INNER JOIN " + " cobranca.documento_tipo n " + " on n.dotp_id = c.dotp_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao l " + " on c.pgst_idanterior = l.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE " + condicionais + " union " + " SELECT c.pgmt_id as idPagamento, c.imov_id as idImovel, c.clie_id as idCliente, g.arrc_cdagente as codigoAgente, " + " f.avbc_dtlancamento as dataLancamento, f.avbc_nnsequencial as numeroSequencial, c.dotp_id as idDocumentoTipo, " + " n.dotp_dsdocumentotipo as nomeDocumentoTipo, c.pgmt_vlpagamento as valorPagamento, c.pgmt_dtpagamento as dataPagamento, " + " j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, " + " l.pgst_id as idSituacaoPagamentoAnterior, l.pgst_dsabreviado as situacaoPagamentoAnterior " + " FROM arrecadacao.pagamento c " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = c.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " INNER JOIN " + " cobranca.documento_tipo n " + " on n.dotp_id = c.dotp_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao l " + " on c.pgst_idanterior = l.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE "; idTipoRelacao = null; String condicionaisClientePagamento = this .criarCondicionaisPagamentoCliente(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = hql + condicionaisClientePagamento + " order by idDocumentoTipo, dataPagamento "; retorno = session .createSQLQuery(hql) .addScalar("idPagamento", Hibernate.INTEGER) .addScalar("idImovel", Hibernate.INTEGER) .addScalar("idCliente", Hibernate.INTEGER) .addScalar("codigoAgente", Hibernate.SHORT) .addScalar("dataLancamento", Hibernate.DATE) .addScalar("numeroSequencial", Hibernate.SHORT) .addScalar("idDocumentoTipo", Hibernate.INTEGER) .addScalar("nomeDocumentoTipo", Hibernate.STRING) .addScalar("valorPagamento", Hibernate.BIG_DECIMAL) .addScalar("dataPagamento", Hibernate.DATE) .addScalar("idSituacaoPagamentoAtual", Hibernate.INTEGER) .addScalar("situacaoPagamentoAtual", Hibernate.STRING) .addScalar("idSituacaoPagamentoAnterior", Hibernate.INTEGER) .addScalar("situacaoPagamentoAnterior", Hibernate.STRING) .setFirstResult(10 * numeroPagina).setMaxResults(10).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do Cliente * * @author Rafael Corr�a * @date 21/12/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection pesquisarPagamentoClienteCount(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection retorno = null; // Object pagamentoClienteCount; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamentoCliente( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = " SELECT COUNT(c.pgmt_id) as qtde " + " FROM arrecadacao.pagamento c " + " INNER JOIN faturamento.conta i " + " on i.cnta_id = c.cnta_id " + " INNER JOIN " + " cadastro.cliente_conta b " + " on b.cnta_id = c.cnta_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " WHERE " + condicionais + " union all " + " SELECT COUNT(c.pgmt_id) as qtde " + " FROM arrecadacao.pagamento c " + " INNER JOIN " + " faturamento.debito_a_cobrar b1 " + " on b1.dbac_id = c.dbac_id " + " INNER JOIN " + " cadastro.cliente_imovel b " + " on b.imov_id = b1.imov_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " WHERE " + condicionais + " union all " + " SELECT COUNT(c.pgmt_id) as qtde " + " FROM arrecadacao.pagamento c " + " INNER JOIN " + " faturamento.guia_pagamento b1 " + " on b1.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente_guia_pagamento b " + " on b.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " WHERE " + condicionais + " union all " + " SELECT COUNT(c.pgmt_id) as qtde " + " FROM arrecadacao.pagamento c " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = c.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " WHERE "; idTipoRelacao = null; String condicionaisClientePagamento = this .criarCondicionaisPagamentoCliente(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = hql + condicionaisClientePagamento; retorno = session.createSQLQuery(hql).addScalar("qtde", Hibernate.INTEGER).list(); // hql = " select count (pagamento.id) " // + " from gcom.arrecadacao.pagamento.Pagamento as pagamento " // + " inner join pagamento.cliente as cliente " // + condicionais + " "; // pagamentoClienteCount = session.createQuery(hql).setMaxResults(1) // .uniqueResult(); // // if (pagamentoClienteCount != null) { // retorno = (Integer) pagamentoClienteCount; // } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Aviso Bancario * pesquisarPagamentoAvisoBancario * * @author Vivianne Sousa * @date 21/08/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentoAvisoBancarioParaPaginacao( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, Integer numeroPagina, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection<Pagamento> retorno = null; // Collection<Pagamento> colecaoPagamento = null; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamento(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal ); hql = " SELECT DISTINCT pagamento " + " FROM gcom.arrecadacao.pagamento.Pagamento as pagamento " + " INNER JOIN FETCH pagamento.avisoBancario as avisoBancario " + " INNER JOIN FETCH avisoBancario.arrecadador arrec " + " INNER JOIN FETCH pagamento.documentoTipo doctoTp " + " LEFT JOIN FETCH pagamento.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.conta conta " + " LEFT JOIN FETCH pagamento.guiaPagamento gpag " + " LEFT JOIN FETCH gpag.debitoTipo dbtpGpag " + " LEFT JOIN FETCH pagamento.debitoTipo dbtpPagto " + " LEFT JOIN FETCH pagamento.cliente cliente " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAtual pagtoSitAtual " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAnterior pagtoSitAnterior " + condicionais + " "; retorno = session.createQuery(hql) .setFirstResult(10 * numeroPagina).setMaxResults(10).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Aviso Bancario * pesquisarPagamentoAvisoBancario * * @author Vivianne Sousa * @date 21/08/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Integer pesquisarPagamentoAvisoBancarioCount(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { int retorno = 0; Object pagamentoAvisoBancarioCount; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamento(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = " select count (pagamento.id) " + " from gcom.arrecadacao.pagamento.Pagamento pagamento " + " inner join pagamento.avisoBancario as avisoBancario " + condicionais + " "; pagamentoAvisoBancarioCount = session.createQuery(hql) .setMaxResults(1).uniqueResult(); if (pagamentoAvisoBancarioCount != null) { retorno = (Integer) pagamentoAvisoBancarioCount; } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do Imovel pesquisarPagamentoImovelParaPaginacao * * @author Vivianne Sousa * @date 22/08/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentoImovelParaPaginacao( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, Integer numeroPagina, String valorPagamentoInicial, String valorPagamentoFinal ) throws ErroRepositorioException { Collection<Pagamento> retorno = null; // Collection<Pagamento> colecaoPagamento = null; String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamento(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = " SELECT distinct pagamento " + " FROM gcom.arrecadacao.pagamento.Pagamento as pagamento " + " INNER JOIN FETCH pagamento.avisoBancario avbc " + " INNER JOIN FETCH avbc.arrecadador arrec " + " INNER JOIN FETCH pagamento.documentoTipo doctoTp " + " LEFT JOIN FETCH pagamento.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.conta conta " + " LEFT JOIN FETCH pagamento.guiaPagamento gpag " + " LEFT JOIN FETCH gpag.debitoTipo dbtpGpag " + " LEFT JOIN FETCH pagamento.debitoACobrarGeral dbcbGeral " + " LEFT JOIN FETCH dbcbGeral.debitoACobrar dbcb " + " LEFT JOIN FETCH dbcb.debitoTipo dbtpDbcb " + " LEFT JOIN FETCH pagamento.debitoTipo dbtpPagto " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAtual pagtoSitAtual " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAnterior pagtoSitAnterior " + condicionais + " order by pagamento.localidade.id, pagamento.imovel.id, " + " pagamento.documentoTipo.id, pagamento.dataPagamento " + " "; retorno = session.createQuery(hql) .setFirstResult(10 * numeroPagina).setMaxResults(10).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do Imovel pesquisarPagamentoImovelParaPaginacao * * @author Vivianne Sousa * @date 22/08/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Integer pesquisarPagamentoImovelCount(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { int retorno = 0; Object pagamentoImovelCount; String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamento(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = " select count(pagamento.id) " + " from gcom.arrecadacao.pagamento.Pagamento pagamento " + condicionais + " "; pagamentoImovelCount = session.createQuery(hql).setMaxResults(1) .uniqueResult(); if (pagamentoImovelCount != null) { retorno += (Integer) pagamentoImovelCount; } hql = "select count(pagamento.id) from gcom.arrecadacao.pagamento.PagamentoHistorico pagamento " + condicionais + " "; pagamentoImovelCount = session.createQuery(hql).setMaxResults(1).uniqueResult(); if (pagamentoImovelCount != null) { retorno += (Integer) pagamentoImovelCount; } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Collection pesquisarPagamentoImovelRelatorio(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection retorno = new ArrayList(); String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamentoRelatorio( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = "SELECT pagto.id, loc.id, loc.descricao, " + "gr.id, gr.nome, imov.id, cli.id, cli.nome, " + "cliArrec.nome, pagto.dataPagamento, " + "pagto.anoMesReferenciaPagamento, dbtp.descricao, " + "conta.valorAgua, conta.valorEsgoto, conta.debitos, " + "conta.valorCreditos, dbcb.valorDebito, dbcb.numeroPrestacaoDebito, " + "dbcb.numeroPrestacaoCobradas, gpag.valorDebito, pagto.valorPagamento, " + "pagtoSitAtual.id, pagtoSitAtual.descricao, doctoTp.id " + "FROM Pagamento pagto " + "INNER JOIN pagto.localidade loc " + "INNER JOIN loc.gerenciaRegional gr " + "INNER JOIN pagto.avisoBancario avbc " + "INNER JOIN avbc.arrecadador arrec " + "INNER JOIN arrec.cliente cliArrec " + "INNER JOIN pagto.documentoTipo doctoTp " + "LEFT JOIN pagto.imovel imov " + "LEFT JOIN pagto.cliente cli " + "LEFT JOIN pagto.debitoTipo dbtp " + "LEFT JOIN pagto.contaGeral contaGeral " + "LEFT JOIN contaGeral.conta conta " + "LEFT JOIN pagto.guiaPagamento gpag " + "LEFT JOIN pagto.debitoACobrarGeral dbcbGeral " + "LEFT JOIN dbcbGeral.debitoACobrar dbcb " + "LEFT JOIN pagto.pagamentoSituacaoAtual pagtoSitAtual " + "LEFT JOIN pagto.arrecadadorMovimentoItem arrecMovItem " + "LEFT JOIN arrecMovItem.arrecadadorMovimento arrecMov " + "LEFT JOIN pagto.arrecadacaoForma arrecForma " + condicionais + " ORDER BY loc.id, imov.id, " + " pagto.anoMesReferenciaPagamento, pagto.dataPagamento "; // " select distinct pagamento " // + " from gcom.arrecadacao.pagamento.Pagamento as pagamento " // + condicionais // + " order by pagamento.localidade.id, pagamento.imovel.id, " // + " pagamento.anoMesReferenciaPagamento, pagamento.dataPagamento // "; retorno = session.createQuery(hql).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * para o Relat�rio * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do Cliente * * @author Rafael Corr�a * @date 12/12/06 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarPagamentoClienteRelatorio(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection retorno = new ArrayList(); String sql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamentoCliente( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); sql = " select 'CONTA' as tipo, d.loca_id as idLocalidade, d.loca_nmlocalidade as nomeLocalidade, e.greg_id as idGerencia, e.greg_nmregional as nomeGerencia, c.imov_id as idImovel, c.clie_id as idCliente, a.clie_nmcliente as nomeCliente, h.clie_nmcliente as nomeArrecadador, " + " c.pgmt_dtpagamento as dataPagamento, c.pgmt_amreferenciapagamento as anoMesPagamento, null as tipoDebito, (cnta_vlagua + cnta_vlesgoto + cnta_vldebitos - cnta_vlcreditos) as valorDocumento, " + " c.pgmt_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamento, j.pgst_dspagamentosituacao as situacaoPagamento, c.dotp_id as idDocumentoTipo " + " from cadastro.cliente a, cadastro.cliente_conta b, cadastro.localidade d, cadastro.gerencia_regional e, " + " arrecadacao.aviso_bancario f, arrecadacao.arrecadador g, cadastro.cliente h, faturamento.conta i, arrecadacao.pagamento c " + " left join arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " where a.clie_id = b.clie_id " + " and b.cnta_id = c.cnta_id " + " and c.loca_id = d.loca_id " + " and d.greg_id = e.greg_id " + " and c.avbc_id = f.avbc_id " + " and f.arrc_id = g.arrc_id " + " and g.clie_id = h.clie_id " + " and b.cnta_id = i.cnta_id " + " and " + condicionais + " union " + " select 'D�BITO A COBRAR' as tipo, d.loca_id as idLocalidade, d.loca_nmlocalidade as nomeLocalidade, e.greg_id as idGerencia, e.greg_nmregional as nomeGerencia, c.imov_id as idImovel, c.clie_id as idCliente, a.clie_nmcliente as nomeCliente, h.clie_nmcliente as nomeArrecadador, " + " c.pgmt_dtpagamento as dataPagamento, c.pgmt_amreferenciapagamento as anoMesPagamento, dbtp_dsdebitotipo as tipoDebito, " + " ((dbac_nnprestacaodebito - dbac_nnprestacaocobradas) * (dbac_vldebito/ dbac_nnprestacaodebito)) as valorDocumento, " + " c.pgmt_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamento, j.pgst_dspagamentosituacao as situacaoPagamento, c.dotp_id as idDocumentoTipo " + " from cadastro.cliente a, cadastro.cliente_imovel b, faturamento.debito_a_cobrar b1, cadastro.localidade d, cadastro.gerencia_regional e, " + " arrecadacao.aviso_bancario f, arrecadacao.arrecadador g, cadastro.cliente h, faturamento.debito_tipo k, arrecadacao.pagamento c " + " left join arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " where a.clie_id = b.clie_id " + " and b.imov_id = b1.imov_id " + " and b1.dbac_id = c.dbac_id " + " and c.loca_id = d.loca_id " + " and d.greg_id = e.greg_id " + " and c.avbc_id = f.avbc_id " + " and f.arrc_id = g.arrc_id " + " and g.clie_id = h.clie_id " + " and b1.dbtp_id = k.dbtp_id " + " and " + condicionais + " union " + " select 'GUIA PAGAMENTO IMOVEL' as tipo, d.loca_id as idLocalidade, d.loca_nmlocalidade as nomeLocalidade, e.greg_id as idGerencia, e.greg_nmregional as nomeGerencia, c.imov_id as idImovel, c.clie_id as idCliente, a.clie_nmcliente as nomeCliente, h.clie_nmcliente as nomeArrecadador, " + " c.pgmt_dtpagamento as dataPagamento, c.pgmt_amreferenciapagamento as anoMesPagamento, dbtp_dsdebitotipo as tipoDebito, " + " (gpag_vldebito) as valorDocumento, " + " c.pgmt_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamento, j.pgst_dspagamentosituacao as situacaoPagamento, c.dotp_id as idDocumentoTipo " + " from cadastro.cliente a, cadastro.cliente_guia_pagamento b, faturamento.guia_pagamento b1, cadastro.localidade d, cadastro.gerencia_regional e, " + " arrecadacao.aviso_bancario f, arrecadacao.arrecadador g, cadastro.cliente h, faturamento.debito_tipo k, arrecadacao.pagamento c " + " left join arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " where a.clie_id = b.clie_id " + " and b.gpag_id = b1.gpag_id " + " and b1.gpag_id = c.gpag_id " + " and c.loca_id = d.loca_id " + " and d.greg_id = e.greg_id " + " and c.avbc_id = f.avbc_id " + " and f.arrc_id = g.arrc_id " + " and g.clie_id = h.clie_id " + " and b1.dbtp_id = k.dbtp_id " + " and " + condicionais + " union " + " select 'GUIA PAGAMENTO CLIENTE' as tipo, " + " d.loca_id as idLocalidade, d.loca_nmlocalidade as nomeLocalidade, " + " e.greg_id as idGerencia, e.greg_nmregional as nomeGerencia, " + " c.imov_id as idImovel, c.clie_id as idCliente, a.clie_nmcliente as nomeCliente, " + " h.clie_nmcliente as nomeArrecadador, " + " c.pgmt_dtpagamento as dataPagamento, c.pgmt_amreferenciapagamento as anoMesPagamento, " + " k.dbtp_dsdebitotipo as tipoDebito, " + " (b1.gpag_vldebito) as valorDocumento, " + " c.pgmt_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamento, " + " j.pgst_dspagamentosituacao as situacaoPagamento, c.dotp_id as idDocumentoTipo " + " from cadastro.cliente a, cadastro.cliente_guia_pagamento b, faturamento.guia_pagamento b1, arrecadacao.pagamento c," + " cadastro.localidade d, cadastro.gerencia_regional e, arrecadacao.aviso_bancario f, " + " arrecadacao.arrecadador g, cadastro.cliente h, faturamento.debito_tipo k, " + " arrecadacao.pagamento_situacao j " + " where a.clie_id = b.clie_id "// Cliente com Guia + " and b.gpag_id = b1.gpag_id " + " and b1.gpag_id = c.gpag_id "// Guia com Pagamento + " and c.loca_id = d.loca_id "// Pagamento com Localidade + " and d.greg_id = e.greg_id "// Localidade com Gerencia + " and c.avbc_id = f.avbc_id "// Pagamento com Aviso bancario + " and f.arrc_id = g.arrc_id "// Aviso Bancario com Arrecadador + " and g.clie_id = h.clie_id "// Arrecadador com Cleinte do Arrecadador + " and b1.dbtp_id = k.dbtp_id "// Guia com Debito Tipo + " and c.pgst_idatual = j.pgst_id " + " and " + condicionais + " union " + " select 'PAGAMENTO CLIENTE' as tipo, d.loca_id as idLocalidade, d.loca_nmlocalidade as nomeLocalidade, e.greg_id as idGerencia, e.greg_nmregional as nomeGerencia, c.imov_id as idImovel, c.clie_id as idCliente , a.clie_nmcliente as nomeCliente, h.clie_nmcliente as nomeArrecadador, " + " c.pgmt_dtpagamento as dataPagamento, c.pgmt_amreferenciapagamento as anoMesPagamento, dbtp_dsdebitotipo as tipoDebito, " + " null as valorDocumento, " + " c.pgmt_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamento, j.pgst_dspagamentosituacao as situacaoPagamento, c.dotp_id as idDocumentoTipo " + " from cadastro.cliente a, cadastro.localidade d, cadastro.gerencia_regional e, " + " arrecadacao.aviso_bancario f, arrecadacao.arrecadador g, cadastro.cliente h, faturamento.debito_tipo k, arrecadacao.pagamento c " + " left join arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " where a.clie_id = c.clie_id " + " and c.loca_id = d.loca_id " + " and d.greg_id = e.greg_id " + " and c.avbc_id = f.avbc_id " + " and f.arrc_id = g.arrc_id " + " and g.clie_id = h.clie_id " + " and c.dbtp_id = k.dbtp_id " + " and c.gpag_id IS NULL " + " and "; idTipoRelacao = null; String condicionaisClientePagamento = this .criarCondicionaisPagamentoCliente(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); sql = sql + condicionaisClientePagamento; // "select distinct pagamento " + " from // gcom.arrecadacao.pagamento.Pagamento as // pagamento " + " inner join pagamento.cliente as cliente " + // condicionais + " // order by pagamento.documentoTipo.id,pagamento.dataPagamento " + " // "; retorno = session.createSQLQuery(sql).addScalar("tipo", Hibernate.STRING).addScalar("idLocalidade", Hibernate.INTEGER).addScalar("nomeLocalidade", Hibernate.STRING) .addScalar("idGerencia", Hibernate.INTEGER).addScalar( "nomeGerencia", Hibernate.STRING).addScalar( "idImovel", Hibernate.INTEGER).addScalar( "idCliente", Hibernate.INTEGER).addScalar( "nomeCliente", Hibernate.STRING).addScalar( "nomeArrecadador", Hibernate.STRING).addScalar( "dataPagamento", Hibernate.DATE).addScalar( "anoMesPagamento", Hibernate.INTEGER).addScalar( "tipoDebito", Hibernate.STRING).addScalar( "valorDocumento", Hibernate.BIG_DECIMAL).addScalar( "valorPagamento", Hibernate.BIG_DECIMAL).addScalar( "idSituacaoPagamento", Hibernate.INTEGER) .addScalar("situacaoPagamento", Hibernate.STRING) .addScalar("idDocumentoTipo", Hibernate.INTEGER).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * para o Relat�rio * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Aviso Bancario * pesquisarPagamentoAvisoBancario * * @author Rafael Corr�a * @date 29/08/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentoAvisoBancarioRelatorio( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal ) throws ErroRepositorioException { Collection retorno = new ArrayList(); String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamentoRelatorio( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal ); hql = "SELECT pagto.id, loc.id, loc.descricao, " + "gr.id, gr.nome, imov.id, cli.id, cli.nome, " + "cliArrec.nome, pagto.dataPagamento, " + "pagto.anoMesReferenciaPagamento, dbtp.descricao, " + "conta.valorAgua, conta.valorEsgoto, conta.debitos, " + "conta.valorCreditos, dbcb.valorDebito, dbcb.numeroPrestacaoDebito, " + "dbcb.numeroPrestacaoCobradas, gpag.valorDebito, pagto.valorPagamento, " + "pagtoSitAtual.id, pagtoSitAtual.descricao, doctoTp.id " + "FROM Pagamento pagto " + "INNER JOIN pagto.localidade loc " + "INNER JOIN loc.gerenciaRegional gr " + "INNER JOIN pagto.avisoBancario avbc " + "INNER JOIN avbc.arrecadador arrec " + "INNER JOIN arrec.cliente cliArrec " + "INNER JOIN pagto.documentoTipo doctoTp " + "LEFT JOIN pagto.imovel imov " + "LEFT JOIN pagto.cliente cli " + "LEFT JOIN pagto.debitoTipo dbtp " + "LEFT JOIN pagto.contaGeral contaGeral " + "LEFT JOIN contaGeral.conta conta " + "LEFT JOIN pagto.guiaPagamento gpag " + "LEFT JOIN pagto.debitoACobrarGeral dbcbGeral " + "LEFT JOIN dbcbGeral.debitoACobrar dbcb " + "LEFT JOIN pagto.pagamentoSituacaoAtual pagtoSitAtual " + "LEFT JOIN pagto.arrecadadorMovimentoItem arrecMovItem " + "LEFT JOIN arrecMovItem.arrecadadorMovimento arrecMov " + "LEFT JOIN pagto.arrecadacaoForma arrecForma " + condicionais + " ORDER BY loc.id, imov.id, " + " pagto.anoMesReferenciaPagamento, pagto.dataPagamento "; // hql = " select distinct pagamento " // + " from gcom.arrecadacao.pagamento.Pagamento as pagamento " // + " inner join pagamento.avisoBancario as avisoBancario " // + condicionais + " "; retorno = session.createQuery(hql).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * para o Relat�rio * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Debito a Cobrar do Cliente * pesquisarPagamentoLocalidade * * @author Rafael Corr�a * @date 12/12/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentoMovimentoArrecadadorRelatorio( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection retorno = new ArrayList(); String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamentoRelatorio( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = "SELECT pagto.id, loc.id, loc.descricao, " + "gr.id, gr.nome, imov.id, cli.id, cli.nome, " + "cliArrec.nome, pagto.dataPagamento, " + "pagto.anoMesReferenciaPagamento, dbtp.descricao, " + "conta.valorAgua, conta.valorEsgoto, conta.debitos, " + "conta.valorCreditos, dbcb.valorDebito, dbcb.numeroPrestacaoDebito, " + "dbcb.numeroPrestacaoCobradas, gpag.valorDebito, pagto.valorPagamento, " + "pagtoSitAtual.id, pagtoSitAtual.descricao, doctoTp.id " + "FROM Pagamento pagto " + "INNER JOIN pagto.localidade loc " + "INNER JOIN loc.gerenciaRegional gr " + "INNER JOIN pagto.avisoBancario avbc " + "INNER JOIN avbc.arrecadador arrec " + "INNER JOIN arrec.cliente cliArrec " + "INNER JOIN pagto.documentoTipo doctoTp " + "LEFT JOIN pagto.imovel imov " + "LEFT JOIN pagto.cliente cli " + "LEFT JOIN pagto.debitoTipo dbtp " + "LEFT JOIN pagto.contaGeral contaGeral " + "LEFT JOIN contaGeral.conta conta " + "LEFT JOIN pagto.guiaPagamento gpag " + "LEFT JOIN pagto.debitoACobrarGeral dbcbGeral " + "LEFT JOIN dbcbGeral.debitoACobrar dbcb " + "LEFT JOIN pagto.pagamentoSituacaoAtual pagtoSitAtual " + "LEFT JOIN pagto.arrecadadorMovimentoItem arrecMovItem " + "LEFT JOIN arrecMovItem.arrecadadorMovimento arrecMov " + "LEFT JOIN pagto.arrecadacaoForma arrecForma " + condicionais + " ORDER BY loc.id, imov.id, " + " dbtp.id, pagto.dataPagamento "; // hql = " select distinct pagamento " // + " from gcom.arrecadacao.pagamento.Pagamento as pagamento " // + " inner join pagamento.arrecadadorMovimentoItem as // arrecadadorMovimentoItem " // + " inner join arrecadadorMovimentoItem.arrecadadorMovimento as // arrecadadorMovimento " // + condicionais // + " order by pagamento.localidade.id, pagamento.imovel.id, " // + " pagamento.debitoTipo.id, pagamento.dataPagamento " // + " "; retorno = session.createQuery(hql).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * para o Relat�rio * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Debito a Cobrar do Cliente * pesquisarPagamentoLocalidade * * @author Rafael Corr�a * @date 12/12/06 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarPagamentoLocalidadeRelatorio(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection retorno = new ArrayList(); String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamentoRelatorio( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = "SELECT pagto.id, " + //0 "loc.id, " //1 + "loc.descricao, "//2 + "gr.id, " //3 + "gr.nome, " //4 + "imov.id, " //5 + "cli.id, " //6 + "cli.nome, "//7 + "cliArrec.nome, "//8 + "pagto.dataPagamento, "//9 + "pagto.anoMesReferenciaPagamento, "//10 + "dbtp.descricao, "//11 + "conta.valorAgua, " //12 + "conta.valorEsgoto, " //13 + "conta.debitos, "//14 + "conta.valorCreditos, "//15 + "dbcb.valorDebito, " //16 + "dbcb.numeroPrestacaoDebito, "//17 + "dbcb.numeroPrestacaoCobradas, " //18 + "gpag.valorDebito, " //19 + "pagto.valorPagamento, "//20 + "pagtoSitAtual.id, " //21 + "pagtoSitAtual.descricao, "//22 + "doctoTp.id, "//23 + "conta.valorImposto " //24 + "FROM Pagamento pagto " + "INNER JOIN pagto.localidade loc " + "INNER JOIN loc.gerenciaRegional gr " + "INNER JOIN pagto.avisoBancario avbc " + "INNER JOIN avbc.arrecadador arrec " + "INNER JOIN arrec.cliente cliArrec " + "INNER JOIN pagto.documentoTipo doctoTp " + "LEFT JOIN pagto.imovel imov " + "LEFT JOIN pagto.cliente cli " + "LEFT JOIN pagto.debitoTipo dbtp " + "LEFT JOIN pagto.contaGeral contaGeral " + "LEFT JOIN contaGeral.conta conta " + "LEFT JOIN pagto.guiaPagamento gpag " + "LEFT JOIN pagto.debitoACobrarGeral dbcbGeral " + "LEFT JOIN dbcbGeral.debitoACobrar dbcb " + "LEFT JOIN pagto.pagamentoSituacaoAtual pagtoSitAtual " + "LEFT JOIN pagto.arrecadadorMovimentoItem arrecMovItem " + "LEFT JOIN arrecMovItem.arrecadadorMovimento arrecMov " + "LEFT JOIN pagto.arrecadacaoForma arrecForma " + condicionais + " ORDER BY loc.id, imov.id, " + " dbtp.id, pagto.dataPagamento "; retorno = session.createQuery(hql).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do Imovel pesquisarPagamentoImovelParaPaginacao * * @author Rafael Corr�a * @date 29/08/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Integer pesquisarPagamentoMovimentoArrecadadorCount(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal ) throws ErroRepositorioException { int retorno = 0; Object pagamentoMovimentoArrecadadorCount; String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamento(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = " select count(pagamento.id) " + " from gcom.arrecadacao.pagamento.Pagamento pagamento " + condicionais + " "; pagamentoMovimentoArrecadadorCount = session.createQuery(hql) .setMaxResults(1).uniqueResult(); if (pagamentoMovimentoArrecadadorCount != null) { retorno = (Integer) pagamentoMovimentoArrecadadorCount; } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do Imovel pesquisarPagamentoImovelParaPaginacao * * @author Rafael Corr�a * @date 29/08/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Integer pesquisarPagamentoLocalidadeCount(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { int retorno = 0; Object pagamentoLocalidadeCount; String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamento(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal ); hql = " select count(pagamento.id) " + " from gcom.arrecadacao.pagamento.Pagamento pagamento " + condicionais + " "; pagamentoLocalidadeCount = session.createQuery(hql) .setMaxResults(1).uniqueResult(); if (pagamentoLocalidadeCount != null) { retorno = (Integer) pagamentoLocalidadeCount; } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Integer verificarExistenciaGuiaDevolucao(Integer idGuiaDevolucao) throws ErroRepositorioException { // cria a vari�vel que vai armazenar a cole��o pesquisada Integer retorno = null; // cria a vari�vel que vai armazenar a cole��o pesquisada // Collection retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = "select guiaDevolucao.id " + "from GuiaDevolucao guiaDevolucao " + "where guiaDevolucao.id = :idGuiaDevolucao"; retorno = (Integer) session.createQuery(consulta).setInteger( "idGuiaDevolucao", idGuiaDevolucao.intValue()) .setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o pesquisada return retorno; } /** * Pesquisa os avisos banc�rios para o relat�rio atrav�s das op��es * selecionadas no Filtrar Aviso Banc�rio * * @author Rafael Corr�a * @date 04/09/06 * * @return Collection<AvisoBancarioRelatorioHelper> * @throws ErroRepositorioException */ public Collection pesquisarAvisoBancarioRelatorio( AvisoBancarioHelper avisoBancarioHelper) throws ErroRepositorioException { String consulta = ""; Collection retorno = null; // Short arrecadadorCodAgente = avisoBancarioHelper // .getCodigoAgenteArrecadador(); // Date dataLancamentoInicio = avisoBancarioHelper // .getDataLancamentoInicial(); // Date dataLancamentoFim = // avisoBancarioHelper.getDataLancamentoFinal(); // Short indicadorCreditoDebito = avisoBancarioHelper // .getIndicadorCreditoDebito(); // Integer idContaBancaria = avisoBancarioHelper.getIdContaBancaria(); // Integer idMovimento = // avisoBancarioHelper.getIdMovimentoArrecadador(); // Date dataPrevisaoCreditoDebitoInicio = avisoBancarioHelper // .getDataPrevistaInicial(); // Date dataPrevisaoCreditoDebitoFim = avisoBancarioHelper // .getDataPrevistaFinal(); // Date dataRealizacaoCreditoDebitoInicio = avisoBancarioHelper // .getDataRealizadaInicial(); // Date dataRealizacaoCreditoDebitoFim = avisoBancarioHelper // .getDataRealizadaFinal(); // int anoMesReferenciaArrecadacaoInicial = avisoBancarioHelper // .getAnoMesReferenciaArrecadacaoInicial(); // int anoMesReferenciaArrecadacaoFinal = avisoBancarioHelper // .getAnoMesReferenciaArrecadacaoFinal(); // BigDecimal valorRealizadoInicial = avisoBancarioHelper // .getValorRealizadoInicial(); // BigDecimal valorRealizadoFinal = avisoBancarioHelper // .getValorRealizadoFinal(); // BigDecimal valorPrevistoInicial = avisoBancarioHelper // .getValorPrevistoInicial(); // BigDecimal valorPrevistoFinal = avisoBancarioHelper // .getValorPrevistoFinal(); // String tipoAviso = avisoBancarioHelper.getTipoAviso(); consulta = "select ab.id, c.nomeAbreviado, ab.dataLancamento, ab.numeroSequencial, " + "ab.indicadorCreditoDebito, ab.numeroDocumento, b.descricaoAbreviada, " + "ag.codigoAgencia, cb.numeroConta, ab.dataRealizada, " + "ab.valorArrecadacaoCalculado, ab.valorDevolucaoCalculado, ab.valorRealizado " + "from AvisoBancario ab " + "inner join ab.arrecadador arrec " + "inner join ab.contaBancaria cb " + "inner join cb.agencia ag " + "inner join ag.banco b " + "inner join arrec.cliente c where "; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); consulta += " ab.id = " + avisoBancarioHelper.getAvisoBancario().getId().toString() + " and "; // if (arrecadadorCodAgente != null) { // consulta += " arrec.codigoAgente = " + arrecadadorCodAgente // + " and"; // } // // if ((dataLancamentoInicio != null) && (dataLancamentoFim != null)) { // String dataLancamentoInicialFormatada = Util // .recuperaAnoMesDiaDaData(dataLancamentoInicio); // dataLancamentoInicialFormatada = "'" // + dataLancamentoInicialFormatada.substring(0, 4) + "-" // + dataLancamentoInicialFormatada.substring(4, 6) + "-" // + dataLancamentoInicialFormatada.substring(6, 8) + "'"; // // String dataLancamentoFinalFormatada = Util // .recuperaAnoMesDiaDaData(dataLancamentoFim); // // dataLancamentoFinalFormatada = "'" // + dataLancamentoFinalFormatada.substring(0, 4) + "-" // + dataLancamentoFinalFormatada.substring(4, 6) + "-" // + dataLancamentoFinalFormatada.substring(6, 8) + "'"; // // consulta += " ab.dataLancamento between " // + dataLancamentoInicialFormatada + " and " // + dataLancamentoFinalFormatada + " and"; // // } // // if (indicadorCreditoDebito != 0 && indicadorCreditoDebito != 3) { // consulta += " ab.indicadorCreditoDebito = " // + indicadorCreditoDebito + " and"; // } // // if (idContaBancaria != null) { // consulta += " cb.id = " + idContaBancaria + " and"; // } // // if (idMovimento != null) { // consulta += " ab.arrecadadorMovimento.id = " + idMovimento + " and"; // } // // if ((dataPrevisaoCreditoDebitoInicio != null) // && (dataPrevisaoCreditoDebitoFim != null)) { // // String dataPrevisaoCreditoDebitoInicialFormatada = Util // .recuperaAnoMesDiaDaData(dataPrevisaoCreditoDebitoInicio); // dataPrevisaoCreditoDebitoInicialFormatada = "'" // + dataPrevisaoCreditoDebitoInicialFormatada.substring(0, 4) // + "-" // + dataPrevisaoCreditoDebitoInicialFormatada.substring(4, 6) // + "-" // + dataPrevisaoCreditoDebitoInicialFormatada.substring(6, 8) // + "'"; // // String dataPrevisaoCreditoDebitoFinalFormatada = Util // .recuperaAnoMesDiaDaData(dataPrevisaoCreditoDebitoFim); // // dataPrevisaoCreditoDebitoFinalFormatada = "'" // + dataPrevisaoCreditoDebitoFinalFormatada.substring(0, 4) // + "-" // + dataPrevisaoCreditoDebitoFinalFormatada.substring(4, 6) // + "-" // + dataPrevisaoCreditoDebitoFinalFormatada.substring(6, 8) // + "'"; // // consulta += " ab.dataPrevista between " // + dataPrevisaoCreditoDebitoInicialFormatada + " and " // + dataPrevisaoCreditoDebitoFinalFormatada + " and"; // // } // // if ((dataRealizacaoCreditoDebitoInicio != null) // && (dataRealizacaoCreditoDebitoFim != null)) { // // String dataRealizacaoCreditoDebitoInicialFormatada = Util // .recuperaAnoMesDiaDaData(dataRealizacaoCreditoDebitoInicio); // dataRealizacaoCreditoDebitoInicialFormatada = "'" // + dataRealizacaoCreditoDebitoInicialFormatada.substring(0, // 4) // + "-" // + dataRealizacaoCreditoDebitoInicialFormatada.substring(4, // 6) // + "-" // + dataRealizacaoCreditoDebitoInicialFormatada.substring(6, // 8) + "'"; // // String dataRealizacaoCreditoDebitoFinalFormatada = Util // .recuperaAnoMesDiaDaData(dataRealizacaoCreditoDebitoFim); // // dataRealizacaoCreditoDebitoFinalFormatada = "'" // + dataRealizacaoCreditoDebitoFinalFormatada.substring(0, 4) // + "-" // + dataRealizacaoCreditoDebitoFinalFormatada.substring(4, 6) // + "-" // + dataRealizacaoCreditoDebitoFinalFormatada.substring(6, 8) // + "'"; // // consulta += " ab.dataRealizada between " // + dataRealizacaoCreditoDebitoInicio + " and " // + dataRealizacaoCreditoDebitoFim + " and"; // // } // // if ((anoMesReferenciaArrecadacaoInicial != 0) // && (anoMesReferenciaArrecadacaoFinal != 0)) { // consulta += " ab.anoMesReferenciaArrecadacao between " // + anoMesReferenciaArrecadacaoInicial + " and " // + anoMesReferenciaArrecadacaoFinal + " and"; // } // // if ((valorPrevistoInicial != null) && (valorPrevistoFinal != null)) { // consulta += " ab.valorPrevisto between " + valorPrevistoInicial // + " and " + valorPrevistoFinal + " and"; // } // // if ((valorRealizadoInicial != null) && (valorRealizadoFinal != null)) // { // consulta += " ab.valorRealizado between " + valorRealizadoInicial // + " and " + valorRealizadoFinal + " and"; // // } // BigDecimal valorSomatorioAcertoCredito = this // .pesquisarSomatorioAvisoAcerto(1, avisoBancarioHelper // .getAvisoBancario().getId(), 1); // BigDecimal valorSomatorioAcertoDebito = this // .pesquisarSomatorioAvisoAcerto(2, avisoBancarioHelper // .getAvisoBancario().getId(), 1); // // BigDecimal valorSomatorioAcertoCredito2 = this // .pesquisarSomatorioAvisoAcerto(1, avisoBancarioHelper // .getAvisoBancario().getId(), 2); // BigDecimal valorSomatorioAcertoDebito2 = this // .pesquisarSomatorioAvisoAcerto(2, avisoBancarioHelper // .getAvisoBancario().getId(), 2); // if (valorSomatorioAcertoCredito == null) { // valorSomatorioAcertoCredito = new BigDecimal("0.00"); // } // if (valorSomatorioAcertoDebito == null) { // valorSomatorioAcertoDebito = new BigDecimal("0.00"); // } // // if (valorSomatorioAcertoCredito2 == null) { // valorSomatorioAcertoCredito2 = new BigDecimal("0.00"); // } // if (valorSomatorioAcertoDebito2 == null) { // valorSomatorioAcertoDebito2 = new BigDecimal("0.00"); // } // // tipoAviso // if (tipoAviso != null) { // if (tipoAviso.equalsIgnoreCase("3")) { // // FECHADO // consulta += " (ab.valorArrecadacaoCalculado = " // + " ((ab.valorArrecadacaoInformado + " // + valorSomatorioAcertoCredito + " ) " + " - " // + valorSomatorioAcertoDebito + ")" + " ) " + " and " // + "(ab.valorDevolucaoCalculado = " // + " ((ab.valorDevolucaoInformado + " // + valorSomatorioAcertoCredito2 + " ) " + " - " // + valorSomatorioAcertoDebito2 + ")" + " )) and "; // } else if (tipoAviso.equalsIgnoreCase("2")) { // // ABERTO // consulta += " (ab.valorArrecadacaoCalculado <> " // + " ((ab.valorArrecadacaoInformado + " // + valorSomatorioAcertoCredito + " ) " + " - " // + valorSomatorioAcertoDebito + ")" + " ) " + " or " // + "(ab.valorDevolucaoCalculado <> " // + " ((ab.valorDevolucaoInformado + " // + valorSomatorioAcertoCredito2 + " ) " + " - " // + valorSomatorioAcertoDebito2 + ")" + " )) and "; // } // } consulta = Util.removerUltimosCaracteres(consulta, 4) + " order by arrec.codigoAgente, ab.dataLancamento"; // Consulta try { retorno = session.createQuery(consulta).list(); return retorno; // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } } /** * Pesquisa os avisos dedu��es de um aviso banc�rio para o relat�rio atrav�s * do id do aviso banc�rio * * @author Rafael Corr�a * @date 05/09/06 * * @return Collection<DeducoesRelatorioHelper> * @throws ErroRepositorioException */ public Collection pesquisarAvisoDeducoesAvisoBancarioRelatorio( Integer idAvisoBancario) throws ErroRepositorioException { // cria a vari�vel que vai armazenar a cole��o pesquisada Collection retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = "select dt.descricaoAbreviado, ad.valorDeducao " + "from AvisoDeducoes ad " + "inner join ad.deducaoTipo dt " + "inner join ad.avisoBancario ab " + "where ab.id = :idAvisoBancario"; retorno = session.createQuery(consulta).setInteger( "idAvisoBancario", idAvisoBancario.intValue()).list(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o pesquisada return retorno; } /** * Pesquisa os avisos acertos de um aviso banc�rio para o relat�rio atrav�s * do id do aviso banc�rio * * @author Rafael Corr�a * @date 05/09/06 * * @return Collection<AcertosRelatorioHelper> * @throws ErroRepositorioException */ public Collection pesquisarAvisoAcertosAvisoBancarioRelatorio( Integer idAvisoBancario) throws ErroRepositorioException { // cria a vari�vel que vai armazenar a cole��o pesquisada Collection retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = "select b.descricaoAbreviada, ag.codigoAgencia, cb.numeroConta, " + "aa.indicadorCreditoDebito, aa.dataAcerto, aa.valorAcerto " + "from AvisoAcerto aa " + "inner join aa.contaBancaria cb " + "inner join cb.agencia ag " + "inner join ag.banco b " + "inner join aa.avisoBancario ab " + "where ab.id = :idAvisoBancario"; retorno = session.createQuery(consulta).setInteger( "idAvisoBancario", idAvisoBancario.intValue()).list(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o pesquisada return retorno; } /** * Pesquisa dos dados di�rios da arrecada��o * * [UC0333] Filtrar Dados Di�rios da Arrecada��o * * @author Rafael Santos * @date 05/09/2006 * * @return */ public Collection filtrarDadosDiariosArrecadacao( String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String idLocalidade, String idGerenciaRegional, String idArrecadador, String idElo, String[] idsImovelPerfil, String[] idsLigacaoAgua, String[] idsLigacaoEsgoto, String[] idsDocumentosTipos, String[] idsCategoria, String[] idsEsferaPoder) throws ErroRepositorioException { Collection retorno = new ArrayList(); // Collection<ArrecadacaoDadosDiarios> colecaoPagamento = null; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this .criarCondicionaisDadosDiariosArrecadacao( periodoArrecadacaoInicial, periodoArrecadacaoFinal, idLocalidade, idGerenciaRegional, idArrecadador, idElo, idsImovelPerfil, idsLigacaoAgua, idsLigacaoEsgoto, idsDocumentosTipos, idsCategoria, idsEsferaPoder); hql = " select distinct " + "arrecadacaoDadosDiarios.anoMesReferenciaArrecadacao, " + // 0 "arrecadacaoDadosDiarios.dataPagamento, " + // 1 "sum(arrecadacaoDadosDiarios.quantidadePagamentos), " + // 2 "sum(arrecadacaoDadosDiarios.valorPagamentos), " + // 3 "sum(arrecadacaoDadosDiarios.quantidadeDocumentos), " + // 4 "arrecadacaoDadosDiarios.arrecadador.id, " + // 5 "arrecadacaoDadosDiarios.documentoTipo.id, " + // 6 "arrecadacaoDadosDiarios.imovelPerfil.id, " + // 7 "arrecadacaoDadosDiarios.gerenciaRegional.id, " + // 8 "arrecadacaoDadosDiarios.localidade.id, " + // 9 "arrecadacaoDadosDiarios.categoria.id, " + // 10 // "localidade.descricao, " + //11 // "gerenciaRegional.nome, " + //12 // "gerenciaRegional.nomeAbreviado, " + //13 // "documentoTipo.descricaoDocumentoTipo, " + //14 // "categoria.descricao, " + //15 // "cliente.nome," + //16 // "imovelPerfil.descricao," + //17 "arrecadacaoDadosDiarios.localidade.localidade.id, " + // 18 "arrecadacaoDadosDiarios.unidadeNegocio.id, " // 19 + "arrecadacaoDadosDiarios.arrecadacaoForma.id, " // + "arrecadacaoDadosDiarios.documentoTipoAgregador.id " // // "elo.id " //19 + " from ArrecadacaoDadosDiarios arrecadacaoDadosDiarios " // "left join arrecadacaoDadosDiarios.localidade localidade // " + // "left join localidade.localidade elo " + // "left join arrecadacaoDadosDiarios.gerenciaRegional // gerenciaRegional " + // "left join arrecadacaoDadosDiarios.documentoTipo // documentoTipo " + // "left join arrecadacaoDadosDiarios.categoria categoria " // + // "left join arrecadacaoDadosDiarios.arrecadador // arrecadador " + // "left join arrecadador.cliente cliente " + // "left join arrecadacaoDadosDiarios.imovelPerfil // imovelPerfil " + condicionais + " group by arrecadacaoDadosDiarios.anoMesReferenciaArrecadacao," + "arrecadacaoDadosDiarios.arrecadador.id," + // "cliente.nome, " + "arrecadacaoDadosDiarios.gerenciaRegional.id," + // "gerenciaRegional.nome, " + // "gerenciaRegional.nomeAbreviado, " + "arrecadacaoDadosDiarios.localidade.id," + // "localidade.descricao," + // "elo.descricao, " + "arrecadacaoDadosDiarios.localidade.localidade.id, " + "arrecadacaoDadosDiarios.imovelPerfil.id," + // "imovelPerfil.descricao, " + "arrecadacaoDadosDiarios.categoria.id," + // "categoria.descricao, " + "arrecadacaoDadosDiarios.documentoTipo.id," + // "documentoTipo.descricaoDocumentoTipo, " + "arrecadacaoDadosDiarios.arrecadacaoForma.id," + "arrecadacaoDadosDiarios.dataPagamento," + "arrecadacaoDadosDiarios.unidadeNegocio.id, " + "arrecadacaoDadosDiarios.documentoTipoAgregador.id " + " order by arrecadacaoDadosDiarios.anoMesReferenciaArrecadacao, " + "arrecadacaoDadosDiarios.dataPagamento "; // "cliente.nome," + // "gerenciaRegional.nome, " + // "elo.descricao, " + // "localidade.descricao "; // "categoria.id, " + // "imovelPerfil.descricao, " + // "documentoTipo.descricaoDocumentoTipo "; // + " order by // arrecadacaoDadosDiarios.anoMesReferenciaArrecadacao,arrecadacaoDadosDiarios.dataPagamento,categoria.id // "; retorno = session.createQuery(hql).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa dos dados di�rios de devolucao * * [UC0333] Filtrar Dados Di�rios da Arrecada��o * * @author Francisco do Nascimento * @date 21/07/2008 * * @return */ public Collection filtrarDevolucaoDadosDiarios( String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String idLocalidade, String idGerenciaRegional, String idArrecadador, String idElo, String[] idsImovelPerfil, String[] idsLigacaoAgua, String[] idsLigacaoEsgoto, String[] idsDocumentosTipos, String[] idsCategoria, String[] idsEsferaPoder) throws ErroRepositorioException { Collection retorno = new ArrayList(); String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this .criarCondicionaisDadosDiariosDevolucao( periodoArrecadacaoInicial, periodoArrecadacaoFinal, idLocalidade, idGerenciaRegional, idArrecadador, idElo, idsImovelPerfil, idsLigacaoAgua, idsLigacaoEsgoto, idsDocumentosTipos, idsCategoria, idsEsferaPoder); hql = " select distinct " + "devolucaoDadosDiarios.anoMesReferencia, " // 0 + "devolucaoDadosDiarios.dataDevolucao, " // 1 + "sum(devolucaoDadosDiarios.quantidadeDevolucoes), " // 2 + "sum(devolucaoDadosDiarios.valorDevolucoes), " // 3 + "sum(devolucaoDadosDiarios.quantidadeDocumentos), " // 4 + "devolucaoDadosDiarios.arrecadador.id, " // 5 + "devolucaoDadosDiarios.documentoTipo.id, " // 6 + "devolucaoDadosDiarios.imovelPerfil.id, " // 7 + "devolucaoDadosDiarios.gerenciaRegional.id, " // 8 + "devolucaoDadosDiarios.localidade.id, " // 9 + "devolucaoDadosDiarios.categoria.id, " // 10 + "devolucaoDadosDiarios.localidade.localidade.id, " // 11 + "devolucaoDadosDiarios.unidadeNegocio.id, " // 12 + "devolucaoDadosDiarios.arrecadacaoForma.id, " // 13 + "devolucaoDadosDiarios.devolucaoTipo, " // 14 + "devolucaoDadosDiarios.documentoTipoAgregador.id " // 14 + " from DevolucaoDadosDiarios devolucaoDadosDiarios " + condicionais + " group by devolucaoDadosDiarios.anoMesReferencia, " + "devolucaoDadosDiarios.arrecadador.id, " + "devolucaoDadosDiarios.gerenciaRegional.id, " + "devolucaoDadosDiarios.localidade.id, " + "devolucaoDadosDiarios.localidade.localidade.id, " + "devolucaoDadosDiarios.imovelPerfil.id, " + "devolucaoDadosDiarios.categoria.id, " + "devolucaoDadosDiarios.documentoTipo.id, " + "devolucaoDadosDiarios.dataDevolucao, " + "devolucaoDadosDiarios.unidadeNegocio.id, " + "devolucaoDadosDiarios.devolucaoTipo, " + "devolucaoDadosDiarios.arrecadacaoForma.id, " + "devolucaoDadosDiarios.documentoTipoAgregador.id " + " order by devolucaoDadosDiarios.anoMesReferencia, " + "devolucaoDadosDiarios.dataDevolucao "; // System.out.println("inicio=" + new Date().toString()); retorno = session.createQuery(hql).list(); // System.out.println("Fim=" + new Date().toString()); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0333] Consultar Dados Di�rios da Arrecada��o * * M�todo para filtrar os dados di�rios para qualquer aba da funcionalidade * * @author Francisco do Nascimento * @date 12/11/2008 * * @param filtro * @return * @throws ErroRepositorioException */ public Collection filtrarDadosDiariosArrecadacao(FiltroConsultarDadosDiariosArrecadacao filtro) throws ErroRepositorioException{ Collection retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String SQLGeral = null; String SQLConsultaADD = "SELECT "; String SQLConsultaADD_FROM = " FROM arrecadacao.arrec_dados_diarios ad "; String SQLConsultaDDD1 = "SELECT "; String SQLConsultaDDD1_FROM = " FROM ARRECADACAO.DEVOLUCAO_DADOS_DIARIOS dd "; Type tipo= null; String campoGroupByADD = null; String campoGroupByDDD = null; switch (filtro.getAgrupamento()) { case ANO_MES: SQLConsultaADD += " ad.ardd_amreferenciaarrecadacao "; SQLConsultaDDD1 += " dd.dvdd_amreferenciaarrecadacao "; tipo = Hibernate.INTEGER; campoGroupByADD = " ad.ardd_amreferenciaarrecadacao "; campoGroupByDDD = " dd.dvdd_amreferenciaarrecadacao "; break; case ARRECADADOR: SQLConsultaADD += " ad.arrc_id "; SQLConsultaDDD1 += " dd.arrc_id "; tipo = Hibernate.INTEGER; campoGroupByADD = " ad.arrc_id "; campoGroupByDDD = " dd.arrc_id "; break; case CATEGORIA: SQLConsultaADD += " ad.catg_id "; SQLConsultaDDD1 += " dd.catg_id "; tipo = Hibernate.INTEGER; campoGroupByADD = " ad.catg_id "; campoGroupByDDD = " dd.catg_id "; break; case ELO: SQLConsultaADD += " loc.loca_cdelo "; SQLConsultaDDD1 += " loc.loca_cdelo "; tipo = Hibernate.INTEGER; campoGroupByADD = " loc.loca_cdelo "; campoGroupByDDD = " loc.loca_cdelo "; break; case FORMA_ARRECADACAO: SQLConsultaADD += " ad.arfm_id "; SQLConsultaDDD1 += " dd.arfm_id "; tipo = Hibernate.INTEGER; campoGroupByADD = " ad.arfm_id "; campoGroupByDDD = " dd.arfm_id "; break; case GERENCIA_REGIONAL: SQLConsultaADD += " ad.greg_id "; SQLConsultaDDD1 += " dd.greg_id "; tipo = Hibernate.INTEGER; campoGroupByADD = " ad.greg_id "; campoGroupByDDD = " dd.greg_id "; break; case LOCALIDADE: SQLConsultaADD += " ad.loca_id "; SQLConsultaDDD1 += " dd.loca_id "; tipo = Hibernate.INTEGER; campoGroupByADD = " ad.loca_id "; campoGroupByDDD = " dd.loca_id "; break; case PERFIL: SQLConsultaADD += " ad.iper_id "; SQLConsultaDDD1 += " dd.iper_id "; tipo = Hibernate.INTEGER; campoGroupByADD = " ad.iper_id "; campoGroupByDDD = " dd.iper_id "; break; case TIPO_DOCUMENTO: SQLConsultaADD += " ad.dotp_id "; SQLConsultaDDD1 += " dd.dotp_id "; tipo = Hibernate.INTEGER; campoGroupByADD = " ad.dotp_id "; campoGroupByDDD = " dd.dotp_id "; break; case TIPO_DOCUMENTO_AGREGADOR: SQLConsultaADD += " ad.dotp_idagregador "; SQLConsultaDDD1 += " dd.dotp_idagregador "; tipo = Hibernate.INTEGER; campoGroupByADD = " ad.dotp_idagregador "; campoGroupByDDD = " dd.dotp_idagregador "; break; case UNIDADE_NEGOCIO: SQLConsultaADD += " ad.uneg_id "; SQLConsultaDDD1 += " dd.uneg_id "; tipo = Hibernate.INTEGER; campoGroupByADD = " ad.uneg_id "; campoGroupByDDD = " dd.uneg_id "; break; case DATA: SQLConsultaADD += " ad.ardd_dtpagamento "; SQLConsultaDDD1 += " dd.dvdd_dtdevolucao "; tipo = Hibernate.DATE; campoGroupByADD = " ad.ardd_dtpagamento "; campoGroupByDDD = " dd.dvdd_dtdevolucao "; } // definindo somatorios para o select SQLConsultaADD += " as itemADD, sum(ad.ardd_qtdocumentos) as qtdDocumentos, sum(ad.ardd_qtpagamentos) as qtdPagamentos, " + "sum(ad.ardd_vlpagamentos) as debitos "; SQLConsultaDDD1 += " as itemDDD, sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_qtdocumentos else 0 end) as qtdDocumentosDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_qtdocumentos else 0 end) as qtdDocumentosDevolucoes, " + " sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_qtdevolucoes else 0 end) as qtdPagamentosDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_qtdevolucoes else 0 end) as qtdPagamentosDevolucoes, " + " sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_vldevolucoes else 0 end) as valorDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_vldevolucoes else 0 end) as valorDevolucoes "; // adicionando as tabelas para os joins if (filtro.getAgrupamento().equals(FiltroConsultarDadosDiariosArrecadacao.GROUP_BY.ELO) || (filtro.getIdElo() != null && !filtro.getIdElo().equals(""))){ SQLConsultaADD_FROM += " LEFT JOIN CADASTRO.LOCALIDADE LOC ON AD.LOCA_ID = LOC.LOCA_ID "; SQLConsultaDDD1_FROM += " LEFT JOIN CADASTRO.LOCALIDADE LOC ON DD.LOCA_ID = LOC.LOCA_ID "; } // acrescentando a parte from SQLConsultaADD += SQLConsultaADD_FROM; SQLConsultaDDD1 += SQLConsultaDDD1_FROM; // metodo gera as condicoes de acordo com os valores preenchidos no filtro SQLConsultaADD += montarWhereFiltrarDadosDiariosArrecadacao(filtro, "ad"); SQLConsultaDDD1 += montarWhereFiltrarDadosDiariosArrecadacao(filtro, "dd"); // retirar o and do final, caso exista if (SQLConsultaADD.lastIndexOf("and") >= (SQLConsultaADD.length() - 4)){ SQLConsultaADD = Util.removerUltimosCaracteres(SQLConsultaADD , 4); } // retirar o and do final, caso exista if (SQLConsultaDDD1.lastIndexOf("and") >= (SQLConsultaDDD1.length() - 4)){ SQLConsultaDDD1 = Util.removerUltimosCaracteres(SQLConsultaDDD1, 4); } SQLConsultaADD += " group by " + campoGroupByADD; SQLConsultaDDD1 += " group by " + campoGroupByDDD; SQLGeral = "SELECT coalesce(ardd.itemADD, ddd1.itemDDD) as campoAgrupador, (COALESCE(ARDD.qtdDocumentos,0) + COALESCE(DDD1.qtdDocumentosDescontos,0) " + "+ COALESCE(DDD1.qtdDocumentosDevolucoes,0)) as qtdDocumentos, (COALESCE(ARDD.qtdPagamentos,0) + " + "COALESCE(DDD1.qtdPagamentosDescontos,0) + COALESCE(DDD1.qtdPagamentosDevolucoes,0)) as qtdPagamentos, " + "COALESCE(ARDD.debitos, 0) as debitos, COALESCE(DDD1.valorDescontos, 0) as descontos, " + "COALESCE(DDD1.valorDevolucoes, 0) as devolucoes from (" + SQLConsultaADD + ") ARDD " + " full join (" + SQLConsultaDDD1 + ") DDD1 on (ARDD.itemADD = DDD1.itemDDD) " + " order by campoAgrupador "; try { retorno = session.createSQLQuery(SQLGeral) .addScalar("campoAgrupador", tipo) .addScalar("qtdDocumentos", Hibernate.INTEGER) .addScalar("qtdPagamentos", Hibernate.INTEGER) .addScalar("debitos", Hibernate.BIG_DECIMAL) .addScalar("descontos", Hibernate.BIG_DECIMAL) .addScalar("devolucoes", Hibernate.BIG_DECIMAL) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } // System.out.println("Tempo de execu��o da query (" + filtro.getAgrupamento() + // ") " + (System.currentTimeMillis() - t1)); return retorno; } /** * [UC0333] Consultar Dados Di�rios da Arrecada��o * * M�todo para montar a parte WHERE da query de * filtrar os dados di�rios para qualquer aba da funcionalidade * * @date 18/11/2008 * * @param filtro * @param labelTabela * @return */ private String montarWhereFiltrarDadosDiariosArrecadacao(FiltroConsultarDadosDiariosArrecadacao filtro, String labelTabela){ String SQLConsultaADD = " WHERE "; if (filtro.getAnoMesArrecadacao() != null && !filtro.getAnoMesArrecadacao().equals("") && !filtro.getAnoMesArrecadacao().equals("-1")){ // @TODO: melhorar isso if(labelTabela.equals("ad")){ SQLConsultaADD += labelTabela + ".ardd_amreferenciaarrecadacao = " + filtro.getAnoMesArrecadacao() + " and "; } else { SQLConsultaADD += labelTabela + ".dvdd_amreferenciaarrecadacao = " + filtro.getAnoMesArrecadacao() + " and "; } } if (filtro.getIdGerenciaRegional() != null && !filtro.getIdGerenciaRegional().equals("") && !filtro.getIdGerenciaRegional().equals("-1")){ SQLConsultaADD += labelTabela + ".greg_id = " + filtro.getIdGerenciaRegional() + " and "; } if (filtro.getIdUnidadeNegocio() != null && !filtro.getIdUnidadeNegocio().equals("") && !filtro.getIdUnidadeNegocio().equals("-1")){ SQLConsultaADD += labelTabela + ".uneg_id = " + filtro.getIdUnidadeNegocio() + " and "; } if (filtro.getIdElo() != null && !filtro.getIdElo().equals("") && !filtro.getIdElo().equals("-1")){ SQLConsultaADD += " loc.loca_cdelo = " + filtro.getIdElo() + " and "; } if (filtro.getIdLocalidade() != null && !filtro.getIdLocalidade().equals("") && !filtro.getIdLocalidade().equals("-1")){ SQLConsultaADD += labelTabela + ".loca_id = " + filtro.getIdLocalidade() + " and "; } if (filtro.getIdArrecadador() != null && !filtro.getIdArrecadador().equals("") && !filtro.getIdArrecadador().equals("-1")){ SQLConsultaADD += labelTabela + ".arrc_id = " + filtro.getIdArrecadador() + " and "; } if (filtro.getIdFormaArrecadacao() != null && !filtro.getIdFormaArrecadacao().equals("")){ if (filtro.getIdFormaArrecadacao().equals("0")){ SQLConsultaADD += labelTabela + ".arfm_id is null and "; } else if (!filtro.getIdFormaArrecadacao().equals("-1")){ SQLConsultaADD += labelTabela + ".arfm_id = " + filtro.getIdFormaArrecadacao() + " and "; } } if (filtro.getIdDocumentoTipo() != null && !filtro.getIdDocumentoTipo().equals("")){ if (filtro.getIdDocumentoTipo().equals("0")){ SQLConsultaADD += labelTabela + ".dotp_id is null and "; } else if (!filtro.getIdDocumentoTipo().equals("-1")){ SQLConsultaADD += labelTabela + ".dotp_id = " + filtro.getIdDocumentoTipo() + " and "; } } if (filtro.getIdsCategoria() != null && filtro.getIdsCategoria().length > 0){ String idsCategoria[] = filtro.getIdsCategoria(); if (!idsCategoria[0].equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { if (idsCategoria.length == 1){ SQLConsultaADD += labelTabela + ".catg_id = " + idsCategoria[0] + " and "; } else { SQLConsultaADD += labelTabela + ".catg_id in ( "; for (int j = 0; j < idsCategoria.length; j++) { SQLConsultaADD += idsCategoria[j] + ", "; } SQLConsultaADD = Util.removerUltimosCaracteres(SQLConsultaADD, 2); SQLConsultaADD += ") and "; } } } if (filtro.getIdsImovelPerfil() != null && filtro.getIdsImovelPerfil().length > 0){ String idsImovelPerfil[] = filtro.getIdsImovelPerfil(); if (!idsImovelPerfil[0].equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { if (idsImovelPerfil.length == 1){ SQLConsultaADD += labelTabela + ".iper_id = " + idsImovelPerfil[0] + " and "; } else { SQLConsultaADD += labelTabela + ".iper_id in ( "; for (int j = 0; j < idsImovelPerfil.length; j++) { SQLConsultaADD += idsImovelPerfil[j] + ", "; } SQLConsultaADD = Util.removerUltimosCaracteres(SQLConsultaADD, 2); SQLConsultaADD += ") and "; } } } if (filtro.getIdsSituacaoLigacaoAgua() != null && filtro.getIdsSituacaoLigacaoAgua().length > 0){ String idsSituacaoLigacaoAgua[] = filtro.getIdsSituacaoLigacaoAgua(); if (!idsSituacaoLigacaoAgua[0].equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { if (idsSituacaoLigacaoAgua.length == 1){ SQLConsultaADD += labelTabela + ".last_id = " + idsSituacaoLigacaoAgua[0] + " and "; } else { SQLConsultaADD += labelTabela + ".last_id in ( "; for (int j = 0; j < idsSituacaoLigacaoAgua.length; j++) { SQLConsultaADD += idsSituacaoLigacaoAgua[j] + ", "; } SQLConsultaADD = Util.removerUltimosCaracteres(SQLConsultaADD, 2); SQLConsultaADD += ") and "; } } } if (filtro.getIdsSituacaoLigacaoEsgoto() != null && filtro.getIdsSituacaoLigacaoEsgoto().length > 0){ String idsSituacaoLigacaoEsgoto[] = filtro.getIdsSituacaoLigacaoEsgoto(); if (!idsSituacaoLigacaoEsgoto[0].equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { if (idsSituacaoLigacaoEsgoto.length == 1){ SQLConsultaADD += labelTabela + ".lest_id = " + idsSituacaoLigacaoEsgoto[0] + " and "; } else { SQLConsultaADD += labelTabela + ".lest_id in ( "; for (int j = 0; j < idsSituacaoLigacaoEsgoto.length; j++) { SQLConsultaADD += idsSituacaoLigacaoEsgoto[j] + ", "; } SQLConsultaADD = Util.removerUltimosCaracteres(SQLConsultaADD, 2); SQLConsultaADD += ") and "; } } } if (filtro.getIdsEsferaPoder() != null && filtro.getIdsEsferaPoder().length > 0){ String idsEsferaPoder[] = filtro.getIdsEsferaPoder(); if (!idsEsferaPoder[0].equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { if (idsEsferaPoder.length == 1){ SQLConsultaADD += labelTabela + ".epod_id = " + idsEsferaPoder[0] + " and "; } else { SQLConsultaADD += labelTabela + ".epod_id in ( "; for (int j = 0; j < idsEsferaPoder.length; j++) { SQLConsultaADD += idsEsferaPoder[j] + ", "; } SQLConsultaADD = Util.removerUltimosCaracteres(SQLConsultaADD, 2); SQLConsultaADD += ") and "; } } } if (filtro.getIdsDocumentoTipoAgregador() != null && filtro.getIdsDocumentoTipoAgregador().length > 0){ String idsDocumentoTipoAgregador[] = filtro.getIdsDocumentoTipoAgregador(); if (!idsDocumentoTipoAgregador[0].equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { if (idsDocumentoTipoAgregador.length == 1){ if (idsDocumentoTipoAgregador[0].equals("0")){ SQLConsultaADD += labelTabela + ".dotp_idagregador is null and "; } else { SQLConsultaADD += labelTabela + ".dotp_idagregador = " + idsDocumentoTipoAgregador[0] + " and "; } } else { SQLConsultaADD += labelTabela + ".dotp_idagregador in ( "; for (int j = 0; j < idsDocumentoTipoAgregador.length; j++) { SQLConsultaADD += idsDocumentoTipoAgregador[j] + ", "; } SQLConsultaADD = Util.removerUltimosCaracteres(SQLConsultaADD, 2); SQLConsultaADD += ") and "; } } } return SQLConsultaADD; } /** * * [UC0333] Consultar Dados Di�rios da Arrecada��o * * Verificar se existe dados diarios da arrecadacao de acordo com o filtro * passado * * @author Francisco do Nascimento * @date 18/11/2008 * * @param filtro * @return boolean de existencia dos dados * @throws ErroRepositorioException */ public boolean verificarExistenciaDadosDiariosArrecadacao(FiltroConsultarDadosDiariosArrecadacao filtro) throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); String join1 = ""; String join2 = ""; if (filtro.getIdElo() != null && !filtro.getIdElo().equals("")){ join1 = " left join cadastro.localidade loc on loc.loca_id = ad.loca_id "; join2 = " left join cadastro.localidade loc on loc.loca_id = dd.loca_id "; } String SQLVerificarADD = "SELECT ad.ardd_id as id from arrecadacao.arrec_dados_diarios ad " + join1 + montarWhereFiltrarDadosDiariosArrecadacao(filtro, "ad"); String SQLVerificarDDD1 = "SELECT dd.dvdd_id as id from arrecadacao.devolucao_dados_diarios dd " + join2 + montarWhereFiltrarDadosDiariosArrecadacao(filtro, "dd") + " dd.dvdd_tipodevolucao <> 'N' "; String SQLVerificarDDD2 = "SELECT dd.dvdd_id as id from arrecadacao.devolucao_dados_diarios dd " + join2 + montarWhereFiltrarDadosDiariosArrecadacao(filtro, "dd") + " dd.dvdd_tipodevolucao = 'N' "; Integer retornoSQL = null; boolean retorno = false; try { SQLVerificarADD = Util.removerUltimosCaracteres(SQLVerificarADD, 4); retornoSQL = (Integer) session.createSQLQuery(SQLVerificarADD) .addScalar("id", Hibernate.INTEGER).setMaxResults(1).uniqueResult(); if (retornoSQL != null) { retorno = true; } else { retornoSQL = (Integer) session.createSQLQuery(SQLVerificarDDD1) .addScalar("id", Hibernate.INTEGER).setMaxResults(1).uniqueResult(); if (retornoSQL != null){ retorno = true; } else { retornoSQL = (Integer) session.createSQLQuery(SQLVerificarDDD2) .addScalar("id", Hibernate.INTEGER).setMaxResults(1).uniqueResult(); if (retornoSQL != null){ retorno = true; } } } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa dos dados di�rios da arrecada��o pela Gerencia * * [UC0333] Filtrar Dados Di�rios da Arrecada��o * * @author Rafael Santos * @date 05/09/2006 * * @return */ public Collection filtrarDadosDiariosArrecadacaoValoresDiarios( String idGerenciaRegional) throws ErroRepositorioException { Collection retorno = null; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this .criarCondicionaisDadosDiariosArrecadacao(null, null, null, idGerenciaRegional, null, null, null, null, null, null, null, null); hql = " select distinct gerenciaRegional.nome,localidade.descricao,elo.descricao " + " from gcom.arrecadacao.ArrecadacaoDadosDiarios as arrecadacaoDadosDiarios " + " inner join arrecadacaoDadosDiarios.gerenciaRegional gerenciaRegional " + " inner join arrecadacaoDadosDiarios.localidade localidade " + " inner join arrecadacaoDadosDiarios.gerenciaRegional gerenciaRegional " + " inner join localidade.localidade elo " + condicionais + " "; retorno = session.createQuery(hql).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de dados * diarios da arrecadacao * * [UC0333] Filtrar Dados Diarios da Arrecada��o * * Pesquisa os dados diarios com os condicionais informados * * @author Rafael Santos * @date 05/09/06 * * @return */ public String criarCondicionaisDadosDiariosArrecadacao( String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String idLocalidade, String idGerenciaRegional, String idArrecadador, String idElo, String[] idsImovelPerfil, String[] idsLigacaoAgua, String[] idsLigacaoEsgoto, String[] idsDocumentosTipos, String[] idsCategoria, String[] idsEsferaPoder) { String sql = " where "; // periodo inicial e final if (periodoArrecadacaoInicial != null && periodoArrecadacaoInicial != null && !periodoArrecadacaoFinal.equals("") && !periodoArrecadacaoFinal.equals("")) { sql = sql + "arrecadacaoDadosDiarios.anoMesReferenciaArrecadacao >= " + periodoArrecadacaoInicial + " and "; sql = sql + "arrecadacaoDadosDiarios.anoMesReferenciaArrecadacao <= " + periodoArrecadacaoFinal + " and "; } // localidade if (idLocalidade != null && !idLocalidade.equals("")) { sql = sql + " arrecadacaoDadosDiarios.localidade.id = " + idLocalidade + " and "; } // gerencia regional if (idGerenciaRegional != null && !idGerenciaRegional.equals("") && !idGerenciaRegional .equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { sql = sql + " arrecadacaoDadosDiarios.localidade.gerenciaRegional.id = " + idGerenciaRegional + " and "; } // arrecadador if (idArrecadador != null && !idArrecadador.equals("")) { sql = sql + " arrecadacaoDadosDiarios.arrecadador.id = " + idArrecadador + " and "; } // elo if (idElo != null && !idElo.equals("")) { sql = sql + " arrecadacaoDadosDiarios.localidade.localidade.id = " + idElo + " and "; } // Imovel Perfil if (idsImovelPerfil != null && idsImovelPerfil.length > 0) { if (!idsImovelPerfil[0] .equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { int i = 0; sql = sql + " ( "; while (i < idsImovelPerfil.length) { if (!idsImovelPerfil[i].equals("")) { if (i + 1 < idsImovelPerfil.length) { sql = sql + " arrecadacaoDadosDiarios.imovelPerfil.id = " + idsImovelPerfil[i] + " or "; } else { sql = sql + " arrecadacaoDadosDiarios.imovelPerfil.id = " + idsImovelPerfil[i] + " and "; } } i++; } sql = Util.removerUltimosCaracteres(sql, 4); sql = sql + " ) and "; } } // Situa��o Liga��o �gua if (idsLigacaoAgua != null && idsLigacaoAgua.length > 0) { if (!idsLigacaoAgua[0] .equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { int i = 0; sql = sql + " ( "; while (i < idsLigacaoAgua.length) { if (!idsLigacaoAgua[i].equals("")) { if (i + 1 < idsLigacaoAgua.length) { sql = sql + " arrecadacaoDadosDiarios.ligacaoAguaSituacao.id = " + idsLigacaoAgua[i] + " or "; } else { sql = sql + " arrecadacaoDadosDiarios.ligacaoAguaSituacao.id = " + idsLigacaoAgua[i] + " and "; } } i++; } sql = Util.removerUltimosCaracteres(sql, 4); sql = sql + " ) and "; } } // Situa��o Liga��o Esgoto if (idsLigacaoEsgoto != null && idsLigacaoEsgoto.length > 0) { if (!idsLigacaoEsgoto[0] .equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { int i = 0; sql = sql + " ( "; while (i < idsLigacaoEsgoto.length) { if (!idsLigacaoEsgoto[i].equals("")) { if (i + 1 < idsLigacaoEsgoto.length) { sql = sql + " arrecadacaoDadosDiarios.ligacaoEsgotoSituacao.id = " + idsLigacaoEsgoto[i] + " or "; } else { sql = sql + " arrecadacaoDadosDiarios.ligacaoEsgotoSituacao.id = " + idsLigacaoEsgoto[i] + " and "; } } i++; } sql = Util.removerUltimosCaracteres(sql, 4); sql = sql + " ) and "; } } // Categoria if (idsCategoria != null && idsCategoria.length > 0) { if (!idsCategoria[0].equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { int i = 0; sql = sql + " ( "; while (i < idsCategoria.length) { if (!idsCategoria[i].equals("")) { if (i + 1 < idsCategoria.length) { sql = sql + " arrecadacaoDadosDiarios.categoria.id = " + idsCategoria[i] + " or "; } else { sql = sql + " arrecadacaoDadosDiarios.categoria.id = " + idsCategoria[i] + " and "; } } i++; } sql = Util.removerUltimosCaracteres(sql, 4); sql = sql + " ) and "; } } // Esfera Poder if (idsEsferaPoder != null && idsEsferaPoder.length > 0) { if (!idsEsferaPoder[0] .equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { int i = 0; sql = sql + " ( "; while (i < idsEsferaPoder.length) { if (!idsEsferaPoder[i].equals("")) { if (i + 1 < idsEsferaPoder.length) { sql = sql + " arrecadacaoDadosDiarios.esferaPoder.id = " + idsEsferaPoder[i] + " or "; } else { sql = sql + " arrecadacaoDadosDiarios.esferaPoder.id = " + idsEsferaPoder[i] + " and "; } } i++; } sql = Util.removerUltimosCaracteres(sql, 4); sql = sql + " ) and "; } } // documento tipo if (idsDocumentosTipos != null && idsDocumentosTipos.length > 0) { if (!idsDocumentosTipos[0] .equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { int i = 0; sql = sql + " ( "; while (i < idsDocumentosTipos.length) { if (!idsDocumentosTipos[i].equals("")) { if (i + 1 < idsDocumentosTipos.length) { sql = sql + " arrecadacaoDadosDiarios.documentoTipoAgregador.id = " + idsDocumentosTipos[i] + " or "; } else { sql = sql + " arrecadacaoDadosDiarios.documentoTipoAgregador.id = " + idsDocumentosTipos[i] + " and "; } } i++; } sql = Util.removerUltimosCaracteres(sql, 4); sql = sql + " ) and "; } } // retira o " and " q fica sobrando no final da query sql = Util.removerUltimosCaracteres(sql, 4); return sql; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de dados * diarios da arrecadacao, para os valores de devolucao * * [UC0333] Filtrar Dados Diarios da Arrecada��o * * Pesquisa os dados diarios com os condicionais informados * * @author Francisco do Nascimento * @date 21/07/08 * * @return */ public String criarCondicionaisDadosDiariosDevolucao( String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String idLocalidade, String idGerenciaRegional, String idArrecadador, String idElo, String[] idsImovelPerfil, String[] idsLigacaoAgua, String[] idsLigacaoEsgoto, String[] idsDocumentosTipos, String[] idsCategoria, String[] idsEsferaPoder) { String sql = " where "; // periodo inicial e final if (periodoArrecadacaoInicial != null && periodoArrecadacaoInicial != null && !periodoArrecadacaoFinal.equals("") && !periodoArrecadacaoFinal.equals("")) { sql = sql + "devolucaoDadosDiarios.anoMesReferencia >= " + periodoArrecadacaoInicial + " and "; sql = sql + "devolucaoDadosDiarios.anoMesReferencia <= " + periodoArrecadacaoFinal + " and "; } // localidade if (idLocalidade != null && !idLocalidade.equals("")) { sql = sql + " devolucaoDadosDiarios.localidade.id = " + idLocalidade + " and "; } // gerencia regional if (idGerenciaRegional != null && !idGerenciaRegional.equals("") && !idGerenciaRegional .equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { sql = sql + " devolucaoDadosDiarios.localidade.gerenciaRegional.id = " + idGerenciaRegional + " and "; } // arrecadador if (idArrecadador != null && !idArrecadador.equals("")) { sql = sql + " devolucaoDadosDiarios.arrecadador.id = " + idArrecadador + " and "; } // elo if (idElo != null && !idElo.equals("")) { sql = sql + " devolucaoDadosDiarios.localidade.localidade.id = " + idElo + " and "; } // Imovel Perfil if (idsImovelPerfil != null && idsImovelPerfil.length > 0) { if (!idsImovelPerfil[0] .equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { int i = 0; sql = sql + " ( "; while (i < idsImovelPerfil.length) { if (!idsImovelPerfil[i].equals("")) { if (i + 1 < idsImovelPerfil.length) { sql = sql + " devolucaoDadosDiarios.imovelPerfil.id = " + idsImovelPerfil[i] + " or "; } else { sql = sql + " devolucaoDadosDiarios.imovelPerfil.id = " + idsImovelPerfil[i] + " and "; } } i++; } sql = Util.removerUltimosCaracteres(sql, 4); sql = sql + " ) and "; } } // Situa��o Liga��o �gua if (idsLigacaoAgua != null && idsLigacaoAgua.length > 0) { if (!idsLigacaoAgua[0] .equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { int i = 0; sql = sql + " ( "; while (i < idsLigacaoAgua.length) { if (!idsLigacaoAgua[i].equals("")) { if (i + 1 < idsLigacaoAgua.length) { sql = sql + " devolucaoDadosDiarios.ligacaoAguaSituacao.id = " + idsLigacaoAgua[i] + " or "; } else { sql = sql + " devolucaoDadosDiarios.ligacaoAguaSituacao.id = " + idsLigacaoAgua[i] + " and "; } } i++; } sql = Util.removerUltimosCaracteres(sql, 4); sql = sql + " ) and "; } } // Situa��o Liga��o Esgoto if (idsLigacaoEsgoto != null && idsLigacaoEsgoto.length > 0) { if (!idsLigacaoEsgoto[0] .equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { int i = 0; sql = sql + " ( "; while (i < idsLigacaoEsgoto.length) { if (!idsLigacaoEsgoto[i].equals("")) { if (i + 1 < idsLigacaoEsgoto.length) { sql = sql + " devolucaoDadosDiarios.ligacaoEsgotoSituacao.id = " + idsLigacaoEsgoto[i] + " or "; } else { sql = sql + " devolucaoDadosDiarios.ligacaoEsgotoSituacao.id = " + idsLigacaoEsgoto[i] + " and "; } } i++; } sql = Util.removerUltimosCaracteres(sql, 4); sql = sql + " ) and "; } } // Categoria if (idsCategoria != null && idsCategoria.length > 0) { if (!idsCategoria[0].equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { int i = 0; sql = sql + " ( "; while (i < idsCategoria.length) { if (!idsCategoria[i].equals("")) { if (i + 1 < idsCategoria.length) { sql = sql + " devolucaoDadosDiarios.categoria.id = " + idsCategoria[i] + " or "; } else { sql = sql + " devolucaoDadosDiarios.categoria.id = " + idsCategoria[i] + " and "; } } i++; } sql = Util.removerUltimosCaracteres(sql, 4); sql = sql + " ) and "; } } // Esfera Poder if (idsEsferaPoder != null && idsEsferaPoder.length > 0) { if (!idsEsferaPoder[0] .equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { int i = 0; sql = sql + " ( "; while (i < idsEsferaPoder.length) { if (!idsEsferaPoder[i].equals("")) { if (i + 1 < idsEsferaPoder.length) { sql = sql + " devolucaoDadosDiarios.esferaPoder.id = " + idsEsferaPoder[i] + " or "; } else { sql = sql + " devolucaoDadosDiarios.esferaPoder.id = " + idsEsferaPoder[i] + " and "; } } i++; } sql = Util.removerUltimosCaracteres(sql, 4); sql = sql + " ) and "; } } // documento tipo if (idsDocumentosTipos != null && idsDocumentosTipos.length > 0) { if (!idsDocumentosTipos[0] .equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { int i = 0; sql = sql + " ( "; while (i < idsDocumentosTipos.length) { if (!idsDocumentosTipos[i].equals("")) { if (i + 1 < idsDocumentosTipos.length) { sql = sql + " devolucaoDadosDiarios.documentoTipo.id = " + idsDocumentosTipos[i] + " or "; } else { sql = sql + " devolucaoDadosDiarios.documentoTipo.id = " + idsDocumentosTipos[i] + " and "; } } i++; } sql = Util.removerUltimosCaracteres(sql, 4); sql = sql + " ) and "; } } // retira o " and " q fica sobrando no final da query sql = Util.removerUltimosCaracteres(sql, 4); return sql; } /** * Retornar Cole��o do movimento do arrecadador * * Seleciona Movimento Arrecadadores * * @author Fernanda Paiva * @date * @throws ErroRepositorioException */ public Collection<ArrecadadorMovimento> retornarColecaoMovimentoArrecadadores( FiltroArrecadadorMovimento filtro, Integer numeroPagina) throws ErroRepositorioException { Collection<ArrecadadorMovimento> retorno = null; Session session = HibernateUtil.getSession(); try { retorno = new ArrayList( new CopyOnWriteArraySet<ArrecadadorMovimento>( GeradorHQLCondicional .gerarCondicionalQuery( filtro, "arrecadadorMovimento", "SELECT DISTINCT arrecadadorMovimento " + "FROM ArrecadadorMovimento as arrecadadorMovimento " + "LEFT JOIN arrecadadorMovimento.arrecadadorMovimentoItens as " + FiltroArrecadadorMovimento.ALIAS_ARRECADADOR_MOVIMENTO_ITEM + "", session) .setFirstResult(10 * numeroPagina) .setMaxResults(10).list())); /* * if * (!filtro.getColecaoCaminhosParaCarregamentoEntidades().isEmpty()) { * PersistenciaUtil.processaObjetosParaCarregamento(filtro.getColecaoCaminhosParaCarregamentoEntidades(), * retorno); } */ } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public BigDecimal pesquisarSomatorioAvisoAcerto( Integer indicadorCreditoDebito, Integer idAviso, Integer indicadorArrecadacaoDevolucao) throws ErroRepositorioException { BigDecimal retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select sum(avisoAcerto.valorAcerto) from AvisoAcerto avisoAcerto " + " inner join avisoAcerto.avisoBancario avisoBancario " + " where avisoAcerto.indicadorCreditoDebito = :indicadorCreditoDebito" + " and avisoAcerto.indicadorArrecadacaoDevolucao = :indicadorArrecadacaoDevolucao " + " and avisoBancario.id = :idAviso"; retorno = (BigDecimal) session.createQuery(consulta).setInteger( "indicadorCreditoDebito", indicadorCreditoDebito) .setInteger("indicadorArrecadacaoDevolucao", indicadorArrecadacaoDevolucao).setInteger( "idAviso", idAviso).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Collection filtrarAvisoBancarioAbertoFechadoFinal( AvisoBancarioHelper avisoBancarioHelper) throws ErroRepositorioException { // Collection retorno = new ArrayList(); // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; // ////// Short arrecadadorCodAgente = avisoBancarioHelper .getCodigoAgenteArrecadador(); Date dataLancamentoInicio = avisoBancarioHelper .getDataLancamentoInicial(); Date dataLancamentoFim = avisoBancarioHelper.getDataLancamentoFinal(); Short indicadorCreditoDebito = avisoBancarioHelper .getIndicadorCreditoDebito(); Integer idContaBancaria = avisoBancarioHelper.getIdContaBancaria(); Integer idMovimento = avisoBancarioHelper.getIdMovimentoArrecadador(); Date dataPrevisaoCreditoDebitoInicio = avisoBancarioHelper .getDataPrevistaInicial(); Date dataPrevisaoCreditoDebitoFim = avisoBancarioHelper .getDataPrevistaFinal(); Date dataRealizacaoCreditoDebitoInicio = avisoBancarioHelper .getDataRealizadaInicial(); Date dataRealizacaoCreditoDebitoFim = avisoBancarioHelper .getDataRealizadaFinal(); int anoMesReferenciaArrecadacaoInicial = avisoBancarioHelper .getAnoMesReferenciaArrecadacaoInicial(); int anoMesReferenciaArrecadacaoFinal = avisoBancarioHelper .getAnoMesReferenciaArrecadacaoFinal(); BigDecimal valorRealizadoInicial = avisoBancarioHelper .getValorRealizadoInicial(); BigDecimal valorRealizadoFinal = avisoBancarioHelper .getValorRealizadoFinal(); // ///// Integer idAviso = avisoBancarioHelper.getAvisoBancario().getId(); String tipoAviso = avisoBancarioHelper.getTipoAviso(); int flag = 0; BigDecimal valorSomatorioAcertoCredito = this .pesquisarSomatorioAvisoAcerto(1, idAviso, 1); BigDecimal valorSomatorioAcertoDebito = this .pesquisarSomatorioAvisoAcerto(2, idAviso, 1); BigDecimal valorSomatorioAcertoCredito2 = this .pesquisarSomatorioAvisoAcerto(1, idAviso, 2); BigDecimal valorSomatorioAcertoDebito2 = this .pesquisarSomatorioAvisoAcerto(2, idAviso, 2); if (valorSomatorioAcertoCredito == null) { valorSomatorioAcertoCredito = new BigDecimal("0.00"); } if (valorSomatorioAcertoDebito == null) { valorSomatorioAcertoDebito = new BigDecimal("0.00"); } if (valorSomatorioAcertoCredito2 == null) { valorSomatorioAcertoCredito2 = new BigDecimal("0.00"); } if (valorSomatorioAcertoDebito2 == null) { valorSomatorioAcertoDebito2 = new BigDecimal("0.00"); } if (arrecadadorCodAgente == null && (dataLancamentoInicio == null || dataLancamentoFim == null) && (indicadorCreditoDebito == 0 || indicadorCreditoDebito == 3) && idContaBancaria == null && idMovimento == null && (dataPrevisaoCreditoDebitoInicio == null || dataPrevisaoCreditoDebitoFim == null) && (dataRealizacaoCreditoDebitoInicio == null || dataRealizacaoCreditoDebitoFim == null) && (anoMesReferenciaArrecadacaoInicial == 0 || anoMesReferenciaArrecadacaoFinal == 0) && (valorRealizadoInicial == null || valorRealizadoFinal == null) && tipoAviso.equalsIgnoreCase("1")) { flag = 1; consulta = "select avisoBancario, " + " case when (" + " (avisoBancario.valorArrecadacaoCalculado = " + " ((avisoBancario.valorArrecadacaoInformado + " + valorSomatorioAcertoCredito + " ) " + " - " + valorSomatorioAcertoDebito + ")" + " ) " + " and " + "(avisoBancario.valorDevolucaoCalculado = " + " ((avisoBancario.valorDevolucaoInformado + " + valorSomatorioAcertoCredito2 + " ) " + " - " + valorSomatorioAcertoDebito2 + ")" + " )) then 'FECHADO' " + " else 'ABERTO' end " + " from AvisoBancario avisoBancario "; } else { consulta = "select avisoBancario, " + " case when (" + " (avisoBancario.valorArrecadacaoCalculado = " + " ((avisoBancario.valorArrecadacaoInformado + " + valorSomatorioAcertoCredito + " ) " + " - " + valorSomatorioAcertoDebito + ")" + " ) " + " and " + "(avisoBancario.valorDevolucaoCalculado = " + " ((avisoBancario.valorDevolucaoInformado + " + valorSomatorioAcertoCredito2 + " ) " + " - " + valorSomatorioAcertoDebito2 + ")" + " )) then 'FECHADO' " + " else 'ABERTO' end " + " from AvisoBancario avisoBancario " + " where "; } // /////// if (idAviso != null && !idAviso.equals(0)) { consulta += " avisoBancario.id = " + idAviso + " and"; } if (arrecadadorCodAgente != null) { consulta += " avisoBancario.arrecadador.codigoAgente = " + arrecadadorCodAgente + " and"; } if ((dataLancamentoInicio != null) && (dataLancamentoFim != null)) { consulta += " avisoBancario.dataLancamento between :dataLancamentoInicio and " + ":dataLancamentoFim and"; } if (indicadorCreditoDebito != 0 && indicadorCreditoDebito != 3) { consulta += " avisoBancario.indicadorCreditoDebito = " + indicadorCreditoDebito + " and"; } if (idContaBancaria != null) { consulta += " avisoBancario.contaBancaria.id = " + idContaBancaria + " and"; } if (idMovimento != null) { consulta += " avisoBancario.arrecadadorMovimento.id = " + idMovimento + " and"; } if ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null)) { consulta += " avisoBancario.dataPrevista between :dataPrevisaoCreditoDebitoInicio and " + ":dataPrevisaoCreditoDebitoFim and"; } if ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null)) { consulta += " avisoBancario.dataRealizada between :dataRealizacaoCreditoDebitoInicio and " + ":dataRealizacaoCreditoDebitoFim and"; } if ((anoMesReferenciaArrecadacaoInicial != 0) && (anoMesReferenciaArrecadacaoFinal != 0)) { consulta += " avisoBancario.anoMesReferenciaArrecadacao between " + anoMesReferenciaArrecadacaoInicial + " and " + anoMesReferenciaArrecadacaoFinal + " and"; } if ((valorRealizadoInicial != null) && (valorRealizadoFinal != null)) { BigDecimal valorInicialNegativo = valorRealizadoFinal .multiply(new BigDecimal("-1.00")); BigDecimal valorFinalNegativo = valorRealizadoInicial .multiply(new BigDecimal("-1.00")); consulta += " ((avisoBancario.valorRealizado between " + valorInicialNegativo + " and " + valorFinalNegativo + ") or (avisoBancario.valorRealizado between " + valorRealizadoInicial + " and " + valorRealizadoFinal + "))" + " and"; } // ////// // tipoAviso if (tipoAviso != null && !tipoAviso.equalsIgnoreCase("1")) { if (tipoAviso.equalsIgnoreCase("3")) { // FECHADO consulta += " ((avisoBancario.valorArrecadacaoCalculado = " + " ((avisoBancario.valorArrecadacaoInformado + " + valorSomatorioAcertoCredito + " ) " + " - " + valorSomatorioAcertoDebito + ")" + " ) " + " and " + "(avisoBancario.valorDevolucaoCalculado = " + " ((avisoBancario.valorDevolucaoInformado + " + valorSomatorioAcertoCredito2 + " ) " + " - " + valorSomatorioAcertoDebito2 + ")" + " )) and "; } else if (tipoAviso.equalsIgnoreCase("2")) { // ABERTO consulta += " ((avisoBancario.valorArrecadacaoCalculado <> " + " ((avisoBancario.valorArrecadacaoInformado + " + valorSomatorioAcertoCredito + " ) " + " - " + valorSomatorioAcertoDebito + ")" + " ) " + " or " + "(avisoBancario.valorDevolucaoCalculado <> " + " ((avisoBancario.valorDevolucaoInformado + " + valorSomatorioAcertoCredito2 + " ) " + " - " + valorSomatorioAcertoDebito2 + ")" + " )) and "; } } String consultarComOrderBy = ""; if (flag != 1) { consultarComOrderBy = Util.removerUltimosCaracteres(consulta, 4) + " order by avisoBancario.arrecadador.id,avisoBancario.dataLancamento,avisoBancario.numeroSequencial"; } else { consultarComOrderBy = Util.removerUltimosCaracteres(consulta, 0) + " order by avisoBancario.arrecadador.id,avisoBancario.dataLancamento,avisoBancario.numeroSequencial"; } // Consulta try { if ((((dataLancamentoInicio != null) && (dataLancamentoFim != null)) && ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null))) && ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null))) { return session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).list(); } else if (((dataLancamentoInicio != null) && (dataLancamentoFim != null)) && ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null))) { return session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).list(); } else if (((dataLancamentoInicio != null) && (dataLancamentoFim != null)) && ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null))) { return session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).list(); } else if (((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null)) && ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null))) { return session.createQuery(consultarComOrderBy).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).list(); } else if ((dataLancamentoInicio != null) && (dataLancamentoFim != null)) { return session.createQuery(consultarComOrderBy).setDate( "dataLancamentoInicio", dataLancamentoInicio).setDate( "dataLancamentoFim", dataLancamentoFim).list(); } else if ((dataPrevisaoCreditoDebitoInicio != null) && (dataPrevisaoCreditoDebitoFim != null)) { return session.createQuery(consultarComOrderBy).setDate( "dataPrevisaoCreditoDebitoInicio", dataPrevisaoCreditoDebitoInicio).setDate( "dataPrevisaoCreditoDebitoFim", dataPrevisaoCreditoDebitoFim).list(); } else if ((dataRealizacaoCreditoDebitoInicio != null) && (dataRealizacaoCreditoDebitoFim != null)) { return session.createQuery(consultarComOrderBy).setDate( "dataRealizacaoCreditoDebitoInicio", dataRealizacaoCreditoDebitoInicio).setDate( "dataRealizacaoCreditoDebitoFim", dataRealizacaoCreditoDebitoFim).list(); } else { return session.createQuery(consultarComOrderBy).list(); } // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } } /** * Pesquisa os dados da Guia de Pagamento necess�rios para o relat�rio * atrav�s do id da Guia de Pagamento * * @author Vivianne Sousa, Mariana Victor * @date 03/10/06, 02/03/2011 * * @return GuiaPagamentoRelatorioHelper * @throws ErroRepositorioException */ public GuiaPagamentoRelatorioHelper pesquisarGuiaPagamentoRelatorio( Integer idGuiaPagamento) throws ErroRepositorioException { // cria a vari�vel que vai armazenar o objeto pesquisada GuiaPagamentoRelatorioHelper retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { String consulta = "select " + " new " + GuiaPagamentoRelatorioHelper.class.getName() + " ( " + "im.id, " + "gp.dataVencimento, " + "loc.id, " + "loc.descricao, " + "gp.valorDebito, " + "gp.dataEmissao, " + "dt.id, " + "dt.descricao, " + "gp.numeroPrestacaoDebito, gp.numeroPrestacaoTotal," + "gp.observacao, gp.indicadorEmitirObservacao," + "im.nomeImovel) " + "FROM GuiaPagamento gp " + "LEFT JOIN gp.localidade loc " + "LEFT JOIN gp.debitoTipo dt " + "LEFT JOIN gp.imovel im " + "WHERE gp.id =:idGuiaPagamento "; retorno = (GuiaPagamentoRelatorioHelper) session.createQuery( consulta).setInteger("idGuiaPagamento", idGuiaPagamento.intValue()).setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o pesquisada return retorno; } /** * Pesquisa o nome do cliente da guia de pagamento atrav�s do id da Guia de * Pagamento e com CRTP_ID com o valor correspondente a usu�rio(2) * * @author Vivianne Sousa * @date 04/10/06 * * @return String * @throws ErroRepositorioException */ public String pesquisarNomeClienteGuiaPagamentoRelatorio( Integer idGuiaPagamento) throws ErroRepositorioException { // cria a vari�vel que vai armazenar o objeto pesquisada String retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = "select cli.nome " + "from ClienteGuiaPagamento cgp " + "inner join cgp.cliente cli " + "inner join cgp.clienteRelacaoTipo crtp " + "inner join cgp.guiaPagamento guia " + "where crtp.id = 2 and guia.id =:idGuiaPagamento "; retorno = (String) session.createQuery(consulta).setInteger( "idGuiaPagamento", idGuiaPagamento.intValue()) .setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa os dados da Guia de Devolu��o necess�rios para o relat�rio * atrav�s do id da Guia de Devolu��o * * @author Ana Maria * @date 05/10/06 * * @return GuiaDevolucaoRelatorioHelper * @throws ErroRepositorioException */ public GuiaDevolucaoRelatorioHelper pesquisarGuiaDevolucaoRelatorio( Integer idGuiaDevolucao) throws ErroRepositorioException { // cria a vari�vel que vai armazenar o objeto pesquisada GuiaDevolucaoRelatorioHelper retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { String consulta = "select " + " new " + GuiaDevolucaoRelatorioHelper.class.getName() + " ( " + "gdev.id, gdev.valorDevolucao, " + "rgat.id, rgat.observacao, gdev.imovel.id, " + "clie.id, clie.nome, clie.cpf, clie.cnpj, clie.rg, " + "orrg.descricaoAbreviada, unfe.sigla, fuan.nome, " + "fuau.nome, usua.nomeUsuario, gdev.dataValidade) " + "from GuiaDevolucao gdev " + "left join gdev.cliente clie " + "left join clie.orgaoExpedidorRg orrg " + "left join clie.unidadeFederacao unfe " + "left join gdev.registroAtendimento rgat " + "left join gdev.funcionarioAnalista fuan " + "left join gdev.funcionarioAutorizador fuau " + "left join gdev.usuario usua " + "where gdev.id =:idGuiaDevolucao "; retorno = (GuiaDevolucaoRelatorioHelper) session.createQuery( consulta).setInteger("idGuiaDevolucao", idGuiaDevolucao.intValue()).setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o pesquisada return retorno; } /** * Pesquisa os dados do Cliente pelo Im�vel * * @author Ana Maria * @date 06/10/06 * * @return Object[] * @throws ErroRepositorioException */ public Object[] pesquisarClienteImovel(Integer idImovel) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select clie.nome, clie.cpf, clie.cnpj, clie.rg, " + "orrg.descricaoAbreviada, unfe.sigla " + "from ClienteImovel clim " + "inner join clim.cliente clie " + "left join clie.orgaoExpedidorRg orrg " + "left join clie.unidadeFederacao unfe " + "where clim.clienteRelacaoTipo.id = 2 " + "and clim.imovel.id =:idImovel " + "and clim.dataFimRelacao is null "; retorno = (Object[]) session.createQuery(consulta).setInteger( "idImovel", idImovel).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * para pesquisar os pagamento historicos * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos historicos do Im�vel * * @author Rafael Corr�a * @date 20/12/2006 * * @param FiltroPagamento * @return Collection<Pagamento> * @throws ControladorException */ public Collection<PagamentoHistorico> pesquisarPagamentoHistoricoImovel( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos) throws ErroRepositorioException { Collection<PagamentoHistorico> retorno = null; // Collection<PagamentoHistorico> colecaoPagamentoHistorico = null; String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamentoHistorico( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); hql = " select distinct pagamentoHistorico " + " from gcom.arrecadacao.pagamento.PagamentoHistorico pagamentoHistorico " + " LEFT JOIN FETCH pagamentoHistorico.avisoBancario avbc " + " LEFT JOIN FETCH avbc.arrecadador arrec " + " LEFT JOIN FETCH arrec.cliente clie" + " LEFT JOIN FETCH pagamentoHistorico.documentoTipo doctoTp " + " LEFT JOIN FETCH pagamentoHistorico.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.contaHistorico contaHistorico " + " LEFT JOIN FETCH pagamentoHistorico.guiaPagamento gpag " + " LEFT JOIN FETCH gpag.debitoTipo dbtpGpag " + " LEFT JOIN FETCH pagamentoHistorico.debitoACobrarGeral dbcbGeral " + " LEFT JOIN FETCH dbcbGeral.debitoACobrar dbcb " + " LEFT JOIN FETCH dbcb.debitoTipo dbtpDbcb " + " LEFT JOIN FETCH pagamentoHistorico.debitoTipo dbtp " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAtual pagtoSitAtual " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAnterior pagtoSitAnterior " + condicionais; if(localidadeInicial != null && localidadeFinal != null && !localidadeInicial.equals("") && !localidadeFinal.equals("")){ hql = hql + " order by pagamentoHistorico.localidade.id, pagamentoHistorico.imovel.id, " + " pagamentoHistorico.anoMesReferenciaPagamento, pagamentoHistorico.dataPagamento "; }else{ hql = hql + " order by pagamentoHistorico.anoMesReferenciaPagamento desc, pagamentoHistorico.dataPagamento desc "; } if ( dataPagamentoInicial != null && !dataPagamentoInicial.equals("")) { String data1 = Util.recuperaDataInvertida(dataPagamentoInicial); if (data1 != null && !data1.equals("") && data1.trim().length() == 8) { data1 = data1.substring(6, 8) + "/" + data1.substring(4, 6) + "/" + data1.substring(0, 4); } if ( dataPagamentoFinal != null && !dataPagamentoFinal.equals("")) { String data2 = Util.recuperaDataInvertida(dataPagamentoFinal); if (data2 != null && !data2.equals("") && data2.trim().length() == 8) { data2 = data2.substring(6, 8) + "/" + data2.substring(4, 6) + "/" + data2.substring(0, 4); } retorno = session.createQuery(hql) .setTimestamp("dataPagamentoInicial", Util.formatarDataInicial( Util.converteStringParaDate(data1) ) ) .setTimestamp("dataPagamentoFinal", Util.formatarDataFinal( Util.converteStringParaDate(data2) ) ) .list(); } else { retorno = session.createQuery(hql).setTimestamp("dataPagamentoInicial", Util.formatarDataInicial( Util.converteStringParaDate(data1) ) ).list(); } } else if ( dataPagamentoFinal != null) { String data2 = Util.recuperaDataInvertida(dataPagamentoFinal); if (data2 != null && !data2.equals("") && data2.trim().length() == 8) { data2 = data2.substring(6, 8) + "/" + data2.substring(4, 6) + "/" + data2.substring(0, 4); } retorno = session.createQuery(hql).setTimestamp("dataPagamentoFinal", Util.formatarDataFinal( Util.converteStringParaDate(data2) ) ).list(); } else { retorno = session.createQuery(hql).list(); } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * * Filtar a quantiade de pagamento historicos do imovel [UC0255] Filtrar * Pagamentos * * @author Rafael Santos * @date 06/10/2006 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Integer pesquisarPagamentoHistoricoImovelCount(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos) throws ErroRepositorioException { int retorno = 0; Object pagamentoHistoricoImovelCount; String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamentoHistorico( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); hql = " select count(pagamentoHistorico.id) " + " from gcom.arrecadacao.pagamento.PagamentoHistorico pagamentoHistorico " + condicionais + " "; pagamentoHistoricoImovelCount = session.createQuery(hql) .setMaxResults(1).uniqueResult(); if (pagamentoHistoricoImovelCount != null) { retorno = (Integer) pagamentoHistoricoImovelCount; } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Filtra os pagamento historicos do Imovel para pagina��o * * [UC0255] Filtrar Pagamentos * * @author Rafael Santos * @date 06/10/2006 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<PagamentoHistorico> pesquisarPagamentoHistoricoImovelParaPaginacao( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, Integer numeroPagina) throws ErroRepositorioException { Collection<PagamentoHistorico> retorno = new ArrayList(); String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamentoHistorico( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); hql = " SELECT distinct pagamentoHistorico " + " FROM gcom.arrecadacao.pagamento.PagamentoHistorico as pagamentoHistorico " + " LEFT JOIN FETCH pagamentoHistorico.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.contaHistorico conta " + " LEFT JOIN FETCH pagamentoHistorico.documentoTipo " + " LEFT JOIN FETCH pagamentoHistorico.debitoTipo " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAtual " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAnterior " + " LEFT JOIN FETCH pagamentoHistorico.guiaPagamento guiaPagamento " + " LEFT JOIN FETCH pagamentoHistorico.debitoACobrarGeral debitoACobrarGeral " + " LEFT JOIN FETCH debitoACobrarGeral.debitoACobrar debitoACobrar " + " LEFT JOIN FETCH guiaPagamento.debitoTipo " + " LEFT JOIN FETCH debitoACobrar.debitoTipo " + condicionais + " order by pagamentoHistorico.localidade.id, pagamentoHistorico.imovel.id, " + " pagamentoHistorico.documentoTipo.id, pagamentoHistorico.dataPagamento " + " "; retorno = session.createQuery(hql) .setFirstResult(10 * numeroPagina).setMaxResults(10).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Filtra os Pagamento Historicos do Cliente Conta * * [UC0255] Filtrar Pagamentos * * @author Rafael Corr�a * @date 20/12/2006 * * @param FiltroPagamento * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection pesquisarPagamentoHistoricoClienteConta(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos) throws ErroRepositorioException { Collection retorno = null; // Collection<PagamentoHistorico> colecaoPagamentoHistorico = null; String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this .criarCondicionaisPagamentoHistoricoCliente(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); hql = " select c.pghi_id as idPagamento, i.cnta_id as idConta, i.cnhi_amreferenciaconta as anoMesConta, i.cnhi_vlagua as valorAguaConta, " + " i.cnhi_vlesgoto as valorEsgotoConta, i.cnhi_vldebitos as valorDebitosConta, i.cnhi_vlcreditos as valorCreditosConta, " + " c.pghi_dtpagamento as dataPagamento, c.pghi_amreferenciapagamento as anoMesPagamento, " + " c.pghi_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, " + " k.pgst_id as idSituacaoPagamentoAnterior, k.pgst_dsabreviado as situacaoPagamentoAnterior, c.dotp_id as idDocumentoTipo, c.imov_id as idImovel " + " FROM arrecadacao.pagamento_historico c " + " INNER JOIN " + " faturamento.conta_historico i " + " on i.imov_id = c.imov_id and i.cnhi_amreferenciaconta = c.pghi_amreferenciapagamento " + " INNER JOIN "; if (idTipoRelacao != null && !idTipoRelacao.equals("")){ hql += " cadastro.cliente_conta_historico b on b.cnta_id = i.cnta_id "; } else{ hql += " cadastro.cliente_conta_historico b on b.cnta_id = i.cnta_id and b.crtp_id = " + ClienteRelacaoTipo.USUARIO.toString(); } hql += " INNER JOIN cadastro.cliente a " + " on a.clie_id = b.clie_id "; // + " INNER JOIN " // + " cadastro.localidade d " // + " on c.loca_id = d.loca_id " if (idArrecadador != null && !idArrecadador.equals("")) { hql = hql + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id "; } hql = hql // + " INNER JOIN " // + " arrecadacao.arrecadador g " // + " on f.arrc_id = g.arrc_id " // + " INNER JOIN " // + " cadastro.cliente h " // + " on h.clie_id = g.clie_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao k " + " on c.pgst_idanterior = k.pgst_id " // + " LEFT OUTER JOIN " // + " faturamento.debito_tipo m " // + " on c.dbtp_id = m.dbtp_id " + " WHERE " + condicionais + " order by c.loca_id, c.imov_id, c.pghi_amreferenciapagamento, c.pghi_dtpagamento "; // colecaoPagamento = session.createQuery(hql).list(); retorno = session .createSQLQuery(hql) .addScalar("idPagamento", Hibernate.INTEGER) .addScalar("idConta", Hibernate.INTEGER) .addScalar("anoMesConta", Hibernate.INTEGER) .addScalar("valorAguaConta", Hibernate.BIG_DECIMAL) .addScalar("valorEsgotoConta", Hibernate.BIG_DECIMAL) .addScalar("valorDebitosConta", Hibernate.BIG_DECIMAL) .addScalar("valorCreditosConta", Hibernate.BIG_DECIMAL) .addScalar("dataPagamento", Hibernate.DATE) .addScalar("anoMesPagamento", Hibernate.INTEGER) .addScalar("valorPagamento", Hibernate.BIG_DECIMAL) .addScalar("idSituacaoPagamentoAtual", Hibernate.INTEGER) .addScalar("situacaoPagamentoAtual", Hibernate.STRING) .addScalar("idSituacaoPagamentoAnterior", Hibernate.INTEGER) .addScalar("situacaoPagamentoAnterior", Hibernate.STRING) .addScalar("idDocumentoTipo", Hibernate.INTEGER).addScalar( "idImovel", Hibernate.INTEGER).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Filtrar os pagamentos historicos do Cliente Guia Pagamento * * [UC0255] Filtrar Pagamentos * * @author Rafael Corr�a * @date 06/10/06 * * @param FiltroPagamento * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<PagamentoHistorico> pesquisarPagamentoHistoricoClienteGuiaPagamento( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos) throws ErroRepositorioException { Collection<PagamentoHistorico> retorno = null; // Collection<PagamentoHistorico> colecaoPagamentoHistorico = null; String hql = ""; Session session = HibernateUtil.getSession(); try { // 2. O sistema seleciona os pagamentos de guia de pagamento do // cliente informado (a partir da tabela // PAGAMENTO com CLIE_ID = Id do cliente informado ou com // GPAG_ID = // GPAG_ID da tabela // CLIENTE_GUIA_PAGAMENTO com CLIE_ID = Id do cliente informado // e // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente // com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this .criarCondicionaisPagamentoHistoricoCliente(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); hql = " SELECT c.pghi_id as idPagamento, b1.gpag_id as idGuiaPagamento, c.clie_id as idCliente, b1.gpag_vldebito as valorGuia, " + " c.pghi_dtpagamento as dataPagamento, c.pghi_amreferenciapagamento as anoMesPagamento, k.dbtp_id as idTipoDebitoGuia, k.dbtp_dsdebitotipo as tipoDebitoGuia, " + " m.dbtp_id as idTipoDebitoPagamento, m.dbtp_dsdebitotipo as tipoDebitoPagamento, " + " c.pghi_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, " + " l.pgst_id as idSituacaoPagamentoAnterior, l.pgst_dsabreviado as situacaoPagamentoAnterior, c.dotp_id as idDocumentoTipo, " + " c.imov_id as idImovel, c.loca_id as idLocalidade " + " FROM arrecadacao.pagamento_historico c " + " INNER JOIN " + " faturamento.guia_pagamento b1 " + " on b1.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente_guia_pagamento b " + " on b.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " INNER JOIN " + " faturamento.debito_tipo k " + " on b1.dbtp_id = k.dbtp_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao l " + " on c.pgst_idanterior = l.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE " + condicionais + " union " + " SELECT c.pghi_id as idPagamento, b1.gpag_id as idGuiaPagamento, c.clie_id as idCliente, b1.gpag_vldebito as valorGuia, " + " c.pghi_dtpagamento as dataPagamento, c.pghi_amreferenciapagamento as anoMesPagamento, k.dbtp_id as idTipoDebitoGuia, k.dbtp_dsdebitotipo as tipoDebitoGuia, " + " m.dbtp_id as idTipoDebitoPagamento, m.dbtp_dsdebitotipo as tipoDebitoPagamento, " + " c.pghi_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, " + " l.pgst_id as idSituacaoPagamentoAnterior, l.pgst_dsabreviado as situacaoPagamentoAnterior, c.dotp_id as idDocumentoTipo, " + " c.imov_id as idImovel, c.loca_id as idLocalidade " + " FROM arrecadacao.pagamento_historico c " + " INNER JOIN " + " faturamento.guia_pagamento b1 " + " on b1.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente_guia_pagamento b " + " on b.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " INNER JOIN " + " faturamento.debito_tipo k " + " on b1.dbtp_id = k.dbtp_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao l " + " on c.pgst_idanterior = l.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE " + condicionais + " union " + " SELECT c.pghi_id as idPagamento, b.gpag_id as idGuiaPagamento, c.clie_id as idCliente, b.gpag_vldebito as valorGuia, " + " c.pghi_dtpagamento as dataPagamento, c.pghi_amreferenciapagamento as anoMesPagamento, k.dbtp_id as idTipoDebitoGuia, k.dbtp_dsdebitotipo as tipoDebitoGuia, " + " m.dbtp_id as idTipoDebitoPagamento, m.dbtp_dsdebitotipo as tipoDebitoPagamento, " + " c.pghi_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, " + " l.pgst_id as idSituacaoPagamentoAnterior, l.pgst_dsabreviado as situacaoPagamentoAnterior, c.dotp_id as idDocumentoTipo, " + " c.imov_id as idImovel, c.loca_id as idLocalidade " + " FROM arrecadacao.pagamento_historico c " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = c.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " LEFT OUTER JOIN " + " faturamento.guia_pagamento b " + " on b.gpag_id = c.gpag_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo k " + " on b.dbtp_id = k.dbtp_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao l " + " on c.pgst_idanterior = l.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE "; idTipoRelacao = null; String condicionaisClientePagamento = this .criarCondicionaisPagamentoHistoricoCliente(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); hql = hql + condicionaisClientePagamento + " order by idLocalidade, idImovel, idTipoDebitoPagamento, dataPagamento "; retorno = session .createSQLQuery(hql) .addScalar("idPagamento", Hibernate.INTEGER) .addScalar("idGuiaPagamento", Hibernate.INTEGER) .addScalar("idCliente", Hibernate.INTEGER) .addScalar("valorGuia", Hibernate.BIG_DECIMAL) .addScalar("dataPagamento", Hibernate.DATE) .addScalar("anoMesPagamento", Hibernate.INTEGER) .addScalar("idTipoDebitoGuia", Hibernate.INTEGER) .addScalar("tipoDebitoGuia", Hibernate.STRING) .addScalar("idTipoDebitoPagamento", Hibernate.INTEGER) .addScalar("tipoDebitoPagamento", Hibernate.STRING) .addScalar("valorPagamento", Hibernate.BIG_DECIMAL) .addScalar("idSituacaoPagamentoAtual", Hibernate.INTEGER) .addScalar("situacaoPagamentoAtual", Hibernate.STRING) .addScalar("idSituacaoPagamentoAnterior", Hibernate.INTEGER) .addScalar("situacaoPagamentoAnterior", Hibernate.STRING) .addScalar("idDocumentoTipo", Hibernate.INTEGER).addScalar( "idImovel", Hibernate.INTEGER).addScalar( "idLocalidade", Hibernate.INTEGER).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Filtra os pagamentos historicos do debito a cobrar * * [UC0255] Filtrar Pagamentos * * @author Rafael Corr�a * @date 12/06/06,06/10/2006 * * @param FiltroPagamento * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection pesquisarPagamentoHistoricoClienteDebitoACobrar( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos) throws ErroRepositorioException { Collection retorno = new ArrayList(); // Collection<PagamentoHistorico> colecaoPagamentoHistorico = null; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this .criarCondicionaisPagamentoHistoricoCliente(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); // 3. O sistema seleciona os pagamentos de d�bito a cobrar do // cliente informado (a partir da tabela // PAGAMENTO com DBAC_ID = DBAC_ID da tabela DEBITO_A_COBRAR com // IMOV_ID = IMOV_ID da tabela // CLIENTE_IMOVEL com CLIE_ID = Id do cliente informado e CRTP_ID // com valor correspondente a um dos // tipos de rela��o do Cliente com o Im�vel, caso selecionados e // demais par�metros de sele��o informados) hql = " SELECT c.pghi_id as idPagamento, c.imov_id as idImovel, c.dbac_id as idDebitoACobrar, " + " b1.dbac_vldebito as valorDebito, b1.dbac_nnprestacaocobradas as numeroPrestacaoCobradas, " + " b1.dbac_nnprestacaodebito as numeroPrestacaoDebito, c.pghi_dtpagamento as dataPagamento, " + " c.pghi_amreferenciapagamento as anoMesPagamento, k.dbtp_id as idTipoDebitoDebito, k.dbtp_dsdebitotipo as tipoDebitoDebito, " + " m.dbtp_id as idTipoDebitoPagamento, m.dbtp_dsdebitotipo as tipoDebitoPagamento, c.pghi_vlpagamento as valorPagamento, " + " j.pgst_id as idSituacaoPagamentoAtual, j.pgst_dsabreviado as situacaoPagamentoAtual, j.pgst_id as idSituacaoPagamentoAnterior, " + " j.pgst_dsabreviado as situacaoPagamentoAnterior, c.dotp_id as idDocumentoTipo, b1.imov_id as idImovelDebito, c.loca_id as idLocalidade, " + " b1.dbac_nnparcelabonus as numeroParcelaBonus " + " FROM arrecadacao.pagamento_historico c " + " INNER JOIN " + " faturamento.debito_a_cobrar b1 " + " on b1.dbac_id = c.dbac_id " + " INNER JOIN " + " cadastro.cliente_imovel b " + " on b.imov_id = b1.imov_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " INNER JOIN " + " faturamento.debito_tipo k " + " on b1.dbtp_id = k.dbtp_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " LEFT OUTER JOIN " + " arrecadacao.pagamento_situacao l " + " on c.pgst_idanterior = l.pgst_id " + " LEFT OUTER JOIN " + " faturamento.debito_tipo m " + " on c.dbtp_id = m.dbtp_id " + " WHERE " + condicionais + " order by idLocalidade, idImovel, idTipoDebitoPagamento, dataPagamento "; retorno = session .createSQLQuery(hql) .addScalar("idPagamento", Hibernate.INTEGER) .addScalar("idImovel", Hibernate.INTEGER) .addScalar("idDebitoACobrar", Hibernate.INTEGER) .addScalar("valorDebito", Hibernate.BIG_DECIMAL) .addScalar("numeroPrestacaoCobradas", Hibernate.SHORT) .addScalar("numeroPrestacaoDebito", Hibernate.SHORT) .addScalar("dataPagamento", Hibernate.DATE) .addScalar("anoMesPagamento", Hibernate.INTEGER) .addScalar("idTipoDebitoDebito", Hibernate.INTEGER) .addScalar("tipoDebitoDebito", Hibernate.STRING) .addScalar("idTipoDebitoPagamento", Hibernate.INTEGER) .addScalar("tipoDebitoPagamento", Hibernate.STRING) .addScalar("valorPagamento", Hibernate.BIG_DECIMAL) .addScalar("idSituacaoPagamentoAtual", Hibernate.INTEGER) .addScalar("situacaoPagamentoAtual", Hibernate.STRING) .addScalar("idSituacaoPagamentoAnterior", Hibernate.INTEGER) .addScalar("situacaoPagamentoAnterior", Hibernate.STRING) .addScalar("idDocumentoTipo", Hibernate.INTEGER).addScalar( "idImovelDebito", Hibernate.INTEGER).addScalar( "idLocalidade", Hibernate.INTEGER).addScalar("numeroParcelaBonus", Hibernate.SHORT).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Filtrar a quantidade de pagamento historicos do cliente * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do Cliente * * @author Rafael Santos * @date 06/10/06 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Integer pesquisarPagamentoHistoricoClienteCount(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos) throws ErroRepositorioException { int retorno = 0; Object pagamentoHistoricoClienteCount; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamentoHistorico( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); hql = " select count (pagamentoHistorico.id) " + " from gcom.arrecadacao.pagamento.PagamentoHistorico pagamentoHistorico " + " inner join pagamentoHistorico.cliente as cliente " + condicionais + " "; pagamentoHistoricoClienteCount = session.createQuery(hql) .setMaxResults(1).uniqueResult(); if (pagamentoHistoricoClienteCount != null) { retorno = (Integer) pagamentoHistoricoClienteCount; } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Filtra os pagamento historicos do cliente * * [UC0255] Filtrar Pagamentos * * @author Rafael Santos * @date 21/08/06,06/10/2006 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<PagamentoHistorico> pesquisarPagamentoHistoricoCliente( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, Integer numeroPagina) throws ErroRepositorioException { Collection<PagamentoHistorico> retorno = new ArrayList(); String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamentoHistorico( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); hql = " select distinct pagamentoHistorico " + " from gcom.arrecadacao.pagamento.PagamentoHistorico pagamentoHistorico " + " inner join pagamentoHistorico.cliente as cliente " + " LEFT JOIN FETCH pagamentoHistorico.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.contaHistorico conta " + " LEFT JOIN FETCH pagamentoHistorico.documentoTipo " + " LEFT JOIN FETCH pagamentoHistorico.debitoTipo " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAtual " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAnterior " + " LEFT JOIN FETCH pagamentoHistorico.guiaPagamento guiaPagamento " + " LEFT JOIN FETCH guiaPagamento.debitoTipo " + " LEFT JOIN FETCH pagamentoHistorico.avisoBancario avisoBancario " + " LEFT JOIN FETCH avisoBancario.arrecadador " + condicionais + " order by pagamentoHistorico.documentoTipo.id,pagamentoHistorico.dataPagamento " + " "; retorno = session.createQuery(hql) .setFirstResult(10 * numeroPagina).setMaxResults(10).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Filtra a quantiadade dos Pagamento Historicos da Localidade * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do Imovel pesquisarPagamentoImovelParaPaginacao * * @author Rafael Santos * @date 06/10/2006 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Integer pesquisarPagamentoHistoricoLocalidadeCount(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos) throws ErroRepositorioException { int retorno = 0; Object pagamentoHistoricoLocalidadeCount; String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamentoHistorico( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); hql = " select count(pagamentoHistorico.id) " + " from gcom.arrecadacao.pagamento.PagamentoHistorico pagamentoHistorico " + condicionais + " "; pagamentoHistoricoLocalidadeCount = session.createQuery(hql) .setMaxResults(1).uniqueResult(); if (pagamentoHistoricoLocalidadeCount != null) { retorno = (Integer) pagamentoHistoricoLocalidadeCount; } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Filtra os Pagamento Historicos da Localidade * * [UC0255] Filtrar Pagamentos * * @author Rafael Santos * @date 06/10/2006 * * @param FiltroPagamento * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<PagamentoHistorico> pesquisarPagamentoHistoricoLocalidade( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, Integer numeroPagina) throws ErroRepositorioException { Collection<PagamentoHistorico> retorno = null; // Collection<PagamentoHistorico> colecaoPagamentoHistorico = null; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamentoHistorico( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); // 3. O sistema seleciona os pagamentos de d�bito a cobrar do // cliente informado (a partir da tabela // PAGAMENTO com DBAC_ID = DBAC_ID da tabela DEBITO_A_COBRAR com // IMOV_ID = IMOV_ID da tabela // CLIENTE_IMOVEL com CLIE_ID = Id do cliente informado e CRTP_ID // com valor correspondente a um dos // tipos de rela��o do Cliente com o Im�vel, caso selecionados e // demais par�metros de sele��o informados) hql = " select distinct pagamentoHistorico " + " from gcom.arrecadacao.pagamento.PagamentoHistorico pagamentoHistorico " + " INNER JOIN FETCH pagamentoHistorico.avisoBancario avbc " + " INNER JOIN FETCH avbc.arrecadador arrec " + " INNER JOIN FETCH arrec.cliente cliArrec " + " INNER JOIN FETCH pagamentoHistorico.documentoTipo doctoTp " + " LEFT JOIN FETCH pagamentoHistorico.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.contaHistorico conta " + " LEFT JOIN FETCH pagamentoHistorico.imovel imov " + " LEFT JOIN FETCH imov.localidade locImov " + " LEFT JOIN FETCH imov.setorComercial setComImov " + " LEFT JOIN FETCH imov.quadra quadra " + " LEFT JOIN FETCH pagamentoHistorico.localidade loc " + " LEFT JOIN FETCH loc.gerenciaRegional gr " + " LEFT JOIN FETCH pagamentoHistorico.guiaPagamento gpag " + " LEFT JOIN FETCH gpag.debitoTipo dbtpGpag " + " LEFT JOIN FETCH pagamentoHistorico.debitoACobrarGeral dbcbGeral " + " LEFT JOIN FETCH dbcbGeral.debitoACobrar dbcb " + " LEFT JOIN FETCH dbcb.debitoTipo dbtpDbcb " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAtual pagtoSitAtual " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAnterior pagtoSitAnterior " + condicionais + " "; retorno = session.createQuery(hql) .setFirstResult(10 * numeroPagina).setMaxResults(10).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Filtra oas pagamento historicos do Aviso Bancario * * [UC0255] Filtrar Pagamentos * * @author Rafael Santos * @date 06/10/2006 * * @param FiltroPagamento * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<PagamentoHistorico> pesquisarPagamentoHistoricoAvisoBancario( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos) throws ErroRepositorioException { Collection<PagamentoHistorico> retorno = null; // Collection<PagamentoHistorico> colecaoPagamentoHistorico = null; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamentoHistorico( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); // 3. O sistema seleciona os pagamentos de d�bito a cobrar do // cliente informado (a partir da tabela // PAGAMENTO com DBAC_ID = DBAC_ID da tabela DEBITO_A_COBRAR com // IMOV_ID = IMOV_ID da tabela // CLIENTE_IMOVEL com CLIE_ID = Id do cliente informado e CRTP_ID // com valor correspondente a um dos // tipos de rela��o do Cliente com o Im�vel, caso selecionados e // demais par�metros de sele��o informados) hql = " select distinct pagamentoHistorico " + " from gcom.arrecadacao.pagamento.PagamentoHistorico pagamentoHistorico " + " INNER JOIN FETCH pagamentoHistorico.avisoBancario as avisoBancario " + " LEFT JOIN FETCH pagamentoHistorico.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.contaHistorico conta " + " LEFT JOIN FETCH pagamentoHistorico.guiaPagamento gpag " + " LEFT JOIN FETCH gpag.debitoTipo dbtpGpag " + " LEFT JOIN FETCH pagamentoHistorico.debitoACobrarGeral dbcbGeral " + " LEFT JOIN FETCH dbcbGeral.debitoACobrar dbcb " + " LEFT JOIN FETCH dbcb.debitoTipo dbtpDbcb " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAtual pagtoSitAtual " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAnterior pagtoSitAnterior " + condicionais + " "; retorno = session.createQuery(hql).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Filtra a quantidade de pagamento historicos do avio bancario * * [UC0255] Filtrar Pagamentos * * @author Rafael Santos * @date 06/10/2006 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Integer pesquisarPagamentoHistoricoAvisoBancarioCount( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos) throws ErroRepositorioException { int retorno = 0; Object pagamentoHistoricoAvisoBancarioCount; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamentoHistorico( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); hql = " select count (pagamentoHistorico.id) " + " from gcom.arrecadacao.pagamento.PagamentoHistorico pagamentoHistorico " + " inner join pagamentoHistorico.avisoBancario as avisoBancario " + condicionais + " "; pagamentoHistoricoAvisoBancarioCount = session.createQuery(hql) .setMaxResults(1).uniqueResult(); if (pagamentoHistoricoAvisoBancarioCount != null) { retorno = (Integer) pagamentoHistoricoAvisoBancarioCount; } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Filtra os pagamento historicos do aviso bancario para pagina��o * * [UC0255] Filtrar Pagamentos * * @author Rafael Santos * @date 06/10/2006 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<PagamentoHistorico> pesquisarPagamentoHistoricoAvisoBancarioParaPaginacao( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, Integer numeroPagina) throws ErroRepositorioException { Collection<PagamentoHistorico> retorno = new ArrayList(); String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamentoHistorico( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); hql = " select distinct pagamentoHistorico " + " from gcom.arrecadacao.pagamento.PagamentoHistorico pagamentoHistorico " + " inner join pagamentoHistorico.avisoBancario as avisoBancario " + " LEFT JOIN FETCH pagamentoHistorico.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.contaHistorico conta " + " LEFT JOIN FETCH pagamentoHistorico.cliente " + " LEFT JOIN FETCH pagamentoHistorico.documentoTipo " + " LEFT JOIN FETCH pagamentoHistorico.debitoTipo " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAtual " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAnterior " + " LEFT JOIN FETCH pagamentoHistorico.guiaPagamento guiaPagamento " + " LEFT JOIN FETCH pagamentoHistorico.avisoBancario avisoBancario " + " LEFT JOIN FETCH guiaPagamento.debitoTipo " + " LEFT JOIN FETCH avisoBancario.arrecadador " + condicionais + " "; retorno = session.createQuery(hql) .setFirstResult(10 * numeroPagina).setMaxResults(10).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Filtrar pagamentos historicos do movimento arrecador * * [UC0255] Filtrar Pagamentos * * @author Rafael Santos * @date 06/10/2006 * * @param FiltroPagamento * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection<PagamentoHistorico> pesquisarPagamentoHistoricoMovimentoArrecadador( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos) throws ErroRepositorioException { Collection<PagamentoHistorico> retorno = null; // Collection<PagamentoHistorico> colecaoPagamentoHistorico = null; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamentoHistorico( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos); // 3. O sistema seleciona os pagamentos de d�bito a cobrar do // cliente informado (a partir da tabela // PAGAMENTO com DBAC_ID = DBAC_ID da tabela DEBITO_A_COBRAR com // IMOV_ID = IMOV_ID da tabela // CLIENTE_IMOVEL com CLIE_ID = Id do cliente informado e CRTP_ID // com valor correspondente a um dos // tipos de rela��o do Cliente com o Im�vel, caso selecionados e // demais par�metros de sele��o informados) hql = " select distinct pagamentoHistorico " + " from gcom.arrecadacao.pagamento.PagamentoHistorico pagamentoHistorico " + " INNER JOIN FETCH pagamentoHistorico.arrecadadorMovimentoItem as arrecadadorMovimentoItem " + " INNER JOIN FETCH arrecadadorMovimentoItem.arrecadadorMovimento as arrecadadorMovimento " + " INNER JOIN FETCH pagamentoHistorico.avisoBancario avbc " + " INNER JOIN FETCH avbc.arrecadador arrec " + " INNER JOIN FETCH pagamentoHistorico.documentoTipo doctoTp " + " LEFT JOIN FETCH pagamentoHistorico.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.contaHistorico conta " + " LEFT JOIN FETCH pagamentoHistorico.guiaPagamento gpag " + " LEFT JOIN FETCH gpag.debitoTipo dbtpGpag " + " LEFT JOIN FETCH pagamentoHistorico.debitoACobrarGeral dbcbGeral " + " LEFT JOIN FETCH dbcbGeral.debitoACobrar dbcb " + " LEFT JOIN FETCH dbcb.debitoTipo dbtpDbcb " + " LEFT JOIN FETCH pagamentoHistorico.arrecadacaoForma arrecForma " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAtual pagtoSitAtual " + " LEFT JOIN FETCH pagamentoHistorico.pagamentoSituacaoAnterior pagtoSitAnterior " + " LEFT JOIN FETCH pagamentoHistorico.cliente cli " + condicionais + " order by pagamentoHistorico.localidade.id, pagamentoHistorico.imovel.id, " + " pagamentoHistorico.debitoTipo.id, pagamentoHistorico.dataPagamento " + " "; retorno = session.createQuery(hql).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * por historico * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos com os condicionais informados * criarCondicionaisPagamentoHistorico * * @author Rafael Santos * @date 07/10/2006 * * @param idImovel * @param idCliente * @param idTipoRelacao * @param localidadeInicial * @param localidadeFinal * @param idAvisoBancario * @param idArrecadador * @param periodoArrecadacaoInicial * @param periodoArrecadacaoFinal * @param periodoPagamentoInicio * @param periodoPagamentoFim * @param dataPagamentoInicial * @param dataPagamentoFinal * @param idsPagamentosSituacoes * @param idsDebitosTipos * @param idsArrecadacaoForma * @param idsDocumentosTipos * @return */ public String criarCondicionaisPagamentoHistorico(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos) { String sql = " where "; if (idImovel != null && !idImovel.equals("")) { sql = sql + " pagamentoHistorico.imovel.id = " + idImovel + " and "; } if (idCliente != null && !idCliente.equals("")) { sql = sql + " pagamentoHistorico.cliente.id = " + idCliente + " and "; } if (idTipoRelacao != null && !idTipoRelacao.equals("")) { sql = sql + " clienteRelacaoTipo.id = " + idTipoRelacao + " and "; } if (localidadeInicial != null && localidadeFinal != null && !localidadeInicial.equals("") && !localidadeFinal.equals("")) { sql = sql + " pagamentoHistorico.localidade.id >= " + localidadeInicial + " and "; sql = sql + " pagamentoHistorico.localidade.id <= " + localidadeFinal + " and "; } if (idAvisoBancario != null && !idAvisoBancario.equals("")) { sql = sql + " pagamentoHistorico.avisoBancario.id = " + idAvisoBancario + " and "; } if (idArrecadador != null && !idArrecadador.equals("")) { sql = sql + " arrecadadorMovimento.id = " + idArrecadador + " and "; } if (periodoArrecadacaoInicial != null && !periodoArrecadacaoInicial.equals("")) { sql = sql + " pagamentoHistorico.anoMesReferenciaArrecadacao >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoInicial) + " and "; } if (periodoArrecadacaoFinal != null && !periodoArrecadacaoFinal.equals("")) { sql = sql + " pagamentoHistorico.anoMesReferenciaArrecadacao <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoFinal) + " and "; } if (periodoPagamentoInicio != null && !periodoPagamentoInicio.equals("")) { sql = sql + " pagamentoHistorico.anoMesReferenciaPagamento >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoInicio) + " and "; } if (periodoPagamentoFim != null && !periodoPagamentoFim.equals("")) { sql = sql + " pagamentoHistorico.anoMesReferenciaPagamento <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoFim) + " and "; } if (dataPagamentoInicial != null && !dataPagamentoInicial.equals("")) { sql = sql + " pagamentoHistorico.dataPagamento >= :dataPagamentoInicial and "; } if (dataPagamentoFinal != null && !dataPagamentoFinal.equals("")) { sql = sql + " pagamentoHistorico.dataPagamento <= :dataPagamentoFinal and "; } if (idsPagamentosSituacoes != null && !idsPagamentosSituacoes.equals("")) { String valoresIn = ""; for (int i = 0; i < idsPagamentosSituacoes.length; i++) { if (!idsPagamentosSituacoes[i].equals("")) { valoresIn = valoresIn + idsPagamentosSituacoes[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " pagamentoHistorico.pagamentoSituacaoAtual.id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsDebitosTipos != null && !idsDebitosTipos.equals("") && !idsDebitosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDebitosTipos.length; i++) { if (!idsDebitosTipos[i].equals("")) { valoresIn = valoresIn + idsDebitosTipos[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " pagamentoHistorico.debitoTipo.id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsArrecadacaoForma != null && !idsArrecadacaoForma.equals("") && !idsArrecadacaoForma[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsArrecadacaoForma.length; i++) { if (!idsArrecadacaoForma[i].equals("")) { valoresIn = valoresIn + idsArrecadacaoForma[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " pagamentoHistorico.arrecadacaoForma.id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsDocumentosTipos != null && !idsDocumentosTipos.equals("") && !idsDocumentosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDocumentosTipos.length; i++) { if (!idsDocumentosTipos[i].equals("")) { valoresIn = valoresIn + idsDocumentosTipos[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " pagamentoHistorico.documentoTipo.id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } // retira o " and " q fica sobrando no final da query sql = Util.removerUltimosCaracteres(sql, 4); // [SB0006] Ordenar Pagamentos de Acordo com o Tipo de Documento // 1. Para os pagamentos com tipo de documento(DOPT_ID) com valor // correspondente a conta, // ordena os pagamentos pela localidade (LOCA_ID), matr�cula do im�vel // (IMOV_ID), ano/m�s // de refer�nca do pagamento(PGHI_AMREFERENCIAPAGAMENTO), e data de // pagamento (PGHI_DTPAGAMENTO) // 2. Para os pagamentos com tipo do documento(DOPT_ID) com o valor // correspondente a guia de // pagamento, ordena os pagamentos pela localidade (LOCA_ID), matr�cula // do im�vel(IMOV_ID), // tipo do d�bito(DBTP_ID), e data de pagamento (PGHI_DTPAGAMENTO) // 3. Para os pagamentos com tipo de documento(DOPT_ID) com o valor // correspondente a d�bito a // cobrar, ordena os pagamentos pela localidade (LOCA_ID), matr�cula do // im�vel(IMOV_ID), // tipo do d�bito(DBTP_ID), e data de pagamento (PGHI_DTPAGAMENTO) return sql; } /** * Faz a pesquisa de devolu��oHistorico fazendo os carregamentos de * clienteContas, clienteImoveis, clientesGuiaPagamento * * @author Vivianne Sousa * @date 09/10/2006 * * @param FiltroDevolucaoHistorico * @return Collection<DevolucaoHistorico> * @throws ErroRepositorioException */ public Collection<DevolucaoHistorico> pesquisarDevolucaoHistorico( FiltroDevolucaoHistorico filtroDevolucaoHistorico) throws ErroRepositorioException { Collection<DevolucaoHistorico> retorno = null; Session session = HibernateUtil.getSession(); try { retorno = new ArrayList( new CopyOnWriteArraySet<DevolucaoHistorico>( GeradorHQLCondicional.gerarCondicionalQuery( filtroDevolucaoHistorico, "devolucaoHistorico", "select distinct devolucaoHistorico from gcom.arrecadacao.DevolucaoHistorico as devolucaoHistorico " + "left join fetch devolucaoHistorico.guiaDevolucao " + "left join devolucaoHistorico.guiaDevolucao.conta.clienteContas clienteContas " + "left join devolucaoHistorico.imovel.clienteImoveis clienteImoveis " + "left join fetch devolucaoHistorico.imovel as imov " + "left join fetch imov.localidade as loca " + "left join fetch imov.setorComercial " + "left join fetch imov.quadra " + "left join fetch devolucaoHistorico.debitoTipo " + "left join fetch devolucaoHistorico.avisoBancario avis " + "left join fetch avis.arrecadador arre " + "left join fetch arre.cliente " + "left join fetch devolucaoHistorico.devolucaoSituacaoAtual " + "left join fetch devolucaoHistorico.guiaDevolucao.documentoTipo " + "left join fetch loca.gerenciaRegional " + "left join devolucaoHistorico.guiaDevolucao.guiaPagamento.clientesGuiaPagamento clientesGuiaPagamento ", session).list())); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * hist�rico para o Relat�rio * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos hist�rico do tipo Debito a Cobrar do Cliente * * @author Rafael Corr�a * @date 13/11/06 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarPagamentoHistoricoLocalidadeRelatorio( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection retorno = new ArrayList(); String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamentoRelatorio( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = "SELECT pagto.id, loc.id, loc.descricao, " + "gr.id, gr.nome, imov.id, cli.id, cli.nome, " + "cliArrec.nome, pagto.dataPagamento, " + "pagto.anoMesReferenciaPagamento, dbtp.descricao, " + "conta.valorAgua, conta.valorEsgoto, conta.valorDebitos, " + "conta.valorCreditos, " + "CASE WHEN dbcb is not null " + "THEN dbcb.valorDebito " + "ELSE dbcbHist.valorDebito " + "END as valorDebito, " + "CASE WHEN dbcb is not null " + "THEN dbcb.numeroPrestacaoDebito " + "ELSE dbcbHist.prestacaoDebito " + "END as numeroPrestacaoDebito, " + "CASE WHEN dbcb is not null " + "THEN dbcb.numeroPrestacaoCobradas " + "ELSE dbcbHist.prestacaoCobradas " + "END as numeroPrestacaoCobradas, " + "gpag.valorDebito, pagto.valorPagamento, " + "pagtoSitAtual.id, pagtoSitAtual.descricao, doctoTp.id, conta.valorImposto " + "FROM PagamentoHistorico pagto " + "INNER JOIN pagto.localidade loc " + "INNER JOIN loc.gerenciaRegional gr " + "INNER JOIN pagto.avisoBancario avbc " + "INNER JOIN avbc.arrecadador arrec " + "INNER JOIN arrec.cliente cliArrec " + "INNER JOIN pagto.documentoTipo doctoTp " + "LEFT JOIN pagto.imovel imov " + "LEFT JOIN pagto.cliente cli " + "LEFT JOIN pagto.debitoTipo dbtp " + "LEFT JOIN pagto.contaGeral contaGeral " + "LEFT JOIN contaGeral.contaHistorico conta " + "LEFT JOIN pagto.guiaPagamento gpag " + "LEFT JOIN pagto.debitoACobrarGeral dbcbGeral " + "LEFT JOIN dbcbGeral.debitoACobrar dbcb " + "LEFT JOIN dbcbGeral.debitoACobrarHistorico dbcbHist " + "LEFT JOIN pagto.pagamentoSituacaoAtual pagtoSitAtual " + "LEFT JOIN pagto.arrecadadorMovimentoItem arrecMovItem " + "LEFT JOIN arrecMovItem.arrecadadorMovimento arrecMov " + "LEFT JOIN pagto.arrecadacaoForma arrecForma " + condicionais + " ORDER BY loc.id, imov.id, " + " dbtp.id, pagto.dataPagamento "; // hql = " select distinct pagamentoHistorico " // + " from gcom.arrecadacao.pagamento.PagamentoHistorico as // pagamentoHistorico " // + condicionais // + " order by pagamentoHistorico.localidade.id, // pagamentoHistorico.imovel.id, " // + " pagamentoHistorico.debitoTipo.id, // pagamentoHistorico.dataPagamento " // + " "; retorno = session.createQuery(hql).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Consulta dados da tabela dados diarios arrecadacao * * @author Rafael Santos * @created 21/10/2006 * * * @return * @throws ErroRepositorioException */ public Collection consultarDadosDiarios(int idGerenciaRegional, int idLocalidade, int idElo) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select gerenciaRegional.nome,localidade.descricao,elo.descricao " + " from ArrecadacaoDadosDiarios arrecadacaoDadosDiarios " + "left join arrecadacaoDadosDiarios.localidade localidade " + "left join localidade.localidade elo " + "left join arrecadacaoDadosDiarios.gerenciaRegional gerenciaRegional" + " where " + "localidade.id = :idLocalidade "; retorno = session.createQuery(consulta).setInteger("idLocalidade", idLocalidade).setMaxResults(1).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa conta e ag�ncia do sistema de par�metros * * @author Ana Maria * @date 23/10/06 * * @return Object[] * @throws ErroRepositorioException */ public Object[] pesquisarContaAgenciaSistemaParametro() throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = " select cont.numeroConta, agen.codigoAgencia" + " from SistemaParametro parm" + " left join parm.contaBancaria cont" + " left join cont.agencia agen"; retorno = (Object[]) session.createQuery(consulta).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa id do lan�amento contabil * * @author S�vio Luiz * @date 08/11/06 * * @return Integer * @throws ErroRepositorioException */ public Integer pesquisarIdLancamentoItemContabil(Integer idCreditoTipo) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = " select lancamentoItemContab.id " + " from CreditoTipo credTipo " + " left join credTipo.lancamentoItemContabil lancamentoItemContab " + " where credTipo.id = :idCreditoTipo"; retorno = (Integer) session.createQuery(consulta).setInteger( "idCreditoTipo", idCreditoTipo).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * pesquisar descri��o do D�bito Autom�tico * * @author S�vio Luiz * @date 22/11/06 * * @return Integer * @throws ErroRepositorioException */ public String pesquisarDescricaoDebitoAutomatico(Integer codigoRetorno) throws ErroRepositorioException { String retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = " select debAutomaticoRetCod.descricaoDebitoAutomaticoRetornoCodigo " + " from DebitoAutomaticoRetornoCodigo debAutomaticoRetCod " + " where debAutomaticoRetCod.id = :codigoRetorno"; retorno = (String) session.createQuery(consulta).setInteger( "codigoRetorno", codigoRetorno).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa a lista de ano/m�s de arrecada�a� menores e igual ao ano/m�s de * arrecada��o atual. * * [UC0300] Classificar Pagamentos e Devolu��es * * @author Raphael Rossiter, Pedro Alexandre * @date 18/04/2006, 29/11/2006 * * @param anoMesArrecadacaoAtual * @return * @throws ErroRepositorioException */ public Collection pesquisarAnoMesArrecadacaoMenorIgualAtual( Integer anoMesArrecadacaoAtual) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = " select distinct(anoMesReferenciaArrecadacao) from Pagamento pagamento " + " where pagamento.anoMesReferenciaArrecadacao <= :anoMesArrecadacaoAtual"; retorno = session.createQuery(consulta).setInteger( "anoMesArrecadacaoAtual", anoMesArrecadacaoAtual).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa a lista de ano/m�s de arrecada��o menores e igual ao ano/m�s de * arrecada��o atual e igual ao id do im�vel informado. * * [UC0300] Classificar Pagamentos e Devolu��es * * @author Raphael Rossiter, Pedro Alexandre * @date 18/04/2006, 29/11/2006 * * @param anoMesArrecadacaoAtual * @param idImovel * @return * @throws ErroRepositorioException */ public Collection pesquisarAnoMesArrecadacaoMenorIgualAtualPorImovel( Integer anoMesArrecadacaoAtual, Integer idImovel) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = " select distinct(anoMesReferenciaArrecadacao) from Pagamento pagamento " + " where pagamento.anoMesReferenciaArrecadacao <= :anoMesArrecadacaoAtual " + "and pagamento.imovel.id = :idImovel"; retorno = session.createQuery(consulta).setInteger( "anoMesArrecadacaoAtual", anoMesArrecadacaoAtual) .setInteger("idImovel", idImovel).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisar uma cole��o de ids de localidades que possuem pagamentos * * [UC0300] Classificar Pagamentos e Devolu��es * * @author Pedro Alexandre * @date 29/11/2006 * * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection pesquisarIdsImovelPorLocalidade(Integer idLocalidade, Integer numeroIndice, Integer quantidadeRegistros) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select distinct(imov.id) from Pagamento pgmt " + "inner join pgmt.imovel imov " + "inner join imov.localidade loca " + "left join pgmt.pagamentoSituacaoAtual pgstIdAtual " + "where loca.id = :idLocalidade and (pgstIdAtual.id is null or pgstIdAtual.id <> :idValorABaixar) " + " and pgmt.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao " + "order by imov.id"; retorno = session.createQuery(consulta) .setInteger("idLocalidade", idLocalidade) .setInteger("idValorABaixar", PagamentoSituacao.VALOR_A_BAIXAR) .setShort("indicadorClassificacao", ConstantesSistema.NAO) .setMaxResults(quantidadeRegistros).setFirstResult(numeroIndice).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de Movimento * Arrecadadores * * [UC0263] Filtrar Movimento dos Arrecadadores * * @author Vivianne Sousa * @date 30/11/06 * * @param codigoBanco * @param codigoRemessa * @param descricaoIdentificacaoServico * @param numeroSequencialArquivo * @param dataGeracaoInicio * @param dataGeracaoFim * @param ultimaAlteracaoInicio * @param ultimaAlteracaoFim * @param descricaoOcorrencia * @param indicadorAceitacao * @return */ public String criarCondicionaisMovimentoArrecadador(String codigoBanco, String codigoRemessa, String descricaoIdentificacaoServico, String numeroSequencialArquivo, Date dataGeracaoInicio, Date dataGeracaoFim, Date ultimaAlteracaoInicio, Date ultimaAlteracaoFim, String descricaoOcorrencia, String indicadorAceitacao, String indicadorAbertoFechado) { // String from = " FROM arrecadacao.arrecadador_movimento // arrecadadorMovimento "; String where = " WHERE "; // ------------------- Where ------------------------- if (codigoBanco != null && !codigoBanco.equals("")) { where = where + " arrecadadorMovimento.armv_cdbanco = " + codigoBanco + " and "; } if (codigoRemessa != null && !codigoRemessa.equals("")) { where = where + " arrecadadorMovimento.armv_cdremessa = " + codigoRemessa + " and "; } if (descricaoIdentificacaoServico != null && !descricaoIdentificacaoServico.trim().equals("")) { where = where + " arrecadadorMovimento.armv_dsidentificacaoservico = '" + descricaoIdentificacaoServico.trim() + "' and "; } if (numeroSequencialArquivo != null && !numeroSequencialArquivo.equals("")) { where = where + " arrecadadorMovimento.armv_nnnsa = " + numeroSequencialArquivo + " and "; } if (dataGeracaoInicio != null && !dataGeracaoInicio.equals("")) { String data1 = Util.recuperaDataInvertida(dataGeracaoInicio); if (data1 != null && !data1.equals("") && data1.trim().length() == 8) { data1 = data1.substring(0, 4) + "-" + data1.substring(4, 6) + "-" + data1.substring(6, 8); } where = where + " arrecadadorMovimento.armv_dtgeracao >= to_date('" + data1 + "', 'YYYY/MM/DD' ) and "; } if (dataGeracaoFim != null && !dataGeracaoFim.equals("")) { String data2 = Util.recuperaDataInvertida(dataGeracaoFim); if (data2 != null && !data2.equals("") && data2.trim().length() == 8) { data2 = data2.substring(0, 4) + "-" + data2.substring(4, 6) + "-" + data2.substring(6, 8); } where = where + " arrecadadorMovimento.armv_dtgeracao <= to_date('" + data2 + "', 'YYYY/MM/DD') and "; } // comentado por s�vio em 02/05/2007,foi colocado essa parte no m�todo // if (ultimaAlteracaoInicio != null && // !ultimaAlteracaoInicio.equals("")) { // // where = where + " arrecadadorMovimento.armv_tmultimaalteracao >= '" // + Util.formatarDataInicial(ultimaAlteracaoInicio) // + "' and "; // } // // if (ultimaAlteracaoFim != null && !ultimaAlteracaoFim.equals("")) { // // where = where + " arrecadadorMovimento.armv_tmultimaalteracao <= '" // + Util.formatarDataFinal(ultimaAlteracaoFim) + "' and "; // } if (indicadorAbertoFechado != null && !indicadorAbertoFechado.equals("")) { if (indicadorAbertoFechado.equals("" + ConstantesSistema.MOVIMENTO_ABERTO)) { // where = where + " armv_vltotalmovimento <> (select // sum(avbc_vlarrecadacaocalculado)" + // " from arrecadacao.aviso_bancario avisoBancario" + // " where arrecadadorMovimento.armv_id = avisoBancario.armv_id) // and "; where = where + " (armv_vltotalmovimento <> (select sum(avbc_vlarrecadacaocalculado)" + " from arrecadacao.aviso_bancario avisoBancario" + " where arrecadadorMovimento.armv_id = avisoBancario.armv_id)" + " or" + " 0 = (select count(*)" + " from arrecadacao.aviso_bancario aBancario" + " where arrecadadorMovimento.armv_id = aBancario.armv_id)) and "; } else if (indicadorAbertoFechado.equals("" + ConstantesSistema.MOVIMENTO_FECHADO)) { where = where + " armv_vltotalmovimento = (select sum(avbc_vlarrecadacaocalculado)" + " from arrecadacao.aviso_bancario avisoBancario" + " where arrecadadorMovimento.armv_id = avisoBancario.armv_id) and "; } } String subSelectMovimentoArrecadadorItem = ""; if (indicadorAceitacao != null && !indicadorAceitacao.equals("")) { subSelectMovimentoArrecadadorItem = " 0 < (select count(*)" + " from arrecadacao.arrecadador_mov_item arrecadadorMovimentoItem" + " where amit_icaceitacao = " + indicadorAceitacao + " and arrecadadorMovimento.armv_id = arrecadadorMovimentoItem.armv_id"; if (descricaoOcorrencia != null && !descricaoOcorrencia.equals("")) { if (descricaoOcorrencia .equals("" + ConstantesSistema.SEM_ITENS)) { // sem itens em ocorr�ncia subSelectMovimentoArrecadadorItem = subSelectMovimentoArrecadadorItem + " and amit_dsocorrencia = 'OK'"; } else { // com itens em ocorr�ncia subSelectMovimentoArrecadadorItem = subSelectMovimentoArrecadadorItem + " and amit_dsocorrencia <> 'OK'"; } } subSelectMovimentoArrecadadorItem = subSelectMovimentoArrecadadorItem + ")"; } else if (descricaoOcorrencia != null && !descricaoOcorrencia.equals("")) { if (descricaoOcorrencia.equals("" + ConstantesSistema.SEM_ITENS)) { // sem itens em ocorr�ncia subSelectMovimentoArrecadadorItem = " 0 < (select count(*)" + " from arrecadacao.arrecadador_mov_item arrecadadorMovimentoItem" + " where amit_dsocorrencia = 'OK'" + " and arrecadadorMovimento.armv_id = arrecadadorMovimentoItem.armv_id)"; } else { // com itens em ocorr�ncia subSelectMovimentoArrecadadorItem = " 0 < (select count(*)" + " from arrecadacao.arrecadador_mov_item arrecadadorMovimentoItem" + " where amit_dsocorrencia <> 'OK'" + " and arrecadadorMovimento.armv_id = arrecadadorMovimentoItem.armv_id)"; } } if (!subSelectMovimentoArrecadadorItem.equals("")) { where = where + subSelectMovimentoArrecadadorItem; } else { // retira o " and " q fica sobrando no final da query if (!where.trim().equals("WHERE")) { where = Util.removerUltimosCaracteres(where, 4); } } String sql = where; return sql; } /** * [UC0263] Filtrar Movimento dos Arrecadadores * * @author Vivianne Sousa * @date 30/11/06 * * @param codigoBanco * @param codigoRemessa * @param descricaoIdentificacaoServico * @param numeroSequencialArquivo * @param dataGeracaoInicio * @param dataGeracaoFim * @param ultimaAlteracaoInicio * @param ultimaAlteracaoFim * @param descricaoOcorrencia * @param indicadorAceitacao * @param numeroPagina * @param indicadorAbertoFechado * @return * @throws ErroRepositorioException */ public Collection filtrarMovimentoArrecadadorParaPaginacao( String codigoBanco, String codigoRemessa, String descricaoIdentificacaoServico, String numeroSequencialArquivo, Date dataGeracaoInicio, Date dataGeracaoFim, Date ultimaAlteracaoInicio, Date ultimaAlteracaoFim, String descricaoOcorrencia, String indicadorAceitacao, Integer numeroPagina, String indicadorAbertoFechado) throws ErroRepositorioException { Collection retorno = null; String sql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisMovimentoArrecadador( codigoBanco, codigoRemessa, descricaoIdentificacaoServico, numeroSequencialArquivo, dataGeracaoInicio, dataGeracaoFim, ultimaAlteracaoInicio, ultimaAlteracaoFim, descricaoOcorrencia, indicadorAceitacao, indicadorAbertoFechado); sql = " SELECT arrecadadorMovimento.armv_cdbanco as codBanco," + " arrecadadorMovimento.armv_cdremessa as codRemessa," + " arrecadadorMovimento.armv_dsidentificacaoservico as descIdentServico," + " arrecadadorMovimento.armv_nnnsa as numeroSeqArquivo," + " arrecadadorMovimento.armv_id as id," + " arrecadadorMovimento.armv_dtgeracao as dataGeracao," + " arrecadadorMovimento.armv_nnregistrosmovimento as numRegistroMovimento," + " arrecadadorMovimento.armv_vltotalmovimento as vlTotalMovimento," + " arrecadadorMovimento.armv_tmultimaalteracao as ultimaAlteracao, " + " arrecadadorMovimento.armv_nmbanco as nomeBanco" + " FROM arrecadacao.arrecadador_movimento arrecadadorMovimento " + condicionais; Date dataInicio = null; Date dataFim = null; if (ultimaAlteracaoInicio != null && !ultimaAlteracaoInicio.equals("")) { dataInicio = Util.formatarDataInicial(ultimaAlteracaoInicio); if (condicionais.trim().equals("WHERE")) { sql = sql + "arrecadadorMovimento.armv_tmultimaalteracao >= :dataInicio"; } else { sql = sql + " and arrecadadorMovimento.armv_tmultimaalteracao >= :dataInicio"; } } if (ultimaAlteracaoFim != null && !ultimaAlteracaoFim.equals("")) { dataFim = Util.formatarDataFinal(ultimaAlteracaoFim); sql = sql + " and arrecadadorMovimento.armv_tmultimaalteracao <= :dataFim"; } sql = sql + " ORDER BY arrecadadorMovimento.armv_nnnsa"; if (dataInicio != null && dataFim != null) { retorno = session.createSQLQuery(sql).addScalar("codBanco", Hibernate.SHORT).addScalar("codRemessa", Hibernate.SHORT).addScalar("descIdentServico", Hibernate.STRING).addScalar("numeroSeqArquivo", Hibernate.INTEGER).addScalar("id", Hibernate.INTEGER) .addScalar("dataGeracao", Hibernate.DATE).addScalar( "numRegistroMovimento", Hibernate.INTEGER) .addScalar("vlTotalMovimento", Hibernate.BIG_DECIMAL) .addScalar("ultimaAlteracao", Hibernate.TIMESTAMP) .addScalar("nomeBanco", Hibernate.STRING).setTimestamp( "dataInicio", dataInicio).setTimestamp( "dataFim", dataFim).setFirstResult( 10 * numeroPagina).setMaxResults(10).list(); } else { retorno = session.createSQLQuery(sql).addScalar("codBanco", Hibernate.SHORT).addScalar("codRemessa", Hibernate.SHORT).addScalar("descIdentServico", Hibernate.STRING).addScalar("numeroSeqArquivo", Hibernate.INTEGER).addScalar("id", Hibernate.INTEGER) .addScalar("dataGeracao", Hibernate.DATE).addScalar( "numRegistroMovimento", Hibernate.INTEGER) .addScalar("vlTotalMovimento", Hibernate.BIG_DECIMAL) .addScalar("ultimaAlteracao", Hibernate.TIMESTAMP) .addScalar("nomeBanco", Hibernate.STRING) .setFirstResult(10 * numeroPagina).setMaxResults(10) .list(); } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0263] Filtrar Movimento dos Arrecadadores * * @author Vivianne Sousa * @date 30/11/06 * * @param codigoBanco * @param codigoRemessa * @param descricaoIdentificacaoServico * @param numeroSequencialArquivo * @param dataGeracaoInicio * @param dataGeracaoFim * @param ultimaAlteracaoInicio * @param ultimaAlteracaoFim * @param descricaoOcorrencia * @param indicadorAceitacao * @param indicadorAbertoFechado * @return * @throws ErroRepositorioException */ public Integer filtrarMovimentoArrecadadoresCount(String codigoBanco, String codigoRemessa, String descricaoIdentificacaoServico, String numeroSequencialArquivo, Date dataGeracaoInicio, Date dataGeracaoFim, Date ultimaAlteracaoInicio, Date ultimaAlteracaoFim, String descricaoOcorrencia, String indicadorAceitacao, String indicadorAbertoFechado) throws ErroRepositorioException { Integer movimentoArrecadadorCount = null; String sql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisMovimentoArrecadador( codigoBanco, codigoRemessa, descricaoIdentificacaoServico, numeroSequencialArquivo, dataGeracaoInicio, dataGeracaoFim, ultimaAlteracaoInicio, ultimaAlteracaoFim, descricaoOcorrencia, indicadorAceitacao, indicadorAbertoFechado); sql = " SELECT count (arrecadadorMovimento.armv_id) as qtdeMovimentoArrecadador " + " FROM arrecadacao.arrecadador_movimento arrecadadorMovimento " + condicionais; Date dataInicio = null; Date dataFim = null; if (ultimaAlteracaoInicio != null && !ultimaAlteracaoInicio.equals("")) { dataInicio = Util.formatarDataInicial(ultimaAlteracaoInicio); if (condicionais.trim().equals("WHERE")) { sql = sql + "arrecadadorMovimento.armv_tmultimaalteracao >= :dataInicio"; } else { sql = sql + " and arrecadadorMovimento.armv_tmultimaalteracao >= :dataInicio"; } } if (ultimaAlteracaoFim != null && !ultimaAlteracaoFim.equals("")) { dataFim = Util.formatarDataFinal(ultimaAlteracaoFim); sql = sql + " and arrecadadorMovimento.armv_tmultimaalteracao <= :dataFim"; } if (dataInicio != null && dataFim != null) { movimentoArrecadadorCount = (Integer) session.createSQLQuery( sql).addScalar("qtdeMovimentoArrecadador", Hibernate.INTEGER).setTimestamp("dataInicio", dataInicio).setTimestamp("dataFim", dataFim) .setMaxResults(1).uniqueResult(); } else { movimentoArrecadadorCount = (Integer) session.createSQLQuery( sql).addScalar("qtdeMovimentoArrecadador", Hibernate.INTEGER).setMaxResults(1).uniqueResult(); } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return movimentoArrecadadorCount; } /** * retorna o somatorio de PGMT_VLPAGAMENTO da tabela PAGAMENTO com AMIT_ID * =AMIT_ID da tabela ARRECADADOR_MOVIMENTO_ITEM * * [UC0254] Efetuar An�lise do Movimento dos Arrecadadores * * @author Vivianne Sousa * @date 05/12/2006 * * @param idArrecadadorMovimentoItem * @return * @throws ErroRepositorioException */ public BigDecimal recuperaValorPagamentoArrecadadorMovimentoItem( Integer idArrecadadorMovimentoItem) throws ErroRepositorioException { BigDecimal retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "SELECT SUM( COALESCE ( pgmt_vlpagamento, 0 ) ) as valor" + " FROM (" + " SELECT pgto.pgmt_vlpagamento" + " FROM arrecadacao.pagamento pgto" + " WHERE pgto.amit_id = :idArrecadadorMovimentoItem" + " UNION ALL" + " SELECT pgto.pghi_vlpagamento" + " FROM arrecadacao.pagamento_historico pgto" + " WHERE pgto.amit_id = :idArrecadadorMovimentoItem ) temp"; retorno = (BigDecimal) session.createSQLQuery(consulta). addScalar("valor", Hibernate.BIG_DECIMAL). setInteger("idArrecadadorMovimentoItem", idArrecadadorMovimentoItem). setMaxResults(1). uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * retorna a decri��o da Forma de Arrecada��o (arfm_dsarrecadacaoforma) da * tabela ARRECADACAO_FORMA a partir do codigoArrecadacaoForma * (arfm_cdarrecadacaoforma) passado * * [UC0262] Distribuir Dados do Registro do Movimento do Arrecadador * * @author Vivianne Sousa * @date 06/12/2006 * * @param codigoArrecadacaoForma * @return * @throws ErroRepositorioException */ public String recuperaDescricaoArrecadacaoForma( String codigoArrecadacaoForma) throws ErroRepositorioException { String retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = " select descricao from ArrecadacaoForma " + " where codigoArrecadacaoForma = :codigoArrecadacaoForma"; retorno = (String) session.createQuery(consulta).setString( "codigoArrecadacaoForma", codigoArrecadacaoForma.trim()) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Atualiza o valor excedente e a situa��o dos pagamentos informados para o * tipode situa��o informada. * * @author Raphael Rossiter, Pedro Alexandre, Pedro Alexandre * @date 18/04/2006, 12/12/2006, 02/10/2007 * * @param colecaoPagamento * @param pagamentoSituacao * @throws ErroRepositorioException */ public void atualizarSituacaoEValorExcedentePagamento( Collection<Pagamento> colecaoPagamento, Integer pagamentoSituacao) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Iterator<Pagamento> iteratorPagamentos = colecaoPagamento.iterator(); String atualizarValorExcedente; Pagamento pagamento = null; try { int i = 1; while (iteratorPagamentos.hasNext()) { pagamento = iteratorPagamentos.next(); //Conta if(pagamento.getContaGeral() != null){ atualizarValorExcedente = "UPDATE Pagamento pgmt " + "SET pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacao, " + "pgmt.valorExcedente = :valorExcedente, " + "pgmt.ultimaAlteracao = :dataAlteracao, " + "pgmt.contaGeral.id = :idConta, " + "pgmt.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao " + "WHERE pgmt.id = :idPagamento "; session.createQuery(atualizarValorExcedente) .setBigDecimal("valorExcedente", pagamento.getValorExcedente()) .setTimestamp("dataAlteracao", new Date()) .setInteger("pagamentoSituacao", pagamentoSituacao) .setInteger("idPagamento", pagamento.getId()) .setInteger("idConta", pagamento.getContaGeral().getId()) .setShort("indicadorClassificacao", pagamento.getIndicadorClassificadoRecuperacaoCredito()) .executeUpdate(); //Guia de Pagamento }else if(pagamento.getGuiaPagamento() != null){ atualizarValorExcedente = "UPDATE Pagamento pgmt " + "SET pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacao, " + "pgmt.valorExcedente = :valorExcedente, " + "pgmt.ultimaAlteracao = :dataAlteracao, " + "pgmt.guiaPagamento.id = :idGuiaPagamento, " + "pgmt.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao " + "WHERE pgmt.id = :idPagamento "; session.createQuery(atualizarValorExcedente) .setBigDecimal("valorExcedente", pagamento.getValorExcedente()) .setTimestamp("dataAlteracao", new Date()) .setInteger("pagamentoSituacao", pagamentoSituacao) .setInteger("idPagamento", pagamento.getId()) .setInteger("idGuiaPagamento", pagamento.getGuiaPagamento().getId()) .setShort("indicadorClassificacao", pagamento.getIndicadorClassificadoRecuperacaoCredito()) .executeUpdate(); //D�bito a Cobrar }else if(pagamento.getDebitoACobrarGeral() != null){ atualizarValorExcedente = "UPDATE Pagamento pgmt " + "SET pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacao, " + "pgmt.valorExcedente = :valorExcedente, " + "pgmt.ultimaAlteracao = :dataAlteracao, " + "pgmt.debitoACobrarGeral.id = :idDebitoACobrar, " + "pgmt.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao " + "WHERE pgmt.id = :idPagamento "; session.createQuery(atualizarValorExcedente) .setBigDecimal("valorExcedente", pagamento.getValorExcedente()) .setTimestamp("dataAlteracao", new Date()) .setInteger("pagamentoSituacao", pagamentoSituacao) .setInteger("idPagamento", pagamento.getId()) .setInteger("idDebitoACobrar", pagamento.getDebitoACobrarGeral().getId()) .setShort("indicadorClassificacao", pagamento.getIndicadorClassificadoRecuperacaoCredito()) .executeUpdate(); }else{ atualizarValorExcedente = "UPDATE Pagamento pgmt " + "SET pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacao, " + "pgmt.valorExcedente = :valorExcedente, " + "pgmt.ultimaAlteracao = :dataAlteracao, " + "pgmt.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao " + "WHERE pgmt.id = :idPagamento "; session.createQuery(atualizarValorExcedente) .setBigDecimal("valorExcedente", pagamento.getValorExcedente()) .setTimestamp("dataAlteracao", new Date()) .setInteger("pagamentoSituacao", pagamentoSituacao) .setInteger("idPagamento", pagamento.getId()) .setShort("indicadorClassificacao", pagamento.getIndicadorClassificadoRecuperacaoCredito()) .executeUpdate(); } if (i % 50 == 0) { session.flush(); session.clear(); } i++; } session.flush(); session.clear(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Pesquisar os ids das localidades que possuem pagamentos * * [UC0301] Gerar Dados Di�rios da Arrecada��o * * @author Pedro Alexandre * @date 04/12/2006 * * @return * @throws ErroRepositorioException */ public Collection<Integer> pesquisarIdsLocalidadeComPagamentosOuDevolucoes() throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select loca_id as localidade from arrecadacao.devolucao " + "union " + "select loca_id as localidade from arrecadacao.pagamento " + "order by localidade"; retorno = session.createSQLQuery(consulta).addScalar("localidade", Hibernate.INTEGER).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisar os ano/m�s de refer�ncia do pagamentos para um im�vel e ano/m�s * de arrecada��o informados para o tipo de documento informado. * * [UC0300] Classificar Pagamentos e Devolu��es * * @author Pedro Alexandre * @date 06/12/2006 * * @param anoMesArrecadacaoAtual * @param idImovel * @param idDocumentoTipo * @return * @throws ErroRepositorioException */ public Collection pesquisarAnoMesReferenciaPagamentoParaImovel( Integer anoMesArrecadacaoAtual, Integer idImovel, Integer idDocumentoTipo) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = " select distinct(anoMesReferenciaPagamento) from Pagamento pagamento " + " where pagamento.anoMesReferenciaArrecadacao = :anoMesArrecadacaoAtual " + "and pagamento.imovel.id = :idImovel and pagamento.documentoTipo.id = :idDocumentoTipo"; retorno = session.createQuery(consulta).setInteger( "anoMesArrecadacaoAtual", anoMesArrecadacaoAtual) .setInteger("idImovel", idImovel).setInteger( "idDocumentoTipo", idDocumentoTipo).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa a esfera do poder do cliente respons�vel pelo im�vel. * * [UC0301] - Gerar Dados Di�rios da Arrecadacao * * @author Pedro Alexandre * @date 05/12/2006 * * @param idImovel * @return * @throws ErroRepositorioException */ public Integer pesquisarEsferaPoderClienteResponsavelPeloImovel( Integer idImovel) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select cltp.esferaPoder.id from ClienteTipo cltp where cltp.id in " + "(select clie.clienteTipo.id from Cliente clie where clie.id in " + "(select clim.cliente.id from ClienteImovel clim " + "where clim.imovel.id = :idImovel and clim.dataFimRelacao is null and clim.clienteRelacaoTipo.id= :idRelacaoTipo ) ) "; retorno = (Integer) session.createQuery(consulta).setInteger( "idImovel", idImovel).setInteger("idRelacaoTipo", ClienteRelacaoTipo.RESPONSAVEL).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Atualiza a situ��o dos pagamentos informados. * * [UC0300] Classificar Pagamentos e Devolu��es * * @author Raphael Rossiter, Pedro Alexandre * @date 18/04/2006, 12/12/2006 * * @param pagamentoSituacao * @param colecaoPagamentos * @throws ErroRepositorioException */ public void atualizarSituacaoPagamento(Integer pagamentoSituacao, Collection<Pagamento> colecaoPagamentos) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Iterator<Pagamento> iteratorPagamentos = colecaoPagamentos.iterator(); String atualizarSituacaoPagamento; try { atualizarSituacaoPagamento = "UPDATE Pagamento pgmt " + "SET pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacao, " + "pgmt.pagamentoSituacaoAnterior.id = :pagamentoSituacaoAnterior, " + "pgmt.ultimaAlteracao = :dataAlteracao " + "WHERE pgmt.id = :idPagamento"; int i = 1; while (iteratorPagamentos.hasNext()) { Pagamento pagamento = iteratorPagamentos.next(); BigInteger pagamentoSituacaoAtual; if (pagamento.getPagamentoSituacaoAtual() != null && !pagamento.getPagamentoSituacaoAtual().getId().equals(pagamentoSituacao) ){ pagamentoSituacaoAtual = BigInteger.valueOf(pagamento.getPagamentoSituacaoAtual().getId()); }else{ pagamentoSituacaoAtual = null; } session.createQuery(atualizarSituacaoPagamento) .setInteger("pagamentoSituacao", pagamentoSituacao) .setBigInteger("pagamentoSituacaoAnterior", pagamentoSituacaoAtual) .setTimestamp("dataAlteracao", new Date()) .setInteger("idPagamento", pagamento.getId()) .executeUpdate(); if (i % 50 == 0) { session.flush(); session.clear(); } i++; } session.flush(); session.clear(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Pesquisa uma cole��o de ids das categorias cadastradas * * [UC0276] Encerrar Arrecada��o do M�s * * @author Pedro Alexandre * @date 15/12/2006 * * @return * @throws ErroRepositorioException */ public Collection<Integer> pesquisarIdsCategorias() throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select cate.id from Categoria cate order by cate.id"; retorno = session.createQuery(consulta).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa uma cole��o de ids dos lan�amentos de itens cont�beis * cadastrados * * [UC0276] Encerrar Arrecada��o do M�s * * @author Pedro Alexandre * @date 15/12/2006 * * @return * @throws ErroRepositorioException */ public Collection pesquisarDadosLancamentosItemContabil() throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select lict.id,lict.sequenciaImpressao from LancamentoItemContabil lict order by lict.id"; retorno = session.createQuery(consulta).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa alguns valores necessarios para obter a situa��o do aviso * bancario, se aberto ou fechado * * [UC0254] - Efetuar An�lise do Movimento dos Arrecadadores * * @author Vivianne Sousa * @date 11/12/2006 * * @param idAvisoBancario * @return * @throws ErroRepositorioException */ public Object[] pesquisarAvisoBancarioAvisoAcertos(Integer idAvisoBancario) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = " select avbc.valorArrecadacaoCalculado," + " avbc.valorArrecadacaoInformado," + " (select sum(avac.valorAcerto)" + " from AvisoAcerto avac" + " where avac.avisoBancario.id = :idAvisoBancario and" + " avac.indicadorCreditoDebito = 1" + " and avac.indicadorArrecadacaoDevolucao = 1)as vlAcertosArrecadacao1," + " (select sum(avac.valorAcerto)" + " from AvisoAcerto as avac" + " where avac.avisoBancario.id = :idAvisoBancario and" + " avac.indicadorCreditoDebito = 2" + " and avac.indicadorArrecadacaoDevolucao = 1)as vlAcertosArrecadacao2," + " avbc.valorDevolucaoCalculado," + " avbc.valorDevolucaoInformado," + " (select sum(avac.valorAcerto)" + " from AvisoAcerto as avac" + " where avac.avisoBancario.id = :idAvisoBancario and" + " avac.indicadorCreditoDebito = 1" + " and avac.indicadorArrecadacaoDevolucao = 2)as vlAcertosDevolucao1," + " (select sum(avac.valorAcerto)" + " from AvisoAcerto as avac" + " where avac.avisoBancario.id = :idAvisoBancario and" + " avac.indicadorCreditoDebito = 2" + " and avac.indicadorArrecadacaoDevolucao = 2)as vlAcertosDevolucao2" + " from AvisoBancario as avbc" + " where avbc.id = :idAvisoBancario"; retorno = (Object[]) session.createQuery(consulta).setInteger( "idAvisoBancario", idAvisoBancario).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0268] - Apresentar An�lise do Aviso Banc�rio * * @author Vivianne Sousa * @date 13/12/2006 * * @param idAvisoBancario * @return * @throws ErroRepositorioException */ public Object[] pesquisarAvisoBancario(Integer idAvisoBancario) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select avbc, " + // 0 "avbc.arrecadador.codigoAgente, " + // 1 "avbc.arrecadador.cliente.nome, " + // 2 "avbc.arrecadadorMovimento.id, " + // 3 "avbc.contaBancaria.agencia.banco.id, " + // 4 "avbc.contaBancaria.agencia.codigoAgencia, " + // 5 "avbc.contaBancaria.numeroConta, " + // 6 "arrecForma.descricao " + // 7 "from AvisoBancario avbc " + "left join avbc.arrecadacaoForma arrecForma " + "where avbc.id = :idAvisoBancario"; retorno = (Object[]) session.createQuery(consulta).setInteger( "idAvisoBancario", idAvisoBancario).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * somatorio do valor das dedu��es existentes para o aviso bancario * * [UC0268] - Apresentar An�lise do Aviso Banc�rio * * @author Vivianne Sousa * @date 13/12/2006 * * @param idAvisoBancario * @return * @throws ErroRepositorioException */ public BigDecimal pesquisarSomatorioDeducoesAvisoBancario( Integer idAvisoBancario) throws ErroRepositorioException { BigDecimal retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT sum(vd.valorDeducao) " + "FROM AvisoDeducoes vd " + "LEFT JOIN vd.avisoBancario aviso " + "WHERE aviso.id = :idAvisoBancario "; BigDecimal big = (BigDecimal) session.createQuery(consulta) .setInteger("idAvisoBancario", idAvisoBancario) .setMaxResults(1).uniqueResult(); if (big != null) { retorno = big; } else { retorno = new BigDecimal("0.00"); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0268] - Apresentar An�lise do Aviso Banc�rio * * @author Vivianne Sousa * @date 13/12/2006 * * @param idAvisoBancario * @return * @throws ErroRepositorioException */ public Object[] pesquisarValorAcertosAvisoBancario(Integer idAvisoBancario) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = " select " + " (select sum(avac.valorAcerto)" + " from AvisoAcerto avac" + " where avac.avisoBancario.id = :idAvisoBancario and" + " avac.indicadorCreditoDebito = 1" + " and avac.indicadorArrecadacaoDevolucao = 1)as vlAcertosArrecadacao1," + // 0 " (select sum(avac.valorAcerto)" + " from AvisoAcerto as avac" + " where avac.avisoBancario.id = :idAvisoBancario and" + " avac.indicadorCreditoDebito = 2" + " and avac.indicadorArrecadacaoDevolucao = 1)as vlAcertosArrecadacao2," + // 1 " (select sum(avac.valorAcerto)" + " from AvisoAcerto as avac" + " where avac.avisoBancario.id = :idAvisoBancario and" + " avac.indicadorCreditoDebito = 1" + " and avac.indicadorArrecadacaoDevolucao = 2)as vlAcertosDevolucao1," + // 2 " (select sum(avac.valorAcerto)" + " from AvisoAcerto as avac" + " where avac.avisoBancario.id = :idAvisoBancario and" + " avac.indicadorCreditoDebito = 2" + " and avac.indicadorArrecadacaoDevolucao = 2)as vlAcertosDevolucao2" + // 3 " from AvisoBancario as avbc" + " where avbc.id = :idAvisoBancario"; retorno = (Object[]) session.createQuery(consulta).setInteger( "idAvisoBancario", idAvisoBancario).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa os avisos dedu��es de um aviso banc�rio para o relat�rio atrav�s * do id do aviso banc�rio * * [UC0268] - Apresentar An�lise do Aviso Banc�rio * * @author Vivianne Sousa * @date 13/12/2006 * * @param idAvisoBancario * @return * @throws ErroRepositorioException.subtract(valorSomatorioAcertosDevolucao */ public Collection pesquisarDeducoesAvisoBancario(Integer idAvisoBancario) throws ErroRepositorioException { // cria a vari�vel que vai armazenar a cole��o pesquisada Collection retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = "select dt.descricaoDeducaoTipo, ad.valorDeducao " + "from AvisoDeducoes ad " + "inner join ad.deducaoTipo dt " + "inner join ad.avisoBancario ab " + "where ab.id = :idAvisoBancario"; retorno = session.createQuery(consulta).setInteger( "idAvisoBancario", idAvisoBancario.intValue()).list(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o pesquisada return retorno; } /** * pesquisa a lista dos acertos da Arrecada��o/Devolucao do Aviso Bancario * * [UC0268] - Apresentar An�lise do Aviso Banc�rio * * @author Vivianne Sousa * @date 13/12/2006 * * @param idAvisoBancario * @return * @throws ErroRepositorioException */ public Collection pesquisarAcertosAvisoBancario(Integer idAvisoBancario, Integer indicadorArrecadacaoDevolucao) throws ErroRepositorioException { // cria a vari�vel que vai armazenar a cole��o pesquisada Collection retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = "SELECT " + "avisoAcerto.contaBancaria.agencia.banco.id, " + "avisoAcerto.contaBancaria.agencia.codigoAgencia, " + "avisoAcerto.contaBancaria.numeroConta, " + "avisoAcerto.indicadorCreditoDebito, " + "avisoAcerto.dataAcerto, " + "avisoAcerto.valorAcerto " + "FROM AvisoAcerto avisoAcerto " + "WHERE avisoAcerto.avisoBancario.id = :idAvisoBancario " + "AND avisoAcerto.indicadorArrecadacaoDevolucao = :indicadorArrecadacaoDevolucao"; retorno = session.createQuery(consulta).setInteger( "idAvisoBancario", idAvisoBancario.intValue()).setInteger( "indicadorArrecadacaoDevolucao", indicadorArrecadacaoDevolucao.intValue()).list(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o pesquisada return retorno; } /** * O sistema seleciona a lista de pagamentos associados ao aviso banc�rio a * partir da tabela PAGAMENTO com AVBC_ID=AVBC_ID da tabela AVISO_BANCARIO * classificados por LOCA_ID ,IMOV_ID e PGMT_AMREFERENCIAPAGAMENTO * * [UC0268] - Apresentar An�lise do Aviso Banc�rio * * @author Vivianne Sousa * @date 15/12/2006 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarPagamentoAvisoBancario(Integer idAvisoBancario) throws ErroRepositorioException { Collection retorno = null; String hql = ""; Session session = HibernateUtil.getSession(); try { hql = "select " + "pagamento.documentoTipo.descricaoAbreviado, " + // 0 "pagamento.dataPagamento, " + // 1 "pagamento.localidade.id, " + // 2 "imovel.id, " + // 3 "cliente.id, " + // 4 "pagamento.anoMesReferenciaPagamento, " + // 5 "debitoTipo.id, " + // 6 "pagamento.valorPagamento, " + // 7 "pagamentoSituacaoAtual.descricaoAbreviada " + // 8 "from gcom.arrecadacao.pagamento.Pagamento pagamento " + "left join pagamento.imovel as imovel " + "left join pagamento.cliente as cliente " + "left join pagamento.debitoTipo as debitoTipo " + "left join pagamento.pagamentoSituacaoAtual as pagamentoSituacaoAtual " + "where pagamento.avisoBancario.id = :idAvisoBancario " + "order by pagamento.localidade.id,imovel.id,pagamento.anoMesReferenciaPagamento "; retorno = session.createQuery(hql).setInteger("idAvisoBancario", idAvisoBancario).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * O sistema seleciona a lista de desvolu��es associados ao aviso banc�rio a * partir da tabela DEVOLUCAO com AVBC_ID=AVBC_ID da tabela AVISO_BANCARIO * * [UC0268] - Apresentar An�lise do Aviso Banc�rio * * @author Vivianne Sousa * @date 15/12/2006 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarDevolucaoAvisoBancario(Integer idAvisoBancario) throws ErroRepositorioException { Collection retorno = null; String hql = ""; Session session = HibernateUtil.getSession(); try { hql = "select " + "documentoTipo.descricaoAbreviado, " + // 0 "devolucao.dataDevolucao, " + // 1 "devolucao.localidade.id, " + // 2 "imovel.id, " + // 3 "cliente.id, " + // 4 "devolucao.anoMesReferenciaDevolucao, " + // 5 "debitoTipo.id, " + // 6 "devolucao.valorDevolucao, " + // 7 "devolucaoSituacaoAtual.descricaoAbreviado " + // 8 "from gcom.arrecadacao.Devolucao devolucao " + "left join devolucao.imovel as imovel " + "left join devolucao.cliente as cliente " + "left join devolucao.debitoTipo as debitoTipo " + "left join devolucao.devolucaoSituacaoAtual as devolucaoSituacaoAtual " + "left join devolucao.guiaDevolucao as guiaDevolucao " + "left join guiaDevolucao.documentoTipo as documentoTipo " + "where devolucao.avisoBancario.id = :idAvisoBancario "; retorno = session.createQuery(hql).setInteger("idAvisoBancario", idAvisoBancario).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0239] - Filtrar Aviso Banc�rio * * @author Vivianne Sousa * @date 15/12/2006 * * @return Collection * @throws ErroRepositorioException */ private String selectFiltrarAvisoBancario() { String retorno = ""; retorno = "select " + "avisoBancario.arrecadador.id, " + // 0 "avisoBancario.dataLancamento, " + // 1 "avisoBancario.numeroSequencial, " + // 2 "avisoBancario.indicadorCreditoDebito, " + // 3 "avisoBancario.dataPrevista, " + // 4 "avisoBancario.dataRealizada, " + // 5 "avisoBancario.valorRealizado, " + // 6 "avisoBancario.valorArrecadacaoCalculado, " + // 7 "avisoBancario.valorArrecadacaoInformado, " + // 8 "(select sum(avac.valorAcerto) " + "from AvisoAcerto as avac " + "where " + "avac.avisoBancario.id = avisoBancario.id and " + "avac.indicadorCreditoDebito = 1 " + "and avac.indicadorArrecadacaoDevolucao = 1)as vlAcertosArrecadacao1, " + // 9 "(select sum(avac.valorAcerto) " + "from AvisoAcerto as avac " + "where " + "avac.avisoBancario.id = avisoBancario.id and " + "avac.indicadorCreditoDebito = 2 " + "and avac.indicadorArrecadacaoDevolucao = 1)as vlAcertosArrecadacao2, " + // 10 "avisoBancario.valorDevolucaoCalculado, " + // 11 "avisoBancario.valorDevolucaoInformado, " + // 12 "(select sum(avac.valorAcerto) " + "from AvisoAcerto as avac " + "where " + "avac.avisoBancario.id = avisoBancario.id and " + "avac.indicadorCreditoDebito = 1 " + "and avac.indicadorArrecadacaoDevolucao = 2)as vlAcertosDevolucao1, " + // 13 "(select sum(avac.valorAcerto) " + "from AvisoAcerto as avac " + "where " + "avac.avisoBancario.id = avisoBancario.id and " + "avac.indicadorCreditoDebito = 2 " + "and avac.indicadorArrecadacaoDevolucao = 2)as vlAcertosDevolucao2, " + // 14 "avisoBancario.id " + // 15 "from AvisoBancario as avisoBancario "; return retorno; } /** * Sequencial do tipo lan�amento igual a 1200 * * [UC0276] - Encerrar Arrecada��o do M�s * * Pesquisa os daods de ContaImpostosDeduzidos dos pagamentos classificados * de contas para acumular o valor do imposto por localidade e categoria e * tipo de imposto. * * @author Pedro Alexandre, Pedro Alexandre * @date 15/12/2006, 20/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idTipoImposto * @return * @throws ErroRepositorioException */ public Collection pesquisarContasImpostosDeduzidosPagamentosClassificadosContaPorTipoImposto( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idTipoImposto) throws ErroRepositorioException { Collection retorno = new ArrayList(); // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + " sum(cnid.cnid_vlimposto) as col_0, " + " cnta.imov_id as col_1 " + " from " + " faturamento.conta_impostos_deduzidos cnid " + " inner join faturamento.conta cnta on cnid.cnta_id=cnta.cnta_id " + " where " + " cnid.imtp_id= :idImpostoTipo and ( " + " cnid.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and ( pgmt.pgst_idatual= :idPagamentoClassificado or ( " + "pgmt.pgst_idatual= :idPagamentoValorABaixar and pgmt.pgst_idanterior= :idPagamentoValorNaoConfere ) ) " + "and (pgmt.cnta_id is not null) "+ ")" + " ) " + "group by cnta.imov_id"; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1", Hibernate.INTEGER) .setInteger("idImpostoTipo",idTipoImposto) .setInteger("idLocalidade", idLocalidade) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("idPagamentoValorNaoConfere",PagamentoSituacao.VALOR_NAO_CONFERE) .list(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa o valor dos pagamentos n�o classificados por * situa��o anterior. * * [UC0276] - Encerrar Arrecada��o do M�s * * @author Pedro Alexandre, Pedro Alexandre * @date 18/12/2006, 21/05/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @param idSituacaoAnterior * @return * @throws ErroRepositorioException */ public Collection pesquisarPagamentosNaoClassificadosMesPorSituacaoAnterior( Integer anoMesReferenciaArrecadacao, Integer idLocalidade, Integer idSituacaoAnterior) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(pgmt.pgmt_vlexcedente) as col_0, " + "pgmt.imov_id as col_1 " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.loca_id= :idLocalidade " + "and pgmt.pgmt_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and pgmt.pgst_idatual<> :idPagamentoClassificado " + "and pgmt.pgst_idanterior= :idSituacaoAnterior " + "group by pgmt.imov_id "; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1", Hibernate.INTEGER) .setInteger("idLocalidade",idLocalidade) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idSituacaoAnterior",idSituacaoAnterior) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa o valor da devolu��o e o id do im�vel * pela situa��o atual da devolu��o * * [UC0276] - Encerrar Arrecada��o do M�s * * @author Pedro Alexandre, Pedro Alexandre * @date 18/12/2006, 21/05/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @param idDevolucaoSituacaoAtual * @return * @throws ErroRepositorioException */ public Collection pesquisarDevolucoesNaoClassificadasMesPorSituacaoAtual( Integer anoMesReferenciaArrecadacao, Integer idLocalidade, Integer idDevolucaoSituacaoAtual) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(devl.devl_vldevolucao) as col_0, " + "devl.imov_id as col_1 " + "from " + "arrecadacao.devolucao devl " + "where " + "devl.devl_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and devl.dvst_idatual= :idDevolucaoSituacaoAtual " + "and devl.loca_id= :idLocalidade " + " and devl.dotp_idagregador is null " + "group by devl.imov_id"; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1", Hibernate.INTEGER) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idDevolucaoSituacaoAtual",idDevolucaoSituacaoAtual) .setInteger("idLocalidade", idLocalidade) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * <Breve descri��o sobre o caso de uso> * * [UC0276] Encerrar Arrecada��o do M�s * * @author Pedro Alexandre, Pedro Alexandre * @date 18/12/2006, 22/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idImpostoTipo * @return * @throws ErroRepositorioException */ public Collection pesquisarContasImpostosDeduzidosPagamentosContasEfetuadosEmMesesAnterioresClassificadosMesPorTipoImposto( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idImpostoTipo) throws ErroRepositorioException { Collection retorno = new ArrayList(); // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + " sum(cnid.cnid_vlimposto) as col_0, " + " cnta.imov_id as col_1 " + "from " + " faturamento.conta_impostos_deduzidos cnid " + "inner join faturamento.conta cnta on cnid.cnta_id=cnta.cnta_id " + "where " + " cnid.imtp_id= :idImpostoTipo " + " and (cnta.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao > 201212 and pgmt.pgmt_amreferenciaarrecadacao < :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ")) " + " group by cnta.imov_id "; retorno = session.createSQLQuery(consulta) .addScalar("col_0", Hibernate.BIG_DECIMAL) .addScalar("col_1", Hibernate.INTEGER) .setInteger("idImpostoTipo",idImpostoTipo) .setInteger("idLocalidade", idLocalidade) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .list(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * <Breve descri��o sobre o caso de uso> * * [UC0276] Encerrar Arrecada��o do M�s * * @author Pedro Alexandre, Pedro Alexandre * @date 18/12/2006, 22/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idPagamentoSituacaoAnterior * @return * @throws ErroRepositorioException */ public Collection pesquisarPagamentosNaoClassificadosComBaixaComandadaPorSituacaoAnterior( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idPagamentoSituacaoAnterior) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(pgmt.pgmt_vlexcedente) as col_0, " + "pgmt.imov_id as col_1 " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.loca_id= :idLocalidade " + "and pgmt.pgmt_amreferenciaarrecadacao<= :anoMesReferenciaArrecadacao " + "and pgmt.pgst_idatual= :idPagamentoSituacaoAtual " + "and pgmt.pgst_idanterior= :idPagamentoSituacaoAnterior " + "group by pgmt.imov_id"; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.INTEGER) .setInteger("idLocalidade",idLocalidade) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idPagamentoSituacaoAnterior", idPagamentoSituacaoAnterior) .setInteger("idPagamentoSituacaoAtual", PagamentoSituacao.VALOR_A_BAIXAR) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * <Breve descri��o sobre o caso de uso> * * [UC0276] Encerrar Arrecada��o do M�s * * @author Pedro Alexandre, Pedro Alexandre * @date 18/12/2006, 22/05/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @param idPagamentoSituacaoAtual * @return * @throws ErroRepositorioException */ public Collection pesquisarPagamentosNaoClassificadosMesEMesesAnterioresPorSituacaoAtual( Integer anoMesReferenciaArrecadacao, Integer idLocalidade, Integer idPagamentoSituacaoAtual) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "pgmt.pgmt_vlexcedente as col_0, " + "pgmt.imov_id as col_1, " + "pgmt.pgmt_vlpagamento as col_2 " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.loca_id= :idLocalidade " + "and pgmt.pgmt_amreferenciaarrecadacao<= :anoMesReferenciaArrecadacao " + "and pgmt.pgst_idatual= :idPagamentoSituacaoAtual "; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.INTEGER) .addScalar("col_2",Hibernate.BIG_DECIMAL) .setInteger("idLocalidade",idLocalidade) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idPagamentoSituacaoAtual", idPagamentoSituacaoAtual) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * <Breve descri��o sobre o caso de uso> * * [UC0276] Encerrar Arrecada��o do M�s * * @author Pedro Alexandre, Pedro Alexandre * @date 18/12/2006, 22/05/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @param idDevolucaoSituacaoAtual * @return * @throws ErroRepositorioException */ public Collection pesquisarDevolucoesNaoClassificadasMesEAnterioresPorSituacaoAtual( Integer anoMesReferenciaArrecadacao, Integer idLocalidade, Integer idDevolucaoSituacaoAtual) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Devolucao> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(devl.devl_vldevolucao) as col_0, " + "devl.imov_id as col_1 " + "from " + "arrecadacao.devolucao devl " + "where " + "devl.devl_amreferenciaarrecadacao<= :anoMesReferenciaArrecadacao " + "and devl.dvst_idatual= :idDevolucaoSituacaoAtual " + "and devl.loca_id= :idLocalidade " + "group by devl.imov_id "; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.INTEGER) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idDevolucaoSituacaoAtual",idDevolucaoSituacaoAtual) .setInteger("idLocalidade", idLocalidade) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa o valor do pagamento classicado e o id do * im�vel relacionado ao pagamento. * * [UC0276 Encerrar Arrecada��o do M�s] * * @author Pedro Alexandre, Pedro Alexandre * @date 16/12/2006, 20/05/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @param idSituacaoAtual * @return * @throws ErroRepositorioException */ public Collection pesquisarPagamentosNaoClassificadosMesPorSituacaoAtual( Integer anoMesReferenciaArrecadacao, Integer idLocalidade, Integer idSituacaoAtual) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(pgmt.pgmt_vlpagamento) as col_0, " + "pgmt.imov_id as col_1 " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.loca_id= :idLocalidade " + "and pgmt.pgmt_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and pgmt.pgst_idatual<> :idPagamentoClassificado " + "and pgmt.pgst_idatual= :idSituacaoAtual " + "group by pgmt.imov_id"; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1", Hibernate.INTEGER) .setInteger("idLocalidade",idLocalidade) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idSituacaoAtual",idSituacaoAtual) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .list(); /* // Cria o hql de pesquisa consulta = "select pgmt.valorPagamento, imov.id " + "from Pagamento pgmt " + "inner join pgmt.localidade loca " + "left join pgmt.imovel imov " + "where loca.id= :idLocalidade " + "and pgmt.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao " + "and pgmt.pagamentoSituacaoAtual.id <> :idPagamentoClassificado " + "and pgmt.pagamentoSituacaoAtual.id = :idSituacaoAtual"; // Executa o hql retorno = session.createQuery(consulta) .setInteger("idLocalidade",idLocalidade) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idSituacaoAtual",idSituacaoAtual) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .list(); */ // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * para o Relat�rio * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Debito a Cobrar do Cliente * pesquisarPagamentoLocalidade * * @author Rafael Corr�a * @date 12/12/06 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarPagamentoLocalidadeAmbosRelatorio( String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection retorno = new ArrayList(); String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamentoRelatorio( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = "SELECT pagto.id, loc.id, loc.descricao, " + "gr.id, gr.nome, imov.id, cli.id, cli.nome, " + "cliArrec.nome, pagto.dataPagamento, " + "pagto.anoMesReferenciaPagamento, dbtp.descricao, " + "conta.valorAgua, conta.valorEsgoto, conta.debitos, " + "conta.valorCreditos, dbcb.valorDebito, dbcb.numeroPrestacaoDebito, " + "dbcb.numeroPrestacaoCobradas, gpag.valorDebito, pagto.valorPagamento, " + "pagtoSitAtual.id, pagtoSitAtual.descricao, doctoTp.id, conta.valorImposto " + "FROM Pagamento pagto " + "INNER JOIN pagto.localidade loc " + "INNER JOIN loc.gerenciaRegional gr " + "INNER JOIN pagto.avisoBancario avbc " + "INNER JOIN avbc.arrecadador arrec " + "INNER JOIN arrec.cliente cliArrec " + "INNER JOIN pagto.documentoTipo doctoTp " + "LEFT JOIN pagto.imovel imov " + "LEFT JOIN pagto.cliente cli " + "LEFT JOIN pagto.debitoTipo dbtp " + "LEFT JOIN pagto.contaGeral contaGeral " + "LEFT JOIN contaGeral.conta conta " + "LEFT JOIN pagto.guiaPagamento gpag " + "LEFT JOIN pagto.debitoACobrarGeral dbcbGeral " + "LEFT JOIN dbcbGeral.debitoACobrar dbcb " + "LEFT JOIN pagto.pagamentoSituacaoAtual pagtoSitAtual " + "LEFT JOIN pagto.arrecadadorMovimentoItem arrecMovItem " + "LEFT JOIN arrecMovItem.arrecadadorMovimento arrecMov " + "LEFT JOIN pagto.arrecadacaoForma arrecForma " + condicionais + " UNION " + "SELECT pagto.id, loc.id, loc.descricao, " + "gr.id, gr.nome, imov.id, cli.id, cli.nome, " + "cliArrec.nome, pagto.dataPagamento, " + "pagto.anoMesReferenciaPagamento, dbtp.descricao, " + "conta.valorAgua, conta.valorEsgoto, conta.debitos, " + "conta.valorCreditos, dbcb.valorDebito, dbcb.numeroPrestacaoDebito, " + "dbcb.numeroPrestacaoCobradas, gpag.valorDebito, pagto.valorPagamento, " + "pagtoSitAtual.id, pagtoSitAtual.descricao, doctoTp.id " + "FROM PagamentoHistorico pagto " + "INNER JOIN pagto.localidade loc " + "INNER JOIN loc.gerenciaRegional gr " + "INNER JOIN pagto.avisoBancario avbc " + "INNER JOIN avbc.arrecadador arrec " + "INNER JOIN arrec.cliente cliArrec " + "INNER JOIN pagto.documentoTipo doctoTp " + "LEFT JOIN pagto.imovel imov " + "LEFT JOIN pagto.cliente cli " + "LEFT JOIN pagto.debitoTipo dbtp " + "LEFT JOIN pagto.contaGeral contaGeral " + "LEFT JOIN contaGeral.contaHistorico conta " + "LEFT JOIN pagto.guiaPagamento gpag " + "LEFT JOIN pagto.debitoACobrarGeral dbcbGeral " + "LEFT JOIN dbcbGeral.debitoACobrar dbcb " + "LEFT JOIN pagto.pagamentoSituacaoAtual pagtoSitAtual " + "LEFT JOIN pagto.arrecadadorMovimentoItem arrecMovItem " + "LEFT JOIN arrecMovItem.arrecadadorMovimento arrecMov " + "LEFT JOIN pagto.arrecadacaoForma arrecForma " + condicionais + " ORDER BY loc.id, imov.id, " + " dbtp.id, pagto.dataPagamento "; // hql = " select distinct pagamento " // + " from gcom.arrecadacao.pagamento.Pagamento as pagamento " // + condicionais // + " order by pagamento.localidade.id, pagamento.imovel.id, " // + " pagamento.debitoTipo.id, pagamento.dataPagamento " // + " "; retorno = session.createQuery(hql).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos * para o Relat�rio * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Debito a Cobrar do Cliente * pesquisarPagamentoLocalidade * * @author Rafael Corr�a * @date 12/12/06 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarPagamentoImovelAmbosRelatorio(String idImovel) throws ErroRepositorioException { Collection retorno = new ArrayList(); String hql = ""; Session session = HibernateUtil.getSession(); try { hql = "SELECT " + // 0 " pagto.pgmt_id as idPagamento, " + // 1 " loc.loca_id as idLocalidade, " + // 2 " loc.loca_nmlocalidade as nomeLocalidade, " + // 3 " gr.greg_id as idGerencia, " + // 4 " gr.greg_nmregional as nomeGerencia, " + // 5 " imov.imov_id as idImovel, " + // 6 " cli.clie_id as idCliente, " + // 7 " cli.clie_nmcliente as nomeCliente, " + // 8 " cliArrec.clie_nmcliente as nomeClienteArrecadador, " + // 9 " pagto.pgmt_dtpagamento as dataPagamento, " + // 10 " pagto.pgmt_amreferenciapagamento as anoMesReferenciaPagamento, " + // 11 " dbtp.dbtp_dsdebitotipo as descricaoDebitoTipo, " + // 12 " case when ( conta.cnta_id is null ) then " + " contaHistorico.cnhi_vlagua " + " else " + " conta.cnta_vlagua " + " end as valorAgua, " + // 13 " case when ( conta.cnta_id is null ) then " + " contaHistorico.cnhi_vlesgoto " + " else " + " conta.cnta_vlesgoto " + " end as valorEsgoto, " + // 14 " case when ( conta.cnta_id is null ) then " + " contaHistorico.cnhi_vldebitos " + " else " + " conta.cnta_vldebitos " + " end as debitosConta, " + // 15 " case when ( conta.cnta_id is null ) then " + " contaHistorico.cnhi_vlcreditos " + " else " + " conta.cnta_vlcreditos " + " end as valorCreditos, " + // 16 " case when ( dbcb.dbac_id is null ) then " + " dbcbHistorico.dahi_vldebito " + " else " + " dbcb.dbac_vldebito " + " end as valorDebitoACobrar, " + // 17 " case when ( dbcb.dbac_id is null ) then " + " dbcbHistorico.dahi_nnprestacaodebito " + " else " + " dbcb.dbac_nnprestacaodebito " + " end as numeroPrestacaoDebito, " + // 18 " case when ( dbcb.dbac_id is null ) then " + " dbcbHistorico.dahi_nnprestacaocobradas " + " else " + " dbcb.dbac_nnprestacaocobradas " + " end as numeroPrestacaoCobradas, " + // 19 " case when ( gpag.gpag_id is null ) then " + " gpagHistorico.gphi_vldebito " + " else " + " gpag.gpag_vldebito " + " end as valorDebitoGuia, " + // 20 " pagto.pgmt_vlpagamento as valorPagamento, " + // 21 " pagtoSitAtual.pgst_id as idPagamentoSituacao, " + // 22 " pagtoSitAtual.pgst_dsabreviado as descricaoPagamentoSituacao, " + // 23 " doctoTp.dotp_id as idDocumentoTipo, " + // 24 " doctoTp.dotp_dsdocumentotipo as descricaoDocumentoTipo, " + // 25 " pagtoSitAnterior.pgst_dsabreviado as descricaopagamentosituacaoante, " + // 26 " case when ( conta.cnta_id is null ) then " + " contaHistorico.cnhi_vlimpostos " + " else " + " conta.cnta_vlimpostos " + " end as valorImpostos " + "FROM " + " arrecadacao.pagamento pagto " + " INNER JOIN cadastro.localidade loc on pagto.loca_id = loc.loca_id " + " INNER JOIN cadastro.gerencia_regional gr on loc.greg_id = gr.greg_id " + " INNER JOIN cobranca.documento_tipo doctoTp on pagto.dotp_id = doctoTp.dotp_id " + " INNER JOIN cadastro.imovel imov on pagto.imov_id = imov.imov_id " + " LEFT OUTER JOIN arrecadacao.aviso_bancario avbc on pagto.avbc_id = avbc.avbc_id " + " LEFT OUTER JOIN arrecadacao.arrecadador arrec on avbc.arrc_id = arrec.arrc_id " + " LEFT OUTER JOIN cadastro.cliente cliArrec on arrec.clie_id = cliArrec.clie_id " + " LEFT OUTER JOIN cadastro.cliente cli on pagto.clie_id = cli.clie_id " + " LEFT OUTER JOIN faturamento.debito_tipo dbtp on pagto.dbtp_id = dbtp.dbtp_id " + " LEFT OUTER JOIN faturamento.conta conta on pagto.cnta_id = conta.cnta_id " + " LEFT OUTER JOIN faturamento.guia_pagamento gpag on pagto.gpag_id = gpag.gpag_id " + " LEFT OUTER JOIN faturamento.guia_pagamento_historico gpagHistorico on pagto.gpag_id = gpagHistorico.gpag_id " + " LEFT OUTER JOIN faturamento.debito_a_cobrar dbcb on pagto.dbac_id = dbcb.dbac_id " + " LEFT OUTER JOIN faturamento.deb_a_cobrar_hist dbcbHistorico on pagto.dbac_id = dbcbHistorico.dbac_id " + " LEFT OUTER JOIN arrecadacao.pagamento_situacao pagtoSitAtual on pagto.pgst_idatual = pagtoSitAtual.pgst_id " + " LEFT OUTER JOIN arrecadacao.pagamento_situacao pagtoSitAnterior on pagto.pgst_idanterior = pagtoSitAnterior.pgst_id " + " LEFT OUTER JOIN arrecadacao.arrecadador_mov_item arrecMovItem on pagto.amit_id = arrecMovItem.amit_id " + " LEFT OUTER JOIN arrecadacao.arrecadador_movimento arrecMov on arrecMovItem.armv_id = arrecMov.armv_id " + " LEFT OUTER JOIN arrecadacao.arrecadacao_forma arrecForma on pagto.arfm_id = arrecForma.arfm_id " + " LEFT OUTER JOIN faturamento.conta_historico contaHistorico on pagto.cnta_id = contaHistorico.cnta_id " + "WHERE " + " pagto.imov_id = " + idImovel + " UNION " + "SELECT " + " pagto.pghi_id as idPagamento, " + " loc.loca_id as idLocalidade, " + " loc.loca_nmlocalidade as nomeLocalidade, " + " gr.greg_id as idGerencia, " + " gr.greg_nmregional as nomeGerencia, " + " imov.imov_id as idImovel, " + " cli.clie_id as idCliente, " + " cli.clie_nmcliente as nomeCliente, " + " cliArrec.clie_nmcliente as nomeClienteArrecadador, " + " pagto.pghi_dtpagamento as dataPagamento, " + " pagto.pghi_amreferenciapagamento as anoMesReferenciaPagamento, " + " dbtp.dbtp_dsdebitotipo as descricaoDebitoTipo, " + " case when ( conta.cnta_id is null ) then " + " contaHistorico.cnhi_vlagua " + " else " + " conta.cnta_vlagua " + " end as valorAgua, " + " case when ( conta.cnta_id is null ) then " + " contaHistorico.cnhi_vlesgoto " + " else " + " conta.cnta_vlesgoto " + " end as valorEsgoto, " + " case when ( conta.cnta_id is null ) then " + " contaHistorico.cnhi_vldebitos " + " else " + " conta.cnta_vldebitos " + " end as debitosConta, " + " case when ( conta.cnta_id is null ) then " + " contaHistorico.cnhi_vlcreditos " + " else " + " conta.cnta_vlcreditos " + " end as valorCreditos, " + " case when ( dbcb.dbac_id is null ) then " + " dbcbHistorico.dahi_vldebito " + " else " + " dbcb.dbac_vldebito " + " end as valorDebitoACobrar, " + " case when ( dbcb.dbac_id is null ) then " + " dbcbHistorico.dahi_nnprestacaodebito " + " else " + " dbcb.dbac_nnprestacaodebito " + " end as numeroPrestacaoDebito, " + " case when ( dbcb.dbac_id is null ) then " + " dbcbHistorico.dahi_nnprestacaocobradas " + " else " + " dbcb.dbac_nnprestacaocobradas " + " end as numeroPrestacaoCobradas, " + " case when ( gpag.gpag_id is null ) then " + " gpagHistorico.gphi_vldebito " + " else " + " gpag.gpag_vldebito " + " end as valorDebitoGuia, " + " pagto.pghi_vlpagamento as valorPagamento, " + " pagtoSitAtual.pgst_id as idPagamentoSituacao, " + " pagtoSitAtual.pgst_dsabreviado as descricaoPagamentoSituacao, " + " doctoTp.dotp_id as idDocumentoTipo, " + " doctoTp.dotp_dsdocumentotipo as descricaoDocumentoTipo, " + " pagtoSitAnterior.pgst_dsabreviado as descricaopagamentosituacaoante, " + " case when ( conta.cnta_id is null ) then " + " contaHistorico.cnhi_vlimpostos " + " else " + " conta.cnta_vlimpostos " + " end as valorImpostos " + "FROM " + " arrecadacao.pagamento_historico pagto " + " INNER JOIN cadastro.localidade loc on pagto.loca_id = loc.loca_id " + " INNER JOIN cadastro.gerencia_regional gr on loc.greg_id = gr.greg_id " + " INNER JOIN cobranca.documento_tipo doctoTp on pagto.dotp_id = doctoTp.dotp_id " + " INNER JOIN cadastro.imovel imov on pagto.imov_id = imov.imov_id " + " LEFT OUTER JOIN arrecadacao.aviso_bancario avbc on pagto.avbc_id = avbc.avbc_id " + " LEFT OUTER JOIN arrecadacao.arrecadador arrec on avbc.arrc_id = arrec.arrc_id " + " LEFT OUTER JOIN cadastro.cliente cliArrec on arrec.clie_id = cliArrec.clie_id " + " LEFT OUTER JOIN cadastro.cliente cli on pagto.clie_id = cli.clie_id " + " LEFT OUTER JOIN faturamento.debito_tipo dbtp on pagto.dbtp_id = dbtp.dbtp_id " + " LEFT OUTER JOIN faturamento.conta conta on pagto.cnta_id = conta.cnta_id " + " LEFT OUTER JOIN faturamento.guia_pagamento gpag on pagto.gpag_id = gpag.gpag_id " + " LEFT OUTER JOIN faturamento.guia_pagamento_historico gpagHistorico on pagto.gpag_id = gpagHistorico.gpag_id " + " LEFT OUTER JOIN faturamento.debito_a_cobrar dbcb on pagto.dbac_id = dbcb.dbac_id " + " LEFT OUTER JOIN faturamento.deb_a_cobrar_hist dbcbHistorico on pagto.dbac_id = dbcbHistorico.dbac_id " + " LEFT OUTER JOIN arrecadacao.pagamento_situacao pagtoSitAtual on pagto.pgst_idatual = pagtoSitAtual.pgst_id " + " LEFT OUTER JOIN arrecadacao.pagamento_situacao pagtoSitAnterior on pagto.pgst_idanterior = pagtoSitAnterior.pgst_id " + " LEFT OUTER JOIN arrecadacao.arrecadador_mov_item arrecMovItem on pagto.amit_id = arrecMovItem.amit_id " + " LEFT OUTER JOIN arrecadacao.arrecadador_movimento arrecMov on arrecMovItem.armv_id = arrecMov.armv_id " + " LEFT OUTER JOIN arrecadacao.arrecadacao_forma arrecForma on pagto.arfm_id = arrecForma.arfm_id " + " LEFT OUTER JOIN faturamento.conta_historico contaHistorico on pagto.cnta_id = contaHistorico.cnta_id " + "WHERE " + " pagto.imov_id = " + idImovel + " ORDER BY " + " idDocumentoTipo, " + " anoMesReferenciaPagamento, " + " dataPagamento "; retorno = session.createSQLQuery(hql).addScalar("idPagamento", Hibernate.INTEGER).addScalar("idLocalidade", Hibernate.INTEGER).addScalar("nomeLocalidade", Hibernate.STRING) .addScalar("idGerencia", Hibernate.INTEGER).addScalar( "nomeGerencia", Hibernate.STRING).addScalar( "idImovel", Hibernate.INTEGER).addScalar( "idCliente", Hibernate.INTEGER).addScalar( "nomeCliente", Hibernate.STRING).addScalar( "nomeClienteArrecadador", Hibernate.STRING) .addScalar("dataPagamento", Hibernate.DATE).addScalar( "anoMesReferenciaPagamento", Hibernate.INTEGER) .addScalar("descricaoDebitoTipo", Hibernate.STRING) .addScalar("valorAgua", Hibernate.BIG_DECIMAL).addScalar( "valorEsgoto", Hibernate.BIG_DECIMAL).addScalar( "debitosConta", Hibernate.BIG_DECIMAL).addScalar( "valorCreditos", Hibernate.BIG_DECIMAL).addScalar( "valorDebitoACobrar", Hibernate.BIG_DECIMAL) .addScalar("numeroPrestacaoDebito", Hibernate.SHORT) .addScalar("numeroPrestacaoCobradas", Hibernate.SHORT) .addScalar("valorDebitoGuia", Hibernate.BIG_DECIMAL) .addScalar("valorPagamento", Hibernate.BIG_DECIMAL) .addScalar("idPagamentoSituacao", Hibernate.INTEGER) .addScalar("descricaoPagamentoSituacao", Hibernate.STRING) .addScalar("idDocumentoTipo", Hibernate.INTEGER).addScalar( "descricaoDocumentoTipo", Hibernate.STRING) .addScalar("descricaopagamentosituacaoante", Hibernate.STRING) .addScalar("valorImpostos",Hibernate.BIG_DECIMAL).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa o im�vel pelo id fazendo os carregamentos necess�rios * * [UC0255] Filtrar Pagamentos * * @author Rafael Corr�a * @date 16/12/06 * * @return Imovel * @throws ErroRepositorioException */ public Imovel pesquisarImovelPagamento(Integer idImovel) throws ErroRepositorioException { Imovel imovel = null; String hql = ""; Session session = HibernateUtil.getSession(); try { hql = "SELECT imov " + " FROM Imovel imov " + " INNER JOIN FETCH imov.localidade loc " + " INNER JOIN FETCH imov.setorComercial sc " + " INNER JOIN FETCH sc.municipio municipioSc " + " INNER JOIN FETCH municipioSc.unidadeFederacao unidFedSc " + " INNER JOIN FETCH imov.quadra quadra " + " INNER JOIN FETCH imov.ligacaoAguaSituacao ligAguaSit " + " INNER JOIN FETCH imov.ligacaoEsgotoSituacao ligEsgSit " + " LEFT JOIN FETCH imov.logradouroBairro logrBairro " + " LEFT JOIN FETCH logrBairro.bairro bairro " + " LEFT JOIN FETCH bairro.municipio municipioBairro " + " LEFT JOIN FETCH municipioBairro.unidadeFederacao unidFedBairro " + " LEFT JOIN FETCH imov.logradouroCep logrCep " + " LEFT JOIN FETCH logrCep.logradouro logr " + " LEFT JOIN FETCH logrCep.cep cep " + " LEFT JOIN FETCH logr.logradouroTipo logrTp " + " LEFT JOIN FETCH logr.logradouroTitulo logrTit " + " LEFT JOIN FETCH imov.enderecoReferencia endRef " + " LEFT JOIN FETCH imov.perimetroInicial.logradouroTipo logrTipoPerInicial " + " LEFT JOIN FETCH imov.perimetroInicial.logradouroTitulo logrTituloPerInicial " + " LEFT JOIN FETCH imov.perimetroFinal.logradouroTipo logrTipoPerFinal " + " LEFT JOIN FETCH imov.perimetroFinal.logradouroTitulo logrTituloPerFinal " + " WHERE imov.id = :idImovel "; imovel = (Imovel) session.createQuery(hql).setInteger("idImovel", idImovel).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return imovel; } /** * Pesquisa o cliente pelo id fazendo os carregamentos necess�rios * * [UC0255] Filtrar Pagamentos * * @author Rafael Corr�a * @date 16/12/06 * * @return Cliente * @throws ErroRepositorioException */ public Cliente pesquisarClientePagamento(Integer idCliente) throws ErroRepositorioException { Cliente cliente = null; String hql = ""; Session session = HibernateUtil.getSession(); try { hql = "SELECT cli " + " FROM Cliente cli " + " INNER JOIN FETCH cli.clienteTipo cliTp " + " LEFT JOIN FETCH cli.ramoAtividade ramo " + " LEFT JOIN FETCH cli.profissao profissao " + " WHERE cli.id = :idCliente "; cliente = (Cliente) session.createQuery(hql).setInteger( "idCliente", idCliente).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return cliente; } /** * Pesquisa o endere�o de correspond�ncia do cliente pelo seu id fazendo os * carregamentos necess�rios * * [UC0255] Filtrar Pagamentos * * @author Rafael Corr�a * @date 16/12/06 * * @return ClienteEndereco * @throws ErroRepositorioException */ public ClienteEndereco pesquisarClienteEnderecoPagamento(Integer idCliente) throws ErroRepositorioException { ClienteEndereco clienteEndereco = null; String hql = ""; Session session = HibernateUtil.getSession(); try { hql = "SELECT cliEnd " + " FROM ClienteEndereco cliEnd " + " INNER JOIN FETCH cliEnd.cliente cli " + " LEFT JOIN FETCH cliEnd.logradouroCep logrCep " + " LEFT JOIN FETCH cliEnd.enderecoReferencia endRef " + " LEFT JOIN FETCH cliEnd.logradouroBairro logrBairro " + " LEFT JOIN FETCH logrCep.cep cep " + " LEFT JOIN FETCH logrCep.logradouro logr " + " LEFT JOIN FETCH logr.municipio municipioLogr " + " LEFT JOIN FETCH municipioLogr.unidadeFederacao unidFedLogr " + " LEFT JOIN FETCH logr.logradouroTipo logrTp " + " LEFT JOIN FETCH logr.logradouroTitulo logrTit " + " LEFT JOIN FETCH logrBairro.bairro bairro " + " LEFT JOIN FETCH bairro.municipio municipioBairro " + " LEFT JOIN FETCH municipioBairro.unidadeFederacao unidFedBairro " + " LEFT JOIN FETCH cliEnd.perimetroInicial.logradouroTipo logrTipoPerInicial " + " LEFT JOIN FETCH cliEnd.perimetroInicial.logradouroTitulo logrTituloPerInicial " + " LEFT JOIN FETCH cliEnd.perimetroFinal.logradouroTipo logrTipoPerFinal " + " LEFT JOIN FETCH cliEnd.perimetroFinal.logradouroTitulo logrTituloPerFinal " + " WHERE cli.id = :idCliente " + " AND cliEnd.indicadorEnderecoCorrespondencia = " + ClienteEndereco.INDICADOR_ENDERECO_CORRESPONDENCIA .toString(); clienteEndereco = (ClienteEndereco) session.createQuery(hql) .setInteger("idCliente", idCliente).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return clienteEndereco; } /** * Pesquisa o telefone padr�o do cliente pelo seu id fazendo os * carregamentos necess�rios * * [UC0255] Filtrar Pagamentos * * @author Rafael Corr�a * @date 16/12/06 * * @return ClienteFone * @throws ErroRepositorioException */ public IClienteFone pesquisarClienteFonePagamento(Integer idCliente) throws ErroRepositorioException { IClienteFone clienteFone = null; String hql = ""; Session session = HibernateUtil.getSession(); try { hql = "SELECT cliFone " + " FROM ClienteFone cliFone " + " INNER JOIN FETCH cliFone.foneTipo foneTp " + " INNER JOIN cliFone.cliente cli " + " WHERE cli.id = :idCliente " + " AND cliFone.indicadorTelefonePadrao = " + ClienteFone.INDICADOR_FONE_PADRAO.toString(); clienteFone = (IClienteFone) session.createQuery(hql).setInteger( "idCliente", idCliente).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return clienteFone; } /** * Pesquisa os clientes do im�vel pelo seu id do im�vel fazendo os * carregamentos necess�rios * * [UC0255] Filtrar Pagamentos * * @author Rafael Corr�a * @date 16/12/06 * * @return Collection<ClienteImovel> * @throws ErroRepositorioException */ public Collection<ClienteImovel> pesquisarClientesImoveisPagamento( Integer idImovel) throws ErroRepositorioException { Collection<ClienteImovel> retorno = null; String hql = ""; Session session = HibernateUtil.getSession(); try { hql = "SELECT cliImovel " + " FROM ClienteImovel cliImovel " + " INNER JOIN FETCH cliImovel.cliente cli " + " INNER JOIN FETCH cliImovel.clienteRelacaoTipo crtp " + " INNER JOIN cliImovel.imovel imov " + " WHERE imov.id = :idImovel "; retorno = session.createQuery(hql).setInteger("idImovel", idImovel) .list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0263] Filtrar Movimento dos Arrecadadores * * @author Vivianne Sousa * @date 30/11/06 * * @param codigoBanco * @param codigoRemessa * @param descricaoIdentificacaoServico * @param numeroSequencialArquivo * @param dataGeracaoInicio * @param dataGeracaoFim * @param ultimaAlteracaoInicio * @param ultimaAlteracaoFim * @param descricaoOcorrencia * @param indicadorAceitacao * @param indicadorAbertoFechado * @return * @throws ErroRepositorioException */ public Collection filtrarMovimentoArrecadadorParaRelatorio( String codigoBanco, String codigoRemessa, String descricaoIdentificacaoServico, String numeroSequencialArquivo, Date dataGeracaoInicio, Date dataGeracaoFim, Date ultimaAlteracaoInicio, Date ultimaAlteracaoFim, String descricaoOcorrencia, String indicadorAceitacao, String indicadorAbertoFechado) throws ErroRepositorioException { Collection retorno = null; String sql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisMovimentoArrecadador( codigoBanco, codigoRemessa, descricaoIdentificacaoServico, numeroSequencialArquivo, dataGeracaoInicio, dataGeracaoFim, ultimaAlteracaoInicio, ultimaAlteracaoFim, descricaoOcorrencia, indicadorAceitacao, indicadorAbertoFechado); sql = " SELECT arrecadadorMovimento.armv_cdbanco as codBanco," + " arrecadadorMovimento.armv_cdremessa as codRemessa," + " arrecadadorMovimento.armv_dsidentificacaoservico as descIdentServico," + " arrecadadorMovimento.armv_nnnsa as numeroSeqArquivo," + " arrecadadorMovimento.armv_id as id," + " arrecadadorMovimento.armv_dtgeracao as dataGeracao," + " arrecadadorMovimento.armv_nnregistrosmovimento as numRegistroMovimento," + " arrecadadorMovimento.armv_vltotalmovimento as vlTotalMovimento," + " arrecadadorMovimento.armv_tmultimaalteracao as ultimaAlteracao," + " arrecadadorMovimento.armv_nmbanco as nomeBanco " + " FROM arrecadacao.arrecadador_movimento arrecadadorMovimento " + condicionais; Date dataInicio = null; Date dataFim = null; if (ultimaAlteracaoInicio != null && !ultimaAlteracaoInicio.equals("")) { dataInicio = Util.formatarDataInicial(ultimaAlteracaoInicio); if (condicionais.trim().equals("WHERE")) { sql = sql + "arrecadadorMovimento.armv_tmultimaalteracao >= :dataInicio"; } else { sql = sql + " and arrecadadorMovimento.armv_tmultimaalteracao >= :dataInicio"; } } if (ultimaAlteracaoFim != null && !ultimaAlteracaoFim.equals("")) { dataFim = Util.formatarDataFinal(ultimaAlteracaoFim); sql = sql + " and arrecadadorMovimento.armv_tmultimaalteracao <= :dataFim"; } if (dataInicio != null && dataFim != null) { retorno = session.createSQLQuery(sql).addScalar("codBanco", Hibernate.SHORT).addScalar("codRemessa", Hibernate.SHORT).addScalar("descIdentServico", Hibernate.STRING).addScalar("numeroSeqArquivo", Hibernate.INTEGER).addScalar("id", Hibernate.INTEGER) .addScalar("dataGeracao", Hibernate.DATE).addScalar( "numRegistroMovimento", Hibernate.INTEGER) .addScalar("vlTotalMovimento", Hibernate.BIG_DECIMAL) .addScalar("ultimaAlteracao", Hibernate.TIMESTAMP) .addScalar("nomeBanco", Hibernate.STRING).setTimestamp( "dataInicio", dataInicio).setTimestamp( "dataFim", dataFim).list(); } else { retorno = session.createSQLQuery(sql).addScalar("codBanco", Hibernate.SHORT).addScalar("codRemessa", Hibernate.SHORT).addScalar("descIdentServico", Hibernate.STRING).addScalar("numeroSeqArquivo", Hibernate.INTEGER).addScalar("id", Hibernate.INTEGER) .addScalar("dataGeracao", Hibernate.DATE).addScalar( "numRegistroMovimento", Hibernate.INTEGER) .addScalar("vlTotalMovimento", Hibernate.BIG_DECIMAL) .addScalar("ultimaAlteracao", Hibernate.TIMESTAMP) .addScalar("nomeBanco", Hibernate.STRING).list(); } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0263] Filtrar Movimento dos Arrecadadores * * @author Vivianne Sousa * @date 04/01/07 * * @param codigoBanco * @param codigoRemessa * @param descricaoIdentificacaoServico * @param numeroSequencialArquivo * @param dataGeracaoInicio * @param dataGeracaoFim * @param ultimaAlteracaoInicio * @param ultimaAlteracaoFim * @param descricaoOcorrencia * @param indicadorAceitacao * @param indicadorAbertoFechado * * @throws ControladorException */ public Integer filtrarMovimentoArrecadadoresRelatorioCount( String codigoBanco, String codigoRemessa, String descricaoIdentificacaoServico, String numeroSequencialArquivo, Date dataGeracaoInicio, Date dataGeracaoFim, Date ultimaAlteracaoInicio, Date ultimaAlteracaoFim, String descricaoOcorrencia, String indicadorAceitacao, String indicadorAbertoFechado) throws ErroRepositorioException { Integer movimentoArrecadadorCount = null; String sql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisMovimentoArrecadador( codigoBanco, codigoRemessa, descricaoIdentificacaoServico, numeroSequencialArquivo, dataGeracaoInicio, dataGeracaoFim, ultimaAlteracaoInicio, ultimaAlteracaoFim, descricaoOcorrencia, indicadorAceitacao, indicadorAbertoFechado); sql = " SELECT count (arrecadadorMovimento.armv_id) as qtdeMovimentoArrecadador " + " FROM arrecadacao.arrecadador_movimento arrecadadorMovimento inner join " + " arrecadacao.arrecadador_mov_item movimentoItem " + " on arrecadadorMovimento.armv_id = movimentoItem.armv_id " + condicionais; Date dataInicio = null; Date dataFim = null; if (ultimaAlteracaoInicio != null && !ultimaAlteracaoInicio.equals("")) { dataInicio = Util.formatarDataInicial(ultimaAlteracaoInicio); if (condicionais.trim().equals("WHERE")) { sql = sql + "arrecadadorMovimento.armv_tmultimaalteracao >= :dataInicio"; } else { sql = sql + " and arrecadadorMovimento.armv_tmultimaalteracao >= :dataInicio"; } } if (ultimaAlteracaoFim != null && !ultimaAlteracaoFim.equals("")) { dataFim = Util.formatarDataFinal(ultimaAlteracaoFim); sql = sql + " and arrecadadorMovimento.armv_tmultimaalteracao <= :dataFim"; } if (dataInicio != null && dataFim != null) { movimentoArrecadadorCount = (Integer) session.createSQLQuery( sql).addScalar("qtdeMovimentoArrecadador", Hibernate.INTEGER).setTimestamp("dataInicio", dataInicio).setTimestamp("dataFim", dataFim) .setMaxResults(1).uniqueResult(); } else { movimentoArrecadadorCount = (Integer) session.createSQLQuery( sql).addScalar("qtdeMovimentoArrecadador", Hibernate.INTEGER).setMaxResults(1).uniqueResult(); } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return movimentoArrecadadorCount; } /** * [UC0276] Encerrar Arrecada��o do M�s * * Pesquisa a cole��o de guias de pagamento categoria para o id da guia * informada. * * @author Pedro Alexandre * @date 09/01/2007 * * @param idGuiaPagamento * @return * @throws ErroRepositorioException */ public Collection pesquisarGuiaPagamentoCategoria(Integer idGuiaPagamento) throws ErroRepositorioException { Collection retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select guiaPagamentoCategoria " + "from GuiaPagamentoCategoria guiaPagamentoCategoria " + "inner join guiaPagamentoCategoria.guiaPagamento guiaPagamento " + "where guiaPagamento.id = :idGuiaPagamento "; retorno = session.createQuery(consulta).setInteger( "idGuiaPagamento", idGuiaPagamento).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] Encerrar Arrecada��o do M�s * * Pesquisa a cole��o de cliente de guias de pagamento para o id da guia * informada. * * @author Pedro Alexandre * @date 09/01/2007 * * @param idGuiaPagamento * @return * @throws ErroRepositorioException */ public Collection pesquisarClienteGuiaPagamento(Integer idGuiaPagamento) throws ErroRepositorioException { Collection retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select clienteGuiaPagamento " + "from ClienteGuiaPagamento clienteGuiaPagamento " + "inner join clienteGuiaPagamento.guiaPagamento guiaPagamento " + "where guiaPagamento.id = :idGuiaPagamento "; retorno = session.createQuery(consulta).setInteger( "idGuiaPagamento", idGuiaPagamento).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] Encerrar Arrecada��o do M�s * * Para cada guia de pagamento transferida para o hist�rico atualiza o * indicador de que a guia de pagamento est� no hist�rico. * * @author Pedro Alexandre * @date 09/01/2007 * * @param idsGuiasPagamento * @throws ErroRepositorioException */ public void atualizarIndicadorGuiaPagamentoNoHistorico( Collection idsGuiasPagamento) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarGuiaPagamentoGeral; try { atualizarGuiaPagamentoGeral = "update GuiaPagamentoGeral gpge " + "set gpge.indicadorHistorico = :indicadorHistorico, gpge.ultimaAlteracao = :dataUltimaAlteracao where gpge.id in (:idsGuiasPagamento)"; session.createQuery(atualizarGuiaPagamentoGeral).setInteger( "indicadorHistorico", ConstantesSistema.SIM).setDate( "dataUltimaAlteracao", new Date()).setParameterList( "idsGuiasPagamento", idsGuiasPagamento).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } } /** * [UC0276] Encerrar Arrecada��o do M�s * * Atualiza o ano/m�s de refer�ncia da arrecada��o. * * @author Pedro Alexandre * @date 09/01/2007 * * @param anoMesArrecadacaoAtual * @param anoMesArrecadacaoNovo * @throws ErroRepositorioException */ public void atualizarAnoMesArrecadacao(int anoMesArrecadacaoAtual, int anoMesArrecadacaoNovo) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarAnoMesArrecadacao; try { atualizarAnoMesArrecadacao = "update SistemaParametro " + "set parm_amreferenciaarrecadacao = " + anoMesArrecadacaoNovo + " " + "where parm_amreferenciaarrecadacao = :anoMesArrecadacaoAtual"; session.createQuery(atualizarAnoMesArrecadacao).setInteger( "anoMesArrecadacaoAtual", anoMesArrecadacaoAtual) .executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0276] Encerrar Arrecada��o do M�s * * Pesquisa as contas correspondentes aos pagamentos classificados de conta * e os pagamentos anteriores de conta classificados no m�s. * * @author Pedro Alexandre * @date 09/01/2007 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @param numeroIndice * @param quantidadeRegistros * @return * @throws ErroRepositorioException */ public Collection pesquisarContasDePagamentosClassificadosContaEPagamentosAnterioresContaClassificadosNoMes( Integer anoMesReferenciaArrecadacao, Integer idLocalidade, Integer numeroIndice, Integer quantidadeRegistros, Integer idSetorComercial) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select cnta.id from Conta cnta " + "inner join cnta.quadraConta qdra " + "inner join qdra.setorComercial stcm " + "where cnta.id in " + "(select distinct pgmt.contaGeral.id from Pagamento pgmt where pgmt.anoMesReferenciaArrecadacao <= :anoMesReferenciaArrecadacao " + "and (pgmt.pagamentoSituacaoAtual.id = :idPagamentoClassificado or pgmt.pagamentoSituacaoAtual.id = :idPagamentoValorABaixar) " + " and pgmt.contaGeral.id is not null and pgmt.localidade.id = :idLocalidade) " + " and stcm.id = :idSetorComercial "; retorno = session.createQuery(consulta).setInteger("idLocalidade", idLocalidade).setInteger("idSetorComercial", idSetorComercial).setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao).setInteger( "idPagamentoClassificado", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar", PagamentoSituacao.VALOR_A_BAIXAR).setMaxResults( quantidadeRegistros).setFirstResult(numeroIndice) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } // public Collection<GuiaPagamento> pesquisarGuiasPagamentoDePagamentosClassificadosGuiasPagamentoEPagamentosAnterioresGuiaPagamentoClassificadosNoMes( // Integer anoMesReferenciaArrecadacao, Integer idLocalidade, // Integer numeroIndice, Integer quantidadeRegistros) // throws ErroRepositorioException { // // // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa // Collection<GuiaPagamento> retorno = null; // // // Cria uma inst�ncia da sess�o // Session session = HibernateUtil.getSession(); // // // Cria a vari�vel que vai conter o hql // String consulta = ""; // // /** // * Alguns pagamentos foram para hist�rico indevidamente // * Alterado clausula where de <= para < no anoMesReferenciaArrecadacao // * // * @author Wellington Rocha // * @date 18/09/2012*/ // // try { // // // Cria o hql de pesquisa // consulta = "select pgmt.guiaPagamento from Pagamento pgmt " // + "inner join pgmt.localidade loca " // + "where pgmt.anoMesReferenciaArrecadacao < :anoMesReferenciaArrecadacao " // + "and (pgmt.pagamentoSituacaoAtual.id = " // + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " or " // + "pgmt.pagamentoSituacaoAtual.id = " // + PagamentoSituacao.VALOR_A_BAIXAR + ") " // + "and pgmt.guiaPagamento.id is not null " // + "and loca.id = :idLocalidade " // + "order by pgmt.guiaPagamento.id"; // // Executa o hql // retorno = session.createQuery(consulta).setInteger("idLocalidade", // idLocalidade).setInteger("anoMesReferenciaArrecadacao", // anoMesReferenciaArrecadacao).setMaxResults( // quantidadeRegistros).setFirstResult(numeroIndice).list(); // // // Erro no hibernate // } catch (HibernateException e) { // // Levanta a exce��o para a pr�xima camada // throw new ErroRepositorioException(e, "Erro no Hibernate"); // } finally { // // Fecha a sess�o com o hibernate // HibernateUtil.closeSession(session); // } // // return retorno; // } /** * [UC0276] Encerrar Arrecada��o do M�s * * Pesquisa as guias de pagamento correspondentes aos pagamentos * classificados de guia de pagamento e aos pagamentos anteriores de guia de * pagamento classificados no m�s. * * @author Pedro Alexandre * @date 09/01/2007 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection<GuiaPagamento> pesquisarGuiasPagamentoDePagamentosClassificadosGuiasPagamentoEPagamentosAnterioresGuiaPagamentoClassificadosNoMes( Integer anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<GuiaPagamento> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select gpag from GuiaPagamento gpag " + "inner join gpag.localidade loca " + "where gpag.id in " + "(select distinct pgmt.guiaPagamento.id from Pagamento pgmt where pgmt.anoMesReferenciaArrecadacao <= :anoMesReferenciaArrecadacao " + " and pgmt.pagamentoSituacaoAtual.id in (" + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + ", " + PagamentoSituacao.VALOR_A_BAIXAR + ", " + PagamentoSituacao.DUPLICIDADE_EXCESSO_DEVOLVIDO + ") " + " and pgmt.guiaPagamento.id is not null and pgmt.localidade.id = :idLocalidade) " + " and loca.id = :idLocalidade "; // Executa o hql retorno = session.createQuery(consulta).setInteger("idLocalidade", idLocalidade).setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao).list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] Encerrar Arrecada��o do M�s * * Pesquisar os pagamentos classificados ou com valor excedente baixado e * com valor excedente maior do que zero para transferir para o hist�rico. */ public Collection<Integer> pesquisarPagamentosClassificadosOuValorExcedenteBaixado(Integer anoMesReferenciaArrecadacao, Integer idLocalidade, int numeroIndice, int quantidadeRegistros) throws ErroRepositorioException { Collection<Integer> retorno = null; Session session = HibernateUtil.getSession(); StringBuilder consulta = new StringBuilder(); try { consulta.append("select pgmt.id from Pagamento pgmt ") .append("inner join pgmt.localidade loca ") .append("where ((loca.id= :idLocalidade) and ") .append("(pgmt.pagamentoSituacaoAtual.id = :situacaoClassificado) ") .append("and (pgmt.anoMesReferenciaArrecadacao <= :anoMesReferenciaArrecadacao))") .append(" or ((pgmt.pagamentoSituacaoAtual.id = :situacaoValorABaixar) ") .append("and (pgmt.valorExcedente > 0) and (pgmt.anoMesReferenciaArrecadacao < :anoMesReferenciaArrecadacao)) ") .append(" or ( (pgmt.pagamentoSituacaoAtual.id = :situacaoDuplicidadeExcessoDevolvido) ") .append(" and (pgmt.anoMesReferenciaArrecadacao <= :anoMesReferenciaArrecadacao) ) ") .append(" or (pgmt.pagamentoSituacaoAtual.id in (:classificadoRecuperacaoCreditoDuplicidade , :classificadoRecuperacaoCreditoCancelado)) ") .append(" order by pgmt.id"); retorno = session.createQuery(consulta.toString()) .setInteger("idLocalidade", idLocalidade) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("situacaoClassificado", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("classificadoRecuperacaoCreditoDuplicidade", PagamentoSituacao.PAGAMENTO_CLASSIFICADO_RECUPERACAO_CREDITO_DUPLICIDADE) .setInteger("classificadoRecuperacaoCreditoCancelado", PagamentoSituacao.PAGAMENTO_CLASSIFICADO_RECUPERACAO_CREDITO_CANCELADO) .setInteger("situacaoValorABaixar", PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("situacaoDuplicidadeExcessoDevolvido", PagamentoSituacao.DUPLICIDADE_EXCESSO_DEVOLVIDO) .setFirstResult(numeroIndice).setMaxResults(quantidadeRegistros).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] Encerrar Arrecada��o do M�s * * Pesquisar os pagamentos classificados ou com valor excedente baixado e * com valor excedente maior do que zero para transferir para o hist�rico. * * @author Pedro Alexandre * @date 10/01/2007 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection<Pagamento> pesquisarPagamentosClassificadosOuValorExcedenteBaixado( Integer anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Pagamento> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "select pgmt from Pagamento pgmt " + "inner join pgmt.localidade loca " + "where loca.id= :idLocalidade and " + "pgmt.anoMesReferenciaArrecadacao <= :anoMesReferenciaArrecadacao " + "and pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " or (pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.VALOR_A_BAIXAR + " and pgmt.valorExcedente > 0) "; // Executa o hql retorno = session.createQuery(consulta).setInteger("idLocalidade", idLocalidade).setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao).list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] Encerrar Arrecada��o do M�s * * Pesquisa as devolu��es classificadas para transferir para o hist�rico. * * @author Pedro Alexandre * @date 10/01/2007 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @param numeroIndice * @param quantidadeRegistros * @return * @throws ErroRepositorioException */ public Collection<Devolucao> pesquisarDevolucoesClassificadasPorLocalidade( Integer anoMesReferenciaArrecadacao, Integer idLocalidade, Integer numeroIndice, Integer quantidadeRegistros) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Devolucao> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "select devl from Devolucao devl " + "inner join devl.localidade loca " + "where loca.id= :idLocalidade and " + "devl.anoMesReferenciaArrecadacao <= :anoMesReferenciaArrecadacao " + "and devl.devolucaoSituacaoAtual.id = " + DevolucaoSituacao.DEVOLUCAO_CLASSIFICADA + " order by devl.id"; // Executa o hql retorno = session.createQuery(consulta).setInteger("idLocalidade", idLocalidade).setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao).setMaxResults( quantidadeRegistros).setFirstResult(numeroIndice).list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * O sistema seleciona a lista de pagamentos associados ao aviso banc�rio a * partir da tabela PAGAMENTO com AVBC_ID=AVBC_ID da tabela AVISO_BANCARIO * * @author Vivianne Sousa * @date 17/01/2007 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarPagamentoPorAvisoBancario(Integer idAvisoBancario) throws ErroRepositorioException { Collection retorno = null; String hql = ""; Session session = HibernateUtil.getSession(); try { hql = "select pagamento " + "from gcom.arrecadacao.pagamento.Pagamento pagamento " + "left join fetch pagamento.imovel imovel " + "left join fetch imovel.localidade localidade " + "left join fetch pagamento.contaGeral contaGeral " + "left join fetch contaGeral.conta conta " + "left join fetch contaGeral.contaHistorico contaHistorico " + "left join fetch pagamento.guiaPagamento guiaPagamento " + "left join fetch guiaPagamento.localidade localidadeG " + "left join fetch pagamento.cobrancaDocumento cobrancaDocumento " + "left join fetch cobrancaDocumento.localidade localidadeC " + "where pagamento.avisoBancario.id = :idAvisoBancario "; retorno = session.createQuery(hql).setInteger("idAvisoBancario", idAvisoBancario).list(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * @author Ana Maria * @date 29/01/2007 * * @param idGuiaPagamento * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarGuiaPagamento(Integer idGuiaPagamento) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT guiaPagamento " + "FROM GuiaPagamento guiaPagamento " + "WHERE guiaPagamento.id = :idGuiaPagamento "; retorno = session.createQuery(consulta).setInteger( "idGuiaPagamento", idGuiaPagamento.intValue()).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Atualiza logradouroBairro de um ou mais im�veis * * [UC0] Atualizar Logradouro * * @author Raphael Rossiter * @date 22/02/2007 * * @param * @return void */ public void atualizarLogradouroBairro( LogradouroBairro logradouroBairroAntigo, LogradouroBairro logradouroBairroNovo) throws ErroRepositorioException { String consulta = ""; Session session = HibernateUtil.getSession(); try { consulta = "UPDATE gcom.arrecadacao.banco.Agencia SET " + "lgbr_id = :idLogradouroBairroNovo, agen_tmultimaalteracao = :ultimaAlteracao " + "WHERE lgbr_id = :idLogradouroBairroAntigo "; session.createQuery(consulta).setInteger("idLogradouroBairroNovo", logradouroBairroNovo.getId()).setTimestamp( "ultimaAlteracao", new Date()).setInteger( "idLogradouroBairroAntigo", logradouroBairroAntigo.getId()) .executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Atualiza logradouroCep de um ou mais im�veis * * [UC0] Atualizar Logradouro * * @author Raphael Rossiter * @date 22/02/2007 * * @param * @return void */ public void atualizarLogradouroCep(LogradouroCep logradouroCepAntigo, LogradouroCep logradouroCepNovo) throws ErroRepositorioException { String consulta = ""; Session session = HibernateUtil.getSession(); try { consulta = "UPDATE gcom.arrecadacao.banco.Agencia SET " + "lgcp_id = :idLogradouroCepNovo, agen_tmultimaalteracao = :ultimaAlteracao " + "WHERE lgcp_id = :idLogradouroCepAntigo "; session.createQuery(consulta).setInteger("idLogradouroCepNovo", logradouroCepNovo.getId()).setTimestamp("ultimaAlteracao", new Date()).setInteger("idLogradouroCepAntigo", logradouroCepAntigo.getId()).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Pesquisa o cliente da guia de pagamento atrav�s do id da Guia de * Pagamento * * @author Vivianne Sousa * @date 28/02/2007 * * @return String * @throws ErroRepositorioException */ public Object[] pesquisarClienteDeGuiaPagamento(Integer idGuiaPagamento) throws ErroRepositorioException { // cria a vari�vel que vai armazenar o objeto pesquisada Object[] retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = "select cli.id, cli.nome, cli.cpf, cli.cnpj " + "from GuiaPagamento guia " + "inner join guia.cliente cli " + "where guia.id =:idGuiaPagamento "; retorno = (Object[]) session.createQuery(consulta).setInteger( "idGuiaPagamento", idGuiaPagamento.intValue()) .setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa o cliente da guia de pagamento atrav�s do id da Guia de * Pagamento * * @author Vivianne Sousa * @date 06/03/2007 * * @return String * @throws ErroRepositorioException */ public Object[] pesquisarImovelDeClienteGuiaPagamento( Integer idGuiaPagamento) throws ErroRepositorioException { // cria a vari�vel que vai armazenar o objeto pesquisada Object[] retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = "select cli.id, cli.nome, cli.cpf, cli.cnpj " + "from ClienteGuiaPagamento cgp " + "inner join cgp.cliente cli " + "inner join cgp.clienteRelacaoTipo crtp " + "inner join cgp.guiaPagamento guia " + "where crtp.id = :clienteRelacaoTipo and guia.id =:idGuiaPagamento "; retorno = (Object[]) session.createQuery(consulta).setInteger( "idGuiaPagamento", idGuiaPagamento.intValue()).setShort( "clienteRelacaoTipo", ClienteRelacaoTipo.USUARIO) .setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa o cliente da guia de pagamento atrav�s do id da Guia de * Pagamento * * @author Vivianne Sousa * @date 28/02/2007 * * @return String * @throws ErroRepositorioException */ public Object[] pesquisarClienteDeClienteImovel(Integer idGuiaPagamento) throws ErroRepositorioException { // cria a vari�vel que vai armazenar o objeto pesquisada Object[] retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = "select " + "clie.clie_id as idCliente, clie.clie_nncpf as cpf, clie.clie_nncnpj as cnpj," + "clie.clie_nmcliente as nomeCliente " + "FROM faturamento.guia_pagamento gp " + "INNER JOIN cadastro.imovel imov on gp.imov_id = imov.imov_id " + "LEFT JOIN cadastro.cliente_imovel cliImov on cliImov.imov_id = imov.imov_id " + "LEFT JOIN cadastro.cliente clie on cliImov.clie_id = clie.clie_id " + "LEFT JOIN cadastro.cliente_relacao_tipo crt on cliImov.crtp_id = crt.crtp_id " + "WHERE gp.gpag_id = " + idGuiaPagamento + "AND crt.crtp_id = " + ClienteRelacaoTipo.USUARIO; retorno = (Object[]) session.createSQLQuery(consulta).addScalar( "idCliente", Hibernate.INTEGER) .addScalar("cpf", Hibernate.STRING) .addScalar("cnpj", Hibernate.STRING) .addScalar("nomeCliente", Hibernate.STRING) .setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0213] Desfazer Parcelamento Debito - remover guia pagamento referente * ao parcelamento * * remove a guia de pagamento do Pagamento * * @author Vivianne Sousa * @date 06/03/2007 * * @param * @return void */ public void removerGuiaPagamentoPagamento(Integer idPagamento) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try { String processarPagamentoConta = "UPDATE Pagamento " + "SET gpag_id = null, pgmt_tmultimaalteracao = :dataAlteracao " + "WHERE pgmt_id =:idPagamento)"; session.createQuery(processarPagamentoConta).setTimestamp( "dataAlteracao", new Date()).setInteger("idPagamento", idPagamento).executeUpdate(); } catch (Exception e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0301] Gerar Dados Di�rios da Arrecada��o * * Pesquisa os ano/m�s de refer�ncia dos pagamentos para ano/m�s de * refer�ncia maior ou igual ao ano/m�s de refer�ncia atual da arrecada��o * * @author Pedro Alexandre * @date 07/03/2007 * * @param anoMesArrecadacaoAtual * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection pesquisarAnoMesArrecadacaoPagamentoMaiorIgualAnoMesArrecadacaoAtual( Integer anoMesArrecadacaoAtual, Integer idLocalidade) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select distinct(pagamento.anoMesReferenciaArrecadacao) " + "from Pagamento pagamento " + "inner join pagamento.localidade localidade " + "where pagamento.anoMesReferenciaArrecadacao >= :anoMesArrecadacaoAtual " + "and localidade.id = :idLocalidade"; retorno = session.createQuery(consulta).setInteger( "anoMesArrecadacaoAtual", anoMesArrecadacaoAtual) .setInteger("idLocalidade", idLocalidade).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0113] - Faturar Grupo de Faturamento * * @author Raphael Rossiter * @date 20/03/2007 * * @param idDebitoACobrar * @return Integer * @throws ErroRepositorioException */ public Integer pesquisarQuantidadePagamentosPorDebitoACobrar( Integer idDebitoACobrar) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "SELECT COUNT(*) " + "FROM Pagamento pagamento " + "INNER JOIN pagamento.debitoACobrarGeral debitoACobrarGeral " + "WHERE debitoACobrarGeral.id = :idDebitoACobrar "; retorno = (Integer) session.createQuery(consulta).setInteger( "idDebitoACobrar", idDebitoACobrar).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * Atualiza a situacao atual dos pagamentos (PGST_IDATUAL) (tabela * PAGAMENTO_SITUACAO) * * @author Pedro Alexandre * @date 23/03/2007 * * @param colecaoIdsPagamentos * @throws ErroRepositorioException */ public void atualizarSituacaoPagamentoClassificado(Collection colecaoIdsPagamentos) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarSituacaoPagamento; try { atualizarSituacaoPagamento = "UPDATE Pagamento pgmt " + "SET pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacao," + " pgmt.pagamentoSituacaoAnterior.id = :pagamentoSituacaoAnterior," + " pgmt.ultimaAlteracao = :dataAlteracao," + " pgmt.valorExcedente = null " + "WHERE pgmt.id =:idPagamento"; int i = 1; Iterator iteratorPagamentos = colecaoIdsPagamentos.iterator(); while (iteratorPagamentos.hasNext()) { Pagamento pagamento = (Pagamento) iteratorPagamentos.next(); BigInteger pagamentoSituacaoAtual; if (pagamento.getPagamentoSituacaoAtual() != null){ pagamentoSituacaoAtual = BigInteger.valueOf(pagamento.getPagamentoSituacaoAtual().getId()); }else{ pagamentoSituacaoAtual = null; } session.createQuery(atualizarSituacaoPagamento) .setInteger("pagamentoSituacao", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setBigInteger("pagamentoSituacaoAnterior", pagamentoSituacaoAtual) .setTimestamp("dataAlteracao", new Date()) .setInteger("idPagamento", pagamento.getId()) .executeUpdate(); if (i % 50 == 0) { session.flush(); session.clear(); } i++; } session.flush(); session.clear(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] Classificar Pagamentos e Devolu��es * * Caso o valor total dos pagamentos seja menor que o valor do documento, * atualiza a situa��o atual dos pagamentos (PGST_IDATUAL) com valor * correspondente a valor n�o confere (tabela PAGAMENTO_SITUACAO) e atualiza * o id da conta nos pagamentos (seta CNTA_ID da tabela PAGAMENTO para * CNTA_ID da tabela CONTA) * * [SB0008] Processar Pagamento a Maior ou a Menor * * @author Pedro Alexandre * @date 28/03/2007 * * @param mapPagamentosValorNaoConfere * @throws ErroRepositorioException */ public void processarPagamentoValorNaoConfereConta( Map<Integer, Collection> mapPagamentosValorNaoConfere) throws ErroRepositorioException { // StatelessSession session = HibernateUtil.getStatelessSession(); Session session = HibernateUtil.getSession(); String processarPagamentoConta = "UPDATE Pagamento pgmt " + "SET pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacao, " + "pgmt.contaGeral.id = :idConta, " + "pgmt.ultimaAlteracao = :dataAlteracao " + "WHERE pgmt.id IN(:idsPagamentos)"; Collection colecaoIdsContas = mapPagamentosValorNaoConfere.keySet(); Iterator iteratorIdsContas = colecaoIdsContas.iterator(); try { int i = 1; while (iteratorIdsContas.hasNext()) { Integer idConta = (Integer) iteratorIdsContas.next(); Collection colecaoIdsPagamentos = mapPagamentosValorNaoConfere .get(idConta); if (colecaoIdsPagamentos != null && !colecaoIdsPagamentos.isEmpty()) { session.createQuery(processarPagamentoConta).setInteger( "pagamentoSituacao", PagamentoSituacao.VALOR_NAO_CONFERE).setInteger( "idConta", idConta).setTimestamp("dataAlteracao", new Date()).setParameterList("idsPagamentos", colecaoIdsPagamentos).executeUpdate(); if (i % 50 == 0) { session.flush(); session.clear(); } i++; } } session.flush(); session.clear(); } catch (Exception e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] Classificar Pagamentos e Devolu��es * * Caso o valor total dos pagamentos seja menor que o valor do documento, * atualiza a situa��o atual dos pagamentos (PGST_IDATUAL) com valor * correspondente a valor n�o confere (tabela PAGAMENTO_SITUACAO) e atualiza * o id da guia de pagamento nos pagamentos (seta GPAG_ID da tabela * PAGAMENTO para GPAG_ID da tabela GUIA PAGAMENTO) * * [SB0008] Processar Pagamento a Maior ou a Menor * * @author Pedro Alexandre * @date 28/03/2007 * * @param mapPagamentosValorNaoConfere * @throws ErroRepositorioException */ public void processarPagamentoValorNaoConfereGuiaPagamento( Map<Integer, Collection> mapPagamentosValorNaoConfere) throws ErroRepositorioException { // StatelessSession session = HibernateUtil.getStatelessSession(); Session session = HibernateUtil.getSession(); String processarPagamentoGuiaPagamento = "UPDATE Pagamento pgmt " + "SET pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacao, " + "pgmt.guiaPagamento.id = :idGuiaPagamento, " + "pgmt.ultimaAlteracao = :dataAlteracao " + "WHERE pgmt.id IN(:idsPagamentos)"; Collection colecaoIdsGuias = mapPagamentosValorNaoConfere.keySet(); Iterator iteratorIdsGuias = colecaoIdsGuias.iterator(); try { int i = 1; while (iteratorIdsGuias.hasNext()) { Integer idGuiaPagamento = (Integer) iteratorIdsGuias.next(); Collection colecaoIdsPagamentos = mapPagamentosValorNaoConfere .get(idGuiaPagamento); if (colecaoIdsPagamentos != null && !colecaoIdsPagamentos.isEmpty()) { session.createQuery(processarPagamentoGuiaPagamento) .setInteger("pagamentoSituacao", PagamentoSituacao.VALOR_NAO_CONFERE) .setInteger("idGuiaPagamento", idGuiaPagamento) .setTimestamp("dataAlteracao", new Date()) .setParameterList("idsPagamentos", colecaoIdsPagamentos).executeUpdate(); if (i % 50 == 0) { session.flush(); session.clear(); } i++; } } session.flush(); session.clear(); } catch (Exception e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] Classificar Pagamentos e Devolu��es * * Caso o valor total dos pagamentos seja menor que o valor do documento, * atualiza a situa��o atual dos pagamentos (PGST_IDATUAL) com valor * correspondente a valor n�o confere (tabela PAGAMENTO_SITUACAO) e atualiza * o id do d�bito a cobrar nos pagamentos (seta DBAC_ID da tabela PAGAMENTO * para DBAC_ID da tabela DEBITO A COBRAR) * * [SB0008] Processar Pagamento a Maior ou a Menor * * @author Pedro Alexandre * @date 28/03/2007 * * @param mapPagamentosValorNaoConfere * @throws ErroRepositorioException */ public void processarPagamentoValorNaoConfereDebitoACobrar( Map<Integer, Collection> mapPagamentosValorNaoConfere) throws ErroRepositorioException { // StatelessSession session = HibernateUtil.getStatelessSession(); Session session = HibernateUtil.getSession(); String processarPagamentoDebitoACobrar = "UPDATE Pagamento pgmt " + "SET pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacao, " + "pgmt.debitoACobrarGeral.id = :idDebitoACobrar, " + "pgmt.ultimaAlteracao = :dataAlteracao " + "WHERE pgmt.id IN(:idsPagamentos)"; Collection colecaoIdsDebitosACobrar = mapPagamentosValorNaoConfere .keySet(); Iterator iteratorIdsDebitosACobrar = colecaoIdsDebitosACobrar .iterator(); try { int i = 1; while (iteratorIdsDebitosACobrar.hasNext()) { Integer idDebitoACobrar = (Integer) iteratorIdsDebitosACobrar .next(); Collection colecaoIdsPagamentos = mapPagamentosValorNaoConfere .get(idDebitoACobrar); if (colecaoIdsPagamentos != null && !colecaoIdsPagamentos.isEmpty()) { session.createQuery(processarPagamentoDebitoACobrar) .setInteger("pagamentoSituacao", PagamentoSituacao.VALOR_NAO_CONFERE) .setInteger("idDebitoACobrar", idDebitoACobrar) .setTimestamp("dataAlteracao", new Date()) .setParameterList("idsPagamentos", colecaoIdsPagamentos).executeUpdate(); if (i % 50 == 0) { session.flush(); session.clear(); } i++; } } session.flush(); session.clear(); } catch (Exception e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] - Classificar Pagamentos e Devolu��es * * <Breve descri��o sobre o subfluxo> * * [SB0008] - Processar Pagamento a Maior ou a Menor * * @author Pedro Alexandre, Pedro Alexandre * @date 28/03/2007, 11/06/2007 * * @param colecaoPagamentos * @throws ErroRepositorioException */ public void processarPagamentoValorNaoConfereIdentificadorDocumentoIgualANulo( Collection colecaoPagamentos) throws ErroRepositorioException { // StatelessSession session = HibernateUtil.getStatelessSession(); Session session = HibernateUtil.getSession(); String processarPagamento = "UPDATE Pagamento pgmt " + "SET pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacao, " + "pgmt.contaGeral.id = null, pgmt.guiaPagamento.id = null, pgmt.debitoACobrarGeral.id = null, " + "pgmt.ultimaAlteracao = :dataAlteracao " + "WHERE pgmt.id = :idPagamento"; Iterator<Pagamento> iteratorPagamentos = colecaoPagamentos.iterator(); try { int i = 1; while (iteratorPagamentos.hasNext()) { Pagamento pagamento = iteratorPagamentos.next(); session.createQuery(processarPagamento).setInteger( "pagamentoSituacao", PagamentoSituacao.VALOR_NAO_CONFERE).setTimestamp( "dataAlteracao", new Date()).setInteger("idPagamento", pagamento.getId()).executeUpdate(); if (i % 50 == 0) { session.flush(); session.clear(); } i++; } session.flush(); session.clear(); } catch (Exception e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Remove o id da guia de pagamento dos pagamentos referentes a conta para * poder mandar a guia de pagamento para o hist�rico. * * [UC0000] Gerar Hist�rco para encerrar Faturamento * * @author Pedro Alexandre * @date 01/04/2007 * * @param idConta * @return * @throws ErroRepositorioException */ public void apagarIdGuiaPagamentoPagamentos(Integer idGuiaPagamento) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "UPDATE Pagamento " + "SET guiaPagamento = null " + "WHERE id in (select pgmt.id from Pagamento pgmt where pgmt.guiaPagamento.id = :idGuiaPagamento) "; session.createQuery(consulta).setInteger("idGuiaPagamento", idGuiaPagamento).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Pesquisa os movimentos dos arrecadores para a gera��o do relat�rio * * [UCXXXX] Acompanhar Movimento dos Arrecadadores * * @author Rafael Corr�a * @date 02/04/2007 * * @return * @throws ErroRepositorioException */ public Collection pesquisarMovimentoArrecadadoresRelatorio( Integer mesAnoReferencia, Integer idArrecadador, Integer idFormaArrecadacao, Date dataPagamentoInicial, Date dataPagamentoFinal) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta = null; Collection retorno = null; try { consulta = "(select pg.pgmt_amreferenciaarrecadacao as anoMesReferencia, cli.clie_nmcliente as nomeArrecadador, arf.arfm_dsarrecadacaoforma as arrecadacaoForma, " + " pg.pgmt_dtpagamento as dataPagamento, sum(pg.pgmt_vlpagamento) as valorPagamento, count(distinct pg.amit_id) as qtdeDocumentos, count(pgmt_id) as qtdePagamentos " + " from arrecadacao.pagamento pg " + " inner join arrecadacao.aviso_bancario avb on (pg.avbc_id = avb.avbc_id) " + " inner join arrecadacao.arrecadador arr on (avb.arrc_id = arr.arrc_id) " + " inner join cadastro.cliente cli on (arr.clie_id = cli.clie_id) " + " inner join arrecadacao.arrecadacao_forma arf on (pg.arfm_id = arf.arfm_id) " + " where pgmt_amreferenciaarrecadacao = :mesAnoReferencia and pg.pgmt_dtpagamento between :dataPagamentoInicial and :dataPagamentoFinal "; if (idArrecadador != null) { consulta = consulta + " and arr.arrc_id = " + idArrecadador; } if (idFormaArrecadacao != null) { consulta = consulta + " and arf.arfm_id = " + idFormaArrecadacao; } consulta = consulta + " group by pg.pgmt_amreferenciaarrecadacao, cli.clie_nmcliente, arf.arfm_dsarrecadacaoforma, " + " pgmt_dtpagamento " + " order by cli.clie_nmcliente, arf.arfm_dsarrecadacaoforma, pgmt_dtpagamento) " + " union " + " (select pg.pgmt_amreferenciaarrecadacao as anoMesReferencia, cli.clie_nmcliente as nomeArrecadador, arf.arfm_dsarrecadacaoforma as arrecadacaoForma, '9999-12-01' as dataPagamento, " + " sum(pg.pgmt_vlpagamento) as valorPagamento, count(distinct pg.amit_id) as qtdeDocumentos, count(pgmt_id) as qtdePagamentos " + " from arrecadacao.pagamento pg " + " inner join arrecadacao.aviso_bancario avb on (pg.avbc_id = avb.avbc_id) " + " inner join arrecadacao.arrecadador arr on (avb.arrc_id = arr.arrc_id) " + " inner join cadastro.cliente cli on (arr.clie_id = cli.clie_id) " + " inner join arrecadacao.arrecadacao_forma arf on (pg.arfm_id = arf.arfm_id) " + " where pgmt_amreferenciaarrecadacao = :mesAnoReferencia and pg.pgmt_dtpagamento < :dataPagamentoInicial "; if (idArrecadador != null) { consulta = consulta + " and arr.arrc_id = " + idArrecadador; } if (idFormaArrecadacao != null) { consulta = consulta + " and arf.arfm_id = " + idFormaArrecadacao; } consulta = consulta + " group by pg.pgmt_amreferenciaarrecadacao, cli.clie_nmcliente, arf.arfm_dsarrecadacaoforma " + " order by cli.clie_nmcliente, arf.arfm_dsarrecadacaoforma) "; retorno = session.createSQLQuery(consulta).addScalar( "anoMesReferencia", Hibernate.INTEGER).addScalar( "nomeArrecadador", Hibernate.STRING).addScalar( "arrecadacaoForma", Hibernate.STRING).addScalar( "dataPagamento", Hibernate.DATE).addScalar( "valorPagamento", Hibernate.BIG_DECIMAL).addScalar( "qtdeDocumentos", Hibernate.INTEGER).addScalar( "qtdePagamentos", Hibernate.INTEGER).setInteger( "mesAnoReferencia", mesAnoReferencia).setDate( "dataPagamentoInicial", dataPagamentoInicial).setDate( "dataPagamentoFinal", dataPagamentoFinal).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 1550 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor do d�bitos cobrados por localidade, categoria dos * pagamentos classificados de conta para tipo de financiamento igual a * doa��es * * @author Pedro Alexandre, Pedro Alexandre * @date 03/04/2007, 23/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @param idLancamentoItemContabil * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorDebitoCobradoPagamentosClassificadosContaFinanciamentoTipoDoacoes( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria, Integer idLancamentoItemContabil) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(dccg.dccg_vlcategoria) as col_0 " + "from " + "faturamento.debito_cobrado_categoria dccg " + "where " + "dccg.catg_id= :idCategoria " + "and (dccg.dbcb_id in ( " + "select " + "dbcb.dbcb_id " + "from " + "faturamento.debito_cobrado dbcb " + "where " + "dbcb.lict_id= :idLancamentoItemContabil " + "and dbcb.fntp_id= :idFinanciamentoTipo " + "and (dbcb.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or ( " + "pgmt.pgst_idatual= :idPagamentoValorABaixar and pgmt.pgst_idanterior= :idPagamentoValorNaoConfere)) " + "and (pgmt.cnta_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setInteger("idFinanciamentoTipo",FinanciamentoTipo.DOACOES) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("idPagamentoValorNaoConfere",PagamentoSituacao.VALOR_NAO_CONFERE) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 4150 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor dos d�bitos cobrados por localidade, categoria e item * cont�bil para os pagamentos de contas efetuados em meses anteriores * classificados no m�s para tipo de financiamento igual doa��es. * * @author Pedro Alexandre * @date 03/04/2007 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @param idLancamentoItemContabil * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorDebitoCobradoPagamentosContasEfetuadosEmMesesAnterioresClassificadosNoMesFinanciamentoTipoParcelamentoDoacoes( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria, Integer idLancamentoItemContabil) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "select sum(dccg.valorCategoria) " + "from DebitoCobradoCategoria dccg " + "where dccg.categoria.id=" + idCategoria + " and dccg.debitoCobrado.id in ( select dbcb.id from DebitoCobrado dbcb " + "where dbcb.lancamentoItemContabil.id = " + idLancamentoItemContabil + " and dbcb.financiamentoTipo.id =" + FinanciamentoTipo.DOACOES + " and dbcb.conta.id in( select distinct(pgmt.contaGeral.id) " + "from Pagamento pgmt " + "where pgmt.anoMesReferenciaArrecadacao < :anoMesReferenciaArrecadacao " + "and pgmt.localidade.id =" + idLocalidade + " " + "and (pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " or " + "pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.VALOR_A_BAIXAR + ") " + "and pgmt.contaGeral.id is not null " + ") )"; retorno = (BigDecimal) session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 4000 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor dos d�bitos cobrados por localidade, categoria e item * cont�bil para os pagamentos de contas efetuados em meses anteriores * classificados no m�s para tipo de financiamento igual a parcelamento de * servi�o e grupo de parcelamento diferente de juros cobrados. * * @author Pedro Alexandre, Pedro Alexandre * @date 23/05/2006, 26/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @param idLancamentoItemContabil * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorDebitoCobradoPagamentosContasEfetuadosEmMesesAnterioresClassificadosNoMesFinanciamentoTipoDoacoes( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria, Integer idLancamentoItemContabil) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(dccg.dccg_vlcategoria) as col_0 " + "from " + "faturamento.debito_cobrado_categoria dccg " + "where " + "dccg.catg_id= :idCategoria " + "and (dccg.dbcb_id in ( " + "select " + "dbcb.dbcb_id " + "from " + "faturamento.debito_cobrado dbcb " + "where " + "dbcb.lict_id= :idLancamentoItemContabil " + "and dbcb.fntp_id= :idFinanciamentoTipo " + "and (dbcb.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao > 201212 and pgmt.pgmt_amreferenciaarrecadacao < :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setInteger("idFinanciamentoTipo",FinanciamentoTipo.DOACOES) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] Encerrar Arrecada��o do M�s * * Pesquisa as devolu��es classificadas para transferir para o hist�rico. * * @author Pedro Alexandre * @date 10/01/2007 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection<Devolucao> pesquisarDevolucoesClassificadasPorLocalidade( Integer anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<Devolucao> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; /** * Algumas guias de devolu��o foram jogadas para hist�rico indevidamente * Alterado valor da clausula where de anoMesReferenciaArrecadacao de <= para < * * @author Wellington Rocha * @date 18/09/2012 * */ try { // Cria o hql de pesquisa consulta = "select devl from Devolucao devl " + "inner join devl.localidade loca " + "where loca.id= :idLocalidade and " + "devl.anoMesReferenciaArrecadacao <= :anoMesReferenciaArrecadacao " + "and ( devl.devolucaoSituacaoAtual.id = " + DevolucaoSituacao.DEVOLUCAO_CLASSIFICADA + " or devl.devolucaoSituacaoAtual.id = " + DevolucaoSituacao.DEVOLUCAO_OUTROS_VALORES + ")" ; // Executa o hql retorno = session.createQuery(consulta).setInteger("idLocalidade", idLocalidade).setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao).list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] Encerrar Arrecada��o do M�s * * Pesquisa as contas correspondentes aos pagamentos classificados de conta * e os pagamentos anteriores de conta classificados no m�s. * * @author Pedro Alexandre * @date 09/01/2007 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection<Conta> pesquisarContasDePagamentosClassificadosContaEPagamentosAnterioresContaClassificadosNoMes( Integer anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { Collection<Conta> retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select cnta from Conta cnta " + "inner join cnta.localidade loca " + "where cnta.id in " + "(select distinct pgmt.contaGeral.id from Pagamento pgmt where pgmt.anoMesReferenciaArrecadacao <= :anoMesReferenciaArrecadacao " + "and (pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " or pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.VALOR_A_BAIXAR + ") " + " and pgmt.contaGeral.id is not null and pgmt.localidade.id = :idLocalidade) " + " and loca.id = :idLocalidade "; retorno = session.createQuery(consulta).setInteger("idLocalidade", idLocalidade).setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] Encerrar Arrecada��o do M�s * * Pesquisa a conta * * @author Pedro Alexandre * @date 10/01/2007 * * @param idConta * @return * @throws ErroRepositorioException */ public Conta pesquisarConta(Integer idConta) throws ErroRepositorioException { Conta retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select cnta from Conta cnta where cnta.id = :idConta "; retorno = (Conta) session.createQuery(consulta).setInteger( "idConta", idConta).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] Encerrar Arrecada��o do M�s * * Pesquisar o pagamento * * @author Pedro Alexandre * @date 10/04/2007 * * @param idPagamento * @return * @throws ErroRepositorioException */ public Pagamento pesquisarPagamento(Integer idPagamento) throws ErroRepositorioException { Pagamento retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "select pgmt from Pagamento pgmt where pgmt.id = :idPagamento "; // Executa o hql retorno = (Pagamento) session.createQuery(consulta).setInteger( "idPagamento", idPagamento).uniqueResult(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } public Collection<Integer> pesquisarIdsSetoresComPagamentosOuDevolucoes() throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select stcm_id as setorComercial from cadastro.setor_comercial where loca_id in (select loca_id from arrecadacao.devolucao " + "union " + "select loca_id as localidade from arrecadacao.pagamento)"; retorno = session.createSQLQuery(consulta).addScalar( "setorComercial", Hibernate.INTEGER).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Integer pesquisarIdLocalidadePorSetorComercial( Integer idSetorComercial) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select stcm.localidade.id from SetorComercial stcm where stcm.id = :idSetorComercial"; retorno = (Integer) session.createQuery(consulta).setInteger( "idSetorComercial", idSetorComercial).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] Encerrar Arrecada��o do M�s * * Pesquisa os d�bitos a cobrar correspondentes aos pagamentos classificados * de d�bito a cobrar e aos pagamentos anteriores de d�bito a cobrar * classificados no m�s. * * @author Pedro Alexandre * @date 11/04/2007 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection<DebitoACobrar> pesquisarDebitosACobrarDePagamentosClassificadosGuiasPagamentoEPagamentosAnterioresGuiaPagamentoClassificadosNoMes( Integer anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<DebitoACobrar> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; /** * Algumas guias de pagamento foram indevidamente jogados para hist�rico * Alterada a clausula where do anoMesReferenciaArrecadacao de <= para < * * @author Wellington Rocha * @date 18/09/2012*/ try { consulta = "select dbac from DebitoACobrar dbac " + "inner join dbac.localidade loca " + "where dbac.id in " + "(select distinct pgmt.debitoACobrarGeral.id from Pagamento pgmt where pgmt.anoMesReferenciaArrecadacao <= :anoMesReferenciaArrecadacao " + "and (pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.PAGAMENTO_CLASSIFICADO + " or pgmt.pagamentoSituacaoAtual.id = " + PagamentoSituacao.VALOR_A_BAIXAR + ") " + " and pgmt.debitoACobrarGeral.id is not null and pgmt.localidade.id = :idLocalidade) " + " and loca.id = :idLocalidade "; // Executa o hql retorno = session.createQuery(consulta).setInteger("idLocalidade", idLocalidade).setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao).list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 4400, 4410, 4420, 4430 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor dos cr�ditos realizados por localidade e categoria, para * os pagamentos de contas efetuados em meses anteriores classificados no * m�s, para origem do cr�dito igual a descontos concedidos. * * @author Pedro Alexandre, Pedro Alexandre * @date 23/05/2006, 23/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @param idOrigemCredito * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorCreditoRealizadoPagamentosContasEfetuadosEmMesesAnterioresClassificadosNoMesPorOrigemCredito( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria, Integer idOrigemCredito) throws ErroRepositorioException { BigDecimal retorno = BigDecimal.ZERO; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(crcg.crcg_vlcategoria) as col_0 " + "from " + "faturamento.cred_realizado_catg crcg " + "where " + "crcg.catg_id=:idCategoria " + "and (crcg.crrz_id in ( " + "select " + "crrz.crrz_id " + "from " + "faturamento.credito_realizado crrz " + "where " + "crrz.crog_id= :idOrigemCredito " + "and (crrz.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao > 201212 and pgmt.pgmt_amreferenciaarrecadacao < :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0", Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idOrigemCredito",idOrigemCredito) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade",idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 400 e 500 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor do d�bitos cobrados por localidade, categoria dos * pagamentos classificados de conta para tipo de financiamento igual a * parcelamento de �gua ou parcelamento de esgoto. * * @author Pedro Alexandre, Pedro Alexandre * @date 18/04/2007, 22/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @param idFinanciamentoTipo * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorDebitoCobradoPagamentosClassificadosContaPorFinanciamentoTipo( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria, Integer idFinanciamentoTipo) throws ErroRepositorioException { BigDecimal retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; StringBuilder conta = new StringBuilder(); StringBuilder pgClassificado = new StringBuilder(); StringBuilder pgRecuperacaoCredito = new StringBuilder(); try { conta.append("select distinct pgmt.cnta_id ") .append("from arrecadacao.pagamento pgmt ") .append("where pgmt.pgmt_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao ") .append("and pgmt.loca_id= :idLocalidade ") .append("and (pgmt.pgst_idatual= :idPagamentoClassificado or (pgmt.pgst_idatual= :idPagamentoValorABaixar and pgmt.pgst_idanterior = :idPagamentoValorNaoConfere)) ") .append("and (pgmt.cnta_id is not null) "); consulta = "select " + "sum(dccg.dccg_vlcategoria) as col_0 " + "from " + "faturamento.debito_cobrado_categoria dccg " + "where " + "dccg.catg_id=:idCategoria " + "and (dccg.dbcb_id in ( " + "select " + "dbcb.dbcb_id " + "from " + "faturamento.debito_cobrado dbcb " + "where " + "dbcb.fntp_id=:idFinanciamentoTipo " + "and (dbcb.cnta_id in (" + conta.toString() + ") ))" + ")"; pgClassificado.append("and (pgmt.pgst_idatual= :idPagamentoClassificado or (pgmt.pgst_idatual= :idPagamentoValorABaixar and pgmt.pgst_idanterior = :idPagamentoValorNaoConfere)) "); pgRecuperacaoCredito.append("and pgmt.pgst_idatual= :idPagamentoClassificado or (pgmt.pgst_idatual= :idPagamentoValorABaixar and pgmt.pgst_idanterior = :idPagamentoValorNaoConfere)) "); retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idFinanciamentoTipo", idFinanciamentoTipo) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("idPagamentoValorNaoConfere",PagamentoSituacao.VALOR_NAO_CONFERE) .setInteger("idLocalidade", idLocalidade) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 3800 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor dos d�bitos cobrados por localidade e categoria para os * pagamentos de contas efetuados em meses anteriores classificados no m�s * para tipo de financiamento igual a parcelamento de �gua. * * @author Pedro Alexandre, Pedro Alexandre * @date 18/04/2007, 23/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @param idFinanciamentoTipo * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorDebitoCobradoPagamentosContasEfetuadosEmMesesAnterioresClassificadosNoMesPorFinanciamentoTipo( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria, Integer idFinanciamentoTipo) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(dccg.dccg_vlcategoria) as col_0 " + "from " + "faturamento.debito_cobrado_categoria dccg " + "where " + "dccg.catg_id= :idCategoria " + "and (dccg.dbcb_id in ( " + "select " + "dbcb.dbcb_id " + "from " + "faturamento.debito_cobrado dbcb " + "where " + "dbcb.fntp_id= :idFinanciamentoTipo " + "and (dbcb.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao > 201212 and pgmt.pgmt_amreferenciaarrecadacao < :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0", Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idFinanciamentoTipo", idFinanciamentoTipo) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 300 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor do d�bitos cobrados por localidade, categoria e item * cont�bil dos pagamentos classificados de conta para tipo de financiamento * igual a servi�o * * @author Pedro Alexandre, Pedro Alexandre * @date 22/05/2006, 23/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idLancamentoItemContabil * @param idCategoria * @param colecaoIdsFinanciamentoTipo * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorDebitoCobradoPagamentosClassificadosContaPorFinanciamentoTipo( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idLancamentoItemContabil, Integer idCategoria, Collection<Integer> colecaoIdsFinanciamentoTipo) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(dccg.dccg_vlcategoria) as col_0 " + "from " + "faturamento.debito_cobrado_categoria dccg " + "where " + "dccg.catg_id= :idCategoria " + "and (dccg.dbcb_id in ( " + "select " + "dbcb.dbcb_id " + "from " + "faturamento.debito_cobrado dbcb " + "where " + "dbcb.lict_id=:idLancamentoItemContabil " + "and (dbcb.fntp_id in (:idsFinanciamentosTipo)) " + "and ( dbcb.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or ( " + "pgmt.pgst_idatual= :idPagamentoValorABaixar and pgmt.pgst_idanterior= :idPagamentoValorNaoConfere )) " + "and (pgmt.cnta_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setParameterList("idsFinanciamentosTipo",colecaoIdsFinanciamentoTipo) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("idPagamentoValorNaoConfere",PagamentoSituacao.VALOR_NAO_CONFERE) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 3700 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor dos d�bitos cobrados por localidade, categoria e item * cont�bil para os pagamentos de contas efetuados em meses anteriores * classificados no m�s para tipo de financiamento igual a servi�o. * * @author Pedro Alexandre, Pedro Alexandre * @date 23/05/2006, 26/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idLancamentoItemContabil * @param idCategoria * @param idsFinanciamentoTipos * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorDebitoCobradoPagamentosContasEfetuadosEmMesesAnterioresClassificadosNoMesPorFinanciamentoTipo( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idLancamentoItemContabil, Integer idCategoria, Collection<Integer> idsFinanciamentoTipos) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + " sum(dccg.dccg_vlcategoria) as col_0 " + " from " + " faturamento.debito_cobrado_categoria dccg " + " where " + " dccg.catg_id= :idCategoria " + " and (dccg.dbcb_id in ( " + "select " + "dbcb.dbcb_id " + "from " + "faturamento.debito_cobrado dbcb " + "where " + "dbcb.lict_id= :idLancamentoItemContabil " + "and (dbcb.fntp_id in (:idsFinanciamentoTipos)) " + "and (dbcb.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao > 201212 and pgmt.pgmt_amreferenciaarrecadacao < :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setParameterList("idsFinanciamentoTipos",idsFinanciamentoTipos) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0242] Registrar Movimento Arrecadadores * * Atualiza o arrecadador contrato * * * @author S�vio Luiz,Vivianne Sousa * @date 19/04/2007,28/11/2007 * * @return Cole��o de Bancos * @throws ErroRepositorioException */ public void atualizarDadosArrecadadorContrato( ArrecadadorContrato arrecadadorContrato, boolean flagEnvioDebitoAutomatico, boolean flagRetornoCodigoBarras, boolean flagRetornoDebitoAutomatico, boolean flagRetornoFichaCompensacao) throws ErroRepositorioException { // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "UPDATE gcom.arrecadacao.ArrecadadorContrato " + "SET arct_tmultimaalteracao = :ultimaAlteracao,"; if (flagRetornoCodigoBarras) { consulta += " arct_nnnsaretornocdbarras = " + arrecadadorContrato .getNumeroSequecialArquivoRetornoCodigoBarras(); } if (flagRetornoDebitoAutomatico) { consulta += " arct_nnnsaretornodebaut = " + arrecadadorContrato .getNumeroSequencialArquivoRetornoDebitoAutomatico(); } if (flagEnvioDebitoAutomatico) { if (flagRetornoCodigoBarras || flagRetornoDebitoAutomatico) { consulta += " ,arct_nnnsaenviodebaut = " + arrecadadorContrato .getNumeroSequencialArquivoEnvioDebitoAutomatico(); } else { consulta += " arct_nnnsaenviodebaut = " + arrecadadorContrato .getNumeroSequencialArquivoEnvioDebitoAutomatico(); } } if (flagRetornoFichaCompensacao) { consulta += " arct_nnnsaretornofichacomp = " + arrecadadorContrato .getNumeroSequencialArquivoRetornoFichaCompensacao(); } consulta += " WHERE arct_id = :idArrecadadorContrato"; session.createQuery(consulta).setInteger("idArrecadadorContrato", arrecadadorContrato.getId()).setTimestamp( "ultimaAlteracao", new Date()).executeUpdate(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } } /** * Pesquisar os ano/m�s de refer�ncia do pagamentos para um im�vel e ano/m�s * de arrecada��o informados para o tipo de documento informado. * * [UC0300] Classificar Pagamentos e Devolu��es * * @author Pedro Alexandre * @date 06/12/2006 * * @param anoMesArrecadacaoAtual * @param idImovel * @return * @throws ErroRepositorioException */ public Collection pesquisarAnoMesReferenciaPagamentoParaImovel( Integer anoMesArrecadacaoAtual, Integer idImovel) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = " select distinct(anoMesReferenciaPagamento) from Pagamento pagamento " + " where pagamento.anoMesReferenciaArrecadacao <= :anoMesArrecadacaoAtual " + "and pagamento.imovel.id = :idImovel and pagamento.anoMesReferenciaPagamento is not null " + "and (pagamento.pagamentoSituacaoAtual.id is null or pagamento.pagamentoSituacaoAtual.id <> :idValorABaixar) " + "and pagamento.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao"; retorno = session.createQuery(consulta) .setInteger("anoMesArrecadacaoAtual", anoMesArrecadacaoAtual) .setInteger("idImovel", idImovel) .setInteger("idValorABaixar", PagamentoSituacao.VALOR_A_BAIXAR) .setShort("indicadorClassificacao", ConstantesSistema.NAO).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Seleciona os pagamentos hist�rios de um aviso * * @author Rafael Corr�a * @date 23/04/2007 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarPagamentoHistoricoAvisoBancario( Integer idAvisoBancario) throws ErroRepositorioException { Collection retorno = null; String hql = ""; Session session = HibernateUtil.getSession(); try { hql = "select " + "pagamento.documentoTipo.descricaoAbreviado, " + // 0 "pagamento.dataPagamento, " + // 1 "pagamento.localidade.id, " + // 2 "imovel.id, " + // 3 "cliente.id, " + // 4 "pagamento.anoMesReferenciaPagamento, " + // 5 "debitoTipo.id, " + // 6 "pagamento.valorPagamento, " + // 7 "pagamentoSituacaoAtual.descricaoAbreviada " + // 8 "from gcom.arrecadacao.pagamento.PagamentoHistorico pagamento " + "left join pagamento.imovel as imovel " + "left join pagamento.cliente as cliente " + "left join pagamento.debitoTipo as debitoTipo " + "left join pagamento.pagamentoSituacaoAtual as pagamentoSituacaoAtual " + "where pagamento.avisoBancario.id = :idAvisoBancario " + "order by imovel.id,pagamento.anoMesReferenciaPagamento "; retorno = session.createQuery(hql).setInteger("idAvisoBancario", idAvisoBancario).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Pagamento pesquisarPagamentoDeConta(Integer idConta) throws ErroRepositorioException { Pagamento retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt FROM Pagamento as pgmt WHERE pgmt.contaGeral.id = :idConta "; retorno = (Pagamento) session.createQuery(consulta).setInteger("idConta", idConta).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * * @author S�vio Luiz * @data 23/04/2006 * * @param idConta * @return idParcelamento */ public Integer pesquisarIdPagamentoDaGuia(Integer idGuiaPagamento) throws ErroRepositorioException { Integer retorno = 0; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt.id " + "FROM Pagamento as pgmt " + "WHERE pgmt.guiaPagamento.id = :idGuiaPagamento "; retorno = (Integer) session.createQuery(consulta).setInteger( "idGuiaPagamento", idGuiaPagamento).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * * @author S�vio Luiz * @data 23/04/2006 * * @param idConta * @return idParcelamento */ public Integer pesquisarIdPagamentoDoDebitoACobrar(Integer idDebitoACobrar) throws ErroRepositorioException { Integer retorno = 0; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt.id " + "FROM Pagamento as pgmt " + "WHERE pgmt.debitoACobrarGeral.id = :idDebitoACobrar "; retorno = (Integer) session.createQuery(consulta).setInteger( "idDebitoACobrar", idDebitoACobrar).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0150] Retificar Conta * * @author Vivianne Sousa * @data 23/04/2006 * * @param idPagamento * @param idConta * @return * @throws ErroRepositorioException */ public void atualizarContaEmPagamento(Integer idPagamento, Integer idConta) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "UPDATE Pagamento pgmt " + "SET pgmt.contaGeral.id = :idConta " + "WHERE pgmt.id = :idPagamento "; session.createQuery(consulta) .setInteger("idPagamento", idPagamento).setInteger( "idConta", idConta).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } private String criarCondicionaisPagamentoHistoricoCliente(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos) { String sql = " "; if (idImovel != null && !idImovel.equals("")) { sql = sql + " c.imov_id = " + idImovel + " and "; } if (idCliente != null && !idCliente.equals("")) { sql = sql + " a.clie_id = " + idCliente + " and "; } if (idTipoRelacao != null && !idTipoRelacao.equals("")) { sql = sql + " b.crtp_id = " + idTipoRelacao + " and "; } if (localidadeInicial != null && localidadeFinal != null && !localidadeInicial.equals("") && !localidadeFinal.equals("")) { sql = sql + " c.loca_id >= " + localidadeInicial + " and "; sql = sql + " c.loca_id <= " + localidadeFinal + " and "; } if (idAvisoBancario != null && !idAvisoBancario.equals("")) { sql = sql + " c.avbc_id = " + idAvisoBancario + " and "; } if (idArrecadador != null && !idArrecadador.equals("")) { sql = sql + " f.armv_id = " + idArrecadador + " and "; } if (periodoArrecadacaoInicial != null && !periodoArrecadacaoInicial.equals("")) { sql = sql + " c.pghi_amreferenciaarrecadacao >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoInicial) + " and "; } if (periodoArrecadacaoFinal != null && !periodoArrecadacaoFinal.equals("")) { sql = sql + " c.pghi_amreferenciaarrecadacao <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoFinal) + " and "; } if (periodoPagamentoInicio != null && !periodoPagamentoInicio.equals("")) { sql = sql + " c.pghi_amreferenciapagamento >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoInicio) + " and "; } if (periodoPagamentoFim != null && !periodoPagamentoFim.equals("")) { sql = sql + " c.pghi_amreferenciapagamento <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoFim) + " and "; } if (dataPagamentoInicial != null && !dataPagamentoInicial.equals("")) { // sql = sql + " pagamento.dataPagamento >= '" + // Util.formatarData(dataPagamentoInicial) + "' and " ; String data1 = Util.recuperaDataInvertida(dataPagamentoInicial); if (data1 != null && !data1.equals("") && data1.trim().length() == 8) { data1 = data1.substring(0, 4) + "-" + data1.substring(4, 6) + "-" + data1.substring(6, 8); } sql = sql + " c.pghi_dtpagamento >= to_date('" + data1 + "','YYYY-MM-DD HH24:MI:SS') and "; } if (dataPagamentoFinal != null && !dataPagamentoFinal.equals("")) { // sql = sql + " pagamento.dataPagamento <= '" + // Util.formatarData(dataPagamentoFinal) + "' and " ; String data2 = Util.recuperaDataInvertida(dataPagamentoFinal); if (data2 != null && !data2.equals("") && data2.trim().length() == 8) { data2 = data2.substring(0, 4) + "-" + data2.substring(4, 6) + "-" + data2.substring(6, 8); } sql = sql + " c.pghi_dtpagamento <= to_date('" + data2 + "','YYYY-MM-DD HH24:MI:SS') and "; } if (idsPagamentosSituacoes != null && !idsPagamentosSituacoes.equals("")) { String valoresIn = ""; for (int i = 0; i < idsPagamentosSituacoes.length; i++) { if (!idsPagamentosSituacoes[i].equals("")) { valoresIn = valoresIn + idsPagamentosSituacoes[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " c.pgst_idatual in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsDebitosTipos != null && !idsDebitosTipos.equals("") && !idsDebitosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDebitosTipos.length; i++) { if (!idsDebitosTipos[i].equals("")) { valoresIn = valoresIn + idsDebitosTipos[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " c.dbtp_id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsArrecadacaoForma != null && !idsArrecadacaoForma.equals("") && !idsArrecadacaoForma[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsArrecadacaoForma.length; i++) { if (!idsArrecadacaoForma[i].equals("")) { valoresIn = valoresIn + idsArrecadacaoForma[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " c.arfm_id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsDocumentosTipos != null && !idsDocumentosTipos.equals("") && !idsDocumentosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDocumentosTipos.length; i++) { if (!idsDocumentosTipos[i].equals("")) { valoresIn = valoresIn + idsDocumentosTipos[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " c.dotp_id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } // retira o " and " q fica sobrando no final da query sql = Util.removerUltimosCaracteres(sql, 4); return sql; } /** * Consulta ResumoArrecadacao para a gera��o do relat�rio '[UC0345] Gerar * Relat�rio de Resumo Arrecada��o' de acordo com a op��o de totaliza��o. * * @author Vivianne Sousa * @created 04/06/2007 * * * @return * @throws ErroRepositorioException */ public Collection consultarResumoArrecadacaoRelatorioPorEstadoPorUnidadeNegocio( int anoMesReferencia) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select sum(ra.valorItemArrecadacao)," // 0 + " rt.descricao," // 1 + " lt.descricao," // 2 + " li.descricao," // 3 + " lic.descricao," // 4 + " lt.indicadorImpressao," // 5 + " lt.indicadorTotal," // 6 + " lt.id," // 7 + " lt.lancamentoTipo.id," // 8 + " ra.categoria.id," // 9 + " ra.unidadeNegocio.nome," // 10 + " ra.unidadeNegocio.id," // 11 + " rt.id," // 12 + " ra.sequenciaTipoLancamento," // 13 + " ra.sequenciaItemTipoLancamento," // 14 + " ra.gerenciaRegional.nome," // 15 + " ra.gerenciaRegional.id " // 16 + " from ResumoArrecadacao ra" + " left join ra.lancamentoTipo lt" + " left join ra.lancamentoItem li" + " left join ra.lancamentoItemContabil lic" + " left join ra.recebimentoTipo rt" + " where ra.anoMesReferencia = :anoMesReferencia and" + " (ra.categoria.id = 1 or" + " ra.categoria.id = 2 or" + " ra.categoria.id = 3 or" + " ra.categoria.id = 4)" + " group by " + " ra.unidadeNegocio.nome,ra.unidadeNegocio.id," + " rt.descricao, lt.descricao, li.descricao, lic.descricao," + " lt.indicadorImpressao, lt.indicadorTotal, lt.id, lt.lancamentoTipo.id," + " ra.categoria.id, rt.id, ra.sequenciaTipoLancamento, ra.sequenciaItemTipoLancamento," + " ra.gerenciaRegional.nome, ra.gerenciaRegional.id" + " order by " + " ra.gerenciaRegional.nome, ra.unidadeNegocio.nome," + " rt.id," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento," + " ra.categoria.id"; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Consulta ResumoArrecadacao para a gera��o do relat�rio '[UC0345] Gerar * Relat�rio de Resumo Arrecada��o' de acordo com a op��o de totaliza��o. * * @author Vivianne Sousa * @created 04/06/2007 * * * @return * @throws ErroRepositorioException */ public Collection consultarResumoArrecadacaoRelatorioPorUnidadeNegocio( int anoMesReferencia, Integer unidadeNegocio) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select sum(ra.valorItemArrecadacao),"// 0 + " rt.descricao," // 1 + " lt.descricao," // 2 + " li.descricao," // 3 + " lic.descricao," // 4 + " lt.indicadorImpressao," // 5 + " lt.indicadorTotal," // 6 + " lt.id," // 7 + " lt.lancamentoTipo.id," // 8 + " ra.categoria.id," // 9 + " ra.unidadeNegocio.nome, " // 10 + " ra.unidadeNegocio.id, " // 11 + " rt.id," // 12 + " ra.sequenciaTipoLancamento," // 13 + " ra.sequenciaItemTipoLancamento," // 14 + " ra.gerenciaRegional.nome," //15 + " ra.gerenciaRegional.id " //16 + " from ResumoArrecadacao ra" + " left join ra.lancamentoTipo lt" + " left join ra.lancamentoItem li" + " left join ra.lancamentoItemContabil lic" + " left join ra.recebimentoTipo rt" + " where ra.anoMesReferencia = :anoMesReferencia and" + " ra.unidadeNegocio = :unidadeNegocio and" + " (ra.categoria.id = 1 or" + " ra.categoria.id = 2 or" + " ra.categoria.id = 3 or" + " ra.categoria.id = 4)" + " group by " + " rt.descricao," + " lt.descricao," + " li.descricao," + " lic.descricao," + " lt.indicadorImpressao," + " lt.indicadorTotal," + " lt.id," + " lt.lancamentoTipo.id," + " ra.categoria.id," + " ra.gerenciaRegional.nome," + " ra.gerenciaRegional.id, " + " ra.unidadeNegocio.nome," + " ra.unidadeNegocio.id," + " rt.id," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento" + " order by rt.id," + " ra.sequenciaTipoLancamento," + " ra.sequenciaItemTipoLancamento," + " ra.categoria.id"; retorno = session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).setInteger( "unidadeNegocio", unidadeNegocio).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisar pagamentos pelo aviso banc�rio * * @author Ana Maria * @date 11/06/2007 * * @return Collection * @throws ErroRepositorioException */ public PagamentosDevolucoesHelper filtrarPagamentos( FiltroPagamento filtroPagamento) throws ErroRepositorioException { // Collection<MovimentarPagamentosDevolucoesHelper> retorno = null; Session session = HibernateUtil.getSession(); Collection<Object[]> consulta = new ArrayList(); PagamentosDevolucoesHelper retorno = null; Integer qtdPagamentos = 0; try { consulta = new ArrayList( new CopyOnWriteArrayList<Pagamento>( GeradorHQLCondicional .gerarCondicionalQuery( filtroPagamento, "pagamento", "select dotp.descricaoAbreviado, pagamento.anoMesReferenciaPagamento, " + "pagamento.valorPagamento, pagamento.dataPagamento, dbtp.descricao, pagamento.id " + "from Pagamento pagamento " + "inner join pagamento.documentoTipo dotp " + "left join pagamento.debitoTipo dbtp" + "", session).list())); if (consulta.size() > 0) { Collection<MovimentarPagamentosDevolucoesHelper> colecaoMovimentarPagamentosDevolucoes = new ArrayList(); MovimentarPagamentosDevolucoesHelper helper = null; BigDecimal valorTotal = new BigDecimal("0.00"); for (Iterator iter = consulta.iterator(); iter.hasNext();) { qtdPagamentos = qtdPagamentos + 1; Object[] element = (Object[]) iter.next(); helper = new MovimentarPagamentosDevolucoesHelper(); helper.setTipoDocumento((String) element[0]); if (element[1] != null && !element[1].equals("")) { helper .setMesAnoReferencia(Util .formatarAnoMesParaMesAno((Integer) element[1])); } helper.setValor(Util .formatarMoedaReal((BigDecimal) element[2])); valorTotal = valorTotal.add((BigDecimal) element[2]); helper.setData(Util.formatarData((Date) element[3])); if (element[4] != null && !element[4].equals("")) { helper.setTipoDebito((String) element[4]); } helper.setId((Integer) element[5]); colecaoMovimentarPagamentosDevolucoes.add(helper); } retorno = new PagamentosDevolucoesHelper(); retorno .setColecaoMovimentarPagamentos(colecaoMovimentarPagamentosDevolucoes); retorno.setValorTotalPagamentos(Util .formatarMoedaReal(valorTotal)); retorno.setQtdPagamentos(qtdPagamentos); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisar devolu��oes pelo aviso banc�rio * * @author Ana Maria * @date 11/06/2007 * * @return Collection * @throws ErroRepositorioException */ public PagamentosDevolucoesHelper filtrarDevolucoes( FiltroDevolucao filtroDevolucao) throws ErroRepositorioException { // Collection<MovimentarPagamentosDevolucoesHelper> retorno = null; Session session = HibernateUtil.getSession(); Collection<Object[]> consulta = new ArrayList(); PagamentosDevolucoesHelper retorno = null; Integer qtdDevolucoes = 0; try { consulta = new ArrayList( new CopyOnWriteArrayList<Devolucao>( GeradorHQLCondicional .gerarCondicionalQuery( filtroDevolucao, "devolucao", "select devolucao.anoMesReferenciaArrecadacao, devolucao.valorDevolucao, " + "devolucao.dataDevolucao, dbtp.descricao, devolucao.id " + "from Devolucao devolucao " + "left join devolucao.debitoTipo dbtp " + "", session).list())); if (consulta.size() > 0) { Collection<MovimentarPagamentosDevolucoesHelper> colecaoMovimentarPagamentosDevolucoes = new ArrayList(); MovimentarPagamentosDevolucoesHelper helper = null; BigDecimal valorTotal = new BigDecimal("0.00"); for (Iterator iter = consulta.iterator(); iter.hasNext();) { qtdDevolucoes = qtdDevolucoes + 1; Object[] element = (Object[]) iter.next(); helper = new MovimentarPagamentosDevolucoesHelper(); helper.setTipoDocumento("GDEV"); if (element[0] != null && !element[0].equals("")) { helper .setMesAnoReferencia(Util .formatarAnoMesParaMesAno((Integer) element[0])); } helper.setValor(Util .formatarMoedaReal((BigDecimal) element[1])); valorTotal = valorTotal.add((BigDecimal) element[1]); helper.setData(Util.formatarData((Date) element[2])); if (element[3] != null && !element[3].equals("")) { helper.setTipoDebito((String) element[3]); } helper.setId((Integer) element[4]); colecaoMovimentarPagamentosDevolucoes.add(helper); } retorno = new PagamentosDevolucoesHelper(); retorno .setColecaoMovimentarDevolucoes(colecaoMovimentarPagamentosDevolucoes); retorno.setValorTotalDevolucoes(Util .formatarMoedaReal(valorTotal)); retorno.setQtdDevolucoes(qtdDevolucoes); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisar valores de arrecada��o e devolu��o do aviso banc�rio * * @author Ana Maria * @date 14/06/2007 * * @return Collection * @throws ErroRepositorioException */ public ValoresArrecadacaoDevolucaoAvisoBancarioHelper pesquisarValoresAvisoBancario( Integer idAvisoBancario) throws ErroRepositorioException { ValoresArrecadacaoDevolucaoAvisoBancarioHelper retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select " + " new " + ValoresArrecadacaoDevolucaoAvisoBancarioHelper.class .getName() + " ( " + "avbc.valorArrecadacaoInformado, avbc.valorArrecadacaoCalculado, " + "avbc.valorDevolucaoInformado, avbc.valorDevolucaoCalculado) " + "from AvisoBancario avbc " + "where avbc.id = :idAvisoBancario "; retorno = (ValoresArrecadacaoDevolucaoAvisoBancarioHelper) session .createQuery(consulta).setInteger("idAvisoBancario", idAvisoBancario.intValue()).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Atualizar Pagamentos * * @author Ana Maria * @date 15/06/2007 * * @return Collection * @throws ErroRepositorioException */ public void atualizarAvisoBancarioPagamentos( Collection<Integer> idsPagamentos, Integer idAvisoBancarioD) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarSituacaoPagamento; try { atualizarSituacaoPagamento = "UPDATE Pagamento " + "SET avbc_id = :idAvisoBancarioD, pgmt_tmultimaalteracao = :dataAlteracao " + "WHERE pgmt_id IN(:idsPagamentos)"; session.createQuery(atualizarSituacaoPagamento).setInteger( "idAvisoBancarioD", idAvisoBancarioD).setTimestamp( "dataAlteracao", new Date()).setParameterList( "idsPagamentos", idsPagamentos).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Atualizar valor de arrecada��o calculado * * @author Ana Maria * @date 15/06/2007 * * @return Collection * @throws ErroRepositorioException */ public void atualizarValorArrecadacaoAvisoBancario( String valorArrecadacaoInformado, String valorArrecadacaoCalculado, Integer idAvisoBancario) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarSituacaoPagamento; try { atualizarSituacaoPagamento = "UPDATE AvisoBancario " + "SET avbc_vlarrecadacaoinformado = :valorArrecadacaoInformado, " + "avbc_vlarrecadacaocalculado = :valorArrecadacaoCalculado, " + "avbc_tmultimaalteracao = :dataAlteracao " + "WHERE avbc_id = :idAvisoBancario"; session .createQuery(atualizarSituacaoPagamento) .setBigDecimal( "valorArrecadacaoInformado", Util .formatarMoedaRealparaBigDecimal(valorArrecadacaoInformado)) .setBigDecimal( "valorArrecadacaoCalculado", Util .formatarMoedaRealparaBigDecimal(valorArrecadacaoCalculado)) .setTimestamp("dataAlteracao", new Date()).setInteger( "idAvisoBancario", idAvisoBancario).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Atualizar Devolu��es * * @author Ana Maria * @date 15/06/2007 * * @return Collection * @throws ErroRepositorioException */ public void atualizarAvisoBancarioDevolucoes( Collection<Integer> idsDevolucoes, Integer idAvisoBancarioD) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarSituacaoPagamento; try { atualizarSituacaoPagamento = "UPDATE Devolucao " + "SET avbc_id = :idAvisoBancarioD, devl_tmultimaalteracao = :dataAlteracao " + "WHERE devl_id IN(:idsDevolucoes)"; session.createQuery(atualizarSituacaoPagamento).setInteger( "idAvisoBancarioD", idAvisoBancarioD).setTimestamp( "dataAlteracao", new Date()).setParameterList( "idsDevolucoes", idsDevolucoes).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Atualizar valor de devolu��o calculado * * @author Ana Maria * @date 15/06/2007 * * @return Collection * @throws ErroRepositorioException */ public void atualizarValorDevolucaoAvisoBancario( String valorDevolucaoInformado, String valorDevolucaoCalculado, Integer idAvisoBancario) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarSituacaoPagamento; try { atualizarSituacaoPagamento = "UPDATE AvisoBancario " + "SET avbc_vldevolucaoinformado = :valorDevolucaoInformado, " + "avbc_vldevolucaocalculado = :valorDevolucaoCalculado, " + "avbc_tmultimaalteracao = :dataAlteracao " + "WHERE avbc_id = :idAvisoBancario"; session .createQuery(atualizarSituacaoPagamento) .setBigDecimal( "valorDevolucaoInformado", Util .formatarMoedaRealparaBigDecimal(valorDevolucaoInformado)) .setBigDecimal( "valorDevolucaoCalculado", Util .formatarMoedaRealparaBigDecimal(valorDevolucaoCalculado)) .setTimestamp("dataAlteracao", new Date()).setInteger( "idAvisoBancario", idAvisoBancario).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0263] Filtrar Movimento dos Arrecadadores - Relat�rio * * @author Ana Maria * @date 13/07/2007 * * @param codigoBanco * @param codigoRemessa * @param descricaoIdentificacaoServico * @param numeroSequencialArquivo * @param dataGeracaoInicio * @param dataGeracaoFim * @param ultimaAlteracaoInicio * @param ultimaAlteracaoFim * @param descricaoOcorrencia * @param indicadorAceitacao * @param indicadorAbertoFechado * @return * @throws ErroRepositorioException */ public Collection<Integer> filtrarIdsMovimentoArrecadador( String codigoBanco, String codigoRemessa, String descricaoIdentificacaoServico, String numeroSequencialArquivo, Date dataGeracaoInicio, Date dataGeracaoFim, Date ultimaAlteracaoInicio, Date ultimaAlteracaoFim, String descricaoOcorrencia, String indicadorAceitacao, String indicadorAbertoFechado) throws ErroRepositorioException { Collection<Integer> idsMovimentoArrecadador = null; String sql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisMovimentoArrecadador( codigoBanco, codigoRemessa, descricaoIdentificacaoServico, numeroSequencialArquivo, dataGeracaoInicio, dataGeracaoFim, ultimaAlteracaoInicio, ultimaAlteracaoFim, descricaoOcorrencia, indicadorAceitacao, indicadorAbertoFechado); sql = " SELECT arrecadadorMovimento.armv_id as id " + " FROM arrecadacao.arrecadador_movimento arrecadadorMovimento " + condicionais; Date dataInicio = null; Date dataFim = null; if (ultimaAlteracaoInicio != null && !ultimaAlteracaoInicio.equals("")) { dataInicio = Util.formatarDataInicial(ultimaAlteracaoInicio); if (condicionais.trim().equals("WHERE")) { sql = sql + "arrecadadorMovimento.armv_tmultimaalteracao >= :dataInicio"; } else { sql = sql + " and arrecadadorMovimento.armv_tmultimaalteracao >= :dataInicio"; } } if (ultimaAlteracaoFim != null && !ultimaAlteracaoFim.equals("")) { dataFim = Util.formatarDataFinal(ultimaAlteracaoFim); sql = sql + " and arrecadadorMovimento.armv_tmultimaalteracao <= :dataFim"; } if (dataInicio != null && dataFim != null) { idsMovimentoArrecadador = session.createSQLQuery( sql).addScalar("id", Hibernate.INTEGER).setTimestamp("dataInicio", dataInicio).setTimestamp("dataFim", dataFim) .list(); } else { idsMovimentoArrecadador = session.createSQLQuery( sql).addScalar("id", Hibernate.INTEGER).list(); } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return idsMovimentoArrecadador; } /** * * [UC0619] Gerar Rela��o de Acompanhamento dos Movimentos Arrecadadores por NSA * * @author Ana Maria * @date 12/07/2007 * * @param idMovimentoArrecadador * @return */ public Collection<MovimentoArrecadadoresPorNSAHelper> gerarMovimentoArrecadadoresNSA (Collection<Integer> idsArrecadadorMovimento, Integer codigoFormaArrecadacao) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta1 = null; Collection retornoConsulta1 = new ArrayList(); String consulta2 = null; Collection retornoConsulta2 = new ArrayList(); String consulta3 = null; Collection retornoConsulta3 = new ArrayList(); String consulta4 = null; Collection retornoConsulta4 = new ArrayList(); Collection retornoTotal = new ArrayList(); Collection<MovimentoArrecadadoresPorNSAHelper> retorno =new ArrayList(); try { consulta1 = " select count(armv_nmbanco) as qtdeRegistros, armv_nmbanco as banco, "//0,1 + " armv_dtgeracao as dataGeracao, armv_nnnsa as nsa,"//2,3 + " sum(to_number(substr(amit_cnregistro, 82,12), '000000000000')) as valor,"//4 + " actf.actf_vltarifa as tarifa, arfm.arfm_dsarrecadacaoforma as formaArrecadacao"//5,6 + " from arrecadacao.arrecadador_mov_item amit, arrecadacao.arrecadacao_forma arfm," + " arrecadacao.arrecadador_movimento armv, arrecadacao.arrecadador arrc, arrecadacao.arrecadador_contrato arct," + " arrecadacao.arrecadador_contrato_tar actf" + " where amit.armv_id = armv.armv_id and" + " substr(amit_cnregistro, 117,1) = arfm.arfm_cdarrecadacaoforma and" + " armv.armv_cdbanco = arrc.arrc_cdagente and" + " arct.arrc_id = arrc.arrc_id and" + " (actf.arfm_id = arfm.arfm_id and actf.arct_id = arct.arct_id) and" + " rgcd_id = 7 and armv.armv_id in (:idsArrecadadorMovimento) "; // + " and amit_dsocorrencia = 'OK' " ; if(codigoFormaArrecadacao != null){ consulta1 = consulta1 + " and arfm.arfm_id="+codigoFormaArrecadacao; } consulta1 = consulta1 + " group by armv_nmbanco, armv_dtgeracao, armv_nnnsa, " + " actf.actf_vltarifa, actf.actf_vltarifa, arfm.arfm_dsarrecadacaoforma " + " order by formaArrecadacao "; if(idsArrecadadorMovimento.size()>999){ System.out.println("## TAMANHO TOTAL = " + idsArrecadadorMovimento.size()); List<List<Integer>> particoes = CollectionUtil.particao((List<Integer>) idsArrecadadorMovimento, 999); int qtdQuebras = 999; int indice = idsArrecadadorMovimento.size() / qtdQuebras; if (idsArrecadadorMovimento.size() % qtdQuebras !=0){ indice ++; } System.out.println("## QUANTIDADE PARTI��ES = " + indice); Collection retornoConsultaPart1 = null; for (int i = 0; i < indice; i++) { System.out.println("## TAMANHO PARTI��O DE INDICE " + indice +" = " + particoes.get(i).size()); retornoConsultaPart1 = session.createSQLQuery(consulta1).addScalar("qtdeRegistros", Hibernate.INTEGER).addScalar("banco", Hibernate.STRING) .addScalar("dataGeracao", Hibernate.DATE) .addScalar("nsa", Hibernate.INTEGER) .addScalar("valor", Hibernate.LONG) .addScalar("tarifa", Hibernate.BIG_DECIMAL) .addScalar("formaArrecadacao", Hibernate.STRING).setParameterList( "idsArrecadadorMovimento", particoes.get(i)).list(); retornoConsulta1.addAll(retornoConsultaPart1); } }else{ retornoConsulta1 = session.createSQLQuery(consulta1).addScalar("qtdeRegistros", Hibernate.INTEGER).addScalar("banco", Hibernate.STRING) .addScalar("dataGeracao", Hibernate.DATE) .addScalar("nsa", Hibernate.INTEGER) .addScalar("valor", Hibernate.LONG) .addScalar("tarifa", Hibernate.BIG_DECIMAL) .addScalar("formaArrecadacao", Hibernate.STRING).setParameterList( "idsArrecadadorMovimento", idsArrecadadorMovimento).list(); } retornoTotal.addAll(retornoConsulta1); consulta2 = " select count(armv_nmbanco) as qtdeRegistros, armv_nmbanco as banco, "//0,1 + " armv_dtgeracao as dataGeracao, armv_nnnsa as nsa,"//2,3 + " sum(to_number(substr(amit_cnregistro, 82,12), '000000000000')) as valor,"//4 + " actf.actf_vltarifa as tarifa, arfm.arfm_dsarrecadacaoforma as formaArrecadacao"//5,6 + " from arrecadacao.arrecadador_mov_item amit," + " arrecadacao.arrecadador_movimento armv, arrecadacao.arrecadador arrc, arrecadacao.arrecadador_contrato arct," + " arrecadacao.arrecadador_contrato_tar actf, arrecadacao.arrecadacao_forma arfm" + " where amit.armv_id = armv.armv_id and " + " substr(amit_cnregistro, 117,1) = ' ' and" + " armv.armv_cdbanco = arrc.arrc_cdagente and" + " arct.arrc_id = arrc.arrc_id and" + " arfm.arfm_cdarrecadacaoforma = '1' and" + " (actf.arfm_id = arfm.arfm_id and actf.arct_id = arct.arct_id) and" + " rgcd_id = 7 and armv.armv_id in(:idsArrecadadorMovimento)"; // + " and amit_dsocorrencia = 'OK' " ; if(codigoFormaArrecadacao != null){ consulta2 = consulta2 + " and arfm.arfm_id="+codigoFormaArrecadacao; } consulta2 = consulta2 + " group by armv_nmbanco, armv_dtgeracao, armv_nnnsa, " + " actf.actf_vltarifa, actf.actf_vltarifa, arfm.arfm_dsarrecadacaoforma " ; if(idsArrecadadorMovimento.size()>999){ System.out.println("## TAMANHO TOTAL = " + idsArrecadadorMovimento.size()); List<List<Integer>> particoes = CollectionUtil.particao((List<Integer>) idsArrecadadorMovimento, 999); int qtdQuebras = 999; int indice = idsArrecadadorMovimento.size() / qtdQuebras; if (idsArrecadadorMovimento.size() % qtdQuebras !=0){ indice ++; } System.out.println("## QUANTIDADE PARTI��ES = " + indice); Collection retornoConsultaPart2 = null; for (int i = 0; i < indice; i++) { System.out.println("## TAMANHO PARTI��O DE INDICE " + indice +" = " + particoes.get(i).size()); retornoConsultaPart2 = session.createSQLQuery(consulta2).addScalar("qtdeRegistros", Hibernate.INTEGER).addScalar("banco", Hibernate.STRING) .addScalar("dataGeracao", Hibernate.DATE) .addScalar("nsa", Hibernate.INTEGER) .addScalar("valor", Hibernate.LONG) .addScalar("tarifa", Hibernate.BIG_DECIMAL) .addScalar("formaArrecadacao", Hibernate.STRING).setParameterList( "idsArrecadadorMovimento", particoes.get(i)).list(); retornoConsulta2.addAll(retornoConsultaPart2); } }else{ retornoConsulta2 = session.createSQLQuery(consulta2).addScalar("qtdeRegistros", Hibernate.INTEGER).addScalar("banco", Hibernate.STRING) .addScalar("dataGeracao", Hibernate.DATE) .addScalar("nsa", Hibernate.INTEGER) .addScalar("valor", Hibernate.LONG) .addScalar("tarifa", Hibernate.BIG_DECIMAL) .addScalar("formaArrecadacao", Hibernate.STRING).setParameterList( "idsArrecadadorMovimento", idsArrecadadorMovimento).list(); } retornoTotal.addAll(retornoConsulta2); consulta3 = " select count(armv_nmbanco) as qtdeRegistros, armv_nmbanco as banco, "//0,1 + " armv_dtgeracao as dataGeracao, armv_nnnsa as nsa,"//2,3 + " sum(to_number(substr(amit_cnregistro,53,15), '000000000000000')) as valor,"//4 + " actf.actf_vltarifa as tarifa, arfm.arfm_dsarrecadacaoforma as formaArrecadacao"//5,6 + " from arrecadacao.arrecadador_mov_item amit," + " arrecadacao.arrecadador_movimento armv, arrecadacao.arrecadador arrc, arrecadacao.arrecadador_contrato arct," + " arrecadacao.arrecadador_contrato_tar actf, arrecadacao.arrecadacao_forma arfm" + " where amit.armv_id = armv.armv_id and" + " armv.armv_cdbanco = arrc.arrc_cdagente and" + " arct.arrc_id = arrc.arrc_id and " + " arfm.arfm_cdarrecadacaoforma = 'Z' and" + " (actf.arfm_id = arfm.arfm_id and actf.arct_id = arct.arct_id) and" + " rgcd_id = 6 and armv.armv_id in(:idsArrecadadorMovimento)" + " and amit_dsocorrencia = 'OK' " ; if(codigoFormaArrecadacao != null){ consulta3 = consulta3 + " and arfm.arfm_id="+codigoFormaArrecadacao; } consulta3 = consulta3 + " group by armv_nmbanco, armv_dtgeracao, armv_nnnsa, " + " actf.actf_vltarifa, actf.actf_vltarifa, arfm.arfm_dsarrecadacaoforma "; if(idsArrecadadorMovimento.size()>999){ System.out.println("## TAMANHO TOTAL = " + idsArrecadadorMovimento.size()); List<List<Integer>> particoes = CollectionUtil.particao((List<Integer>) idsArrecadadorMovimento, 999); int qtdQuebras = 999; int indice = idsArrecadadorMovimento.size() / qtdQuebras; if (idsArrecadadorMovimento.size() % qtdQuebras !=0){ indice ++; } System.out.println("## QUANTIDADE PARTI��ES = " + indice); Collection retornoConsultaPart3 = null; for (int i = 0; i < indice; i++) { System.out.println("## TAMANHO PARTI��O DE INDICE " + indice +" = " + particoes.get(i).size()); retornoConsultaPart3 = session.createSQLQuery(consulta3).addScalar("qtdeRegistros", Hibernate.INTEGER).addScalar("banco", Hibernate.STRING) .addScalar("dataGeracao", Hibernate.DATE) .addScalar("nsa", Hibernate.INTEGER) .addScalar("valor", Hibernate.LONG) .addScalar("tarifa", Hibernate.BIG_DECIMAL) .addScalar("formaArrecadacao", Hibernate.STRING).setParameterList( "idsArrecadadorMovimento", particoes.get(i)).list(); retornoConsulta3.addAll(retornoConsultaPart3); } }else{ retornoConsulta3 = session.createSQLQuery(consulta3).addScalar("qtdeRegistros", Hibernate.INTEGER).addScalar("banco", Hibernate.STRING) .addScalar("dataGeracao", Hibernate.DATE) .addScalar("nsa", Hibernate.INTEGER) .addScalar("valor", Hibernate.LONG) .addScalar("tarifa", Hibernate.BIG_DECIMAL) .addScalar("formaArrecadacao", Hibernate.STRING).setParameterList( "idsArrecadadorMovimento", idsArrecadadorMovimento).list(); } retornoTotal.addAll(retornoConsulta3); consulta4 = " select count(armv_nmbanco) as qtdeRegistros, armv_nmbanco as banco, "//0,1 + " armv_dtgeracao as dataGeracao, armv_nnnsa as nsa,"//2,3 + " sum(to_number(substr(amit_cnregistro,79,15), '000000000000000')) as valor,"//4 + " actf.actf_vltarifa as tarifa, arfm.arfm_dsarrecadacaoforma as formaArrecadacao"//5,6 + " from arrecadacao.arrecadador_mov_item amit," + " arrecadacao.arrecadador_movimento armv, arrecadacao.arrecadador arrc, arrecadacao.arrecadador_contrato arct," + " arrecadacao.arrecadador_contrato_tar actf, arrecadacao.arrecadacao_forma arfm" + " where amit.armv_id = armv.armv_id and" + " armv.armv_cdbanco = arrc.arrc_cdagente and" + " arct.arrc_id = arrc.arrc_id and " + " arfm.arfm_cdarrecadacaoforma = 'W' and" + " (actf.arfm_id = arfm.arfm_id and actf.arct_id = arct.arct_id) and" + " rgcd_id = 15 and armv.armv_id in(:idsArrecadadorMovimento) " ; if(codigoFormaArrecadacao != null){ consulta4 = consulta4 + " and arfm.arfm_id="+codigoFormaArrecadacao; } consulta4 = consulta4 + " group by armv_nmbanco, armv_dtgeracao, armv_nnnsa, " + " actf.actf_vltarifa, actf.actf_vltarifa, arfm.arfm_dsarrecadacaoforma "; if(idsArrecadadorMovimento.size()>999){ System.out.println("## TAMANHO TOTAL = " + idsArrecadadorMovimento.size()); List<List<Integer>> particoes = CollectionUtil.particao((List<Integer>) idsArrecadadorMovimento, 999); int qtdQuebras = 999; int indice = idsArrecadadorMovimento.size() / qtdQuebras; if (idsArrecadadorMovimento.size() % qtdQuebras !=0){ indice ++; } System.out.println("## QUANTIDADE PARTI��ES = " + indice); Collection retornoConsultaPart4 = null; for (int i = 0; i < indice; i++) { System.out.println("## TAMANHO PARTI��O DE INDICE " + indice +" = " + particoes.get(i).size()); retornoConsultaPart4 = session.createSQLQuery(consulta4).addScalar("qtdeRegistros", Hibernate.INTEGER).addScalar("banco", Hibernate.STRING) .addScalar("dataGeracao", Hibernate.DATE) .addScalar("nsa", Hibernate.INTEGER) .addScalar("valor", Hibernate.LONG) .addScalar("tarifa", Hibernate.BIG_DECIMAL) .addScalar("formaArrecadacao", Hibernate.STRING).setParameterList( "idsArrecadadorMovimento", particoes.get(i)).list(); retornoConsulta4.addAll(retornoConsultaPart4); } }else{ retornoConsulta4 = session.createSQLQuery(consulta4).addScalar("qtdeRegistros", Hibernate.INTEGER).addScalar("banco", Hibernate.STRING) .addScalar("dataGeracao", Hibernate.DATE) .addScalar("nsa", Hibernate.INTEGER) .addScalar("valor", Hibernate.LONG) .addScalar("tarifa", Hibernate.BIG_DECIMAL) .addScalar("formaArrecadacao", Hibernate.STRING).setParameterList( "idsArrecadadorMovimento", idsArrecadadorMovimento).list(); } retornoTotal.addAll(retornoConsulta4); if (retornoTotal.size() > 0) { MovimentoArrecadadoresPorNSAHelper helper = null; for (Iterator iter = retornoTotal.iterator(); iter.hasNext();) { Object[] element = (Object[]) iter.next(); helper = new MovimentoArrecadadoresPorNSAHelper(); helper.setQtdeRegistros((Integer) element[0]); if (element[1] != null && !element[1].equals("")) { helper.setBanco((String) element[1]); } helper.setDataGeracao((Date) element[2]); helper.setNsa((Integer) element[3]); helper.setValor((Long)element[4]); helper.setTarifa((BigDecimal) element[5]); helper.setFormaArrecadacao((String) element[6]); retorno.add(helper); } } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Processamento R�pido * * @author Raphael Rossiter * @date 17/08/2007 * * @return Collection<Conta> * @throws ErroRepositorioException */ public Collection<Conta> pesquisarContaComPagamentoHistorico() throws ErroRepositorioException { Collection<Conta> retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "SELECT b FROM Conta b " + "WHERE b.id IN(13527, 2861, 2079563, 2079188, 2077402, 1882161, " + " 2077450, 2608045, 2545376, 53582, 53581, 53584, 53583, 53586, 53585, 53580, " + " 53579, 2606143) "; retorno = (Collection<Conta>) session.createQuery(consulta).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0626] Gerar Resumo de Metas Acumulado no M�s (CAERN) * * @author S�vio Luiz * @data 28/11/2007 * * @param idConta * @return idParcelamento */ public Collection pesquisarPagamentoDeContas(Collection idsColecaoConta) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt.id " + "FROM Pagamento as pgmt " + "INNER JOIN pgmt.contaGeral cntaGeral " + "INNER JOIN cntaGeral.conta cnta " + "WHERE cnta.id in (:colecaoIdsContas) and cnta.dataVencimentoConta < :dataAtual"; retorno = session.createQuery(consulta) .setParameterList("colecaoIdsContas", idsColecaoConta) .setTimestamp("dataAtual", new Date()) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0739] Informar Situa��o de Expurgo do Pagamento * * @author S�vio Luiz * @data 02/01/2008 * * @param idConta * @return idParcelamento */ public Collection pesquisarDadosPagamentoExpurgado(String dataPagamento,Integer idCliente,Integer anoMesArrecadacao) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT pgto.id,pgto.valorPagamento,pgto.indicadorExpurgado " + "FROM Pagamento pgto " + "WHERE pgto.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao and to_char( pgto.dataPagamento, 'dd/mm/yyyy' ) = :dataPagamento AND pgto.imovel.id in " + "(SELECT clieImov.imovel.id FROM ClienteImovel clieImov " + " WHERE clieImov.clienteRelacaoTipo.id = :clienteResponsavel AND clieImov.cliente.id = :idCliente)"; retorno = session.createQuery(consulta).setString("dataPagamento", dataPagamento).setInteger("clienteResponsavel", ClienteRelacaoTipo.RESPONSAVEL) .setInteger("idCliente",idCliente). setInteger("anoMesReferenciaArrecadacao",anoMesArrecadacao) .list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0739] Informar Situa��o de Expurgo do Pagamento * * @author S�vio Luiz * @data 02/01/2008 * * @param idConta * @return idParcelamento */ public Collection pesquisarDadosPagamentoHistoricoExpurgado(String dataPagamento,Integer idCliente,Integer anoMesArrecadacao) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT pgto.id,pgto.valorPagamento,pgto.indicadorExpurgado " + "FROM PagamentoHistorico pgto " + "WHERE pgto.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao and to_char( pgto.dataPagamento, 'dd/mm/yyyy' ) = :dataPagamento AND pgto.imovel.id in " + "(SELECT clieImov.imovel.id FROM ClienteImovel clieImov " + " WHERE clieImov.clienteRelacaoTipo.id = :clienteResponsavel AND clieImov.cliente.id = :idCliente)"; retorno = session.createQuery(consulta).setString("dataPagamento", dataPagamento).setInteger("clienteResponsavel", ClienteRelacaoTipo.RESPONSAVEL) .setInteger("idCliente",idCliente) .setInteger("anoMesReferenciaArrecadacao",anoMesArrecadacao) .list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0739] Informar Situa��o de Expurgadodo Pagamento * * * @author S�vio Luiz * @date 04/01/2008 * * @param idsPagamentos * @return void */ public void atualizarSituacaoExpurgado(Collection colecaoPagamento) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try { if (colecaoPagamento != null && !colecaoPagamento.isEmpty()) { Iterator ite = colecaoPagamento.iterator(); while (ite.hasNext()) { Pagamento pagamento = (Pagamento) ite.next(); String atualizarSituacaoPagamento = null; short inidcadorPagamento = pagamento.getIndicadorPagamento(); if (inidcadorPagamento == Pagamento.INDICADOR_PAGAMENTO_SIM) { atualizarSituacaoPagamento = "UPDATE Pagamento " + "SET pgmt_icexpurgado = :indicadorExpurgado, pgmt_tmultimaalteracao = :dataAlteracao " + "WHERE pgmt_id = :idPagamento"; session.createQuery(atualizarSituacaoPagamento) .setShort("indicadorExpurgado", pagamento.getIndicadorExpurgado()) .setTimestamp("dataAlteracao", new Date()) .setInteger("idPagamento", pagamento.getId()) .executeUpdate(); } else { atualizarSituacaoPagamento = "UPDATE PagamentoHistorico " + "SET pghi_icexpurgado = :indicadorExpurgado, pghi_tmultimaalteracao = :dataAlteracao " + "WHERE pghi_id = :idPagamento"; session.createQuery(atualizarSituacaoPagamento) .setShort("indicadorExpurgado", pagamento.getIndicadorExpurgado()) .setTimestamp("dataAlteracao", new Date()) .setInteger("idPagamento", pagamento.getId()) .executeUpdate(); } } } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Pesquisa a ContaHistorico para o im�vel no ano/m�s de refer�ncia informados * * [UC0300] Classificar Pagamentos e Devolu��es * * @author Pedro Alexandre * @date 15/01/2008 * * @param imovel * @param anoMesReferenciaPagamento * @param anoMesFaturamento * @return * @throws ErroRepositorioException */ public Object[] selecionarContaHistoricoPorImovelAnoMesReferencia(Imovel imovel,Integer anoMesReferenciaPagamento, Integer anoMesFaturamento) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select cnhi.id, " + "cnhi.valorAgua, " + "cnhi.valorEsgoto, " + "cnhi.valorDebitos, " + "cnhi.valorCreditos, " + "cnhi.valorImposto, " + "cnhi.anoMesReferenciaContabil, " /** * Classificar detalhadamente documentos inexistentes por d�bito prescrito, * conta parcelada, conta cancelada ou erro de processamento * @author Wellington Rocha * @date 02/08/2012*/ + "dcst.id " + "from ContaHistorico cnhi " + "inner join cnhi.imovel as imov " + "inner join cnhi.debitoCreditoSituacaoAtual as dcst " + "where imov.id = :imovelPagamento " + "and cnhi.anoMesReferenciaConta = :anoMesReferenciaPagamento " + "and dcst.id in(:normal, :retificada, :incluida) "; retorno = (Object[]) session.createQuery(consulta) .setInteger("imovelPagamento", imovel.getId()) .setInteger("anoMesReferenciaPagamento", anoMesReferenciaPagamento) .setInteger("normal", DebitoCreditoSituacao.NORMAL) .setInteger("retificada", DebitoCreditoSituacao.RETIFICADA) .setInteger("incluida", DebitoCreditoSituacao.INCLUIDA) .setMaxResults(1).uniqueResult(); /** * Classificar detalhadamente documentos inexistentes por d�bito prescrito, * conta parcelada, conta cancelada ou erro de processamento * @author Wellington Rocha * @date 02/08/2012*/ if(retorno == null){ consulta = "select cnhi.id, " + "cnhi.valorAgua, " + "cnhi.valorEsgoto, " + "cnhi.valorDebitos, " + "cnhi.valorCreditos, " + "cnhi.valorImposto, " + "cnhi.anoMesReferenciaContabil, " + "dcst.id " + "from ContaHistorico as cnhi " + "inner join cnhi.imovel as imov " + "inner join cnhi.debitoCreditoSituacaoAtual as dcst " + "where imov.id = :imovelPagamento " + "and cnhi.anoMesReferenciaConta = :anoMesReferenciaPagamento " + "and dcst.id in(:prescritas, :prescritasIncluidas, :canceladas, :parceladas, :erroProcessamento) "; retorno = (Object[]) session.createQuery(consulta) .setInteger("imovelPagamento", imovel.getId()) .setInteger("anoMesReferenciaPagamento", anoMesReferenciaPagamento) .setInteger("prescritas", DebitoCreditoSituacao.DEBITO_PRESCRITO) .setInteger("prescritasIncluidas", DebitoCreditoSituacao.DEBITO_PRESCRITO_CONTAS_INCLUIDAS) .setInteger("canceladas", DebitoCreditoSituacao.CANCELADA) .setInteger("parceladas", DebitoCreditoSituacao.PARCELADA) .setInteger("erroProcessamento", DebitoCreditoSituacao.ERRO_PROCESSAMENTO) .setMaxResults(1).uniqueResult(); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0744] Gerar Comparativo do Faturamento, Arrecada��o e Expurgo * * @author S�vio Luiz * @data 10/01/2008 * * @param idConta * @return idParcelamento */ public Collection pesquisarDadosComparativosFaturamentoArrecadacaoExpurgo(Integer anoMesReferencia, String idGerenciaRegional,String idUnidadeNegocio) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta; String condicaoWhere = ""; if(idGerenciaRegional != null && !idGerenciaRegional.equals("")){ condicaoWhere += " where geRe.greg_id = "+ new Integer(idGerenciaRegional); } if(idUnidadeNegocio != null && !idUnidadeNegocio.equals("")){ condicaoWhere += " where unNeg.uneg_id = "+ new Integer(idUnidadeNegocio); } try { consulta = "select " +" greg_nmabreviado as regional,"//0 +" uneg_nmabreviado as unidadeNegocio,"//1 +" centroTemp as codigoCentroCusto,"//2 +" nomeLocTemp as nomeLocalidade,"//3 +" gerTemp as gerencia,"//4 +" uniTemp as idUnidadeNegocio,"//5 +" locTemp as idLocalidade,"//6 +" sum( case when tipo = 1 then valor else 0 end ) as valorItemFaturado,"//7 +" sum( case when tipo = 2 then valor else 0 end ) as valorItemArrecadacao, "//8 +" sum( case when tipo = 3 then valor else 0 end ) as valorItemFaturadoLiquido, "//9 +" sum( case when tipo = 4 then valor else 0 end ) as valorItemFaturadoBruto, "//10 +" sum( case when tipo = 5 then valor else 0 end ) as valorItemCancelados "//11 +"from " +" (select" +" 1 as tipo," +" resFat.greg_id as gerTemp," +" resFat.uneg_id as uniTemp," +" resFat.loca_id as locTemp," +" loc.loca_cdcentrocusto as centroTemp," +" loc.loca_nmlocalidade as nomeLocTemp," +" sum(resFat.rfat_vlitemfaturamento) as valor " +" from" +" financeiro.resumo_faturamento resFat" +" inner join cadastro.localidade loc on loc.loca_id = resFat.loca_id" +" where" +" resFat.rfat_amreferencia = :anoMesReferencia and" +" resFat.lctp_id = :idTotalCobradoConta" +" group by" +" resFat.greg_id," +" resFat.uneg_id," +" loc.loca_cdcentrocusto," +" resFat.loca_id," +" loc.loca_nmlocalidade" +" union" +" select" +" 2 as tipo," +" resArrec.greg_id as gerTemp," +" resArrec.uneg_id as uniTemp," +" resArrec.loca_id as locTemp," +" loc.loca_cdcentrocusto as centroTemp," +" loc.loca_nmlocalidade as nomeLocTemp," +" sum(resArrec.rarr_vlitemarrecadacao) as valor " +" from " +" arrecadacao.resumo_arrecadacao resArrec" +" inner join cadastro.localidade loc on loc.loca_id = resArrec.loca_id" +" where " +" resArrec.rarr_amreferencia = :anoMesReferencia and" +" resArrec.lctp_id = :idTotalRecebimentos" +" group by" +" resArrec.greg_id," +" resArrec.uneg_id," +" loc.loca_cdcentrocusto," +" resArrec.loca_id," +" loc.loca_nmlocalidade" +" union" +" select" +" 3 as tipo," +" resFat.greg_id as gerTemp," +" resFat.uneg_id as uniTemp," +" resFat.loca_id as locTemp," +" loc.loca_cdcentrocusto as centroTemp," +" loc.loca_nmlocalidade as nomeLocTemp," +" sum(resFat.rfat_vlitemfaturamento) as valor " +" from" +" financeiro.resumo_faturamento resFat" +" inner join cadastro.localidade loc on loc.loca_id = resFat.loca_id" +" where" +" resFat.rfat_amreferencia = :anoMesReferencia and" +" resFat.lctp_id = :receitaLiquida and" +" (resFat.lcit_id = :itemReceitaLiquida or resFat.lcit_id = :itemTotal)" +" group by" +" resfat.greg_id," +" resfat.uneg_id," +" loc.loca_cdcentrocusto," +" resfat.loca_id," +" loc.loca_nmlocalidade" +" union" +" select" +" 4 as tipo," +" resFat.greg_id as gerTemp," +" resFat.uneg_id as uniTemp," +" resFat.loca_id as locTemp," +" loc.loca_cdcentrocusto as centroTemp," +" loc.loca_nmlocalidade as nomeLocTemp," +" sum(resFat.rfat_vlitemfaturamento) as valor " +" from" +" financeiro.resumo_faturamento resFat" +" inner join cadastro.localidade loc on loc.loca_id = resFat.loca_id" +" where" +" resFat.rfat_amreferencia = :anoMesReferencia and" +" resFat.lctp_id = :receitaBruta" +" group by" +" resfat.greg_id," +" resfat.uneg_id," +" loc.loca_cdcentrocusto," +" resfat.loca_id," +" loc.loca_nmlocalidade" +" union" +" select" +" 5 as tipo," +" resFat.greg_id as gerTemp," +" resFat.uneg_id as uniTemp," +" resFat.loca_id as locTemp," +" loc.loca_cdcentrocusto as centroTemp," +" loc.loca_nmlocalidade as nomeLocTemp," +" sum(resFat.rfat_vlitemfaturamento) as valor " +" from" +" financeiro.resumo_faturamento resFat" +" inner join cadastro.localidade loc on loc.loca_id = resFat.loca_id" +" where" +" resFat.rfat_amreferencia = :anoMesReferencia and" +" resFat.lctp_id = :receitasCanceladas" +" group by" +" resfat.greg_id," +" resfat.uneg_id," +" loc.loca_cdcentrocusto," +" resfat.loca_id," +" loc.loca_nmlocalidade" +" ) temp " +"inner join cadastro.gerencia_regional geRe on (gerTemp = geRe.greg_id) " +"inner join cadastro.unidade_negocio unNeg on (uniTemp = unNeg.uneg_id) "; consulta += condicaoWhere; consulta +=" group by " +" greg_nmabreviado," +" unidadeNegocio," +" codigoCentroCusto," +" nomeLocalidade," +" gerencia," +" idUnidadeNegocio," +" idLocalidade " +"order by" +" gerencia," +" idUnidadeNegocio," +" codigoCentroCusto"; retorno = session.createSQLQuery(consulta) .addScalar("regional", Hibernate.STRING) .addScalar("unidadeNegocio",Hibernate.STRING) .addScalar("codigoCentroCusto",Hibernate.STRING) .addScalar("nomeLocalidade",Hibernate.STRING) .addScalar("gerencia",Hibernate.INTEGER) .addScalar("idUnidadeNegocio",Hibernate.INTEGER) .addScalar("idLocalidade",Hibernate.INTEGER) .addScalar("valorItemFaturado",Hibernate.BIG_DECIMAL) .addScalar("valorItemArrecadacao",Hibernate.BIG_DECIMAL) .addScalar("valorItemFaturadoLiquido",Hibernate.BIG_DECIMAL) .addScalar("valorItemFaturadoBruto",Hibernate.BIG_DECIMAL) .addScalar("valorItemCancelados",Hibernate.BIG_DECIMAL) .setInteger("idTotalCobradoConta",LancamentoTipo.TOTAL_COBRADO_NAS_CONTAS) .setInteger("idTotalRecebimentos",LancamentoTipo.TOTAL_DOS_RECEBIMENTOS) .setInteger("receitaLiquida",LancamentoTipo.RECEITA_LIQUIDA_INT) .setInteger("itemReceitaLiquida", LancamentoItem.RECEITA_LIQUIDA) .setInteger("itemTotal", LancamentoItem.TOTAL) .setInteger("receitaBruta",LancamentoTipo.RECEITA_BRUTA_INT) .setInteger("receitasCanceladas",LancamentoTipo.TOTAL_RECEITA_CANCELADA) .setInteger("anoMesReferencia",anoMesReferencia) .list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * * [UC0324] - Filtrar Guia de Devolucao * * [SF0001] - Seleciona Guias de Devolu��o do Cliente * * * @author Roberto Barbalho * @date * * @param guiaDevolucaoId * @return GuiaDevolucao * @throws ErroRepositorioException */ public GuiaDevolucao pesquisarGuiaDevolucao(Integer guiaDevolucaoId) throws ErroRepositorioException { GuiaDevolucao retorno = null; Session session = HibernateUtil.getSession(); try { String hql = " from " + " GuiaDevolucao as guia " + " left join fetch guia.documentoTipo " + " where " + " guia.id = :id "; retorno = (GuiaDevolucao) session.createQuery(hql).setInteger("id",guiaDevolucaoId).list().iterator().next(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0242] Registrar Movimento dos Arrecadadores * * Atualiza o valor total do movimento (armv_vltotalmovimento) (tabela * ARRECADADOR_MOVIMENTO) * * @author Vivianne Sousa * @date 31/01/2008 * * @param idArrecadadorMovimento * @param valorTotalMovimento * @return void */ public void atualizarValorMovimentoArrecadadorMovimento( Integer idArrecadadorMovimento, BigDecimal valorTotalMovimento) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarArrecadadorMovimento; try { atualizarArrecadadorMovimento = "UPDATE ArrecadadorMovimento " + "SET armv_vltotalmovimento = :valorTotalMovimento, armv_tmultimaalteracao = :dataAlteracao " + "WHERE armv_id = :idArrecadadorMovimento"; session.createQuery(atualizarArrecadadorMovimento) .setInteger("idArrecadadorMovimento", idArrecadadorMovimento) .setBigDecimal("valorTotalMovimento",valorTotalMovimento) .setTimestamp("dataAlteracao", new Date()).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0737] Atualiza Quantidade de Parcela Paga Consecutiva e Parcela B�nus * * @author Vivianne Sousa * @data 01/02/2008 * * @param idConta * @return dataPagamento */ public Date pesquisarDataPagamentoDeConta(Integer idConta) throws ErroRepositorioException { Date retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT dataPagamento " + "FROM Pagamento pgmt " + "WHERE pgmt.contaGeral.id = :idConta "; retorno = (Date) session.createQuery(consulta).setInteger( "idConta", idConta).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0744] Gerar Comparativo do Faturamento, Arrecada��o e Expurgo * * @author S�vio Luiz * @data 17/02/2008 * * @param idConta * @return idParcelamento */ public Collection pesquisarPagamentoExpurgado(Integer anoMesReferencia, String idGerenciaRegional,String idUnidadeNegocio) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT loc.loca_id as idLocalidade,"//0 +" sum(pag.pgmt_vlpagamento) as valorPagamento "//1 +" FROM arrecadacao.pagamento pag,cadastro.localidade loc" +" inner join cadastro.gerencia_regional geRe on (loc.greg_id = geRe.greg_id)" +" inner join cadastro.unidade_negocio unNeg on (loc.uneg_id = unNeg.uneg_id)" +" where loc.loca_id = pag.loca_id and pag.pgmt_amreferenciaarrecadacao = :anoMesReferencia and" +" pag.pgmt_icexpurgado = :icExpurgadoPagamento" ; if(idGerenciaRegional != null && !idGerenciaRegional.equals("")){ consulta += " and geRe.greg_id = "+ new Integer(idGerenciaRegional); } if(idUnidadeNegocio != null && !idUnidadeNegocio.equals("")){ consulta += " and unNeg.uneg_id = "+ new Integer(idUnidadeNegocio); } consulta += " group by loc.loca_id" +" order by 1"; retorno = session.createSQLQuery(consulta) .addScalar("idLocalidade",Hibernate.INTEGER) .addScalar("valorPagamento",Hibernate.BIG_DECIMAL) .setInteger("icExpurgadoPagamento",Pagamento.INDICADOR_EXPURGADO_SIM) .setInteger("anoMesReferencia",anoMesReferencia) .list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0744] Gerar Comparativo do Faturamento, Arrecada��o e Expurgo * * @author S�vio Luiz * @data 17/02/2008 * * @param idConta * @return idParcelamento */ public Collection pesquisarPagamentoHistoricoExpurgado(Integer anoMesReferencia, String idGerenciaRegional,String idUnidadeNegocio) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT loc.loca_id as idLocalidade,"//0 +" sum(pagHistorico.pghi_vlpagamento) as valorPagamentoHistorico "//1 +" FROM arrecadacao.pagamento_historico pagHistorico,cadastro.localidade loc" +" inner join cadastro.gerencia_regional geRe on (loc.greg_id = geRe.greg_id)" +" inner join cadastro.unidade_negocio unNeg on (loc.uneg_id = unNeg.uneg_id)" +" where loc.loca_id = pagHistorico.loca_id and pagHistorico.pghi_amreferenciaarrecadacao = :anoMesReferencia and" +" pagHistorico.pghi_icexpurgado = :icExpurgadoPagamentoHistorico" ; if(idGerenciaRegional != null && !idGerenciaRegional.equals("")){ consulta += " and geRe.greg_id = "+ new Integer(idGerenciaRegional); } if(idUnidadeNegocio != null && !idUnidadeNegocio.equals("")){ consulta += " and unNeg.uneg_id = "+ new Integer(idUnidadeNegocio); } consulta += " group by loc.loca_id" +" order by 1"; retorno = session.createSQLQuery(consulta) .addScalar("idLocalidade",Hibernate.INTEGER) .addScalar("valorPagamentoHistorico",Hibernate.BIG_DECIMAL) .setInteger("icExpurgadoPagamentoHistorico",PagamentoHistorico.INDICADOR_EXPURGADO_SIM) .setInteger("anoMesReferencia",anoMesReferencia) .list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Object[] acumularValorAguaEsgotoPagamentosClassificadosConta( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { Object[] retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { // Cria o hql de pesquisa consulta = "select " + "sum(ctcg.ctcg_vlagua) as col_0, " + "sum(ctcg.ctcg_vlesgoto) as col_1 " + "from " + "faturamento.conta_categoria ctcg " + "where " + "ctcg.catg_id= :idCategoria " + "and (ctcg.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or ( " + "pgmt.pgst_idatual= :idPagamentoValorABaixar and pgmt.pgst_idanterior = :idPagamentoValorNaoConfere) ) " + "and (pgmt.cnta_id is not null) " + ")) " ; retorno = (Object[]) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar", PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("idPagamentoValorNaoConfere", PagamentoSituacao.VALOR_NAO_CONFERE) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 3500 * * [UC0276] - Encerrar Arrecada��o do M�s * * Acumula o valor de �gua por localidade e categoria para os pagamentos de * contas efetuados em meses anteriores classificados no m�s. * * @author Pedro Alexandre, Pedro Alexandre * @date 23/05/2006, 23/05/2008 * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public Object[] acumularValorAguaEsgotoPagamentosContasEfetuadosEmMesesAnterioresClassificadosNoMes( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { Object[] retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(ctcg.ctcg_vlagua) as col_0, " + "sum(ctcg.ctcg_vlesgoto) as col_1 " + "from " + "faturamento.conta_categoria ctcg " + "where " + "ctcg.catg_id= :idCategoria " + "and (ctcg.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao > 201212 and pgmt.pgmt_amreferenciaarrecadacao < :anoMesReferenciaArrecadacao " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ") ) " ; retorno = (Object[]) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0259] - Processar Pagamento com C�digo de Barras * * [SB0014] - Processar Pagamento Legado CAEMA - GUIA DE PAGAMENTO * * @author Raphael Rossiter * @date 16/06/2008 * * @param imovel * @param numeroGuia * @param anoGuia * @return Object[] * @throws ErroRepositorioException */ public Integer[] pesquisarExistenciaGuiaPagamento(Imovel imovel, Integer numeroGuia, Integer anoGuia) throws ErroRepositorioException { Integer[] retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select gp.id, dbtp.id from GuiaPagamento gp " + "inner join gp.imovel " + "inner join gp.debitoTipo dbtp " + "where gp.imovel.id = :imovel and gp.numeroGuia = :numeroGuia " + "and gp.anoGuia = :anoGuia and " + "gp.debitoCreditoSituacaoAtual.id IN(:normal, :incluida, :retificada)"; retorno = (Integer[]) session.createQuery(consulta).setInteger( "imovel", imovel.getId()).setInteger("numeroGuia", numeroGuia).setInteger("anoGuia", anoGuia).setInteger("normal", DebitoCreditoSituacao.NORMAL).setInteger("incluida", DebitoCreditoSituacao.INCLUIDA).setInteger("retificada", DebitoCreditoSituacao.RETIFICADA).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0259] - Processar Pagamento com C�digo de Barras * * [SB0014] - Processar Pagamento Legado CAEMA - AVISO DE D�BITOS * * @author Raphael Rossiter * @date 16/06/2008 * * @param imovel * @param lotePagamento * @param anoGuia * @return Object[] * @throws ErroRepositorioException */ public Integer[] pesquisarExistenciaGuiaPagamentoPorLotePagamento(Imovel imovel, Integer lotePagamento, Integer anoGuia) throws ErroRepositorioException { Integer[] retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select gp.id, dbtp.id from GuiaPagamento gp " + "inner join gp.imovel " + "inner join gp.debitoTipo dbtp " + "where gp.imovel.id = :imovel and gp.lotePagamento = :lotePagamento " + "and gp.anoGuia = :anoGuia and " + "gp.debitoCreditoSituacaoAtual.id IN(:normal, :incluida, :retificada)"; retorno = (Integer[]) session.createQuery(consulta).setInteger( "imovel", imovel.getId()).setInteger("lotePagamento", lotePagamento).setInteger("anoGuia", anoGuia).setInteger("normal", DebitoCreditoSituacao.NORMAL).setInteger("incluida", DebitoCreditoSituacao.INCLUIDA).setInteger("retificada", DebitoCreditoSituacao.RETIFICADA).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0301] Gerar Dados Diarios da Arrecadacao * Consulta das tarifas dos contratos do arrecadador * * @author Francisco do Nascimento * @date 18/07/2008 * */ public ArrecadadorContratoTarifa pesquisarArrecadadorContratoTarifa(Integer idArrecadador, Integer idFormaArrecadacao) throws ErroRepositorioException { ArrecadadorContratoTarifa retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT act " + "FROM ArrecadadorContratoTarifa act " + "INNER JOIN act.arrecadadorContrato ac " + "INNER JOIN act.arrecadacaoForma af " + "INNER JOIN ac.arrecadador arrec " + "WHERE arrec.id = :idArrecadador AND " + "ac.dataContratoEncerramento is null AND " + "af.id = :idFormaArrecadacao"; retorno = (ArrecadadorContratoTarifa) session.createQuery(consulta).setInteger( "idArrecadador", idArrecadador).setInteger( "idFormaArrecadacao", idFormaArrecadacao).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Exclui resumo arrecada��o do ano/m�s da arrecada��o corrente * por localidade * * [UC0276] Encerrar Arrecada��o do M�s * * @author Vivianne Sousa * @date 11/08/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @throws ErroRepositorioException */ public void excluirResumoArrecadacaoPorAnoMesArrecadacaoPorLocalidade( int anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta; try { // Constroi o hql para remover os resumos da arrecada��o // referentes ao ano/m�s de arrecada��o atual consulta = "delete ResumoArrecadacao ra " + " where ra.anoMesReferencia = :anoMesReferenciaArrecadacao " + " and ra.localidade.id = :idLocalidade"; // Executa o hql session.createQuery(consulta).setInteger( "anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade).executeUpdate(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } } /** * [UC0826] Gerar Relat�rio An�lise da Arreca��o * * @author Victor Cisneiros * @date 24/07/2008 */ public List<RelatorioAnaliseArrecadacaoBean> pesquisarAnaliseArrecadacao( PesquisarAnaliseArrecadacaoHelper helper) throws ErroRepositorioException { List<RelatorioAnaliseArrecadacaoBean> retorno = new ArrayList<RelatorioAnaliseArrecadacaoBean>(); Session session = HibernateUtil.getSession(); String where = ""; if (helper.getIdArrecadador() != null) { where += " AND a.arrc_id = :idArrecadador "; } if (helper.getIdFormaArrecadacao() != null) { where += " AND a.arfm_id = :idFormaArrecadacao "; } String whereGroup = ""; String select = ""; String group = ""; if (helper.getPorArrecadador() && helper.getPorFormaArrecadacao()) { whereGroup = " AND d.arfm_id = a.arfm_id AND arrc.clie_id = c.clie_id "; select += ", c.clie_id as id_arrecadador, " + // 5 "a.arfm_id as id_arrecadacao_forma, " + // 6 "a.ardd_nndiafloat as dias_float, " + // 7 "a.ardd_vltarifaunitaria as tarifa_unitaria "; // 8 group += "GROUP BY " + "c.clie_id, a.arfm_id, a.ardd_dtpagamento, a.ardd_nndiafloat, a.ardd_vltarifaunitaria " + "ORDER BY " + "c.clie_id, a.arfm_id, a.ardd_dtpagamento "; } else if (helper.getPorArrecadador()) { whereGroup = " AND arrc.clie_id = c.clie_id "; select += ", c.clie_id as id_arrecadador "; // 5 group += "GROUP BY " + "c.clie_id, a.ardd_dtpagamento " + "ORDER BY " + "c.clie_id, a.ardd_dtpagamento "; } else if (helper.getPorFormaArrecadacao()) { whereGroup = " AND d.arfm_id = a.arfm_id "; select += ", a.arfm_id as id_arrecadacao_forma "; // 5 group += "GROUP BY " + "a.arfm_id, a.ardd_dtpagamento " + "ORDER BY " + "a.arfm_id, a.ardd_dtpagamento "; } else { group += "GROUP BY " + "a.ardd_dtpagamento " + "ORDER BY " + "a.ardd_dtpagamento "; } String consulta = "SELECT " + "a.ardd_dtpagamento as data_pagamento, " + "sum(a.ardd_qtdocumentos) as quantidade_documentos, " + "sum(a.ardd_vltarifa) as valor_tarifa, " + "sum(a.ardd_qtpagamentos) as quantidade_pagamentos, " + "sum(a.ardd_vlpagamentos) as valor_pagamentos, " + "( " + // valor das devolucoes "SELECT sum(d.dvdd_vldevolucoes) " + "FROM arrecadacao.devolucao_dados_diarios d " + " INNER JOIN arrecadacao.arrecadador arrc ON (d.arrc_id = arrc.arrc_id) " + "WHERE d.dvdd_dtdevolucao = a.ardd_dtpagamento " + "AND (d.dvdd_tipodevolucao = 'C' OR d.dvdd_tipodevolucao = 'D' or d.dvdd_tipodevolucao = 'N') " + whereGroup + ") as valor_devolucoes " + select + "FROM arrecadacao.arrec_dados_diarios a " + "INNER JOIN arrecadacao.arrecadador ar ON (a.arrc_id = ar.arrc_id) " + "INNER JOIN cadastro.cliente c ON (ar.clie_id = c.clie_id) " + "INNER JOIN arrecadacao.arrecadacao_forma af ON (a.arfm_id = af.arfm_id) " + "WHERE " + "a.ardd_amreferenciaarrecadacao = :anoMesReferencia " + where + group; try { SQLQuery q = session.createSQLQuery(consulta); q.addScalar("data_pagamento", Hibernate.DATE); q.addScalar("quantidade_documentos", Hibernate.INTEGER); q.addScalar("valor_tarifa", Hibernate.BIG_DECIMAL); q.addScalar("quantidade_pagamentos", Hibernate.INTEGER); q.addScalar("valor_pagamentos", Hibernate.BIG_DECIMAL); q.addScalar("valor_devolucoes", Hibernate.BIG_DECIMAL); if (helper.getPorArrecadador() && helper.getPorFormaArrecadacao()) { q.addScalar("id_arrecadador", Hibernate.INTEGER); q.addScalar("id_arrecadacao_forma", Hibernate.INTEGER); q.addScalar("dias_float", Hibernate.INTEGER); q.addScalar("tarifa_unitaria", Hibernate.BIG_DECIMAL); } else if (helper.getPorArrecadador()) { q.addScalar("id_arrecadador", Hibernate.INTEGER); } else if (helper.getPorFormaArrecadacao()) { q.addScalar("id_arrecadacao_forma", Hibernate.INTEGER); } q.setInteger("anoMesReferencia", helper.getMesAno()); if (helper.getIdArrecadador() != null) { q.setInteger("idArrecadador", helper.getIdArrecadador()); } if (helper.getIdFormaArrecadacao() != null) { q.setInteger("idFormaArrecadacao", helper.getIdFormaArrecadacao()); } for (Object[] linha : (List<Object[]>) q.list()) { RelatorioAnaliseArrecadacaoBean bean = new RelatorioAnaliseArrecadacaoBean(); bean.setDataPagamento((Date) linha[0]); if (linha[1] != null) bean.setQuantidadeDocumentos((Integer) linha[1]); if (linha[2] != null) bean.setValorTarifa((BigDecimal) linha[2]); if (linha[3] != null) bean.setQuantidadePagamentos((Integer) linha[3]); if (linha[4] != null) bean.setValorArrecadadoBruto((BigDecimal) linha[4]); if (linha[5] != null) bean.setValorArrecadadoDesconto((BigDecimal) linha[5]); if (helper.getPorArrecadador() && helper.getPorFormaArrecadacao()) { bean.setIdArrecadador((Integer) linha[6]); bean.setIdFormaArrecadacao((Integer) linha[7]); bean.setDiasFloat((Integer) linha[8]); bean.setValorTarifaUnitaria((BigDecimal) linha[9]); } else if (helper.getPorArrecadador()) { bean.setIdArrecadador((Integer) linha[6]); } else if (helper.getPorFormaArrecadacao()) { bean.setIdFormaArrecadacao((Integer) linha[6]); } retorno.add(bean); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0827] Gerar Relat�rio An�lise dos Avisos Bancarios * * @author Victor Cisneiros * @date 30/07/2008 */ public List<RelatorioAnaliseAvisosBancariosBean> pesquisarAnaliseAvisosBancarios( PesquisarAnaliseAvisosBancariosHelper helper) throws ErroRepositorioException { List<RelatorioAnaliseAvisosBancariosBean> retorno = new ArrayList<RelatorioAnaliseAvisosBancariosBean>(); Session session = HibernateUtil.getSession(); int anoMesArrecadacaoAnterior = Util.subtraiAteSeisMesesAnoMesReferencia(helper.getMesAno(), 1); String where = ""; String where2 = ""; if (helper.getIdArrecadador() != null) { where += " AND a.arrc_id = :idArrecadador "; where2 += " AND avbc.arrc_id = :idArrecadador "; } if (helper.getIdFormaArrecadacao() != null) { where += " AND a.arfm_id = :idFormaArrecadacao "; where2 += " AND avbc.arfm_id = :idFormaArrecadacao "; } SistemaParametro sistemaParametro = Fachada.getInstancia().pesquisarParametrosDoSistema(); Date dataHoraDadosDiarios = sistemaParametro.getDataHoraDadosDiariosArrecadacao(); String whereGroup = ""; String select = ""; String select2 = ""; String group = ""; String group2 = ""; String order = ""; String diferencaAcumulada = ""; if (helper.getPorArrecadador() && helper.getPorFormaArrecadacao()) { whereGroup = " AND avbc.arfm_id = a.arfm_id AND clie.clie_id = ar.clie_id "; diferencaAcumulada = ", ( " + // 8: valor da diferen�a acumulada "SELECT ( " + "sum(dfac.dfac_vldiferencaacumulada) " + ") FROM arrecadacao.diferenca_acumulada dfac " + "INNER JOIN arrecadacao.arrecadador arrc ON (dfac.arrc_id = arrc.arrc_id) " + "INNER JOIN cadastro.cliente clie ON (arrc.clie_id = clie.clie_id) " + "WHERE dfac.arfm_id = a.arfm_id AND clie.clie_id = ar.clie_id AND dfac.dfac_amreferenciaarrecadacao = :anoMesArrecadacaoAnterior" + ") as diferenca_acumulada, " + "( " + // 9: valor dos acertos na diferenca acumulada "SELECT ( " + "(" + "+ sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END )" + ") - ( " + "+ sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END )" + ") " + ") FROM arrecadacao.aviso_acertos ac " + "INNER JOIN arrecadacao.aviso_bancario avbc ON (ac.avbc_id = avbc.avbc_id) " + "INNER JOIN arrecadacao.arrecadador arrc ON (avbc.arrc_id = arrc.arrc_id) " + "INNER JOIN cadastro.cliente clie ON (arrc.clie_id = clie.clie_id) " + "WHERE avbc.avbc_amreferenciaarrecadacao < :anoMesArrecadacao AND ac.avac_amreferenciaarrecadacao = :anoMesArrecadacao AND avbc.arfm_id = a.arfm_id AND clie.clie_id = ar.clie_id " + ") as acertos_diferenca_acumulada, "; select += diferencaAcumulada + "( " + // 10: valor dias float "SELECT ( " + "sum(actf.actf_nndiafloat) " + ") FROM arrecadacao.arrecadador_contrato_tar actf " + "INNER JOIN arrecadacao.arrecadador_contrato arct ON (actf.arct_id = arct.arct_id) " + "INNER JOIN arrecadacao.arrecadador arrc ON (arct.arrc_id = arrc.arrc_id) " + "INNER JOIN cadastro.cliente clie ON (arrc.clie_id = clie.clie_id) " + "WHERE actf.arfm_id = a.arfm_id AND clie.clie_id = ar.clie_id " + ") as dias_float, " + "( " + // 11: valor tarifa unitaria "SELECT ( " + "sum(actf.actf_vltarifa) " + ") FROM arrecadacao.arrecadador_contrato_tar actf " + "INNER JOIN arrecadacao.arrecadador_contrato arct ON (actf.arct_id = arct.arct_id) " + "INNER JOIN arrecadacao.arrecadador arrc ON (arct.arrc_id = arrc.arrc_id) " + "INNER JOIN cadastro.cliente clie ON (arrc.clie_id = clie.clie_id) " + "WHERE actf.arfm_id = a.arfm_id AND clie.clie_id = ar.clie_id " + ") as tarifa_unitaria, " + "ar.clie_id as id_arrecadador, " + "a.arfm_id as id_arrecadacao_forma "; select2 += "0,0, " + "ar.clie_id, " + "a.arfm_id "; group += "GROUP BY " + "ar.clie_id, a.arfm_id, a.avbc_dtrealizada "; group2 += "GROUP BY " + "ar.clie_id, a.arfm_id, ac.avac_dtacerto "; order += " ORDER BY 14, 15, 1 "; } else if (helper.getPorArrecadador()) { whereGroup = " AND clie.clie_id = ar.clie_id "; diferencaAcumulada = ", ( " + // 9: valor da diferen�a acumulada "SELECT ( " + "sum(dfac.dfac_vldiferencaacumulada) " + ") FROM arrecadacao.diferenca_acumulada dfac " + "INNER JOIN arrecadacao.arrecadador arrc ON (dfac.arrc_id = arrc.arrc_id) " + "INNER JOIN cadastro.cliente clie ON (arrc.clie_id = clie.clie_id) " + "WHERE clie.clie_id = ar.clie_id AND dfac.dfac_amreferenciaarrecadacao = :anoMesArrecadacaoAnterior" + ") as diferenca_acumulada, " + "(" + // 10: valor dos acertos na diferenca acumulada "SELECT ( " + "(" + "+ sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END )" + ") - ( " + "+ sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END )" + ") " + ") FROM arrecadacao.aviso_acertos ac " + "INNER JOIN arrecadacao.aviso_bancario avbc ON (ac.avbc_id = avbc.avbc_id) " + "INNER JOIN arrecadacao.arrecadador arrc ON (avbc.arrc_id = arrc.arrc_id) " + "INNER JOIN cadastro.cliente clie ON (arrc.clie_id = clie.clie_id) " + "WHERE avbc.avbc_amreferenciaarrecadacao < :anoMesArrecadacao AND ac.avac_amreferenciaarrecadacao = :anoMesArrecadacao AND clie.clie_id = ar.clie_id " + ") as acertos_diferenca_acumulada, "; select += diferencaAcumulada + "ar.clie_id as id_arrecadador "; select2 += "ar.clie_id "; group += "GROUP BY " + "ar.clie_id, a.avbc_dtrealizada "; group2 += "GROUP BY " + "ar.clie_id, ac.avac_dtacerto "; order += " ORDER BY 12, 1 "; } else if (helper.getPorFormaArrecadacao()) { whereGroup = " AND avbc.arfm_id = a.arfm_id "; diferencaAcumulada = ", ( " + // 9: valor da diferen�a acumulada "SELECT ( " + "sum(dfac.dfac_vldiferencaacumulada) " + ") FROM arrecadacao.diferenca_acumulada dfac " + "WHERE dfac.arfm_id = a.arfm_id AND dfac.dfac_amreferenciaarrecadacao = :anoMesArrecadacaoAnterior" + ") as diferenca_acumulada, " + "(" + // 10: valor dos acertos aplicados na diferenca acumulada "SELECT ( " + "(" + "+ sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END )" + ") - ( " + "+ sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END )" + ") " + ") FROM arrecadacao.aviso_acertos ac " + "INNER JOIN arrecadacao.aviso_bancario avbc ON (ac.avbc_id = avbc.avbc_id) " + "WHERE avbc.avbc_amreferenciaarrecadacao < :anoMesArrecadacao AND ac.avac_amreferenciaarrecadacao = :anoMesArrecadacao AND avbc.arfm_id = a.arfm_id " + ") as acertos_diferenca_acumulada, "; select += diferencaAcumulada + "a.arfm_id as id_arrecadacao_forma "; select2 += "a.arfm_id "; group += "GROUP BY " + "a.arfm_id, a.avbc_dtrealizada "; group2 += "GROUP BY " + "a.arfm_id, ac.avac_dtacerto "; order += " ORDER BY 12, 1 "; } else { diferencaAcumulada = ", ( " + // 8: valor da diferen�a acumulada "SELECT ( " + "sum(dfac.dfac_vldiferencaacumulada) " + ") FROM arrecadacao.diferenca_acumulada dfac " + "WHERE dfac.dfac_amreferenciaarrecadacao = :anoMesArrecadacaoAnterior" + ") as diferenca_acumulada, " + "( " + // 9: valor dos acertos aplicados na diferenca acumulada "SELECT ( " + "(" + "+ sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END )" + ") - ( " + "+ sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END )" + ") " + ") FROM arrecadacao.aviso_acertos ac " + "INNER JOIN arrecadacao.aviso_bancario avbc ON (ac.avbc_id = avbc.avbc_id) " + "WHERE avbc.avbc_amreferenciaarrecadacao < :anoMesArrecadacao AND ac.avac_amreferenciaarrecadacao = :anoMesArrecadacao " + ") as acertos_diferenca_acumulada "; // sem parenteses no final (ultima coluna) select += diferencaAcumulada; group += "GROUP BY " + "a.avbc_dtrealizada "; group2 += "GROUP BY " + "ac.avac_dtacerto "; order += " ORDER BY 1 "; } String consulta = "( SELECT " + "a.avbc_dtrealizada as data_realizada, " + // 0: data_realizada "sum(a.avbc_vlarrecadacaocalculado) as arrecadacao_calculado, " + // 1: arrecadacao_calculado "sum(a.avbc_vlarrecadacaoinformado) as arrecadacao_informado, " + // 2: arrecadacao_informado "sum(a.avbc_vldevolucaocalculado) as devolucao_calculado, " + // 3: devolucao_calculado "sum(a.avbc_vldevolucaoinformado) as devolucao_informado, " + // 4: devolucao_informado "sum(d.avdd_vldeducao) as valor_deducao, " + // 5: deducao "( " + // 6: valor dos acertos "SELECT ( " + "(" + "+ sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END )" + ") - ( " + "+ sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END )" + ") " + ") FROM arrecadacao.aviso_acertos ac " + "INNER JOIN arrecadacao.aviso_bancario avbc ON (ac.avbc_id = avbc.avbc_id) " + "INNER JOIN arrecadacao.arrecadador arrc ON (avbc.arrc_id = arrc.arrc_id) " + "INNER JOIN cadastro.cliente clie ON (arrc.clie_id = clie.clie_id) " + "WHERE avac_dtacerto = a.avbc_dtrealizada " + whereGroup + " AND avac_amreferenciaarrecadacao = :anoMesArrecadacao " + ") as valor_acertos, " + "sum(a.avbc_vlrealizado) as valor_realizado, " + // 7: valor_realizado "( " + // 8: valor dos acertos aplicados nos avisos bancarios "(" + "+ sum( CASE WHEN ac2.avac_iccreditodebito = 1 AND ac2.avac_icarrecadacaodevolucao = 1 THEN ac2.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac2.avac_iccreditodebito = 2 AND ac2.avac_icarrecadacaodevolucao = 1 THEN ac2.avac_vlacerto ELSE 0 END )" + ") - ( " + "+ sum( CASE WHEN ac2.avac_iccreditodebito = 1 AND ac2.avac_icarrecadacaodevolucao = 2 THEN ac2.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac2.avac_iccreditodebito = 2 AND ac2.avac_icarrecadacaodevolucao = 2 THEN ac2.avac_vlacerto ELSE 0 END )" + ") " + ") as acertos_avisos " + select + "FROM arrecadacao.aviso_bancario a " + "INNER JOIN arrecadacao.arrecadador ar ON (a.arrc_id = ar.arrc_id) " + "INNER JOIN cadastro.cliente c ON (ar.clie_id = c.clie_id) " + "INNER JOIN arrecadacao.arrecadacao_forma af ON (a.arfm_id = af.arfm_id) " + "LEFT JOIN arrecadacao.aviso_deducoes d ON (a.avbc_id = d.avbc_id) " + "LEFT JOIN arrecadacao.aviso_acertos ac2 ON (ac2.avbc_id = a.avbc_id AND ac2.avac_amreferenciaarrecadacao = :anoMesArrecadacao) " + "WHERE " + "a.avbc_amreferenciaarrecadacao = :anoMesArrecadacao " + where + " AND a.avbc_tmultimaalteracao <= :dataHoraDadosDiarios " + group + ") UNION (" + "SELECT " + "ac.avac_dtacerto, " + "0,0,0,0,0, " + "( " + "(" + "+ sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END )" + ") - ( " + "+ sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END )" + "- sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END )" + ") " + ") as valor_acertos, " + "0,0 " + diferencaAcumulada + select2 + "FROM arrecadacao.aviso_acertos ac " + "INNER JOIN arrecadacao.aviso_bancario a ON (ac.avbc_id = a.avbc_id) " + "INNER JOIN arrecadacao.arrecadador ar ON (a.arrc_id = ar.arrc_id) " + "INNER JOIN cadastro.cliente clie ON (ar.clie_id = clie.clie_id) " + "INNER JOIN arrecadacao.arrecadacao_forma af ON (a.arfm_id = af.arfm_id) " + "WHERE ac.avac_amreferenciaarrecadacao = :anoMesArrecadacao " + where + " AND ac.avac_tmultimaalteracao <= :dataHoraDadosDiarios " + "AND ac.avac_dtacerto NOT IN (" + "SELECT distinct(avbc.avbc_dtrealizada) " + "FROM arrecadacao.aviso_bancario avbc " + "WHERE avbc.avbc_amreferenciaarrecadacao = :anoMesArrecadacao " + where2 + " AND avbc.avbc_tmultimaalteracao <= :dataHoraDadosDiarios " + whereGroup + ") " + group2 + " ) " + order; try { SQLQuery q = session.createSQLQuery(consulta); q.addScalar("data_realizada", Hibernate.DATE); q.addScalar("arrecadacao_calculado", Hibernate.BIG_DECIMAL); q.addScalar("arrecadacao_informado", Hibernate.BIG_DECIMAL); q.addScalar("devolucao_calculado", Hibernate.BIG_DECIMAL); q.addScalar("devolucao_informado", Hibernate.BIG_DECIMAL); q.addScalar("valor_deducao", Hibernate.BIG_DECIMAL); q.addScalar("valor_acertos", Hibernate.BIG_DECIMAL); q.addScalar("valor_realizado", Hibernate.BIG_DECIMAL); q.addScalar("acertos_avisos", Hibernate.BIG_DECIMAL); q.addScalar("diferenca_acumulada", Hibernate.BIG_DECIMAL); q.addScalar("acertos_diferenca_acumulada", Hibernate.BIG_DECIMAL); if (helper.getPorArrecadador() && helper.getPorFormaArrecadacao()) { q.addScalar("dias_float", Hibernate.INTEGER); q.addScalar("tarifa_unitaria", Hibernate.BIG_DECIMAL); q.addScalar("id_arrecadador", Hibernate.INTEGER); q.addScalar("id_arrecadacao_forma", Hibernate.INTEGER); } else if (helper.getPorArrecadador()) { q.addScalar("id_arrecadador", Hibernate.INTEGER); } else if (helper.getPorFormaArrecadacao()) { q.addScalar("id_arrecadacao_forma", Hibernate.INTEGER); } q.setInteger("anoMesArrecadacao", helper.getMesAno()); q.setInteger("anoMesArrecadacaoAnterior", anoMesArrecadacaoAnterior); q.setTimestamp("dataHoraDadosDiarios", dataHoraDadosDiarios); if (helper.getIdArrecadador() != null) { q.setInteger("idArrecadador", helper.getIdArrecadador()); } if (helper.getIdFormaArrecadacao() != null) { q.setInteger("idFormaArrecadacao", helper.getIdFormaArrecadacao()); } for (Object[] linha : (List<Object[]>) q.list()) { RelatorioAnaliseAvisosBancariosBean bean = new RelatorioAnaliseAvisosBancariosBean(); bean.setDataRealizada((Date) linha[0]); if (linha[1] != null) bean.setValorArrecadacaoCalculado((BigDecimal) linha[1]); if (linha[2] != null) bean.setValorArrecadacaoInformado((BigDecimal) linha[2]); if (linha[3] != null) bean.setValorDevolucaoCalculado((BigDecimal) linha[3]); if (linha[4] != null) bean.setValorDevolucaoInformado((BigDecimal) linha[4]); if (linha[5] != null) bean.setValorDeducoes((BigDecimal) linha[5]); if (linha[6] != null) bean.setValorAcertos((BigDecimal) linha[6]); if (linha[7] != null) bean.setValorRealizado((BigDecimal) linha[7]); if (linha[8] != null) bean.setValorAcertosAplicadosAvisos((BigDecimal) linha[8]); if (linha[9] != null) bean.setDiferencaAcumulada((BigDecimal) linha[9]); if (linha[10] != null) bean.setValorAcertosAplicadosDiferenca((BigDecimal) linha[10]); if (helper.getPorArrecadador() && helper.getPorFormaArrecadacao()) { if (linha[11] != null) bean.setDiasFloat((Integer) linha[11]); if (linha[12] != null) bean.setValorTarifaUnitaria((BigDecimal) linha[12]); bean.setIdArrecadador((Integer) linha[13]); bean.setIdFormaArrecadacao((Integer) linha[14]); } else if (helper.getPorArrecadador()) { bean.setIdArrecadador((Integer) linha[11]); } else if (helper.getPorFormaArrecadacao()) { bean.setIdFormaArrecadacao((Integer) linha[11]); } retorno.add(bean); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0829] Gerar Relat�rio Avisos Bancarios Por Conta Corrente * * @author Victor Cisneiros * @date 21/08/2008 */ public List<RelatorioAvisoBancarioPorContaCorrenteBean> pesquisarAvisoBancarioPorContaCorrente( PesquisarAvisoBancarioPorContaCorrenteHelper helper) throws ErroRepositorioException { List<RelatorioAvisoBancarioPorContaCorrenteBean> retorno = new ArrayList<RelatorioAvisoBancarioPorContaCorrenteBean>(); Session session = HibernateUtil.getSession(); String where = ""; if (helper.getIdBanco() != null) { where += " AND b.bnco_id = :idBanco "; } if (helper.getIdContaBancaria() != null) { where += " AND cb.ctbc_id = :idContaBancaria "; } String anoMes = String.valueOf(helper.getMesAno()); int ano = new Integer(anoMes.substring(0, 4)); int mes = new Integer(anoMes.substring(4, 6)); String consulta = "( " + "SELECT " + "a.avbc_id as id_aviso, " + // 0 "a.avbc_dtrealizada as data_realizada, " + // 1 "a.arrc_id as id_arrecadador, " + // 2 "c.clie_nmcliente as descricao_arrecadador, " + // 3 "a.arfm_id as id_arrecadacao_forma, " + // 4 "af.arfm_dsarrecadacaoforma as descricao_arrecadacao_forma, " + // 5 "b.bnco_id as id_banco, " + // 6 "b.bnco_nmbanco as descricao_banco, " + // 7 "cb.ctbc_id as id_conta, " + // 8 "cb.ctbc_nnconta as numero_conta, " + // 9 "ag.agen_id as id_agencia, " + // 10 "ag.agen_cdagencia as codigo_agencia, " + // 11 "ag.agen_nmagencia as descricao_agencia, " + // 12 "cb.ctbc_nncontacontabil as numero_conta_contabil, " + // 13 "ag.agen_nnfone as numero_fone, " +// 14 "ag.agen_nnfoneramal as numero_ramal, " + // 15 "a.avbc_dtlancamento as data_lancamento, " + // 16 "a.avbc_nnsequencial as sequencial_aviso, " + // 17 "a.avbc_nndocumento as numero_documento, " + // 18 "( CASE WHEN a.avbc_iccreditodebito = 1 THEN a.avbc_vlrealizado ELSE 0 END ) as credito, " + // 19 "( CASE WHEN a.avbc_iccreditodebito = 2 THEN a.avbc_vlrealizado ELSE 0 END ) as debito, " + // 20 "a.avbc_amreferenciaarrecadacao as ano_mes_arrecadacao, " + // 21 "1 " + "FROM arrecadacao.aviso_bancario a " + "LEFT JOIN arrecadacao.arrecadador ar ON (a.arrc_id = ar.arrc_id) " + "LEFT JOIN cadastro.cliente c ON (ar.clie_id = c.clie_id) " + "LEFT JOIN arrecadacao.arrecadacao_forma af ON (a.arfm_id = af.arfm_id) " + "INNER JOIN arrecadacao.conta_bancaria cb ON (a.ctbc_id = cb.ctbc_id) " + "INNER JOIN arrecadacao.agencia ag ON (cb.agen_id = ag.agen_id) " + "INNER JOIN arrecadacao.banco b ON (ag.bnco_id = b.bnco_id) " + "WHERE " + "(a.avbc_amreferenciaarrecadacao = :anoMesReferencia OR (to_char(a.avbc_dtrealizada, 'YYYY') = :ano AND to_char(a.avbc_dtrealizada, 'MM') = :mes)) " + where + ") UNION ALL ( " + "SELECT " + "0, " + // 0 "ac.avac_dtacerto as data_realizada, " + // 1 "a.arrc_id as id_arrecadador, " + // 2 "c.clie_nmcliente as descricao_arrecadador, " + // 3 "a.arfm_id as arrecadacao_forma, " + // 4 "af.arfm_dsarrecadacaoforma as descricao_arrecadacao_forma, " + // 5 "b.bnco_id as id_banco, " + // 6 "b.bnco_nmbanco as descricao_banco, " + // 7 "cb.ctbc_id as id_conta, " + // 8 "cb.ctbc_nnconta as numero_conta, " + // 9 "ag.agen_id as id_agencia, " + // 10 "ag.agen_cdagencia as codigo_agencia, " + // 11 "ag.agen_nmagencia as descricao_agencia, " + // 12 "cb.ctbc_nncontacontabil as numero_conta_contabil, " + // 13 "ag.agen_nnfone as numero_fone, " +// 14 "ag.agen_nnfoneramal as numero_ramal, " + // 15 " sysdate , " + // 16 "a.avbc_nnsequencial as sequencial_aviso, " + // 17 "a.avbc_nndocumento as numero_documento, " + // 18 "( CASE WHEN ((ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 1) OR (ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 2)) THEN ac.avac_vlacerto ELSE 0 END ) as credito, " + // 19 "( CASE WHEN ((ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 2) OR (ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 1)) THEN ac.avac_vlacerto ELSE 0 END ) as debito, " + // 20 "a.avbc_amreferenciaarrecadacao as ano_mes_arrecadacao, " +// 21 "10 " + "FROM arrecadacao.aviso_acertos ac " + "INNER JOIN arrecadacao.aviso_bancario a ON (ac.avbc_id = a.avbc_id) " + "LEFT JOIN arrecadacao.arrecadador ar ON (a.arrc_id = ar.arrc_id) " + "LEFT JOIN cadastro.cliente c ON (ar.clie_id = c.clie_id) " + "LEFT JOIN arrecadacao.arrecadacao_forma af ON (a.arfm_id = af.arfm_id) " + "INNER JOIN arrecadacao.conta_bancaria cb ON (a.ctbc_id = cb.ctbc_id) " + "INNER JOIN arrecadacao.agencia ag ON (cb.agen_id = ag.agen_id) " + "INNER JOIN arrecadacao.banco b ON (ag.bnco_id = b.bnco_id) " + "WHERE " + "(ac.avac_amreferenciaarrecadacao = :anoMesReferencia OR (to_char(ac.avac_dtacerto, 'YYYY') = :ano AND to_char(ac.avac_dtacerto, 'MM') = :mes)) " + where + ") ORDER BY 7, 9, 2, 23"; try { SQLQuery q = session.createSQLQuery(consulta); q.addScalar("id_aviso", Hibernate.INTEGER); q.addScalar("data_realizada", Hibernate.DATE); q.addScalar("id_arrecadador", Hibernate.INTEGER); q.addScalar("descricao_arrecadador", Hibernate.STRING); q.addScalar("id_arrecadacao_forma", Hibernate.INTEGER); q.addScalar("descricao_arrecadacao_forma", Hibernate.STRING); q.addScalar("id_banco", Hibernate.INTEGER); q.addScalar("descricao_banco", Hibernate.STRING); q.addScalar("id_conta", Hibernate.INTEGER); q.addScalar("numero_conta", Hibernate.STRING); q.addScalar("id_agencia", Hibernate.INTEGER); q.addScalar("codigo_agencia", Hibernate.STRING); q.addScalar("descricao_agencia", Hibernate.STRING); q.addScalar("numero_conta_contabil", Hibernate.INTEGER); q.addScalar("numero_fone", Hibernate.STRING); q.addScalar("numero_ramal", Hibernate.STRING); q.addScalar("data_lancamento", Hibernate.DATE); q.addScalar("sequencial_aviso", Hibernate.INTEGER); q.addScalar("numero_documento", Hibernate.INTEGER); q.addScalar("credito", Hibernate.BIG_DECIMAL); q.addScalar("debito", Hibernate.BIG_DECIMAL); q.addScalar("ano_mes_arrecadacao", Hibernate.INTEGER); q.setInteger("anoMesReferencia", helper.getMesAno()); q.setInteger("ano", ano); q.setInteger("mes", mes); if (helper.getIdBanco() != null) { q.setInteger("idBanco", helper.getIdBanco()); } if (helper.getIdContaBancaria() != null) { q.setInteger("idContaBancaria", helper.getIdContaBancaria()); } for (Object[] linha : (List<Object[]>) q.list()) { RelatorioAvisoBancarioPorContaCorrenteBean bean = new RelatorioAvisoBancarioPorContaCorrenteBean(); bean.setIdAviso((Integer) linha[0]); bean.setDataRealizada((Date) linha[1]); bean.setIdArrecadador((Integer) linha[2]); bean.setDescricaoArrecadador((String) linha[3]); bean.setIdArrecadacaoForma((Integer) linha[4]); bean.setDescricaoArrecadacaoForma((String) linha[5]); bean.setIdBanco((Integer) linha[6]); bean.setDescricaoBanco((String) linha[7]); bean.setIdConta((Integer) linha[8]); bean.setNumeroConta((String) linha[9]); bean.setIdAgencia((Integer) linha[10]); bean.setCodigoAgencia((String) linha[11]); bean.setDescricaoAgencia((String) linha[12]); bean.setNumeroContaContabil((Integer) linha[13]); bean.setNumeroFone((String) linha[14]); bean.setNumeroRamal((String) linha[15]); bean.setDataLancamento((Date) linha[16]); bean.setSequencialAviso((Integer) linha[17]); bean.setNumeroDocumento((Integer) linha[18]); bean.setCredito((BigDecimal) linha [19]); bean.setDebito((BigDecimal) linha[20]); bean.setAnoMesArrecadacao((Integer) linha[21]); retorno.add(bean); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0829] Gerar Relat�rio Avisos Bancarios Por Conta Corrente * * @author Victor Cisneiros * @date 21/08/2008 */ public List<Object[]> pesquisarPagamentosDosAvisos( PesquisarAvisoBancarioPorContaCorrenteHelper helper, Collection<Integer> idsAvisos) throws ErroRepositorioException { List<Object[]> retorno = new ArrayList<Object[]>(); Session session = HibernateUtil.getSession(); String consulta = "( " + "SELECT " + "a.avbc_id as id_aviso, " + "p.pgmt_dtpagamento as data_pagamento, " + "sum(p.pgmt_vlpagamento) as valor_pagamento " + "FROM arrecadacao.aviso_bancario a " + "INNER JOIN arrecadacao.pagamento p ON (a.avbc_id = p.avbc_id) " + "WHERE " + "a.avbc_id IN (:idsAvisos) " + "GROUP BY " + "a.avbc_id, p.pgmt_dtpagamento " + ") UNION ALL ( " + "SELECT " + "p.avbc_id as id_aviso, " + "p.pghi_dtpagamento as data_pagamento, " + "sum(p.pghi_vlpagamento) as valor_pagamento " + "FROM arrecadacao.pagamento_historico p " + "WHERE " + "p.avbc_id IN (:idsAvisos) " + "GROUP BY " + "p.avbc_id, p.pghi_dtpagamento " + ") ORDER BY 2 "; try { SQLQuery q = session.createSQLQuery(consulta); q.addScalar("id_aviso", Hibernate.INTEGER); q.addScalar("data_pagamento", Hibernate.DATE); q.addScalar("valor_pagamento", Hibernate.BIG_DECIMAL); q.setParameterList("idsAvisos", idsAvisos); retorno = (List<Object[]>) q.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0828] Atualizar Diferen�a Acumulada no M�s * * @author Victor Cisneiros * @date 01/09/2008 */ public List<Object[]> pesquisarDiferencaAcumuladaNoMes(int anoMesArrecadacao, int anoMesArrecadacaoAnterior) throws ErroRepositorioException { List<Object[]> retorno = new ArrayList<Object[]>(); Session session = HibernateUtil.getSession(); String consulta = "SELECT " + "( CASE WHEN arrecadador_aviso IS NOT NULL THEN arrecadador_aviso ELSE arrecadador_acerto END ) as arrecadador, " + "( CASE WHEN arrecadacao_forma_aviso IS NOT NULL THEN arrecadacao_forma_aviso ELSE arrecadacao_forma_acerto END ) as arrecadacao_forma, " + "( " + " ( CASE WHEN diferenca_acumulada_aviso IS NOT NULL THEN diferenca_acumulada_aviso ELSE 0 END ) " + "+ ( CASE WHEN diferenca_acumulada_acerto IS NOT NULL THEN diferenca_acumulada_acerto ELSE 0 END ) " + ") as diferenca_acumulada, " + "( " + "SELECT ( df.dfac_vldiferencaacumulada ) " + "FROM arrecadacao.diferenca_acumulada df " + "WHERE " + "df.arrc_id = ( CASE WHEN arrecadador_aviso IS NOT NULL THEN arrecadador_aviso ELSE arrecadador_acerto END ) " + "AND df.arfm_id = ( CASE WHEN arrecadacao_forma_aviso IS NOT NULL THEN arrecadacao_forma_aviso ELSE arrecadacao_forma_acerto END ) " + "AND df.dfac_amreferenciaarrecadacao = :anoMesArrecadacaoAnterior " + ") as diferenca_acumulada_anterior " + "FROM ( " + "SELECT " + "arrc.arrc_id arrecadador_aviso, " + "arfm.arfm_id as arrecadacao_forma_aviso, " + "( " + "+ sum(a.avbc_vlarrecadacaocalculado) " + "- sum(a.avbc_vlarrecadacaoinformado) " + ") - ( " + "+ sum(a.avbc_vldevolucaocalculado) " + "- sum(a.avbc_vldevolucaoinformado) " + ") as diferenca_acumulada_aviso " + "FROM arrecadacao.arrecadador arrc CROSS JOIN arrecadacao.arrecadacao_forma arfm " + "LEFT JOIN arrecadacao.aviso_bancario a ON ( " + "a.arrc_id = arrc.arrc_id " + "AND a.arfm_id = arfm.arfm_id " + "AND a.avbc_amreferenciaarrecadacao = :anoMesArrecadacao " + ") " + "GROUP BY " + "arrc.arrc_id, arfm.arfm_id " + ") a FULL JOIN ( " + "SELECT " + "arrc.arrc_id as arrecadador_acerto, " + "arfm.arfm_id as arrecadacao_forma_acerto, " + "( " + "+ sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END ) " + "- sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 1 THEN ac.avac_vlacerto ELSE 0 END ) " + ") - ( " + "+ sum( CASE WHEN ac.avac_iccreditodebito = 1 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END ) " + "- sum( CASE WHEN ac.avac_iccreditodebito = 2 AND ac.avac_icarrecadacaodevolucao = 2 THEN ac.avac_vlacerto ELSE 0 END ) " + ") as diferenca_acumulada_acerto " + "FROM arrecadacao.arrecadador arrc CROSS JOIN arrecadacao.arrecadacao_forma arfm " + "LEFT JOIN arrecadacao.aviso_bancario a ON ( " + "a.arrc_id = arrc.arrc_id " + "AND a.arfm_id = arfm.arfm_id " + ") " + "LEFT JOIN arrecadacao.aviso_acertos ac ON (" + "ac.avbc_id = a.avbc_id " + "AND ac.avac_amreferenciaarrecadacao = :anoMesArrecadacao " + ") " + "GROUP BY " + "arrc.arrc_id, arfm.arfm_id " + ") b ON (a.arrecadador_aviso = b.arrecadador_acerto AND a.arrecadacao_forma_aviso = b.arrecadacao_forma_acerto) " + "ORDER BY arrecadador, arrecadacao_forma "; try { SQLQuery q = session.createSQLQuery(consulta); q.addScalar("arrecadador", Hibernate.INTEGER); q.addScalar("arrecadacao_forma", Hibernate.INTEGER); q.addScalar("diferenca_acumulada", Hibernate.BIG_DECIMAL); q.addScalar("diferenca_acumulada_anterior", Hibernate.BIG_DECIMAL); q.setInteger("anoMesArrecadacao", anoMesArrecadacao); q.setInteger("anoMesArrecadacaoAnterior", anoMesArrecadacaoAnterior); retorno = (List<Object[]>) q.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0828] Atualizar Diferen�a Acumulada no M�s * * @author Victor Cisneiros * @date 01/09/2008 */ public void removerDiferencasAcumuladasNoMes(int anoMesArrecadacao) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try { String consulta = "delete DiferencaAcumulada d " + "where d.anoMesReferenciaArrecadacao = :anoMesArrecadacao"; session.createQuery(consulta).setInteger( "anoMesArrecadacao", anoMesArrecadacao) .executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0818] Gerar Historico do Encerramento da Arrecada��o * * Pesquisa os creditos a realizar correspondentes as devolu��es classificadas * * @author Vivianne Sousa * @date 26/08/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection<CreditoARealizar> pesquisarCreditoaRealizarDeDevolucoesClassificadas( Integer anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection<CreditoARealizar> retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; /** * Algumas guias de pagamento e guias de devolu��o foram jogados para hist�rico indevidamente * Alterado clausula where do anoMesReferenciaArrecadacao de <= para < * * @author Wellington Rocha * @date 18/09/2012 * */ try { consulta = "select crar from CreditoARealizar crar " + "inner join crar.localidade loca " + "where crar.id in " + "(select distinct devl.creditoARealizarGeral.id from Devolucao devl " + "where devl.anoMesReferenciaArrecadacao <= :anoMesReferenciaArrecadacao " + "and devl.devolucaoSituacaoAtual.id = " + DevolucaoSituacao.DEVOLUCAO_OUTROS_VALORES + " and devl.creditoARealizarGeral.id is not null and devl.localidade.id = :idLocalidade) " + " and loca.id = :idLocalidade "; // Executa o hql retorno = session.createQuery(consulta).setInteger("idLocalidade", idLocalidade).setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao).list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0744] Gerar Comparativo do Faturamento, Arrecada��o e Expurgo * * @author S�vio Luiz * @data 17/02/2008 * * @param idConta * @return idParcelamento */ public Collection<Pagamento> pesquisarPagamentoPorLocalidade(Integer idLocalidade,Integer anoMesReferencia) throws ErroRepositorioException { Collection<Pagamento> retorno = null; Collection<Object[]> colecaoDadosPagamentos = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT pg.id,"//0 +" pg.valorPagamento,"//1 +" cnt.id, "//2 +" gp.id,"//3 +" pgp.id,"//4 +" pgp.valorDebitoAtualizado,"//5 +" gp.valorDebito,"//6 +" dtgp.id,"//7 +" dac.id,"//8 +" pdac.id,"//9 +" pdac.valorDebitoAtualizado,"//10 +" dac.valorDebito, "//11 +" dtdac.id,"//12 +" pg.anoMesReferenciaPagamento,"//13 +" pg.dataPagamento,"//14 +" pg.imovel.id,"//15 +" ab.arrecadador.id, "//16 +" pgp.valorConta, "//17 +" pdac.valorConta, "//18 +" dac.numeroPrestacaoDebito, "//19 +" dac.numeroPrestacaoCobradas, "//20 +" dac.numeroParcelaBonus "//21 +" FROM Pagamento pg" +" LEFT JOIN pg.contaGeral cntGeral" +" LEFT JOIN cntGeral.conta cnt" +" LEFT JOIN pg.guiaPagamento gp" +" LEFT JOIN gp.parcelamento pgp" +" LEFT JOIN gp.debitoTipo dtgp" +" LEFT JOIN pg.debitoACobrarGeral dacGeral" +" LEFT JOIN dacGeral.debitoACobrar dac" +" LEFT JOIN dac.parcelamento pdac" +" LEFT JOIN dac.debitoTipo dtdac" +" LEFT JOIN pg.pagamentoSituacaoAtual pgst" +" INNER JOIN pg.avisoBancario ab" +" where pg.localidade.id = :idLocalidade" +" and pg.anoMesReferenciaArrecadacao = :anoMesReferencia" +" and pgst.id = :pagamentoClassificado "; colecaoDadosPagamentos = session.createQuery(consulta) .setInteger("idLocalidade",idLocalidade) .setInteger("anoMesReferencia",anoMesReferencia) .setInteger("pagamentoClassificado", PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .list(); if(colecaoDadosPagamentos != null && !colecaoDadosPagamentos.isEmpty()){ retorno = new ArrayList(); for(Object[] dadosPagamento : colecaoDadosPagamentos){ if(dadosPagamento != null){ Pagamento pagamento = new Pagamento(); if(dadosPagamento[0] != null){ pagamento.setId((Integer)dadosPagamento[0]); } if(dadosPagamento[1] != null){ pagamento.setValorPagamento((BigDecimal)dadosPagamento[1]); } if(dadosPagamento[2] != null){ ContaGeral conta = new ContaGeral(); conta.setId((Integer)dadosPagamento[2]); pagamento.setContaGeral(conta); } if(dadosPagamento[3] != null){ GuiaPagamento guia = new GuiaPagamento(); guia.setId((Integer)dadosPagamento[3]); if(dadosPagamento[4] != null){ Parcelamento parcelamento = new Parcelamento(); parcelamento.setId((Integer)dadosPagamento[4]); if(dadosPagamento[5] != null){ parcelamento.setValorDebitoAtualizado((BigDecimal)dadosPagamento[5]); } if(dadosPagamento[17] != null){ parcelamento.setValorConta((BigDecimal)dadosPagamento[17]); } guia.setParcelamento(parcelamento); } if(dadosPagamento[6] != null){ guia.setValorDebito((BigDecimal)dadosPagamento[6]); } if(dadosPagamento[7] != null){ DebitoTipo debitoTipo = new DebitoTipo(); debitoTipo.setId((Integer)dadosPagamento[7]); guia.setDebitoTipo(debitoTipo); } pagamento.setGuiaPagamento(guia); } if(dadosPagamento[8] != null){ DebitoACobrar debitoACobrar = new DebitoACobrar(); debitoACobrar.setId((Integer)dadosPagamento[8]); if(dadosPagamento[9] != null){ Parcelamento parcelamento = new Parcelamento(); parcelamento.setId((Integer)dadosPagamento[9]); if(dadosPagamento[10] != null){ parcelamento.setValorDebitoAtualizado((BigDecimal)dadosPagamento[10]); } if(dadosPagamento[18] != null){ parcelamento.setValorConta((BigDecimal)dadosPagamento[18]); } debitoACobrar.setParcelamento(parcelamento); } if(dadosPagamento[11] != null){ debitoACobrar.setValorDebito((BigDecimal)dadosPagamento[11]); } if(dadosPagamento[19] != null){ debitoACobrar.setNumeroPrestacaoDebito((Short)dadosPagamento[19]); } if(dadosPagamento[20] != null){ debitoACobrar.setNumeroPrestacaoCobradas((Short)dadosPagamento[20]); } if(dadosPagamento[21] != null){ debitoACobrar.setNumeroParcelaBonus((Short)dadosPagamento[21]); } if(dadosPagamento[12] != null){ DebitoTipo debitoTipo = new DebitoTipo(); debitoTipo.setId((Integer)dadosPagamento[12]); debitoACobrar.setDebitoTipo(debitoTipo); } DebitoACobrarGeral debitoACobrarGeral = new DebitoACobrarGeral(); debitoACobrarGeral.setId(debitoACobrar.getId()); debitoACobrarGeral.setDebitoACobrar(debitoACobrar); pagamento.setDebitoACobrarGeral(debitoACobrarGeral); } if(dadosPagamento[13] != null){ pagamento.setAnoMesReferenciaPagamento((Integer)dadosPagamento[13]); } if(dadosPagamento[14] != null){ pagamento.setDataPagamento((Date)dadosPagamento[14]); } if(dadosPagamento[15] != null){ Imovel imovel = new Imovel(); imovel.setId((Integer)dadosPagamento[15]); pagamento.setImovel(imovel); } if(dadosPagamento[16] != null){ Arrecadador arrecadador = new Arrecadador(); arrecadador.setId((Integer)dadosPagamento[16]); AvisoBancario avisoBancario = new AvisoBancario(); avisoBancario.setArrecadador(arrecadador); pagamento.setAvisoBancario(avisoBancario); } retorno.add(pagamento); } } } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * * [UC0818] - Gerar Hist�rico do Encerramento da Arrecada��o * * Fluxo Principal * * [FS0001] - Verifica existencia resumo arrecada��o * * @author bruno * @date 24/10/2008 * * @param anoMesReferencia * @return */ public Integer verificarExistenciaResumoArrecadacaoParaAnoMes( Integer anoMesReferencia ) throws ErroRepositorioException{ Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select count(*) from ResumoArrecadacao " + "where anoMesReferencia = :anoMesReferencia "; retorno = (Integer) session.createQuery(consulta).setInteger( "anoMesReferencia", anoMesReferencia).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Atualiza o valor excedente, a situa��o anterior para NULO e a situa��o atual dos pagamentos informados para o * tipo de situa��o informada. * * @author Raphael Rossiter * @date 27/11/2008 * * @param colecaoPagamento * @param pagamentoSituacao * @throws ErroRepositorioException */ public void atualizarSituacaoAnteriorAtualEValorExcedentePagamento( Collection<Pagamento> colecaoPagamento, Integer pagamentoSituacao) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Iterator<Pagamento> iteratorPagamentos = colecaoPagamento.iterator(); String atualizarValorExcedente; Pagamento pagamento = null; try { int i = 1; while (iteratorPagamentos.hasNext()) { pagamento = iteratorPagamentos.next(); //Conta atualizarValorExcedente = "UPDATE Pagamento pgmt " + "SET pgmt.pagamentoSituacaoAtual.id = :pagamentoSituacao, " + "pgmt.valorExcedente = :valorExcedente, " + "pgmt.ultimaAlteracao = :dataAlteracao, " + "pgmt.contaGeral.id = :idConta, " + "pgmt.pagamentoSituacaoAnterior.id = NULL " + "WHERE pgmt.id = :idPagamento "; session.createQuery(atualizarValorExcedente) .setBigDecimal("valorExcedente", pagamento.getValorExcedente()) .setTimestamp("dataAlteracao", new Date()) .setInteger("pagamentoSituacao", pagamentoSituacao) .setInteger("idPagamento", pagamento.getId()) .setInteger("idConta", pagamento.getContaGeral().getId()) .executeUpdate(); if (i % 50 == 0) { session.flush(); session.clear(); } i++; } session.flush(); session.clear(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO), com o tipo do documento correspondente a * guia de pagamento e o campo GPAG_ID informado e * o ano/m�s de refer�ncia cont�bil da guia de pagamento seja * maior ou igual ao ano/m�s de refer�ncia do faturamento * * @author Vivianne Sousa * @data 25/11/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @param anoMesReferenciaFaturamento * @return Collection<Object[]> */ public Collection<Object[]> pesquisarPagamentosPorGuiaPagamentoComGuiaInformadaRefContabilMaiorIgualRefFaturamento( Integer anoMesReferencia, Integer idLocalidade, Integer referenciafaturamento) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt.id, gpag.id, pgmt.valorPagamento " + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.documentoTipo as dotp " + "LEFT JOIN pgmt.localidade as loca " + "LEFT JOIN pgmt.guiaPagamento as gpag " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia AND " + " dotp.id in (:guiaPagamento, :entradaParcelamento ) " + "AND pgmt.guiaPagamento IS NOT NULL AND loca.id = :idLocalidade " + "AND gpag.anoMesReferenciaContabil > :referenciafaturamento " + "AND pgmt.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao " + "ORDER BY gpag.id, pgmt.dataPagamento "; retorno = session.createQuery(consulta) .setInteger("anoMesReferencia", anoMesReferencia) .setInteger("guiaPagamento", DocumentoTipo.GUIA_PAGAMENTO) .setInteger("idLocalidade", idLocalidade) .setInteger("entradaParcelamento", DocumentoTipo.ENTRADA_DE_PARCELAMENTO) .setInteger("referenciafaturamento", referenciafaturamento) .setShort("indicadorClassificacao", ConstantesSistema.NAO) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO), com o tipo do documento correspondente a * guia de pagamento e o campo GPAG_ID informado e * o ano/m�s de refer�ncia cont�bil da guia de pagamento seja * menor ao ano/m�s de refer�ncia do faturamento * * @author Vivianne Sousa * @data 25/11/2008 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @param anoMesReferenciaFaturamento * @return Collection<Object[]> */ public Collection<Object[]> pesquisarPagamentosPorGuiaPagamentoComGuiaInformadaRefContabilMenorRefFaturamento( Integer anoMesReferencia, Integer idLocalidade, Integer referenciafaturamento) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt.id, dotp.id, loca.id, imov.id, pgst.id, gpag.id, pgmt.valorPagamento, pgmt.dataPagamento, pgmt.anoMesReferenciaPagamento, gpag.valorDebito " + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.documentoTipo as dotp " + "LEFT JOIN pgmt.localidade as loca " + "LEFT JOIN pgmt.imovel as imov " + "LEFT JOIN pgmt.pagamentoSituacaoAtual as pgst " + "LEFT JOIN pgmt.guiaPagamento as gpag " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia AND " + " dotp.id in (:guiaPagamento, :entradaParcelamento ) " + "AND pgmt.guiaPagamento IS NOT NULL " + "AND loca.id = :idLocalidade " + "AND gpag.anoMesReferenciaContabil <= :referenciafaturamento " + "AND pgmt.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao " + "ORDER BY gpag.id, pgmt.dataPagamento "; retorno = session.createQuery(consulta) .setInteger("anoMesReferencia", anoMesReferencia) .setInteger("guiaPagamento", DocumentoTipo.GUIA_PAGAMENTO) .setInteger("idLocalidade", idLocalidade) .setInteger("entradaParcelamento", DocumentoTipo.ENTRADA_DE_PARCELAMENTO) .setInteger("referenciafaturamento", referenciafaturamento) .setShort("indicadorClassificacao", ConstantesSistema.NAO) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO), com o tipo do documento correspondente a * debito a cobrar e o campo DBAC_ID informado e * o ano/m�s de refer�ncia cont�bil do d�bito a cobrar seja * menor q o ano/m�s de refer�ncia do faturamento * * @author Vivianne Sousa * @data 25/11/2008 * * @param anoMesReferenciaFaturamento * @param idLocalidade * @param referenciafaturamento * @return Collection<Object[]> */ public Collection<Object[]> pesquisarPagamentosPorDebitoACobrarComDebitoInformadoRefContabilMenorRefFaturamento( Integer anoMesReferencia, Integer idLocalidade, Integer referenciafaturamento) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt, "//0 + "dotp.id, " //1 + "loca.id, " //2 + "imov.id, " //3 + "pgst.id, " //4 + "dbac.id," //5 + "dbac.valorDebito," //6 + "dbac.numeroPrestacaoDebito," //7 + "dbac.numeroPrestacaoCobradas," //8 + "dbac.numeroParcelaBonus " //9 + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.documentoTipo as dotp " + "LEFT JOIN pgmt.localidade as loca " + "LEFT JOIN pgmt.imovel as imov " + "LEFT JOIN pgmt.pagamentoSituacaoAtual as pgst " + "INNER JOIN pgmt.debitoACobrarGeral as dbacGeral " + "INNER JOIN dbacGeral.debitoACobrar as dbac " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia " + "AND dotp.id = :debitoACobrar " + "AND loca.id = :idLocalidade " + "AND dbac.anoMesReferenciaContabil < :referenciafaturamento " + "AND pgmt.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao " + "ORDER BY dbac.id, pgmt.dataPagamento "; retorno = session.createQuery(consulta) .setInteger("anoMesReferencia", anoMesReferencia) .setInteger("debitoACobrar", DocumentoTipo.DEBITO_A_COBRAR) .setInteger("idLocalidade", idLocalidade) .setInteger("referenciafaturamento", referenciafaturamento) .setShort("indicadorClassificacao", ConstantesSistema.NAO) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO), com o tipo do documento correspondente a * debito a cobrar e o campo DBAC_ID informado e * o ano/m�s de refer�ncia cont�bil do d�bito a cobrar seja * maior ou igual ao ano/m�s de refer�ncia do faturamento * * @author Vivianne Sousa * @data 25/11/2008 * * @param anoMesReferenciaFaturamento * @param idLocalidade * @param referenciafaturamento * @return Collection<Object[]> */ public Collection<Object[]> pesquisarPagamentosPorDebitoACobrarComDebitoInformadoRefContabilMaiorIgualRefFaturamento( Integer anoMesReferencia, Integer idLocalidade, Integer referenciafaturamento) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt.id, "//0 + "dbac.id," //1 + "pgmt.valorPagamento " //2 + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.documentoTipo as dotp " + "LEFT JOIN pgmt.localidade as loca " + "LEFT JOIN pgmt.imovel as imov " + "LEFT JOIN pgmt.pagamentoSituacaoAtual as pgst " + "INNER JOIN pgmt.debitoACobrarGeral as dbacGeral " + "INNER JOIN dbacGeral.debitoACobrar as dbac " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia " + "AND dotp.id = :debitoACobrar " + "AND loca.id = :idLocalidade " + "AND dbac.anoMesReferenciaContabil >= :referenciafaturamento " + "AND pgmt.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao " + "ORDER BY dbac.id, pgmt.dataPagamento "; retorno = session.createQuery(consulta) .setInteger("anoMesReferencia", anoMesReferencia) .setInteger("debitoACobrar", DocumentoTipo.DEBITO_A_COBRAR) .setInteger("idLocalidade", idLocalidade) .setInteger("referenciafaturamento", referenciafaturamento) .setShort("indicadorClassificacao", ConstantesSistema.NAO) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0300] Classificar Pagamentos e Devolu��es * * O sistema seleciona os pagamentos com ano/m�s de refer�ncia da * arrecada��o igual ou menor que o ano/m�s de refer�ncia da arrecada��o * corrente (seleciona a partir da tabela PAGAMENTO para * PGMT_AMREFERENCIAARRECADACAO igual ou menor ao * PARM_AMREFERENCIAARRECADACAO), com o tipo do documento correspondente a * debito a cobrar e o campo DBAC_ID informado e * o ano/m�s de refer�ncia cont�bil do d�bito a cobrar seja * maior ou igual ao ano/m�s de refer�ncia do faturamento * * @author Bruno Barros * @data 16/06/2009 * * @param anoMesReferenciaFaturamento * @param idLocalidade * @param referenciafaturamento * @return Collection<Object[]> */ public Collection<Object[]> pesquisarPagamentosPorDebitoACobrarHistoricoComDebitoInformadoRefContabil( Integer anoMesReferencia, Integer idLocalidade) throws ErroRepositorioException { Collection<Object[]> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt.id, "//0 + "dbach.id," //1 + "pgmt.valorPagamento, " //2 + "pgmt.pagamentoSituacaoAtual.id " // 3 + "FROM Pagamento as pgmt " + "LEFT JOIN pgmt.documentoTipo as dotp " + "LEFT JOIN pgmt.localidade as loca " + "LEFT JOIN pgmt.imovel as imov " + "LEFT JOIN pgmt.pagamentoSituacaoAtual as pgst " + "INNER JOIN pgmt.debitoACobrarGeral as dbacGeral " + "INNER JOIN dbacGeral.debitoACobrarHistorico as dbach " + "WHERE pgmt.anoMesReferenciaArrecadacao <= :anoMesReferencia " + "AND dotp.id = :debitoACobrar " + "AND loca.id = :idLocalidade " + "AND pgmt.indicadorClassificadoRecuperacaoCredito = :indicadorClassificacao " + "ORDER BY dbach.id, pgmt.dataPagamento "; retorno = session.createQuery(consulta) .setInteger("anoMesReferencia", anoMesReferencia) .setInteger("debitoACobrar", DocumentoTipo.DEBITO_A_COBRAR) .setInteger("idLocalidade", idLocalidade) .setShort("indicadorClassificacao", ConstantesSistema.NAO) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa os bancos q tem imoveis cadastrados em debito automatico * @return * @throws ErroRepositorioException */ public Collection pesquisarBancoDebitoAutomatico() throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); try{ String select = "select distinct(banco.id) from DebitoAutomatico debito " + " inner join debito.agencia agencia " + " inner join agencia.banco banco"; retorno = session.createQuery(select).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0146] Manter Conta * * FS0028 - Verificar par�metro consulta e d�bito autom�tico * @return * @throws ErroRepositorioException */ public Integer countImoveisBancoDebitoAutomatico(String[] bancos, Integer anoMesInicial,Integer anoMesFinal, Date dataVencimentoInicial, Date dataVencimentoFinal, String indicadorContaPaga, Integer somenteDebitoAutomatico) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); Map parameters = new HashMap(); Query query = null; try{ String select = "select count(conta.imovel.id) " + " from DebitoAutomaticoMovimento dam " + " inner join dam.debitoAutomatico da " + " inner join dam.contaGeral.conta conta " + " inner join da.agencia ag" + " inner join conta.debitoCreditoSituacaoAtual dcst " + " left join conta.debitoCreditoSituacaoAnterior dcsan " + " inner join conta.imovel imov " + " inner join conta c " + " where ag.banco.id in (:idBanco) " + " and dcst.id in(:normal, :retificada) " + " and conta.referencia between :anoMesInicial and :anoMesFinal " + " and da.dataExclusao is null " + " and dam.numeroSequenciaArquivoEnviado is null"; if (somenteDebitoAutomatico != null && somenteDebitoAutomatico == 1) { select += " and c.indicadorDebitoConta = 1 "; } if(dataVencimentoInicial != null){ select += " and conta.dataVencimentoConta between :vencimentoInicial and :vencimentoFinal "; parameters.put("vencimentoInicial", dataVencimentoInicial); parameters.put("vencimentoFinal", dataVencimentoFinal); } if(!indicadorContaPaga.equals("3")){ if(indicadorContaPaga.equals("1")){ select += " and exists "; }else{ select += " and not exists "; } select += " (select conta.id " + "from Pagamento pgmt " + "inner join pgmt.contaGeral cntaGeral " + "inner join cntaGeral.conta cnta " + "where cnta.id = conta.id) "; } query = session.createQuery(select); Set set = parameters.keySet(); Iterator iterMap = set.iterator(); while (iterMap.hasNext()) { String key = (String) iterMap.next(); if (parameters.get(key) instanceof Date) { Date data = (Date) parameters.get(key); query.setDate(key, data); } } retorno = (Integer)query .setParameterList("idBanco", bancos) .setInteger("anoMesInicial", anoMesInicial) .setInteger("anoMesFinal", anoMesFinal) .setInteger("normal", DebitoCreditoSituacao.NORMAL) .setInteger("retificada", DebitoCreditoSituacao.RETIFICADA) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0146] Manter Conta * * FS0028 - Verificar par�metro consulta e d�bito autom�tico * @return * @throws ErroRepositorioException */ public Collection pesquisarImoveisBancoDebitoAutomatico(String[] bancos) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); try{ String select = "select distinct(da.imovel.id) " + " from DebitoAutomatico da " + " inner join da.agencia ag" + " where ag.banco.id in (:idBanco) " + " and da.dataExclusao is null"; retorno = session.createQuery(select) .setParameterList("idBanco", bancos) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0146] Manter Conta * * FS0028 - Verificar par�metro consulta e d�bito autom�tico * @return * @throws ErroRepositorioException */ public Collection selecionarImoveisBancoDebitoAutomatico(String[] bancos, Integer anoMesInicial,Integer anoMesFinal, Date dataVencimentoInicial, Date dataVencimentoFinal, String indicadorContaPaga) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); Map parameters = new HashMap(); Query query = null; try{ String select = "select conta.imovel.id " + " from DebitoAutomaticoMovimento dam " + " inner join dam.debitoAutomatico da " + " inner join dam.contaGeral.conta conta " + " inner join da.agencia ag" + " where ag.banco.id in (:idBanco) " + " and conta.referencia between :anoMesInicial and :anoMesFinal " + " and da.dataExclusao is null " + " and dam.numeroSequenciaArquivoEnviado is null"; if(dataVencimentoInicial != null){ select += " and conta.dataVencimentoConta between :vencimentoInicial and :vencimentoFinal "; parameters.put("vencimentoInicial", dataVencimentoInicial); parameters.put("vencimentoFinal", dataVencimentoFinal); } if(!indicadorContaPaga.equals("3")){ if(indicadorContaPaga.equals("1")){ select += " and exists "; }else{ select += " and not exists "; } select += " (select conta.id " + "from Pagamento pgmt " + "inner join pgmt.contaGeral cntaGeral " + "inner join cntaGeral.conta cnta " + "where cnta.id = conta.id) "; } query = session.createQuery(select); Set set = parameters.keySet(); Iterator iterMap = set.iterator(); while (iterMap.hasNext()) { String key = (String) iterMap.next(); if (parameters.get(key) instanceof Date) { Date data = (Date) parameters.get(key); query.setDate(key, data); } } retorno = query .setParameterList("idBanco", bancos) .setInteger("anoMesInicial", anoMesInicial) .setInteger("anoMesFinal", anoMesFinal) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Consultar os dodos cliente usu�rio do Imovel * * dados[0] = NomeArrecadador * * @author Arthur Carvalho * @date 12/03/2009 * * @param idImovel * @return Collection * @throws ControladorException */ public Collection<Object[]> consultarNomeArrecadadorNomeAgencia( String idArrecadadorMovimento) throws ErroRepositorioException { Collection<Object[]> retorno = null; String consulta = null; Session session = HibernateUtil.getSession(); try { consulta = "SELECT arrecadadorMovimento.nomeBanco "// 0 + "from ArrecadadorMovimento arrecadadorMovimento " + "where arrecadadorMovimento.id = :idArrecadadorMovimento "; //"and arrecadadorMovimento.indicadorExclusao != 1 "; retorno = session.createQuery(consulta).setInteger("idArrecadadorMovimento", Integer.parseInt( idArrecadadorMovimento) ).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0259] - Processar Pagamento com C�digo de Barras * * [SB0014] - Processar Pagamento Legado COSANPA - CONTA * * @author Raphael Rossiter * @date 01/06/2009 * * @param numeroFatura * @return Object[] * @throws ErroRepositorioException */ public Object[] pesquisarExistenciaContaPorNumeroFatura(String numeroFatura) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select ct.id, ct.referencia, imov.id, loca.id from Conta ct " + "inner join ct.imovel imov " + "inner join ct.debitoCreditoSituacaoAtual " + "inner join ct.localidade loca " + "where ct.numeroFatura = :numeroFatura and " + "ct.debitoCreditoSituacaoAtual.id IN(:normal, :incluida, :retificada)"; retorno = (Object[]) session.createQuery(consulta) .setString("numeroFatura", numeroFatura) .setInteger("normal",DebitoCreditoSituacao.NORMAL) .setInteger("incluida",DebitoCreditoSituacao.INCLUIDA) .setInteger("retificada",DebitoCreditoSituacao.RETIFICADA).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0259] - Processar Pagamento com C�digo de Barras * * [SB0014] - Processar Pagamento Legado COSANPA - DOCUMENTO DE COBRAN�A * * @author Raphael Rossiter * @date 01/06/2009 * * @param numeroDocumentoFatura * @return Object[] * @throws ErroRepositorioException */ public Object[] pesquisarParmsCobrancaDocumentoPorNumeroDocumentoFatura(String numeroDocumentoFatura) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Object[] retorno = null; String consulta = null; try { consulta = "SELECT cd.valorAcrescimos, cd.valorDesconto, cd.emissao, cd.id, " + "cd.valorTaxa,loca.id, documentoTipo.id, imov.id, locaImovel.id " + "FROM CobrancaDocumento cd " + "INNER JOIN cd.documentoTipo documentoTipo " + "INNER JOIN cd.imovel imov " + "INNER JOIN imov.localidade locaImovel " + "LEFT JOIN cd.localidade loca " + "WHERE cd.numeroDocumentoFatura = :numeroDocumentoFatura "; retorno = (Object[]) session.createQuery(consulta) .setString("numeroDocumentoFatura", numeroDocumentoFatura) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0259] - Processar Pagamento com C�digo de Barras * * [SB0014] - Processar Pagamento Legado COSANPA - DOCUMENTO DE COBRAN�A * * @author Raphael Rossiter * @date 02/06/2009 * * @param idCobrancaDocumento * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarCobrancaDocumentoItem(Integer idCobrancaDocumento) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Collection retorno = null; String consulta = null; try { consulta = "SELECT conta.id, " + // 0 "guiaPagamento.id, " + // 1 "debitoACobrar.id, " + // 2 "cdi.valorItemCobrado, " + // 3 "conta.referencia," + // 4 "contaHistorico.anoMesReferenciaConta, " + // 5 "guiaPagamento.debitoTipo.id, " + // 6 "guiaPagamentoHistorico.debitoTipo.id, " + // 7 "debitoACobrar.debitoTipo.id," + // 8 "debitoACobrarHistorico.debitoTipo.id, " + // 9 "contaHistorico.id, " + // 10 "guiaPagamentoHistorico.id, " + // 11 "debitoACobrarHistorico.id, " + // 12 "cage.id, " + // 13 "loca.id, " + // 14 "imov.id, " // 15 + "debitoACobrar.numeroPrestacaoDebito, " // 16 + "debitoACobrar.numeroPrestacaoCobradas " // 17 + "FROM CobrancaDocumentoItem cdi " + "INNER JOIN cdi.cobrancaDocumento cd " + "LEFT JOIN cd.imovel imovel " + "LEFT JOIN cd.documentoTipo documentoTipo " + "LEFT JOIN cdi.contaGeral.conta conta " + "LEFT JOIN cdi.contaGeral.contaHistorico contaHistorico " + "LEFT JOIN cdi.guiaPagamentoGeral.guiaPagamento guiaPagamento " + "LEFT JOIN cdi.guiaPagamentoGeral.guiaPagamentoHistorico guiaPagamentoHistorico " + "LEFT JOIN cdi.debitoACobrarGeral.debitoACobrar debitoACobrar " + "LEFT JOIN cdi.debitoACobrarGeral.debitoACobrarHistorico debitoACobrarHistorico " + "LEFT JOIN cdi.creditoARealizarGeral cage " + "LEFT JOIN cd.localidade loca " + "LEFT JOIN cd.imovel imov " + "WHERE cd.id = :idCobrancaDocumento "; retorno = session.createQuery(consulta) .setInteger("idCobrancaDocumento", idCobrancaDocumento).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] Encerrar Arrecada��o do M�s * * @author Vivianne Sousa * @date 01/06/2009 * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection pesquisarPagamentosMesEMesesAnterioresCampanhaSolidariedadeCrianca( Integer anoMesReferenciaArrecadacao, Integer idLocalidade, Integer idRD) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "pgmt.pgmt_vlpagamento as col_0, " + "pgmt.imov_id as col_1 " + "from " + "arrecadacao.pagamento pgmt " + "inner join " + "cobranca.cobranca_documento cbdo " + "on pgmt.cbdo_id = cbdo.cbdo_id " + "where " + "pgmt.loca_id= :idLocalidade " + "and pgmt.pgmt_amreferenciaarrecadacao<= :anoMesReferenciaArrecadacao " + "and pgmt.dotp_idagregador = :extratoDebito " + "and cbdo.rdir_id = :campanhaSolidariedadeCrianca "; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.INTEGER) .setInteger("idLocalidade",idLocalidade) .setInteger("anoMesReferenciaArrecadacao",anoMesReferenciaArrecadacao) .setInteger("extratoDebito" ,DocumentoTipo.EXTRATO_DE_DEBITO) .setInteger("campanhaSolidariedadeCrianca", idRD) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Sequencial do tipo lan�amento igual a 2450 * [UC0276] - Encerrar Arrecada��o do M�s * Pesquisa as devolu��es do tipo descontos por pagamento a vista da campanha de solidariedade a crian�a * * @author Vivianne Sousa * @date 01/06/2009 * * @param anoMesReferenciaArrecadacao * @return * @throws ErroRepositorioException */ public Collection pesquisarDevolucoesDescontosPagamentoAVistaCampanhaCrianca( Integer anoMesReferenciaArrecadacao, Integer idLocalidade, Integer idRDComPercentualDoacao) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa Collection retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(devl.devl_vldevolucao) as col_0, " + "devl.imov_id as col_1 " + "from " + "arrecadacao.devolucao devl " + "inner join " + "cobranca.cobranca_documento cbdo " + "on devl.cbdo_id = cbdo.cbdo_id " + "where " + "devl.devl_amreferenciaarrecadacao= :anoMesReferenciaArrecadacao " + "and devl.loca_id= :idLocalidade " + " and devl.dotp_idagregador = :extratoDebito " + " and devl.crar_id is null " + " and cbdo.rdir_id = :idRDComPercentualDoacao " + "group by devl.imov_id "; retorno = session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.INTEGER) .setInteger("idLocalidade",idLocalidade) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("extratoDebito" ,DocumentoTipo.EXTRATO_DE_DEBITO) .setInteger("idRDComPercentualDoacao", idRDComPercentualDoacao) .list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0259] - Processar Pagamento com C�digo de Barras * * [SB0014] - Processar Pagamento Legado COSANPA - GUIA DE PAGAMENTO * * @author Raphael Rossiter * @date 29/06/2009 * * @param numeroFatura * @return Object[] * @throws ErroRepositorioException */ public Object[] pesquisarExistenciaGuiaPagamentoPorNumeroGuiaFatura(String numeroGuiaFatura) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select guia.id, imov.id, loca.id, dbtp.id from GuiaPagamento guia " + "inner join guia.imovel imov " + "inner join guia.debitoCreditoSituacaoAtual " + "inner join guia.localidade loca " + "inner join guia.debitoTipo dbtp " + "where guia.numeroGuiaFatura = :numeroGuiaFatura and " + "guia.debitoCreditoSituacaoAtual.id IN(:normal, :incluida, :retificada)"; retorno = (Object[]) session.createQuery(consulta) .setString("numeroGuiaFatura", numeroGuiaFatura) .setInteger("normal",DebitoCreditoSituacao.NORMAL) .setInteger("incluida",DebitoCreditoSituacao.INCLUIDA) .setInteger("retificada",DebitoCreditoSituacao.RETIFICADA).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0264] - Distribuir Dados do C�digo de Barras * * [SB0008] - Distribuir Pagamento Legado COSANPA * * @author Raphael Rossiter * @created 27/07/2009 * * @param numeroFatura * @return Object[] * @throws ErroRepositorioException */ public Integer pesquisarFaturaPorNumeroFatura(String numeroFatura) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Integer retorno = null; String consulta = null; try { consulta = "SELECT fatu.id FROM Fatura fatu " + "INNER JOIN FETCH fatu.cliente clie " + "WHERE fatu.numeroFatura = :numeroFatura "; retorno = (Integer) session.createQuery(consulta).setString("numeroFatura", numeroFatura).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0259] - Processar Pagamento com C�digo de Barras * * [SB0016] - Processar Pagamento Antecipado de Conta * * @author Raphael Rossiter * @date 13/10/2009 * * @param idGuiaPagamento * @return Conta * @throws ErroRepositorioException */ public Conta pesquisarContaParaPagamentoParcial(Integer idGuiaPagamento) throws ErroRepositorioException { Conta retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select cntaGeral from GuiaPagamentoItem gpai " + "inner join gpai.guiaPagamentoGeral gpagGeral " + "inner join gpai.contaGeral cntaGeral " + "where gpagGeral.id = :idGuiaPagamento "; ContaGeral contaGeral = (ContaGeral) session.createQuery(consulta).setInteger( "idGuiaPagamento", idGuiaPagamento).setMaxResults(1) .uniqueResult(); if (contaGeral != null){ consulta = "select cnta from Conta cnta " + "where cnta.id = :idContaGeral "; retorno = (Conta) session.createQuery(consulta).setInteger( "idContaGeral", contaGeral.getId().intValue()).setMaxResults(1) .uniqueResult(); } } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0264] - Distribuir Dados do C�digo de Barras * * [SB0008] - Distribuir Pagamento Legado COSANPA * * @author Raphael Rossiter * @created 27/07/2009 * * @param numeroFatura * @return Object[] * @throws ErroRepositorioException */ public Fatura pesquisarFaturaPorNumeroFaturaObjetpCompleto(String numeroFatura) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Fatura retorno = null; String consulta = null; try { consulta = "SELECT fatu FROM Fatura fatu " + "INNER JOIN FETCH fatu.cliente clie " + "WHERE fatu.numeroFatura = :numeroFatura "; retorno = (Fatura) session.createQuery(consulta).setString("numeroFatura", numeroFatura).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0744] Gerar Comparativo do Faturamento, Arrecada��o e Expurgo * * @author R�mulo Aur�lio * @data 26/10/2008 * Pesquisa Quantidadede contas faturas para localidade/ refer�ncia */ public Object[] pesquisarQuantidadeContasFaturadas(Integer idLocalidade, Integer anoMesReferencia) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = " select " + "temp.loca_id as localidade, " + "sum(qtde) as quantidade " + "from " + "(select " + "ct.loca_id, " + "count(*) as qtde " + "from faturamento.conta ct " + "inner join cadastro.localidade lc on lc.loca_id = ct.loca_id " + "where cnta_amreferenciaconta = :anoMesReferencia and lc.loca_id = :idLocalidade " + "and dcst_idatual in (0, 1, 2, 3) " + "group by temp.loca_id " + "union " + "select " + "ch.loca_id as localidade, " + "count(*)as qtde " + "from faturamento.conta_historico ch " + "inner join cadastro.localidade lc on lc.loca_id = ch.loca_id " + "where cnhi_amreferenciaconta = :anoMesReferencia and lc.loca_id = :idLocalidade " + "and dcst_idatual in (0, 1, 2, 3) " + "group by ch.loca_id ) temp " + "group by ch.loca_id"; retorno = (Object[])session.createSQLQuery(consulta).addScalar("quantidade", Hibernate.INTEGER).addScalar("localidade", Hibernate.INTEGER).setInteger("idLocalidade", idLocalidade) .setInteger("anoMesReferencia", anoMesReferencia).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0744] Gerar Comparativo do Faturamento, Arrecada��o e Expurgo * * @author R�mulo Aur�lio * @data 26/10/2008 * Quantidade/valor de documentos pagoa para unidade de neg�cio / refer�ncia */ public Object[] pesquisarQuantidadeDocumentosPagos(Integer idLocalidade, Integer anoMesReferencia) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = " select " + "ph.loca_id localidade, " + "count(*) as quantidade " + "from arrecadacao.pagamento_historico ph " + "inner join cadastro.localidade lc on lc.loca_id = ph.loca_id " + "where pghi_amreferenciaarrecadacao = :anoMesReferencia and lc.loca_id = :idLocalidade " + "group by ph.loca_id "; retorno = (Object[]) session.createSQLQuery(consulta) .addScalar("quantidade",Hibernate.INTEGER) .addScalar("localidade",Hibernate.INTEGER) .setInteger("idLocalidade", idLocalidade) .setInteger("anoMesReferencia", anoMesReferencia) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do Imovel pesquisarPagamentoImovelParaPaginacao * * @author Arthur Carvalho * @date 16/12/09 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Integer pesquisarPagamentoCount(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { int retorno = 0; Object pagamentoImovelCount; String hql = ""; Session session = HibernateUtil.getSession(); try { // 1. O sistema seleciona os pagamentos de conta do cliente // informado (a partir da tabela // PAGAMENTO com CNTA_ID = CNTA_ID da tabela CLIENTE_CONTA com // CLIE_ID = Id do cliente informado // e CRTP_ID correspondente a um dos Tipos de Rela��o do Cliente com // o Im�vel, caso selecionados // e demais par�metros de sele��o informados) String condicionais = this.criarCondicionaisPagamento(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = " select count(pagamento.id) " + " from gcom.arrecadacao.pagamento.Pagamento as pagamento " + condicionais + " "; pagamentoImovelCount = session.createQuery(hql).setMaxResults(1) .uniqueResult(); if (pagamentoImovelCount != null) { retorno += (Integer) pagamentoImovelCount; } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] Encerrar Arrecada��o do M�s * * Pesquisar o pagamento * * @author Ivan Sergio * @date 26/03/2010 * * @param idPagamento * @return * @throws ErroRepositorioException */ public Pagamento pesquisarPagamentoParaEncerrarArrecadacao(Integer idPagamento) throws ErroRepositorioException { Pagamento retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select pgmt " + "from Pagamento pgmt " + "inner join fetch pgmt.avisoBancario avbc " + "inner join fetch pgmt.documentoTipo as dctp " + "inner join fetch pgmt.localidade as loca " + "left join fetch pgmt.arrecadacaoForma as arfr " + "left join fetch pgmt.arrecadadorMovimentoItem as amvi " + "left join fetch pgmt.cliente as clie " + "left join fetch pgmt.contaGeral as cntg " + "left join fetch pgmt.debitoACobrarGeral as dbag " + "left join fetch pgmt.debitoTipo as dbtp " + "left join fetch pgmt.guiaPagamento as gupg " + "left join fetch pgmt.imovel as imov " + "left join fetch pgmt.pagamentoSituacaoAnterior as pgan " + "left join fetch pgmt.pagamentoSituacaoAtual as pgat " + "left join fetch pgmt.cobrancaDocumento as cbdo " + "left join fetch pgmt.documentoTipoAgregador as dcta " + "left join fetch pgmt.fatura as fatu " + "where pgmt.id = :idPagamento "; retorno = (Pagamento) session.createQuery(consulta).setInteger( "idPagamento", idPagamento).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa Guia pelo Id * * @author Hugo Amorim * @date 11/01/2010 * * @param idGuia * @return idGuia * @exception ErroRepositorioException * */ public Integer pesquisarExistenciaGuiaPagamento(Integer idGuia) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select gp.id " + "from GuiaPagamento gp " + "where gp.id = :idGuia " + "and gp.debitoCreditoSituacaoAtual.id IN(:normal, :incluida, :retificada) " + "order by gp.dataVencimento"; retorno = (Integer) session.createQuery(consulta) .setInteger("idGuia", idGuia) .setInteger("normal",DebitoCreditoSituacao.NORMAL) .setInteger("incluida",DebitoCreditoSituacao.INCLUIDA) .setInteger("retificada",DebitoCreditoSituacao.RETIFICADA) .uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * @author Raphael Rossiter * @date 03/02/2010 * * @param idArrecadador * @param numeroNsa * @param codigoOpcaoExtrato * @return * @throws ErroRepositorioException */ public Integer pesquisarNumeroNsaPorArrecadador(Integer idArrecadador, Integer numeroNsa, String codigoOpcaoExtrato) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT sequ.numeroNsa " + "FROM SequenciaCartao sequ " + "INNER JOIN sequ.arrecadador arrc " + "where arrc.id = :idArrecadador " + "AND sequ.numeroNsa = :numeroNsa AND sequ.codigoOpcaoExtrato = :codigoOpcaoExtrato "; retorno = (Integer) session.createQuery(consulta) .setInteger("idArrecadador", idArrecadador) .setInteger("numeroNsa", numeroNsa) .setString("codigoOpcaoExtrato", codigoOpcaoExtrato) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0978] Pesquisa Relat�rio de Pagamento para Entidades Beneficentes Analitico * * @author Daniel Alves * @data 26/01/2010 * @param anoMesInicial = periodo inicial do relatorio * anoMesFinal = periodo final do relatorio * idUnidadeBeneficente * idGerenciaRegional * idUnidadeNegocio * idLocalidade * opcaoTotalizacao * @exception ErroRepositorioException */ public Collection pesquisarPagamentoEntidadesBeneficentesAnalitico(String anoMesInicial, String anoMesFinal, String idEntidadeBeneficente, String idGerenciaRegional, String idUnidadeNegocio, String idLocalidade, int opcaoTotalizacao ) throws ErroRepositorioException { //Filtro para o caso de sele��o de apenas uma Entidade/Gerencia/Unidade/Localidade especifica. String filtroWhere = ""; //variavel para controlar se vai ser usado mais de 1 filtro no where da SQL boolean filtro = false; if(idEntidadeBeneficente != null && !idEntidadeBeneficente.trim().equals("") && !idEntidadeBeneficente.trim().equals("-1")){ filtroWhere = "where eb.eben_id = " + idEntidadeBeneficente; filtro = true; } if(opcaoTotalizacao == 3 || opcaoTotalizacao == 8 || opcaoTotalizacao == 9){ if(filtro){ filtroWhere = filtroWhere + " and gr.greg_id = " + idGerenciaRegional; }else{ filtroWhere = "where gr.greg_id = " + idGerenciaRegional; } }else if(opcaoTotalizacao == 5 || opcaoTotalizacao == 10){ if(filtro){ filtroWhere = filtroWhere + " and un.uneg_id = " + idUnidadeNegocio; }else{ filtroWhere = "where un.uneg_id = " + idUnidadeNegocio; } }else if(opcaoTotalizacao == 7){ if(filtro){ filtroWhere = filtroWhere + " and im.loca_id = " + idLocalidade; }else{ filtroWhere = "where im.loca_id = " + idLocalidade; } } Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select doacao.imov_id as matricula, "+ "cl.clie_nmcliente as nome, "+ "eb.eben_id, "+ "ebcl.clie_nmcliente as nome_entidade, "+ "im.loca_id, "+ "lc.loca_nmlocalidade, "+ "un.uneg_id, "+ "un.uneg_nmunidadenegocio, "+ "gr.greg_id, "+ "gr.greg_nmregional, "+ "pagamento.pgmt_vlpagamento, "+ "pagamento.pgmt_amreferenciaarrecadacao "+ ""+ "from cadastro.imovel_doacoes doacao "+ "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) "+ "inner join cadastro.cliente ebcl on (ebcl.clie_id = eb.clie_id) "+ "inner join cadastro.cliente_imovel cl_im on (cl_im.imov_id = doacao.imov_id) and (cl_im.crtp_id=2) "+ "inner join cadastro.cliente cl on (cl.clie_id = cl_im.clie_id) and (cl_im.clim_dtrelacaofim is null) "+ ""+ "inner join cadastro.imovel im on (im.imov_id = cl_im.imov_id) "+ "inner join cadastro.localidade lc on (im.loca_id = lc.loca_id) "+ "inner join cadastro.unidade_negocio un on (un.uneg_id = lc.uneg_id) "+ "inner join cadastro.gerencia_regional gr on (un.greg_id = gr.greg_id) "+ ""+ "inner join "+ "(select doacao.eben_id, doacao.imov_id, pgmt_vlpagamento, pgmt_amreferenciaarrecadacao "+ "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.guia_pagamento guia on (guia.imov_id = doacao.imov_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=guia.dbtp_id) " + "inner join arrecadacao.pagamento pagamento on (pagamento.gpag_id = guia.gpag_id) and (pagamento.pgmt_amreferenciaarrecadacao between :anoMesInicial and :anoMesFinal) " + "UNION ALL " + "select doacao.eben_id, doacao.imov_id, pghi_vlpagamento, pghi_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.guia_pagamento_historico guia on (guia.imov_id = doacao.imov_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=guia.dbtp_id) " + "inner join arrecadacao.pagamento_historico pagamento on (pagamento.gpag_id = guia.gpag_id and pagamento.pghi_amreferenciapagamento between :anoMesInicial and :anoMesFinal) " + "UNION ALL " + "select doacao.eben_id, doacao.imov_id, dbcb_vlprestacao, pgmt_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.conta conta on (conta.imov_id = doacao.imov_id) " + "inner join faturamento.debito_cobrado debito_cobrado on (debito_cobrado.cnta_id = conta.cnta_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=debito_cobrado.dbtp_id) " + "inner join arrecadacao.pagamento pagamento on (pagamento.cnta_id = conta.cnta_id and pagamento.pgmt_amreferenciaarrecadacao between :anoMesInicial and :anoMesFinal) " + "UNION ALL " + "select doacao.eben_id, doacao.imov_id, dbhi_vlprestacao, pghi_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.conta_historico conta on (conta.imov_id = doacao.imov_id) " + "inner join faturamento.debito_cobrado_historico debito_cobrado on (debito_cobrado.cnta_id = conta.cnta_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=debito_cobrado.dbtp_id) " + "inner join arrecadacao.pagamento_historico pagamento on (pagamento.cnta_id = conta.cnta_id and pagamento.pghi_amreferenciapagamento between :anoMesInicial and :anoMesFinal) " + " ) pagamento on (pagamento.imov_id = doacao.imov_id) and (doacao.eben_id = pagamento.eben_id) " + " "+filtroWhere+" "+ "group by eb.eben_id," + "gr.greg_id, "+ "un.uneg_id, "+ "im.loca_id, " + "pagamento.pgmt_amreferenciaarrecadacao," + "im.stcm_id, im.qdra_id, im.imov_nnlote, im.imov_nnsublote, " +//ordenacao pela Inscricao "pagamento.pgmt_vlpagamento," + "doacao.imov_id," + "cl.clie_nmcliente," + "ebcl.clie_nmcliente," + "lc.loca_nmlocalidade," + "un.uneg_nmunidadenegocio," + "gr.greg_nmregional " + "order by eb.eben_id," + "gr.greg_id, "+ "un.uneg_id, "+ "im.loca_id, " + "pagamento.pgmt_amreferenciaarrecadacao," + "im.stcm_id, im.qdra_id, im.imov_nnlote, im.imov_nnsublote, " +//ordenacao pela Inscricao "pagamento.pgmt_vlpagamento," + "matricula," + "cl.clie_nmcliente," + "ebcl.clie_nmcliente," + "lc.loca_nmlocalidade," + "un.uneg_nmunidadenegocio," + "gr.greg_nmregional"; retorno = (Collection) session.createSQLQuery(consulta) .addScalar("matricula",Hibernate.STRING) .addScalar("nome", Hibernate.STRING) .addScalar("eben_id", Hibernate.STRING) .addScalar("nome_entidade",Hibernate.STRING) .addScalar("loca_id", Hibernate.STRING) .addScalar("loca_nmlocalidade",Hibernate.STRING) .addScalar("uneg_id",Hibernate.STRING) .addScalar("uneg_nmunidadenegocio",Hibernate.STRING) .addScalar("greg_id",Hibernate.STRING) .addScalar("greg_nmregional",Hibernate.STRING) .addScalar("pgmt_vlpagamento",Hibernate.STRING) .addScalar("pgmt_amreferenciaarrecadacao",Hibernate.STRING) .setString("anoMesInicial", anoMesInicial) .setString("anoMesFinal", anoMesFinal).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0978] Pesquisa Relat�rio de Pagamento para Entidades Beneficentes Sintetico * * @author Daniel Alves * @data 26/01/2010 * @param anoMesInicial = periodo inicial do relatorio * anoMesFinal = periodo final do relatorio * idUnidadeBeneficente * idGerenciaRegional * idUnidadeNegocio * idLocalidade * opcaoTotalizacao * @exception ErroRepositorioException */ public Collection pesquisarPagamentoEntidadesBeneficentesSintetico(String anoMesInicial, String anoMesFinal, String idEntidadeBeneficente, String idGerenciaRegional, String idUnidadeNegocio, String idLocalidade, int opcaoTotalizacao ) throws ErroRepositorioException { //Filtro para o caso de sele��o de apenas uma Entidade/Gerencia/Unidade/Localidade especifica. String sqlWhere = " WHERE 1=1 "; if(idEntidadeBeneficente != null && !idEntidadeBeneficente.trim().equals("") && !idEntidadeBeneficente.trim().equals("-1")){ sqlWhere = sqlWhere + " and eb.eben_id = " + idEntidadeBeneficente; } if(opcaoTotalizacao == 3 || opcaoTotalizacao == 8 || opcaoTotalizacao == 9){ sqlWhere = sqlWhere + " and gr.greg_id = " + idGerenciaRegional; }else if(opcaoTotalizacao == 5 || opcaoTotalizacao == 10){ sqlWhere = sqlWhere + " and un.uneg_id = " + idUnidadeNegocio; }else if(opcaoTotalizacao == 7){ sqlWhere = sqlWhere + " and im.loca_id = " + idLocalidade; } Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select eb.eben_id, " + "ebcl.clie_nmcliente as nome_entidade, " + "lc.loca_id, lc.loca_nmlocalidade, " + "un.uneg_id, un.uneg_nmunidadenegocio, " + "gr.greg_id, gr.greg_nmregional, " + "im.imov_id, " + "pagamento.pgmt_vlpagamento, " + "pagamento.pgmt_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join cadastro.cliente ebcl on (ebcl.clie_id = eb.clie_id) " + "inner join cadastro.cliente_imovel cl_im on (cl_im.imov_id = doacao.imov_id) and (cl_im.crtp_id=2) " + "inner join cadastro.cliente cl on (cl.clie_id = cl_im.clie_id) and (cl_im.clim_dtrelacaofim is null) " + "inner join cadastro.imovel im on (im.imov_id = cl_im.imov_id) " + "inner join cadastro.localidade lc on (im.loca_id = lc.loca_id) " + "inner join cadastro.unidade_negocio un on (un.uneg_id = lc.uneg_id) "+ "inner join cadastro.gerencia_regional gr on (un.greg_id = gr.greg_id) " + "inner join " + "(select doacao.eben_id, doacao.imov_id, pgmt_vlpagamento, pgmt_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.guia_pagamento guia on (guia.imov_id = doacao.imov_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=guia.dbtp_id) " + "inner join arrecadacao.pagamento pagamento on (pagamento.gpag_id = guia.gpag_id and pagamento.pgmt_amreferenciaarrecadacao between :anoMesInicial and :anoMesFinal) " + "group by doacao.eben_id, doacao.imov_id, pgmt_vlpagamento, pgmt_amreferenciaarrecadacao " + "UNION ALL " + "select doacao.eben_id, doacao.imov_id, pghi_vlpagamento, pghi_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.guia_pagamento_historico guia on (guia.imov_id = doacao.imov_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=guia.dbtp_id) " + "inner join arrecadacao.pagamento_historico pagamento on (pagamento.gpag_id = guia.gpag_id and pagamento.pghi_amreferenciapagamento between :anoMesInicial and :anoMesFinal ) " + "group by doacao.eben_id, doacao.imov_id, pghi_vlpagamento, pghi_amreferenciaarrecadacao " + "UNION ALL " + "select doacao.eben_id, doacao.imov_id, dbcb_vlprestacao, pgmt_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao "+ "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.conta conta on (conta.imov_id = doacao.imov_id) " + "inner join faturamento.debito_cobrado debito_cobrado on (debito_cobrado.cnta_id = conta.cnta_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=debito_cobrado.dbtp_id) " + "inner join arrecadacao.pagamento pagamento on (pagamento.cnta_id = conta.cnta_id and pagamento.pgmt_amreferenciaarrecadacao between :anoMesInicial and :anoMesFinal ) " + "group by doacao.eben_id, doacao.imov_id, dbcb_vlprestacao, pgmt_amreferenciaarrecadacao " + "UNION ALL " + "select doacao.eben_id, doacao.imov_id, dbhi_vlprestacao, pghi_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.conta_historico conta on (conta.imov_id = doacao.imov_id) " + "inner join faturamento.debito_cobrado_historico debito_cobrado on (debito_cobrado.cnta_id = conta.cnta_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=debito_cobrado.dbtp_id) " + "inner join arrecadacao.pagamento_historico pagamento on (pagamento.cnta_id = conta.cnta_id and pagamento.pghi_amreferenciapagamento between :anoMesInicial and :anoMesFinal ) " + "group by doacao.eben_id, doacao.imov_id, dbhi_vlprestacao, pghi_amreferenciaarrecadacao " + ") pagamento on (pagamento.imov_id = doacao.imov_id) and (doacao.eben_id = pagamento.eben_id) " + " "+sqlWhere+" "+ "group by eb.eben_id, ebcl.clie_nmcliente, " + "lc.loca_id, lc.loca_nmlocalidade, " + "un.uneg_id, un.uneg_nmunidadenegocio, " + "gr.greg_id, gr.greg_nmregional, " + "im.imov_id, " + "pagamento.pgmt_vlpagamento, " + "pagamento.pgmt_amreferenciaarrecadacao " + //ordena a sql ao contrario para preencher o design do relatorio "order by eb.eben_id desc, " + "gr.greg_id desc, "+ "un.uneg_id desc, "+ "lc.loca_id desc "; retorno = (Collection) session.createSQLQuery(consulta) .addScalar("eben_id", Hibernate.STRING) .addScalar("nome_entidade",Hibernate.STRING) .addScalar("loca_id", Hibernate.STRING) .addScalar("loca_nmlocalidade",Hibernate.STRING) .addScalar("uneg_id",Hibernate.STRING) .addScalar("uneg_nmunidadenegocio",Hibernate.STRING) .addScalar("greg_id",Hibernate.STRING) .addScalar("greg_nmregional",Hibernate.STRING) .addScalar("imov_id",Hibernate.INTEGER) .addScalar("pgmt_vlpagamento",Hibernate.BIG_DECIMAL) .addScalar("pgmt_amreferenciaarrecadacao",Hibernate.INTEGER) .setString("anoMesInicial", anoMesInicial) .setString("anoMesFinal", anoMesFinal).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0978] Count para Relat�rio de Pagamento para Entidades Beneficentes Analitico * * @author Daniel Alves * @data 26/01/2010 * @param anoMesInicial = periodo inicial do relatorio * anoMesFinal = periodo final do relatorio * idUnidadeBeneficente * idGerenciaRegional * idUnidadeNegocio * idLocalidade * opcaoTotalizacao * * @exception ErroRepositorioException */ public int pesquisarPagamentoEntidadesBeneficentesAnaliticoCount(String anoMesInicial, String anoMesFinal, String idEntidadeBeneficente, String idGerenciaRegional, String idUnidadeNegocio, String idLocalidade, int opcaoTotalizacao ) throws ErroRepositorioException { //Filtro para o caso de sele��o de apenas uma Entidade/Gerencia/Unidade/Localidade especifica. String sqlWhere = " WHERE 1=1 "; if(idEntidadeBeneficente != null && !idEntidadeBeneficente.trim().equals("") && !idEntidadeBeneficente.trim().equals("-1")){ sqlWhere = sqlWhere + " and pagamento.eben_id = " + idEntidadeBeneficente; } if(opcaoTotalizacao == 3 || opcaoTotalizacao == 8 || opcaoTotalizacao == 9){ sqlWhere = sqlWhere + " and gr.greg_id = " + idGerenciaRegional; }else if(opcaoTotalizacao == 5 || opcaoTotalizacao == 10){ sqlWhere = sqlWhere + " and un.uneg_id = " + idUnidadeNegocio; }else if(opcaoTotalizacao == 7){ sqlWhere = sqlWhere + " and im.loca_id = " + idLocalidade; } int retorno = 0; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select count(*) as contadorImovel from " + "(select doacao.eben_id, doacao.imov_id, pgmt_vlpagamento, pgmt_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.guia_pagamento guia on (guia.imov_id = doacao.imov_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=guia.dbtp_id) " + "inner join arrecadacao.pagamento pagamento on (pagamento.gpag_id = guia.gpag_id and pagamento.pgmt_amreferenciaarrecadacao between :anoMesInicial and :anoMesFinal) " + "group by doacao.eben_id, doacao.imov_id, pgmt_vlpagamento, pgmt_amreferenciaarrecadacao " + "UNION ALL " + "select doacao.eben_id, doacao.imov_id, pghi_vlpagamento, pghi_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.guia_pagamento_historico guia on (guia.imov_id = doacao.imov_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=guia.dbtp_id) " + "inner join arrecadacao.pagamento_historico pagamento on (pagamento.gpag_id = guia.gpag_id and pagamento.pghi_amreferenciapagamento between :anoMesInicial and :anoMesFinal) " + "group by doacao.eben_id, doacao.imov_id, pghi_vlpagamento, pghi_amreferenciaarrecadacao " + "UNION ALL " + "select doacao.eben_id, doacao.imov_id, dbcb_vlprestacao, pgmt_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.conta conta on (conta.imov_id = doacao.imov_id) " + "inner join faturamento.debito_cobrado debito_cobrado on (debito_cobrado.cnta_id = conta.cnta_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=debito_cobrado.dbtp_id) " + "inner join arrecadacao.pagamento pagamento on (pagamento.cnta_id = conta.cnta_id and pagamento.pgmt_amreferenciaarrecadacao between :anoMesInicial and :anoMesFinal) " + "group by doacao.eben_id, doacao.imov_id, dbcb_vlprestacao, pgmt_amreferenciaarrecadacao " + "UNION ALL " + "select doacao.eben_id, doacao.imov_id, dbhi_vlprestacao, pghi_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.conta_historico conta on (conta.imov_id = doacao.imov_id) " + "inner join faturamento.debito_cobrado_historico debito_cobrado on (debito_cobrado.cnta_id = conta.cnta_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=debito_cobrado.dbtp_id) " + "inner join arrecadacao.pagamento_historico pagamento on (pagamento.cnta_id = conta.cnta_id and pagamento.pghi_amreferenciapagamento between :anoMesInicial and :anoMesFinal) " + "group by doacao.eben_id, doacao.imov_id, dbhi_vlprestacao, pghi_amreferenciaarrecadacao " + ") pagamento "+ "inner join cadastro.imovel im on (im.imov_id = pagamento.imov_id) " + "inner join cadastro.localidade lc on (im.loca_id = lc.loca_id) " + "inner join cadastro.unidade_negocio un on (un.uneg_id = lc.uneg_id) " + "inner join cadastro.gerencia_regional gr on (un.greg_id = gr.greg_id) " + " " +sqlWhere; retorno = (Integer) session.createSQLQuery(consulta) .addScalar("contadorImovel", Hibernate.INTEGER) .setString("anoMesInicial", anoMesInicial) .setString("anoMesFinal", anoMesFinal).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0978] Count para Relat�rio de Pagamento para Entidades Beneficentes Sintetico * * @author Daniel Alves * @data 26/01/2010 * @param anoMesInicial = periodo inicial do relatorio * anoMesFinal = periodo final do relatorio * idUnidadeBeneficente * idGerenciaRegional * idUnidadeNegocio * idLocalidade * opcaoTotalizacao * * @exception ErroRepositorioException */ public int pesquisarPagamentoEntidadesBeneficentesSinteticoCount(String anoMesInicial, String anoMesFinal, String idEntidadeBeneficente, String idGerenciaRegional, String idUnidadeNegocio, String idLocalidade, int opcaoTotalizacao ) throws ErroRepositorioException { //Filtro para o caso de sele��o de apenas uma Entidade/Gerencia/Unidade/Localidade especifica. String sqlWhere = " WHERE 1=1 "; if(idEntidadeBeneficente != null && !idEntidadeBeneficente.trim().equals("") && !idEntidadeBeneficente.trim().equals("-1")){ sqlWhere = sqlWhere + " and pagamento.eben_id = " + idEntidadeBeneficente; } if(opcaoTotalizacao == 3 || opcaoTotalizacao == 8 || opcaoTotalizacao == 9){ sqlWhere = sqlWhere + " and gr.greg_id = " + idGerenciaRegional; }else if(opcaoTotalizacao == 5 || opcaoTotalizacao == 10){ sqlWhere = sqlWhere + " and un.uneg_id = " + idUnidadeNegocio; }else if(opcaoTotalizacao == 7){ sqlWhere = sqlWhere + " and im.loca_id = " + idLocalidade; } int retorno = 0; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select count(*) as contadorTotal from " + "(select pagamento.eben_id,count(pagamento.imov_id) contadorImovel from " + "(select doacao.eben_id, doacao.imov_id, pgmt_vlpagamento, pgmt_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.guia_pagamento guia on (guia.imov_id = doacao.imov_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=guia.dbtp_id) " + "inner join arrecadacao.pagamento pagamento on (pagamento.gpag_id = guia.gpag_id and pagamento.pgmt_amreferenciaarrecadacao between :anoMesInicial and :anoMesFinal) " + "group by doacao.eben_id, doacao.imov_id, pgmt_vlpagamento, pgmt_amreferenciaarrecadacao " + "UNION ALL " + "select doacao.eben_id, doacao.imov_id, pghi_vlpagamento, pghi_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.guia_pagamento_historico guia on (guia.imov_id = doacao.imov_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=guia.dbtp_id) " + "inner join arrecadacao.pagamento_historico pagamento on (pagamento.gpag_id = guia.gpag_id and pagamento.pghi_amreferenciapagamento between :anoMesInicial and :anoMesFinal) " + "group by doacao.eben_id, doacao.imov_id, pghi_vlpagamento, pghi_amreferenciaarrecadacao " + "UNION ALL " + "select doacao.eben_id, doacao.imov_id, dbcb_vlprestacao, pgmt_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.conta conta on (conta.imov_id = doacao.imov_id) " + "inner join faturamento.debito_cobrado debito_cobrado on (debito_cobrado.cnta_id = conta.cnta_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=debito_cobrado.dbtp_id) " + "inner join arrecadacao.pagamento pagamento on (pagamento.cnta_id = conta.cnta_id and pagamento.pgmt_amreferenciaarrecadacao between :anoMesInicial and :anoMesFinal) " + "group by doacao.eben_id, doacao.imov_id, dbcb_vlprestacao, pgmt_amreferenciaarrecadacao " + "UNION ALL " + "select doacao.eben_id, doacao.imov_id, dbhi_vlprestacao, pghi_amreferenciaarrecadacao " + "from cadastro.imovel_doacoes doacao " + "inner join cadastro.entidade_beneficente eb on (eb.eben_id = doacao.eben_id) " + "inner join faturamento.conta_historico conta on (conta.imov_id = doacao.imov_id) " + "inner join faturamento.debito_cobrado_historico debito_cobrado on (debito_cobrado.cnta_id = conta.cnta_id) " + "inner join faturamento.debito_tipo debitoTipo on (debitoTipo.dbtp_nncodigoconstante = 1 and debitoTipo.dbtp_id=debito_cobrado.dbtp_id) " + "inner join arrecadacao.pagamento_historico pagamento on (pagamento.cnta_id = conta.cnta_id and pagamento.pghi_amreferenciapagamento between :anoMesInicial and :anoMesFinal) " + "group by doacao.eben_id, doacao.imov_id, dbhi_vlprestacao, pghi_amreferenciaarrecadacao " + ") as pagamento " + "inner join cadastro.imovel im on (im.imov_id = pagamento.imov_id) " + "inner join cadastro.localidade lc on (im.loca_id = lc.loca_id) " + "inner join cadastro.unidade_negocio un on (un.uneg_id = lc.uneg_id) " + "inner join cadastro.gerencia_regional gr on (un.greg_id = gr.greg_id) " + " " + sqlWhere+ " " + "group by lc.loca_id, un.uneg_id, gr.greg_id, pagamento.eben_id " + ") total " ; retorno = (Integer) session.createSQLQuery(consulta) .addScalar("contadorTotal", Hibernate.INTEGER) .setString("anoMesInicial", anoMesInicial) .setString("anoMesFinal", anoMesFinal).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0259] - Processar Pagamento com c�digo de Barras * * [SB0019] � Gerar D�bitos/Cr�ditos Parcelas Antecipadas * * @author Raphael Rossiter * @date 13/04/2010 * * @param idDebitoACobrar * @param numeroPrestacoesCobradas * @param numeroPrestacoesAntecipadas * @throws ErroRepositorioException */ public void atualizarNumeroPrestacoesAntecipadasECobradas(Integer idDebitoACobrar, Integer numeroPrestacoesCobradas, Integer numeroPrestacoesAntecipadas) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarDebitoACobrar; try { atualizarDebitoACobrar = "UPDATE DebitoACobrar " + "SET dbac_nnprestacaocobradas = :numeroPrestacoesCobradas, " + "dbac_nnparcelasantecipadas = :numeroPrestacoesAntecipadas, dbac_tmultimaalteracao = :dataCorrente " + "WHERE dbac_id = :idDebitoACobrar "; session.createQuery(atualizarDebitoACobrar) .setShort("numeroPrestacoesCobradas", Short.valueOf(numeroPrestacoesCobradas.toString())) .setShort("numeroPrestacoesAntecipadas", Short.valueOf(numeroPrestacoesAntecipadas.toString())) .setTimestamp("dataCorrente", new Date()) .setInteger("idDebitoACobrar", idDebitoACobrar).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0259] - Processar Pagamento com c�digo de Barras * * [SB0019] � Gerar D�bitos/Cr�ditos Parcelas Antecipadas * * @author Raphael Rossiter * @date 14/04/2010 * * @param idCreditoARealizar * @param numeroPrestacoesRealizadas * @param numeroPrestacoesAntecipadas * @throws ErroRepositorioException */ public void atualizarNumeroPrestacoesAntecipadasERealizadas(Integer idCreditoARealizar, Integer numeroPrestacoesRealizadas, Integer numeroPrestacoesAntecipadas) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarCreditoARealizar; try { atualizarCreditoARealizar = "UPDATE CreditoARealizar " + "SET crar_nnprestacaorealizadas = :numeroPrestacoesRealizadas, " + "crac_nnparcelasantecipadas = :numeroPrestacoesAntecipadas, crar_tmultimaalteracao = :dataCorrente " + "WHERE crar_id = :idCreditoARealizar "; session.createQuery(atualizarCreditoARealizar) .setShort("numeroPrestacoesRealizadas", Short.valueOf(numeroPrestacoesRealizadas.toString())) .setShort("numeroPrestacoesAntecipadas", Short.valueOf(numeroPrestacoesAntecipadas.toString())) .setTimestamp("dataCorrente", new Date()) .setInteger("idCreditoARealizar", idCreditoARealizar).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * * [UC0259] � Processar Pagamento com C�digo de Barras * * [SB0019] � Gerar D�bitos/Cr�ditos Parcelas Antecipadas. * * @author Raphael Rossiter * @date 19/04/2010 * * @param idParcelamento * @return * @throws ErroRepositorioException */ public DebitoACobrar pesquisarDebitoACobrarJurosParcelamento(Integer idParcelamento) throws ErroRepositorioException { DebitoACobrar retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select dbac from DebitoACobrar dbac " + "inner join dbac.parcelamento parc " + "inner join dbac.financiamentoTipo fntp " + "where parc.id = :idParcelamento " + "and fntp.id = :jurosParcelamento "; retorno = (DebitoACobrar) session.createQuery(consulta) .setInteger("idParcelamento", idParcelamento) .setInteger("jurosParcelamento", FinanciamentoTipo.JUROS_PARCELAMENTO) .setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o de d�bitos a cobrar return retorno; } /** * [UC0259] � Processar Pagamento com C�digo de Barras * * [SB0019] � Gerar D�bitos/Cr�ditos Parcelas Antecipadas. * * @author Raphael Rossiter * @date 19/04/2010 * * @param debitoACobrar * @throws ErroRepositorioException */ public void atualizarNumeroParcelasBonus(DebitoACobrar debitoACobrar) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarDebitoACobrar; try { atualizarDebitoACobrar = "UPDATE DebitoACobrar " + "SET dbac_nnparcelabonus = :numeroParcelaBonus, " + "dbac_tmultimaalteracao = :dataCorrente " + "WHERE dbac_id = :idDebitoACobrar "; session.createQuery(atualizarDebitoACobrar) .setShort("numeroParcelaBonus", debitoACobrar.getNumeroParcelaBonus()) .setTimestamp("dataCorrente", new Date()) .setInteger("idDebitoACobrar", debitoACobrar.getId()).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do tipo Aviso Bancario * pesquisarPagamentoAvisoBancario * * @author Arthur Carvalho * @date 12/05/10 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Integer pesquisarPagamentoHistoricoAvisoBancarioCount(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { int retorno = 0; Object pagamentoHistoricoAvisoBancarioCount; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisPagamentoHistorico(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = " select count (pagamentoHistorico.id) " + " from gcom.arrecadacao.pagamento.PagamentoHistorico pagamentoHistorico " + " inner join pagamentoHistorico.avisoBancario as avisoBancario " + condicionais + " "; pagamentoHistoricoAvisoBancarioCount = session.createQuery(hql) .setMaxResults(1).uniqueResult(); if (pagamentoHistoricoAvisoBancarioCount != null) { retorno = (Integer) pagamentoHistoricoAvisoBancarioCount; } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos historico * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos com os condicionais informados * criarCondicionaisPagamentoHistorico * * @author Arthur Carvalho * @date 12/05/10 * @return */ public String criarCondicionaisPagamentoHistorico(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) { String hql = ""; if (idImovel != null && !idImovel.equals("")) { hql = hql + " pagamentoHistorico.imovel.id = " + idImovel + " and "; } if (idCliente != null && !idCliente.equals("")) { // sql = sql + " clienteContas.cliente.id = " + idCliente + " and " // ; hql = hql + " pagamentoHistorico.cliente.id = " + idCliente + " and "; } if (idTipoRelacao != null && !idTipoRelacao.equals("")) { hql = hql + " clienteRelacaoTipo.id = " + idTipoRelacao + " and "; } if (localidadeInicial != null && localidadeFinal != null && !localidadeInicial.equals("") && !localidadeFinal.equals("")) { hql = hql + " pagamento.localidade.id >= " + localidadeInicial + " and "; hql = hql + " pagamento.localidade.id <= " + localidadeFinal + " and "; } if (idAvisoBancario != null && !idAvisoBancario.equals("")) { hql = hql + " pagamentoHistorico.avisoBancario.id = " + idAvisoBancario + " and "; } if (idArrecadador != null && !idArrecadador.equals("")) { hql = hql + " pagamentoHistorico.arrecadadorMovimentoItem.arrecadadorMovimento.id = " + idArrecadador + " and "; } if (periodoArrecadacaoInicial != null && !periodoArrecadacaoInicial.equals("")) { hql = hql + " pagamentoHistorico.anoMesReferenciaArrecadacao >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoInicial) + " and "; } if (periodoArrecadacaoFinal != null && !periodoArrecadacaoFinal.equals("")) { hql = hql + " pagamentoHistorico.anoMesReferenciaArrecadacao <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoFinal) + " and "; } if (periodoPagamentoInicio != null && !periodoPagamentoInicio.equals("")) { hql = hql + " pagamentoHistorico.anoMesReferenciaPagamento >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoInicio) + " and "; } if (periodoPagamentoFim != null && !periodoPagamentoFim.equals("")) { hql = hql + " pagamentoHistorico.anoMesReferenciaPagamento <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoFim) + " and "; } if (dataPagamentoInicial != null && !dataPagamentoInicial.equals("")) { // sql = sql + " pagamento.dataPagamento >= '" + // Util.formatarData(dataPagamentoInicial) + "' and " ; String data1 = Util.recuperaDataInvertida(dataPagamentoInicial); if (data1 != null && !data1.equals("") && data1.trim().length() == 8) { data1 = data1.substring(0, 4) + "-" + data1.substring(4, 6) + "-" + data1.substring(6, 8); } hql = hql + " pagamentoHistorico.dataPagamento >= to_date('" + data1 + "','YYYY-MM-DD HH24:MI:SS') and "; } if (dataPagamentoFinal != null && !dataPagamentoFinal.equals("")) { // sql = sql + " pagamento.dataPagamento <= '" + // Util.formatarData(dataPagamentoFinal) + "' and " ; String data2 = Util.recuperaDataInvertida(dataPagamentoFinal); if (data2 != null && !data2.equals("") && data2.trim().length() == 8) { data2 = data2.substring(0, 4) + "-" + data2.substring(4, 6) + "-" + data2.substring(6, 8); } hql = hql + " pagamentoHistorico.dataPagamento <= to_date('" + data2 + "','YYYY-MM-DD HH24:MI:SS') and "; } if (idsPagamentosSituacoes != null && !idsPagamentosSituacoes.equals("")) { String valoresIn = ""; for (int i = 0; i < idsPagamentosSituacoes.length; i++) { if (!idsPagamentosSituacoes[i].equals("")) { valoresIn = valoresIn + idsPagamentosSituacoes[i] + ","; } } if (!valoresIn.equals("")) { hql = hql + " pagamentoHistorico.pagamentoSituacaoAtual.id in (" + valoresIn; hql = Util.removerUltimosCaracteres(hql, 1); hql = hql + ") and "; } } if (idsDebitosTipos != null && !idsDebitosTipos.equals("") && !idsDebitosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDebitosTipos.length; i++) { if (!idsDebitosTipos[i].equals("")) { valoresIn = valoresIn + idsDebitosTipos[i] + ","; } } if (!valoresIn.equals("")) { hql = hql + " pagamentoHistorico.debitoTipo.id in (" + valoresIn; hql = Util.removerUltimosCaracteres(hql, 1); hql = hql + ") and "; } } if (idsArrecadacaoForma != null && !idsArrecadacaoForma.equals("") && !idsArrecadacaoForma[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsArrecadacaoForma.length; i++) { if (!idsArrecadacaoForma[i].equals("")) { valoresIn = valoresIn + idsArrecadacaoForma[i] + ","; } } if (!valoresIn.equals("")) { hql = hql + " pagamentoHistorico.arrecadacaoForma.id in (" + valoresIn; hql = Util.removerUltimosCaracteres(hql, 1); hql = hql + ") and "; } } if (idsDocumentosTipos != null && !idsDocumentosTipos.equals("") && !idsDocumentosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDocumentosTipos.length; i++) { if (!idsDocumentosTipos[i].equals("")) { valoresIn = valoresIn + idsDocumentosTipos[i] + ","; } } if (!valoresIn.equals("")) { hql = hql + " pagamentoHistorico.documentoTipo.id in (" + valoresIn; hql = Util.removerUltimosCaracteres(hql, 1); hql = hql + ") and "; } } if ( valorPagamentoInicial != null && !valorPagamentoInicial.equals( "" ) && valorPagamentoFinal != null && !valorPagamentoFinal.equals( "" ) ){ hql += " pagamentoHistorico.valorPagamento between " + Util.formatarMoedaRealparaBigDecimal( valorPagamentoInicial ) + " and " + Util.formatarMoedaRealparaBigDecimal( valorPagamentoFinal ) + " and "; } // retira o " and " q fica sobrando no final da query hql = Util.removerUltimosCaracteres(hql, 4); return hql; } /** * [UC0322] Inserir Guia Devolucao. * * [FS0023] Verificar cr�dito a realizar. �Verificarasds * * @author Hugo Leonardo * @date 26/05/2010 * * @param idImovel, anoMesReferenciaConta * @throws ErroRepositorioException */ public Integer verificarExistenciaCreditoARealizar(Integer idImovel, Integer anoMesReferenciaConta) throws ErroRepositorioException { Integer retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = " select creditoARealizar.id " + " from CreditoARealizar creditoARealizar " + " where creditoARealizar.imovel = :idImovel " + " and creditoARealizar.anoMesReferenciaCredito = :anoMesReferencia " + " and creditoARealizar.creditoTipo = :tipoCredito"; retorno = (Integer) session.createQuery(consulta) .setInteger("idImovel", idImovel) .setInteger("anoMesReferencia", anoMesReferenciaConta) .setInteger("tipoCredito", CreditoTipo.DEVOLUCAO_PAGAMENTOS_DUPLICIDADE) .setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o pesquisada return retorno; } /** * [UC0322] Inserir Guia Devolucao. * * [FS0023] Verificar cr�dito a realizar Hist�rico. �Verificarasds * * @author Hugo Leonardo * @date 26/05/2010 * * @param idImovel, anoMesReferenciaConta * @throws ErroRepositorioException */ public Integer verificarExistenciaCreditoARealizarHistorico(Integer idImovel, Integer anoMesReferenciaConta) throws ErroRepositorioException { Integer retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = " select creditoARealizarHistorico.id " + " from CreditoARealizarHistorico creditoARealizarHistorico " + " where creditoARealizarHistorico.imovel = :idImovel " + " and creditoARealizarHistorico.anoMesReferenciaCredito = :anoMesReferenciaConta " + " and creditoARealizarHistorico.creditoTipo = :tipoCredito"; retorno = (Integer) session.createQuery(consulta) .setInteger("idImovel", idImovel) .setInteger("anoMesReferenciaConta", anoMesReferenciaConta) .setInteger("tipoCredito",CreditoTipo.DEVOLUCAO_PAGAMENTOS_DUPLICIDADE) .setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o pesquisada return retorno; } /** * [UC0194] Inserir Cr�dito a realizar. * [FS0013] Verificar Guia devolu��o. �Verificarasds * * @author Hugo Leonardo * @date 27/05/2010 * * @param idImovel, anoMesReferenciaGuiaDevolucao * @throws ErroRepositorioException */ public Integer verificarExistenciaGuiaDevolucao(Integer idImovel, Integer anoMesReferenciaGuiaDevolucao) throws ErroRepositorioException { Integer retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = " select guiaDevolucao.id " + " from GuiaDevolucao guiaDevolucao " + " where guiaDevolucao.imovel = :idImovel " + " and guiaDevolucao.anoMesReferenciaGuiaDevolucao = :anoMesGuiaDevolucao " + " and guiaDevolucao.documentoTipo = :tipoDocumento "; retorno = (Integer) session.createQuery(consulta) .setInteger("idImovel", idImovel) .setInteger("anoMesGuiaDevolucao", anoMesReferenciaGuiaDevolucao) .setInteger("tipoDocumento",DocumentoTipo.CONTA) .setMaxResults(1).uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o pesquisada return retorno; } /** * [UC0977] - Registrar Movimento Cart�o de Cr�dito * * [SB0006� Distribuir Dados do Registro de Movimento do Arrecadador] * * @author Raphael Rossiter * @date 08/06/2010 * * @param parcelamentoPagamentoCartaoCredito * @throws ErroRepositorioException */ public void confirmarPagamentoCartaoCreditoOperadora(ParcelamentoPagamentoCartaoCredito parcelamentoPagamentoCartaoCredito) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarParcelamentoPagamentoCartaoCredito; try { atualizarParcelamentoPagamentoCartaoCredito = "UPDATE ParcelamentoPagamentoCartaoCredito " + "SET pacc_icconfirmadooperadora = :indicadorConfirmadoOperadora, " + "pacc_dtconfirmadooperadora = :dataConfirmadoOperadora, " + "pacc_vlconfirmadooperadora = :valorConfirmadoOperadora, " + "pacc_tmultimaalteracao = :dataCorrente " + "WHERE pacc_id = :idParcelamentoPagamentoCartaoCredito "; session.createQuery(atualizarParcelamentoPagamentoCartaoCredito) .setShort("indicadorConfirmadoOperadora", parcelamentoPagamentoCartaoCredito.getIndicadorConfirmadoOperadora()) .setDate("dataConfirmadoOperadora", parcelamentoPagamentoCartaoCredito.getDataConfirmadoOperadora()) .setBigDecimal("valorConfirmadoOperadora", parcelamentoPagamentoCartaoCredito.getValorConfirmadoOperadora()) .setTimestamp("dataCorrente", new Date()) .setInteger("idParcelamentoPagamentoCartaoCredito", parcelamentoPagamentoCartaoCredito.getId()).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0977] - Registrar Movimento Cart�o de Cr�dito * * [SB0006� Distribuir Dados do Registro de Movimento do Arrecadador] * * @author Raphael Rossiter * @date 08/06/2010 * * @param pagamentoCartaoDebito * @throws ErroRepositorioException */ public void confirmarPagamentoCartaoDebitoOperadora(PagamentoCartaoDebito pagamentoCartaoDebito) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarParcelamentoPagamentoCartaoCredito; try { atualizarParcelamentoPagamentoCartaoCredito = "UPDATE PagamentoCartaoDebito " + "SET pacd_icconfirmadooperadora = :indicadorConfirmadoOperadora, " + "pacd_dtconfirmadooperadora = :dataConfirmadoOperadora, " + "pacd_vlconfirmadooperadora = :valorConfirmadoOperadora, " + "pacd_tmultimaalteracao = :dataCorrente " + "WHERE pacd_id = :idPagamentoCartaoDebito "; session.createQuery(atualizarParcelamentoPagamentoCartaoCredito) .setShort("indicadorConfirmadoOperadora", pagamentoCartaoDebito.getIndicadorConfirmadoOperadora()) .setDate("dataConfirmadoOperadora", pagamentoCartaoDebito.getDataConfirmadoOperadora()) .setBigDecimal("valorConfirmadoOperadora", pagamentoCartaoDebito.getValorConfirmadoOperadora()) .setTimestamp("dataCorrente", new Date()) .setInteger("idPagamentoCartaoDebito", pagamentoCartaoDebito.getId()).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * * [UC0511] Filtrar Contrato Arrecadador * @author Arthur Carvalho * @date 26/05/2010 * */ public boolean verificarExistenciaContrato( String numeroContrato ) throws ErroRepositorioException { boolean retorno = false; ArrecadadorContrato arrecadadorContrato = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select arrecadador from ArrecadadorContrato arrecadador " + "where arrecadador.numeroContrato = :numeroContrato"; arrecadadorContrato = (ArrecadadorContrato) session.createQuery(consulta) .setString("numeroContrato", numeroContrato) .setMaxResults(1).uniqueResult(); if ( arrecadadorContrato != null ) { retorno = true; } // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o de d�bitos a cobrar return retorno; } /** * [UC0339] Consultar Dados Di�rios da Arrecada��o * * @author Hugo Amorim * @date 29/06/2010 * * @throws ControladorException */ public Date pesquisarDataProcessamentoMes(Integer anoMes) throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); String consulta; Date retorno; try { consulta = "SELECT ultimaAlteracao" +" FROM" +" ArrecadacaoDadosDiarios" +" WHERE anoMesReferenciaArrecadacao = :anoMes" +" ORDER BY ultimaAlteracao DESC "; retorno = (Date) session.createQuery(consulta) .setInteger("anoMes", anoMes) .setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o de d�bitos a cobrar return retorno; } /** * [UC0629] Consultar Arquivo Texto para Leitura * * @author Raphael Rossiter * @date 29/06/2010 * * @param helper * @return Integer * @throws ErroRepositorioException */ public Integer filtrarArquivoTextoRoteiroEmpresaCount(ConsultarArquivoTextoRoteiroEmpresaHelper helper) throws ErroRepositorioException { Integer arquivoTextoRoteiroEmpresaCount = null; String sql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisArquivoTextoRoteiroEmpresa(helper); sql = " SELECT count (arquivoTexto.txre_id) as qtdeArquivoTexto " + " FROM micromedicao.arquivo_texto_rot_empr arquivoTexto " + condicionais; arquivoTextoRoteiroEmpresaCount = (Integer) session.createSQLQuery(sql) .addScalar("qtdeArquivoTexto", Hibernate.INTEGER).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return arquivoTextoRoteiroEmpresaCount; } /** * [UC0629] Consultar Arquivo Texto para Leitura * * @author Raphael Rossiter * @date 29/06/2010 * * @param helper * @param numeroPagina * @return Collection * @throws ErroRepositorioException */ public Collection filtrarArquivoTextoRoteiroEmpresaParaPaginacao(ConsultarArquivoTextoRoteiroEmpresaHelper helper, Integer numeroPagina) throws ErroRepositorioException { Collection retorno = null; String sql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.criarCondicionaisArquivoTextoRoteiroEmpresa(helper); sql = " SELECT arquivoTexto.txre_id as id, "//0 + " arquivoTexto.txre_amreferencia as anoMesReferencia, "//1 + " arquivoTexto.txre_qtimovel as qtdImovel, "//2 + " arquivoTexto.txre_nnsequencialeiturista as sequencialLeiturista, "//3 + " arquivoTexto.txre_nmarquivo as nomeArquivo, "//4 + " arquivoTexto.txre_nnfoneleiturista as foneLeiturista, "//5 + " arquivoTexto.rota_id as idRota, "//6 + " rota.rota_cdrota as codigoRota, "//7 + " arquivoTexto.stce_id as servicoTipoCelular, "//8 + " sitl.sitl_id as idSituacaoTransmissaoLeitura, "//9 + " sitl.sitl_dssituacao as descSituacaoTransmissaoLeitura, "//10 + " arquivoTexto.loca_id as localidade, "//11 + " arquivoTexto.txre_cdsetorcomercial1 as codigoSetor1, "//12 + " arquivoTexto.ftgr_id as faturamentoGrupo, "//13 + " cliente.clie_nmcliente as nomeCliente, "//14 + " funcionario.func_nmfuncionario as nomeFuncionario, "//15 + " arquivoTexto.txre_tmultimaalteracao as ultimaAlteracao, "//16 + " arquivoTexto.txre_nnimei as numeroImei, "//17 + " rota.rota_nnlimiteimoveis as numeroLimiteImoveis, "//18 + " empresa.empr_nmempresa as nomeEmpresa, "//19 + " localidade.loca_nmlocalidade as nomeLocalidade,"//20 + " serTip.stce_dsservicotipocelular as servicoTipo"//21 + " FROM micromedicao.arquivo_texto_rot_empr arquivoTexto " + " LEFT JOIN micromedicao.rota rota on rota.rota_id = arquivoTexto.rota_id " + " LEFT JOIN micromedicao.situacao_transm_leitura sitl on sitl.sitl_id = arquivoTexto.sitl_id " + " LEFT JOIN micromedicao.leiturista leiturista on leiturista.leit_id = arquivoTexto.leit_id " + " LEFT JOIN cadastro.cliente cliente on cliente.clie_id = leiturista.clie_id " + " LEFT JOIN cadastro.empresa empresa on empresa.empr_id = arquivoTexto.empr_id " + " LEFT JOIN cadastro.localidade localidade on localidade.loca_id = arquivoTexto.loca_id " + " LEFT JOIN micromedicao.servico_tipo_celular serTip on serTip.stce_id = arquivoTexto.stce_id " + " LEFT JOIN cadastro.funcionario funcionario on funcionario.func_id = leiturista.func_id " + condicionais /** * * 03/05/2011 - Pamela Gatinho * Adicionando campos (localidade, setor e rota) para * ordenacao da consulta de arquivos de rota */ + " ORDER BY localidade, codigoSetor1, codigoRota, sequencialLeiturista, leiturista.leit_id, " + " idSituacaoTransmissaoLeitura, servicoTipoCelular "; retorno = session.createSQLQuery(sql) .addScalar("id", Hibernate.INTEGER) .addScalar("anoMesReferencia", Hibernate.INTEGER) .addScalar("qtdImovel", Hibernate.INTEGER) .addScalar("sequencialLeiturista", Hibernate.INTEGER) .addScalar("nomeArquivo", Hibernate.STRING) .addScalar("foneLeiturista", Hibernate.STRING) .addScalar("idRota", Hibernate.INTEGER) .addScalar("codigoRota", Hibernate.SHORT) .addScalar("servicoTipoCelular", Hibernate.INTEGER) .addScalar("idSituacaoTransmissaoLeitura", Hibernate.INTEGER) .addScalar("descSituacaoTransmissaoLeitura", Hibernate.STRING) .addScalar("localidade", Hibernate.INTEGER) .addScalar("codigoSetor1", Hibernate.INTEGER) .addScalar("faturamentoGrupo", Hibernate.INTEGER) .addScalar("nomeCliente", Hibernate.STRING) .addScalar("nomeFuncionario", Hibernate.STRING) .addScalar("ultimaAlteracao", Hibernate.TIMESTAMP) .addScalar("numeroImei", Hibernate.LONG) .addScalar("numeroLimiteImoveis", Hibernate.INTEGER) .addScalar("nomeEmpresa", Hibernate.STRING) .addScalar("nomeLocalidade", Hibernate.STRING) .addScalar("servicoTipo", Hibernate.STRING ) .list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0629] Consultar Arquivo Texto para Leitura * * @author Raphael Rossiter * @date 29/06/2010 * * @param helper * @return String * @throws ErroRepositorioException */ public String criarCondicionaisArquivoTextoRoteiroEmpresa(ConsultarArquivoTextoRoteiroEmpresaHelper helper) throws ErroRepositorioException{ String where = " WHERE "; // ------------------- Where ------------------------- //ANO MES REFERENCIA if (helper.getAnoMesReferencia() != null && !helper.getAnoMesReferencia().equals("")) { where = where + " arquivoTexto.txre_amreferencia = " + helper.getAnoMesReferencia() + " and "; } //FATURAMENTO_GRUPO if (helper.getIdFaturamentoGrupo() != null && !helper.getIdFaturamentoGrupo().equals("")) { where = where + " arquivoTexto.ftgr_id = " + helper.getIdFaturamentoGrupo() + " and "; } //EMPRESA if (helper.getIdEmpresa() != null && !helper.getIdEmpresa().equals("")) { where = where + " arquivoTexto.empr_id = " + helper.getIdEmpresa() + " and "; } //SITUACAO_TRANSMISSAO_LEITURA if (helper.getIdSituacaoTransmissaoLeitura() != null && !helper.getIdSituacaoTransmissaoLeitura().equals("")) { where = where + " arquivoTexto.sitl_id = " + helper.getIdSituacaoTransmissaoLeitura() + " and "; } //SERVICO_TIPO_CELULAR if (helper.getIdServicoTipoCelular() != null && !helper.getIdServicoTipoCelular().equals("")) { where = where + " arquivoTexto.stce_id = " + helper.getIdServicoTipoCelular() + " and "; } //LEITURISTA if (helper.getIdLeiturista() != null && !helper.getIdLeiturista().equals("")) { where = where + " arquivoTexto.leit_id = " + helper.getIdLeiturista() + " and "; } //LOCALIDADE if (helper.getIdLocalidade() != null && !helper.getIdLocalidade().equals("")) { where = where + " arquivoTexto.loca_id = " + helper.getIdLocalidade() + " and "; } where = where.substring(0, where.length() - 5); return where; } /** * [UC1043] Gerar Relat�rio An�lise Pagamento Cart�o D�bito * * @author Hugo Amorim * @date 21/06/2010 * * @throws ErroRepositorioException */ public Integer relatorioAnalisePagamentoCartaoDebitoCount( ConsultarRelatorioAnalisePagamentoCartaoDebitoHelper helper) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Integer relatorioAnalisePagamentoCartaoDebitoCount = null; String hql = ""; Query query = null; try { hql = " SELECT COUNT(*) " + " FROM PagamentoCartaoDebito pag " + this.criarCondicionaisRelatorioAnalisePagamentoCartaoDebito(helper); //Cria query query = session.createQuery(hql); //Seta paramentros na query query = this.setarParametrosRelatorioAnalisePagamentoCartaoDebito(helper,query); //Executa query relatorioAnalisePagamentoCartaoDebitoCount = (Integer) query.setMaxResults(1).uniqueResult(); //Caso n�o encontre nenhum registro atrinui valor 0(zero) ao retorno. if(relatorioAnalisePagamentoCartaoDebitoCount==null){ relatorioAnalisePagamentoCartaoDebitoCount = 0; } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return relatorioAnalisePagamentoCartaoDebitoCount; } /** * [UC1043] Gerar Relat�rio An�lise Pagamento Cart�o D�bito * * @author Hugo Amorim * @date 21/06/2010 * * @throws ErroRepositorioException */ private String criarCondicionaisRelatorioAnalisePagamentoCartaoDebito( ConsultarRelatorioAnalisePagamentoCartaoDebitoHelper helper) throws ErroRepositorioException{ String where = " WHERE "; // ------------------- Where ------------------------- //Per�odo de Confirma��o do Pagamento. if (helper.getDataConfirmacaoPagamentoInicial() != null && !helper.getDataConfirmacaoPagamentoInicial().equals("") && helper.getDataConfirmacaoPagamentoFinal() != null && !helper.getDataConfirmacaoPagamentoFinal().equals("")) { where = where + " pag.dataConfirmacao BETWEEN " + " :dataConfirmacaoPagametoInicial AND :dataConfirmacaoPagametoFinal AND "; } //Usu�rio Confirma��o Pagamento if (helper.getIdUsuarioConfirmacao() != null && !helper.getIdUsuarioConfirmacao().equals("")) { where = where + " pag.usuarioConfirmacao.id = :usuarioConfirmacao AND "; } //Situa��o da Confirma��o da Operadora if (helper.getIndicadorConfirmacaoOperadora() != null && !helper.getIndicadorConfirmacaoOperadora().equals("") && !helper.getIndicadorConfirmacaoOperadora().equals("3")) { where = where + " pag.indicadorConfirmadoOperadora = :indicadorConfirmadoOperadora AND "; } //Per�odo de Confirma��o da Operadora if (helper.getDataConfirmacaoOperadoraInicial() != null && !helper.getDataConfirmacaoOperadoraInicial().equals("") && helper.getDataConfirmacaoOperadoraFinal() != null && !helper.getDataConfirmacaoOperadoraFinal().equals("")) { where = where + " pag.dataConfirmadoOperadora BETWEEN " + " :dataConfirmadoOperadoraInicial AND :dataConfirmadoOperadoraFinal AND "; } where = where.substring(0, where.length() - 5); return where; } /** * [UC1043] Gerar Relat�rio An�lise Pagamento Cart�o D�bito * * @author Hugo Amorim * @date 21/06/2010 * * @throws ErroRepositorioException */ private Query setarParametrosRelatorioAnalisePagamentoCartaoDebito( ConsultarRelatorioAnalisePagamentoCartaoDebitoHelper helper,Query query) throws ErroRepositorioException{ // ------------------- Where ------------------------- //Per�odo de Confirma��o do Pagamento. if (helper.getDataConfirmacaoPagamentoInicial() != null && !helper.getDataConfirmacaoPagamentoInicial().equals("") && helper.getDataConfirmacaoPagamentoFinal() != null && !helper.getDataConfirmacaoPagamentoFinal().equals("")) { query.setDate("dataConfirmacaoPagametoInicial", Util.converteStringParaDate(helper.getDataConfirmacaoPagamentoInicial())); query.setDate("dataConfirmacaoPagametoFinal", Util.converteStringParaDate(helper.getDataConfirmacaoPagamentoFinal())); } //Usu�rio Confirma��o Pagamento if (helper.getIdUsuarioConfirmacao() != null && !helper.getIdUsuarioConfirmacao().equals("")) { query.setInteger("usuarioConfirmacao", new Integer(helper.getIdUsuarioConfirmacao())); } //Situa��o da Confirma��o da Operadora if (helper.getIndicadorConfirmacaoOperadora() != null && !helper.getIndicadorConfirmacaoOperadora().equals("") && !helper.getIndicadorConfirmacaoOperadora().equals("3")) { query.setShort("indicadorConfirmadoOperadora", new Short(helper.getIndicadorConfirmacaoOperadora())); } //Per�odo de Confirma��o da Operadora if (helper.getDataConfirmacaoOperadoraInicial() != null && !helper.getDataConfirmacaoOperadoraInicial().equals("") && helper.getDataConfirmacaoOperadoraFinal() != null && !helper.getDataConfirmacaoOperadoraFinal().equals("")) { query.setDate("dataConfirmadoOperadoraInicial", Util.converteStringParaDate(helper.getDataConfirmacaoOperadoraInicial())); query.setDate("dataConfirmadoOperadoraFinal", Util.converteStringParaDate(helper.getDataConfirmacaoOperadoraFinal())); } return query; } /** * [UC1043] Gerar Relat�rio An�lise Pagamento Cart�o D�bito * * @author Hugo Amorim * @date 21/06/2010 * * @throws ErroRepositorioException */ public Collection<Object[]> pesquisarDadosRelatorioAnalisePagamentoCartaoDebito( ConsultarRelatorioAnalisePagamentoCartaoDebitoHelper helper) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Collection<Object[]> dadosRelatorioAnalisePagamentoCartaoDebito = null; String hql = ""; Query query = null; try { hql = " SELECT " + " pag.id, " + " pag.numeroCartaoDebito, " + " cliente.nome, " + " pag.dataConfirmacao, " + " pag.valorPagamento, " + " usuarioConfirmacao.nomeUsuario," + " CASE " + " WHEN pag.indicadorConfirmadoOperadora = 1 THEN 'CONFIRMADO' " + " WHEN pag.indicadorConfirmadoOperadora = 2 THEN 'N�O CONFIRMADO' " + " END, " + " pag.dataConfirmadoOperadora, " + " pag.valorConfirmadoOperadora " + " FROM PagamentoCartaoDebito pag " + " INNER JOIN pag.cliente cliente " + " INNER JOIN pag.usuarioConfirmacao usuarioConfirmacao " + this.criarCondicionaisRelatorioAnalisePagamentoCartaoDebito(helper); //Cria query query = session.createQuery(hql); //Seta paramentros na query query = this.setarParametrosRelatorioAnalisePagamentoCartaoDebito(helper,query); //Executa query dadosRelatorioAnalisePagamentoCartaoDebito = query.list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return dadosRelatorioAnalisePagamentoCartaoDebito; } /** * [UC1043] Gerar Relat�rio An�lise Pagamento Cart�o D�bito * * @author Hugo Amorim * @date 21/06/2010 * * @throws ErroRepositorioException */ public Collection<Object[]> pesquisarDadosItenRelatorioAnalisePagamentoCartaoDebito( Integer idPagamentoCartaoDebito) throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); Collection<Object[]> dadosRelatorioAnalisePagamentoCartaoDebito = null; String sql = ""; try { sql= " SELECT \n" +" CASE " +" WHEN pcdi.cnta_id is not null THEN \n" +" (SELECT c.imov_id FROM faturamento.conta c WHERE pcdi.cnta_id = c.cnta_id \n" +" UNION SELECT ch.imov_id FROM faturamento.conta_historico ch WHERE pcdi.cnta_id = ch.cnta_id) \n" +" WHEN gpag_id is not null THEN \n" +" (SELECT gp.imov_id FROM faturamento.guia_pagamento gp WHERE pcdi.gpag_id = gp.gpag_id \n" +" UNION SELECT gph.imov_id FROM faturamento.guia_pagamento_historico gph WHERE pcdi.gpag_id = gph.gpag_id) \n" +" WHEN dbac_id is not null THEN \n" +" (SELECT dac.imov_id FROM faturamento.debito_a_cobrar dac WHERE pcdi.dbac_id = dac.dbac_id \n" +" UNION SELECT dach.imov_id FROM faturamento.deb_a_cobrar_hist dach WHERE pcdi.dbac_id = dach.dbac_id) \n" +" END as imovel, \n" +" CASE WHEN pcdi.cnta_id is not null THEN \n" +" '1' \n" +" WHEN pcdi.gpag_id is not null THEN \n" +" '2' \n" +" WHEN pcdi.dbac_id is not null THEN \n" +" '3' \n" +" END as tipo, \n" +" CASE WHEN pcdi.cnta_id is not null THEN \n" +" pcdi.cnta_id \n" +" WHEN pcdi.gpag_id is not null THEN \n" +" pcdi.gpag_id \n" +" WHEN pcdi.dbac_id is not null THEN \n" +" pcdi.dbac_id \n" +" END as id \n" +" FROM arrecadacao.pagto_cartao_debito_item pcdi \n" +" WHERE pacd_id = :idPagamentoCartaoDebito \n" +" ORDER BY 2 "; //Executa query dadosRelatorioAnalisePagamentoCartaoDebito = session.createSQLQuery(sql) .addScalar("imovel",Hibernate.INTEGER) .addScalar("tipo", Hibernate.STRING) .addScalar("id",Hibernate.INTEGER) .setInteger("idPagamentoCartaoDebito", idPagamentoCartaoDebito) .list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return dadosRelatorioAnalisePagamentoCartaoDebito; } /** * [UC1043] Gerar Relat�rio An�lise Pagamento Cart�o D�bito * * @author Hugo Amorim * @date 21/06/2010 * * @throws ErroRepositorioException */ public Collection<Object[]> pesquisarDetalheItenRelatorioAnalisePagamentoCartaoDebito( Integer tipoItem, Integer idItem)throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); Collection<Object[]> dadosRelatorioAnalisePagamentoCartaoDebito = null; String sql = ""; String sqlResultado = ""; try { switch (tipoItem) { case 1: sqlResultado =" (SELECT c.cnta_amreferenciaconta FROM faturamento.conta c WHERE c.cnta_id = pcdi.cnta_id \n" +" UNION SELECT ch.cnhi_amreferenciaconta FROM faturamento.conta_historico ch WHERE ch.cnta_id = pcdi.cnta_id) detalhe, \n" +" (SELECT (c.cnta_vlagua + c.cnta_vlesgoto + c.cnta_vldebitos - c.cnta_vlcreditos - coalesce( c.cnta_vlimpostos, 0 )) valor FROM faturamento.conta c WHERE c.cnta_id = pcdi.cnta_id \n" +" UNION SELECT (ch.cnhi_vlagua + ch.cnhi_vlesgoto + ch.cnhi_vldebitos - ch.cnhi_vlcreditos - coalesce( ch.cnhi_vlimpostos, 0 )) valor FROM faturamento.conta_historico ch WHERE ch.cnta_id = pcdi.cnta_id) valor \n"; break; case 2: sqlResultado =" (SELECT dt.dbtp_dsdebitotipo FROM faturamento.guia_pagamento gp \n" +" INNER JOIN faturamento.debito_tipo dt on dt.dbtp_id = gp.dbtp_id \n" +" WHERE gp.gpag_id = pcdi.gpag_id UNION \n" +" SELECT dt.dbtp_dsdebitotipo FROM faturamento.guia_pagamento_historico gph \n" +" INNER JOIN faturamento.debito_tipo dt on dt.dbtp_id = gph.dbtp_id \n" +" WHERE gph.gpag_id = pcdi.gpag_id) as detalhe, \n" +" (SELECT gp.gpag_vldebito FROM faturamento.guia_pagamento gp WHERE pcdi.gpag_id = gp.gpag_id \n" +" UNION SELECT gph.gphi_vldebito FROM faturamento.guia_pagamento_historico gph WHERE pcdi.gpag_id = gph.gpag_id) valor\n"; break; case 3: sqlResultado = " (SELECT dt.dbtp_dsdebitotipo FROM faturamento.debito_a_cobrar dac \n" +" INNER JOIN faturamento.debito_tipo dt on dt.dbtp_id = dac.dbtp_id \n" +" WHERE dac.dbac_id = pcdi.dbac_id UNION \n" +" SELECT dt.dbtp_dsdebitotipo FROM faturamento.deb_a_cobrar_hist dach \n" +" INNER JOIN faturamento.debito_tipo dt on dt.dbtp_id = dach.dbtp_id \n" +" WHERE dach.dbac_id = pcdi.dbac_id) as detalhe," +" (SELECT dac.dbac_vldebito FROM faturamento.debito_a_cobrar dac WHERE pcdi.dbac_id = dac.dbac_id \n" +" UNION SELECT dach.dahi_vldebito FROM faturamento.deb_a_cobrar_hist dach WHERE pcdi.dbac_id = dach.dbac_id) valor \n"; break; default: break; } sql= " SELECT pcdi.paci_id as id, \n" + sqlResultado +" FROM arrecadacao.pagto_cartao_debito_item pcdi \n" +" WHERE cnta_id = :id or gpag_id = :id or dbac_id = :id "; //Executa query dadosRelatorioAnalisePagamentoCartaoDebito = session.createSQLQuery(sql) .addScalar("id",Hibernate.INTEGER) .addScalar("detalhe",Hibernate.STRING) .addScalar("valor", Hibernate.BIG_DECIMAL) .setInteger("id", idItem) .list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return dadosRelatorioAnalisePagamentoCartaoDebito; } /** * [UC0724] - Processar Pagamento com Ficha de Compensa��o * * @author Raphael Rossiter * @date 24/11/2010 * * @param idConta * @return CobrancaDocumento * @throws ErroRepositorioException */ public CobrancaDocumento pesquisarCobrancaDocumentoProcessarFichaCompensacao(Integer idCobrancaDocumento) throws ErroRepositorioException { CobrancaDocumento retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select cbdo " + "from CobrancaDocumento cbdo " + "left join fetch cbdo.imovel imov " + "left join fetch imov.localidade locaImovel " + "left join fetch cbdo.cliente clie " + "left join fetch cbdo.localidade locaDocumento " + "inner join fetch cbdo.documentoTipo dotp " + "where cbdo.id = :idCobrancaDocumento "; retorno = (CobrancaDocumento) session.createQuery(consulta).setInteger( "idCobrancaDocumento", idCobrancaDocumento).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0339] Consultar Dados Di�rios da Arrecada��o * * @author Mariana Victor * @date 01/02/2011 * * @throws ErroRepositorioException */ public BigDecimal pesquisarFaturamentoCobradoEmConta(Integer anoMes) throws ErroRepositorioException { BigDecimal retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = " SELECT sum(rfat.rfat_vlitemfaturamento) AS valor " + " FROM financeiro.resumo_faturamento rfat" + " INNER JOIN financeiro.lancamento_tipo lctp ON rfat.lctp_id = lctp.lctp_id AND lctp.lctp_id = 25" + " INNER JOIN financeiro.lancamento_item lcit ON rfat.lcit_id = lcit.lcit_id AND lcit.lcit_id = 18" + " WHERE rfat.rfat_amreferencia = :anoMes "; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("valor", Hibernate.BIG_DECIMAL) .setInteger("anoMes", anoMes) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0339] Consultar Dados Di�rios da Arrecada��o * * @author Mariana Victor * @date 01/02/2011 * * @throws ErroRepositorioException */ public BigDecimal pesquisarFaturamentoCobradoEmContaComQuebra(Integer anoMes, Integer idGerenciaRegional, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = " SELECT sum(rfat.rfat_vlitemfaturamento) AS valor " + " FROM financeiro.resumo_faturamento rfat" + " INNER JOIN financeiro.lancamento_tipo lctp ON rfat.lctp_id = lctp.lctp_id AND lctp.lctp_id = 25" + " INNER JOIN financeiro.lancamento_item lcit ON rfat.lcit_id = lcit.lcit_id AND lcit.lcit_id = 18" + " WHERE rfat.rfat_amreferencia = :anoMes "; if ( idGerenciaRegional != null ) { consulta = consulta + " and rfat.greg_id = " + idGerenciaRegional; } if ( idCategoria != null ) { consulta = consulta + " and rfat.catg_id = " + idCategoria; } retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("valor", Hibernate.BIG_DECIMAL) .setInteger("anoMes", anoMes) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0188] Manter Guia de Pagamento * * [FS0019] � Verificar bloqueio de guia de pagamento * * @author Mariana Victor * @date 27/04/2011 * * @throws ErroRepositorioException */ public Collection<Integer> verificarBloqueioGuiaPagamento(Collection<GuiaPagamento> guiasPagamentos) throws ErroRepositorioException { Collection<Integer> retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = " SELECT cpit.gpag_id AS idGuia " + " FROM cobranca.contrato_parcel_item cpit " + " INNER JOIN cobranca.contrato_parcel cpar ON cpit.cpar_id = cpar.cpar_id " + " INNER JOIN cobranca.parcelamento_situacao pcst ON cpar.pcst_id = pcst.pcst_id " + " WHERE pcst.pcst_id = 1 " + " AND cpit.gpag_id in ( "; Iterator iterator = guiasPagamentos.iterator(); while (iterator.hasNext()) { GuiaPagamento guiaPagamento = (GuiaPagamento) iterator.next(); consulta = consulta + guiaPagamento.getId() + ", "; } consulta = Util.removerUltimosCaracteres(consulta, 2); consulta = consulta + " ) "; retorno = session.createSQLQuery(consulta) .addScalar("idGuia", Hibernate.INTEGER) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * * [UC0300] Classificar Pagamentos e Devolu��es * * @author Raphael Rossiter * @date 01/06/2011 * * @param idLocalidade * @param anoMesReferencia * * @throws ErroRepositorioException */ public void atualizarPagamentoBatimentoRelatorioPrimeiraSituacao(Integer idLocalidade, Integer anoMesReferencia) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarPagamento; try { atualizarPagamento = "update Pagamento set pgst_idanterior = null, pgmt_tmultimaalteracao = :dataCorrente " +"where pgmt_amreferenciaarrecadacao = :anoMesReferencia and loca_id = :idLocalidade " +"and pgst_idatual not in (:VALOR_A_BAIXAR , :DUPLICIDADE_EXCESSO_DEVOLVIDO) and pgst_idanterior is not null"; session.createQuery(atualizarPagamento) .setInteger("anoMesReferencia", anoMesReferencia) .setInteger("idLocalidade", idLocalidade) .setTimestamp("dataCorrente", new Date()) .setInteger("VALOR_A_BAIXAR", PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("DUPLICIDADE_EXCESSO_DEVOLVIDO", PagamentoSituacao.DUPLICIDADE_EXCESSO_DEVOLVIDO) .executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * * [UC0300] Classificar Pagamentos e Devolu��es * * @author Raphael Rossiter * @date 01/06/2011 * * @param idLocalidade * @param anoMesReferencia * * @throws ErroRepositorioException */ public void atualizarPagamentoBatimentoRelatorioSegundaSituacao(Integer idLocalidade, Integer anoMesReferencia) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarPagamento; try { atualizarPagamento = "update Pagamento set pgmt_vlexcedente = pgmt_vlpagamento, pgmt_tmultimaalteracao = :dataCorrente " +"where pgmt_amreferenciaarrecadacao = :anoMesReferencia and loca_id = :idLocalidade " +"and pgst_idatual in (:PAGAMENTO_EM_DUPLICIDADE , :DOCUMENTO_INEXISTENTE, :VALOR_A_BAIXAR, :DOCUMENTO_A_CONTABILIZAR) " +"and pgmt_vlexcedente <> pgmt_vlpagamento"; session.createQuery(atualizarPagamento) .setInteger("anoMesReferencia", anoMesReferencia) .setInteger("idLocalidade", idLocalidade) .setTimestamp("dataCorrente", new Date()) .setInteger("PAGAMENTO_EM_DUPLICIDADE", PagamentoSituacao.PAGAMENTO_EM_DUPLICIDADE) .setInteger("DOCUMENTO_INEXISTENTE", PagamentoSituacao.DOCUMENTO_INEXISTENTE) .setInteger("VALOR_A_BAIXAR", PagamentoSituacao.VALOR_A_BAIXAR) .setInteger("DOCUMENTO_A_CONTABILIZAR", PagamentoSituacao.DOCUMENTO_A_CONTABILIZAR) .executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * * [UC0300] Classificar Pagamentos e Devolu��es * * @author Raphael Rossiter * @date 01/06/2011 * * @param idLocalidade * @param anoMesReferencia * * @throws ErroRepositorioException */ public void atualizarPagamentoBatimentoRelatorioTerceiraSituacao(Integer idLocalidade, Integer anoMesReferencia) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarPagamento; try { atualizarPagamento = "update Pagamento set pgst_idanterior = :DOCUMENTO_INEXISTENTE, pgmt_tmultimaalteracao = :dataCorrente " +"where pgmt_amreferenciaarrecadacao = :anoMesReferencia and loca_id = :idLocalidade " +"and pgst_idatual = :VALOR_A_BAIXAR and pgst_idanterior = :VALOR_A_BAIXAR " +"and cnta_id is null and gpag_id is null and dbac_id is null and cbdo_id is null"; session.createQuery(atualizarPagamento) .setInteger("anoMesReferencia", anoMesReferencia) .setInteger("idLocalidade", idLocalidade) .setTimestamp("dataCorrente", new Date()) .setInteger("DOCUMENTO_INEXISTENTE", PagamentoSituacao.DOCUMENTO_INEXISTENTE) .setInteger("VALOR_A_BAIXAR", PagamentoSituacao.VALOR_A_BAIXAR) .executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * * [UC0300] Classificar Pagamentos e Devolu��es * * @author Raphael Rossiter * @date 01/06/2011 * * @param idLocalidade * @param anoMesReferencia * * @throws ErroRepositorioException */ public void atualizarPagamentoBatimentoRelatorioQuartaSituacao(Integer idLocalidade, Integer anoMesReferencia) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String atualizarPagamento; try { atualizarPagamento = "update Pagamento set pgst_idanterior = :PAGAMENTO_EM_DUPLICIDADE, pgmt_tmultimaalteracao = :dataCorrente " +"where pgmt_amreferenciaarrecadacao = :anoMesReferencia and loca_id = :idLocalidade " +"and pgst_idatual = :VALOR_A_BAIXAR and pgst_idanterior = :VALOR_A_BAIXAR " +"and (cnta_id is not null or gpag_id is not null or dbac_id is not null or cbdo_id is not null)"; session.createQuery(atualizarPagamento) .setInteger("anoMesReferencia", anoMesReferencia) .setInteger("idLocalidade", idLocalidade) .setTimestamp("dataCorrente", new Date()) .setInteger("PAGAMENTO_EM_DUPLICIDADE", PagamentoSituacao.PAGAMENTO_EM_DUPLICIDADE) .setInteger("VALOR_A_BAIXAR", PagamentoSituacao.VALOR_A_BAIXAR) .executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0724] - Processar Pagamento com Ficha de Compensa��o * * @author Mariana Victor * @data 04/08/2011 */ public CobrancaDocumentoItem pesquisarCobrancaDocumentoItemProcessarFichaCompensacao(Integer idPrestacao) throws ErroRepositorioException { Object[] dados = null; CobrancaDocumentoItem retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = " SELECT cbdo.cbdo_id AS idDocumento, " //0 + " cbdo.clie_id AS idCliente, " //1 + " cdit.cdit_id AS idItem, " //2 + " cbdo.dotp_id AS idDocumentoTipo " //3 + " FROM cobranca.cobranca_documento_item cdit " + " INNER JOIN cobranca.cobranca_documento cbdo on cbdo.cbdo_id = cdit.cbdo_id " + " WHERE cdit.cppr_id = :idPrestacao "; dados = (Object[]) session.createSQLQuery(consulta) .addScalar("idDocumento", Hibernate.INTEGER) .addScalar("idCliente", Hibernate.INTEGER) .addScalar("idItem", Hibernate.INTEGER) .addScalar("idDocumentoTipo", Hibernate.INTEGER) .setInteger("idPrestacao", idPrestacao) .setMaxResults(1).uniqueResult(); if (dados != null) { CobrancaDocumento cobrancaDocumento = new CobrancaDocumento(); retorno = new CobrancaDocumentoItem(); if (dados[0] != null) { cobrancaDocumento.setId((Integer) dados[0]); } if (dados[1] != null) { Cliente cliente = new Cliente(); cliente.setId((Integer) dados[1]); cobrancaDocumento.setCliente(cliente); } if (dados[2] != null) { retorno.setId((Integer) dados[2]); } if (dados[3] != null) { DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId((Integer) dados[3]); cobrancaDocumento.setDocumentoTipo(documentoTipo); } retorno.setCobrancaDocumento(cobrancaDocumento); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0724] - Processar Pagamento com Ficha de Compensa��o * * @author Raphael Rossiter * @date 26/07/2011 * * @param idGuiaPagamento * @return GuiaPagamento * @throws ErroRepositorioException */ public GuiaPagamento pesquisarGuiaPagamentoProcessarFichaCompensacao(Integer idGuiaPagamento) throws ErroRepositorioException { GuiaPagamento retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select gpag " + "from GuiaPagamento gpag " + "left join fetch gpag.imovel imov " + "left join fetch imov.localidade locaImovel " + "left join fetch gpag.cliente clie " + "left join fetch gpag.localidade locaGuiaPagamento " + "where gpag.id = :idGuiaPagamento " + "and gpag.debitoCreditoSituacaoAtual.id IN(:normal, :incluida, :retificada) " + "order by gpag.dataVencimento"; retorno = (GuiaPagamento) session.createQuery(consulta) .setInteger("idGuiaPagamento", idGuiaPagamento) .setInteger("normal",DebitoCreditoSituacao.NORMAL) .setInteger("incluida",DebitoCreditoSituacao.INCLUIDA) .setInteger("retificada",DebitoCreditoSituacao.RETIFICADA) .uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC 1215] � Gerar Relat�rio de Documentos n�o Aceitos * * @author Raimundo Martins * * @date 19/08/2011 * @return List * @throws ErroRepositorioException */ public List<RelatorioDocumentoNaoAceitosBean> pesquisarDocumentosNaoAceitos(Arrecadador arrecadador, String periodoInicial, String periodoFinal, Integer movimentoArrecadadorCodigo, AvisoBancario avisoBancario, ArrecadacaoForma arrecadacaoForma) throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); List<RelatorioDocumentoNaoAceitosBean> relatorioDocumentosNaoAceitos = new ArrayList<RelatorioDocumentoNaoAceitosBean>(); String hql = "SELECT arrc.arrc_cdagente||' - '||clie.CLIE_NMCLIENTE AS arrecadador, " + "dbtp.dbtp_dsdebitotipo AS tipoDebito, " + "avbc.avbc_dtlancamento AS dataLancamento, avbc.avbc_nnsequencial AS sequencial," + "armv.armv_nnnsa AS nsa, arfm.arfm_dsarrecadacaoforma AS formaArrecadacao, pgmt.pgmt_dtpagamento AS dataPagamento, " + "pgmt.pgmt_vlpagamento AS valor FROM " + "arrecadacao.PAGAMENTO pgmt " + "INNER JOIN faturamento.DEBITO_TIPO dbtp ON pgmt.DBTP_ID = dbtp.dbtp_id " + "INNER JOIN cadastro.SISTEMA_PARAMETROS sistp ON sistp.CLIE_IDDOCNAOIDENTIFICADO = pgmt.CLIE_ID " + "INNER JOIN ARRECADACAO.AVISO_BANCARIO avbc ON pgmt.AVBC_ID = avbc.avbc_id " + "INNER JOIN ARRECADACAO.ARRECADADOR arrc ON avbc.arrc_id = arrc.arrc_id " + "INNER JOIN CADASTRO.cliente clie ON arrc.clie_id = clie.clie_id "+ "INNER JOIN ARRECADACAO.arrecadador_mov_item amit ON pgmt.amit_id = amit.amit_id " + "INNER JOIN ARRECADACAO.arrecadador_movimento armv ON armv.armv_id = amit.armv_id " + "INNER JOIN ARRECADACAO.arrecadacao_forma arfm ON pgmt.arfm_id = arfm.arfm_id " + "WHERE " + "dbtp.DBTP_ID = :debitoTipo " + "AND pgmt.pgmt_dtpagamento BETWEEN :periodoInicial AND :periodoFinal "; if(arrecadador !=null){ hql+=" AND arrc.arrc_cdagente = :arrecadacaoCodigo "; } if(arrecadacaoForma !=null){ hql+=" AND pgmt.arfm_id = :arrecadacaoFormaId "; } if(avisoBancario !=null){ hql+=" AND pgmt.AVBC_ID = :avisoBancarioId "; } if(movimentoArrecadadorCodigo !=null && movimentoArrecadadorCodigo > 0){ hql+=" AND amit.armv_id = :movimentoArrecadadorCodigo "; } hql+=" ORDER BY arrecadador"; try{ Query query = session.createSQLQuery(hql) .addScalar("arrecadador", Hibernate.STRING) .addScalar("tipoDebito", Hibernate.STRING) .addScalar("dataLancamento",Hibernate.DATE) .addScalar("sequencial", Hibernate.SHORT) .addScalar("nsa",Hibernate.INTEGER) .addScalar("formaArrecadacao",Hibernate.STRING) .addScalar("dataPagamento",Hibernate.DATE) .addScalar("valor",Hibernate.BIG_DECIMAL); SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); query.setInteger("debitoTipo", DebitoTipo.DOCUMENTO_NAO_ACEITO); query.setDate("periodoInicial", format.parse(periodoInicial)); query.setDate("periodoFinal", format.parse(periodoFinal)); if(arrecadador !=null){ query.setInteger("arrecadacaoCodigo", arrecadador.getCodigoAgente()); } if(arrecadacaoForma !=null){ query.setInteger("arrecadacaoFormaId", arrecadacaoForma.getId()); } if(avisoBancario !=null){ query.setInteger("avisoBancarioId",avisoBancario.getId()); } if(movimentoArrecadadorCodigo !=null && movimentoArrecadadorCodigo > 0){ query.setInteger("movimentoArrecadadorCodigo",movimentoArrecadadorCodigo); } //relatorioDocumentosNaoAceitos = query.list(); for (Object[] linha : (List<Object[]>) query.list()) { RelatorioDocumentoNaoAceitosBean relatorioDocumentoNaoAceitosBean = new RelatorioDocumentoNaoAceitosBean(); relatorioDocumentoNaoAceitosBean.setArrecadador(linha[0].toString()); relatorioDocumentoNaoAceitosBean.setTipoDebito(linha[1].toString()); relatorioDocumentoNaoAceitosBean.setDataLancamento(format.format((Date)linha[2])); relatorioDocumentoNaoAceitosBean.setSequencial(linha[3].toString()); relatorioDocumentoNaoAceitosBean.setNsa(linha[4].toString()); relatorioDocumentoNaoAceitosBean.setFormaArrecadacao(linha[5].toString()); relatorioDocumentoNaoAceitosBean.setDataPagamento(format.format(linha[6])); relatorioDocumentoNaoAceitosBean.setValor((BigDecimal)linha[7]); relatorioDocumentosNaoAceitos.add(relatorioDocumentoNaoAceitosBean); } return relatorioDocumentosNaoAceitos; } catch(HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); }catch(ParseException ex){ throw new ErroRepositorioException(ex, "Erro no Parser"); }finally { HibernateUtil.closeSession(session); } } /** * @author Raimundo Martins * * @date 13/09/2011 * */ public boolean existeClienteIdDocNaoIdentificado(){ Session session = HibernateUtil.getSession(); boolean retorno = false; String sisparam = "SELECT sistp.CLIE_IDDOCNAOIDENTIFICADO as clienteFicticio FROM cadastro.SISTEMA_PARAMETROS sistp"; Query querySisParam = session.createSQLQuery(sisparam).addScalar("clienteFicticio",Hibernate.INTEGER); List linhaSisParam = querySisParam.list(); if(linhaSisParam.get(0) !=null){ retorno = true; } return retorno; } /** * [UC 1217] � Gerar Relat�rio de Transferencia de Pagamento * * @author Raimundo Martins * * @date 19/08/2011 */ public List<RelatorioTranferenciaPagamentoBean> pesquisarTransfereciasPagamento(Arrecadador arrecadador, String periodoInicial, String periodoFinal, AvisoBancario avisoBancario, ArrecadacaoForma arrecadacaoForma, DebitoTipo debitoTipo, DocumentoTipo documentoTipo) throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); List<RelatorioTranferenciaPagamentoBean> relatorioTransferenciasPagamento = new ArrayList<RelatorioTranferenciaPagamentoBean>(); String hql ="SELECT arrc.arrc_cdagente " + " ||' - ' " + " ||clie.CLIE_NMCLIENTE AS arrecadador, " + " pgmt.imov_id AS matricula, " + " dbtp.dbtp_dsdebitotipo AS tipo_debito, " + " dotp.dotp_dsdocumentotipo AS tipo_documento, " + " CASE " + " WHEN(pgmt.dotp_id = 1) " + " THEN cnta.cnta_amreferenciaconta " + " WHEN(pgmt.dotp_id = 6) " + " THEN dbac.dbac_amreferenciadebito " + " ELSE NULL " + " END AS mesAno, " + " CASE " + " WHEN(pgmt.dotp_id = 6) " + " THEN dbac.dbac_nnprestacaocobradas " + " ||'/' " + " ||dbac.dbac_nnprestacaodebito " + " WHEN(pgmt.dotp_id = 7) " + " THEN gpag.gpag_nnprestacaodebito " + " ||'/' " + " ||gpag.gpag_nnprestacaototal " + " ELSE NULL " + " END AS presParcela, " + " CASE " + " WHEN(pgmt.dotp_id = 1) " + " THEN cnta.cnta_dtvencimentoconta " + " WHEN(pgmt.dotp_id = 7) " + " THEN gpag.gpag_dtvencimento " + " ELSE NULL " + " END AS dtVencimento, " + " CASE " + " WHEN(pgmt.dotp_id = 1) " + " THEN (cnta.cnta_vlagua + cnta.cnta_vlesgoto + cnta.cnta_vldebitos + cnta.cnta_vlcreditos) " + " WHEN(pgmt.dotp_id = 6) " + " THEN dbac.dbac_vldebito " + " ELSE gpag.gpag_vldebito " + " END AS valor, " + " CASE " + " WHEN(pgmt.dotp_id = 1) " + " THEN dcst_CONTA.dcst_dsdebitocreditosituacao " + " WHEN(pgmt.dotp_id = 6) " + " THEN dcst_DEBITO_A_COBRAR.dcst_dsdebitocreditosituacao " + " ELSE dcst_GUIA_DE_PAGAMENTO.dcst_dsdebitocreditosituacao " + " END AS situacao, " + " arfm.arfm_dsarrecadacaoforma AS forma_arrecadacao, " + " pgmt.pgmt_dtpagamento AS data_pagamento, " + " pgmt.pgmt_vlpagamento AS valor_pagamento " + "FROM " + " (SELECT dotp_id, " + " pgmt_dtpagamento, " + " pgmt_vlpagamento, " + " AVBC_ID, " + " DBTP_ID, " + " arfm_id, " + " cnta_id, " + " dbac_id, " + " gpag_id, " + " AMIT_ID, " + " IMOV_ID " + " FROM arrecadacao.PAGAMENTO " + " UNION " + " SELECT dotp_id, " + " PGHI_DTPAGAMENTO, " + " PGHI_VLPAGAMENTO, " + " AVBC_ID, " + " DBTP_ID, " + " arfm_id, " + " cnta_id, " + " dbac_id, " + " gpag_id, " + " AMIT_ID, " + " IMOV_ID " + " FROM arrecadacao.PAGAMENTO_HISTORICO " + " ) pgmt " + "INNER JOIN ARRECADACAO.arrecadador_mov_item amit " + "ON pgmt.amit_id = amit.amit_id " + "INNER JOIN ARRECADACAO.AVISO_BANCARIO avbc " + "ON pgmt.AVBC_ID = avbc.avbc_id " + "INNER JOIN ARRECADACAO.ARRECADADOR arrc " + "ON avbc.arrc_id = arrc.arrc_id " + "INNER JOIN CADASTRO.cliente clie " + "ON arrc.clie_id = clie.clie_id " + "LEFT JOIN faturamento.DEBITO_TIPO dbtp " + "ON pgmt.DBTP_ID = dbtp.dbtp_id " + "INNER JOIN ARRECADACAO.arrecadacao_forma arfm " + "ON pgmt.arfm_id = arfm.arfm_id " + "INNER JOIN COBRANCA.documento_tipo dotp " + "ON pgmt.dotp_id = dotp.dotp_id " + "LEFT JOIN FATURAMENTO.conta cnta " + "ON pgmt.cnta_id = cnta.cnta_id " + "LEFT JOIN FATURAMENTO.debito_a_cobrar dbac " + "ON pgmt.dbac_id = dbac.dbac_id " + "LEFT JOIN FATURAMENTO.guia_pagamento gpag " + "ON pgmt.gpag_id = gpag.gpag_id " + "LEFT JOIN FATURAMENTO.debito_credito_situacao dcst_CONTA " + "ON dcst_CONTA.dcst_id = cnta.dcst_idatual " + "LEFT JOIN FATURAMENTO.debito_credito_situacao dcst_DEBITO_A_COBRAR " + "ON dcst_DEBITO_A_COBRAR.dcst_id = dbac.dcst_idatual " + "LEFT JOIN FATURAMENTO.debito_credito_situacao dcst_GUIA_DE_PAGAMENTO " + "ON dcst_GUIA_DE_PAGAMENTO.dcst_id = gpag.dcst_idatual " + "WHERE (pgmt.DBTP_ID IS NULL " + "OR pgmt.DBTP_ID != :debitoTipo) " + "AND amit.amit_icaceitacao = :amitIndAceitacao " + "AND pgmt.pgmt_dtpagamento BETWEEN TO_DATE(:periodoInicial, 'DD/MM/YYYY') AND TO_DATE(:periodoFinal, 'DD/MM/YYYY')"; if(arrecadador !=null){ hql+=" AND arrc.arrc_cdagente = :arrecadacaoCodigo "; } if(arrecadacaoForma !=null){ hql+=" AND pgmt.arfm_id = :arrecadacaoFormaId "; } if(avisoBancario !=null){ hql+=" AND pgmt.AVBC_ID = :avisoBancarioId "; } if(debitoTipo !=null){ hql+=" AND pgmt.DBTP_ID = :debitoTipoId "; } if(documentoTipo !=null){ hql+=" AND pgmt.dotp_id = :documentoTipoId "; } try{ Query query = session.createSQLQuery(hql+" ORDER BY arrecadador") .addScalar("arrecadador", Hibernate.STRING) .addScalar("matricula", Hibernate.STRING) .addScalar("tipo_debito", Hibernate.STRING) .addScalar("tipo_documento", Hibernate.STRING) .addScalar("mesAno",Hibernate.INTEGER) .addScalar("presParcela", Hibernate.STRING) .addScalar("dtVencimento",Hibernate.DATE) .addScalar("valor",Hibernate.BIG_DECIMAL) .addScalar("situacao",Hibernate.STRING) .addScalar("forma_arrecadacao",Hibernate.STRING) .addScalar("data_pagamento",Hibernate.DATE) .addScalar("valor_pagamento",Hibernate.BIG_DECIMAL); SimpleDateFormat format = new SimpleDateFormat("dd/MM/yy"); query.setInteger("debitoTipo", DebitoTipo.DOCUMENTO_NAO_ACEITO); query.setString("periodoInicial", periodoInicial); query.setString("periodoFinal", periodoFinal); query.setShort("amitIndAceitacao", ConstantesSistema.NAO); if(arrecadador !=null){ query.setInteger("arrecadacaoCodigo", arrecadador.getCodigoAgente()); } if(arrecadacaoForma !=null){ query.setInteger("arrecadacaoFormaId", arrecadacaoForma.getId()); } if(avisoBancario !=null){ query.setInteger("avisoBancarioId",avisoBancario.getId()); } if(debitoTipo !=null){ query.setInteger("debitoTipoId",debitoTipo.getId()); } if(documentoTipo !=null){ query.setInteger("documentoTipoId",documentoTipo.getId()); } List<Object[]> list = query.list(); if(list !=null && !list.isEmpty()){ for (Object[] linha : list) { RelatorioTranferenciaPagamentoBean relatorioTranferenciaPagamentoBean = new RelatorioTranferenciaPagamentoBean(); relatorioTranferenciaPagamentoBean.setArrecadador(linha[0].toString()); relatorioTranferenciaPagamentoBean.setMatricula(linha[1].toString()); if(linha[2] !=null){ relatorioTranferenciaPagamentoBean.setTipoDebito(linha[2].toString()); } else{ relatorioTranferenciaPagamentoBean.setTipoDebito(""); } if(linha[3] !=null){ relatorioTranferenciaPagamentoBean.setTipoDocumento(linha[3].toString()); } else{ relatorioTranferenciaPagamentoBean.setTipoDocumento(""); } if(linha[4] !=null){ relatorioTranferenciaPagamentoBean.setMesAno(Util.formatarAnoMesParaMesAno(Integer.parseInt(linha[4].toString()))); } else{ relatorioTranferenciaPagamentoBean.setMesAno(""); } if(linha[5] !=null && !linha[5].toString().equals("/")){ relatorioTranferenciaPagamentoBean.setPresParcela(linha[5].toString()); } else{ relatorioTranferenciaPagamentoBean.setPresParcela(""); } if(linha[6] !=null){ relatorioTranferenciaPagamentoBean.setDataVencimento(format.format((Date)linha[6])); } else{ relatorioTranferenciaPagamentoBean.setDataVencimento(""); } if(linha[7] !=null){ relatorioTranferenciaPagamentoBean.setValor(Util.formatarMoedaReal((BigDecimal)linha[7])); } else{ relatorioTranferenciaPagamentoBean.setValor(""); } if(linha[8] !=null){ relatorioTranferenciaPagamentoBean.setSituacao(linha[8].toString()); } else{ relatorioTranferenciaPagamentoBean.setSituacao(""); } if(linha[9] !=null){ relatorioTranferenciaPagamentoBean.setFormaArrecadacao(linha[9].toString()); } else{ relatorioTranferenciaPagamentoBean.setFormaArrecadacao(""); } if(linha[10] !=null){ relatorioTranferenciaPagamentoBean.setDataPagamento(format.format((Date)linha[10])); }else{ relatorioTranferenciaPagamentoBean.setDataPagamento(""); } if(linha[11] !=null){ relatorioTranferenciaPagamentoBean.setValorPagamento((BigDecimal)linha[11]); } else{ relatorioTranferenciaPagamentoBean.setValorPagamento(new BigDecimal(0)); } relatorioTransferenciasPagamento.add(relatorioTranferenciaPagamentoBean); } } return relatorioTransferenciasPagamento; } catch(HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); }finally { HibernateUtil.closeSession(session); } } /** * [UC0242] - Registrar Movimento dos Arrecadadores * * @author Mariana Victor * @date 18/08/2011 * * @param codigoConstante * * @return DebitoTipo * @throws ErroRepositorioException */ public DebitoTipo obterDebitoTipoCodigoConstante(Integer codigoConstante) throws ErroRepositorioException { DebitoTipo retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT debitoTipo " + "FROM DebitoTipo debitoTipo " + "WHERE debitoTipo.codigoConstante = :codigoConstante "; retorno = (DebitoTipo) session.createQuery(consulta) .setInteger("codigoConstante", codigoConstante) .setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC1214] Informar Acerto Documentos N�o Aceitos * * 3. O sistema identifica os pagamentos com documentos n�o aceitos * que foram gerados para um cliente fict�cio e * junto com o filtro selecionado pelo usu�rio. * * @author Mariana Victor * @date 19/08/2011 * * @param helper * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarPagamentosDocumentosNaoAceitos( InformarAcertoDocumentosNaoAceitosPagamentoHelper helper) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = " SELECT pgmt.pgmt_id AS idPagamento, " //0 + " dbtp.dbtp_dsdebitotipo AS tipoDebito, " //1 + " arfm.arfm_dsarrecadacaoforma AS arrecadacaoForma, " //2 + " pgmt.pgmt_dtpagamento AS dataPagamento, " //3 + " pgmt.pgmt_vlpagamento AS valorPagamento, " //4 + " armv.armv_nnnsa AS nsa, " //5 + " clie.clie_nmcliente AS arrecadador " //6 + " FROM arrecadacao.pagamento pgmt " + " INNER JOIN arrecadacao.aviso_bancario avbc ON pgmt.avbc_id = avbc.avbc_id " + " INNER JOIN faturamento.debito_tipo dbtp ON pgmt.dbtp_id = dbtp.dbtp_id " + " INNER JOIN arrecadacao.arrecadacao_forma arfm ON arfm.arfm_id = avbc.arfm_id " + " INNER JOIN arrecadacao.arrecadador_mov_item amit ON amit.amit_id = pgmt.amit_id " + " INNER JOIN arrecadacao.arrecadador_movimento armv ON armv.armv_id = amit.armv_id " + " INNER JOIN arrecadacao.arrecadador arrc ON arrc.arrc_id = avbc.arrc_id " + " INNER JOIN cadastro.cliente clie ON clie.clie_id = arrc.clie_id " + " WHERE pgmt.dbtp_id= :idDebitoTipo " + " AND pgmt.clie_id = :idClienteFicticio " + " AND pgmt.pgmt_dtpagamento between :periodoInicial AND :periodoFinal "; if (helper.getIdArrecadador() != null) { consulta = consulta + " AND avbc.arrc_id = :idArrecadador "; } if (helper.getIdAvisoBancario() != null) { consulta = consulta + " AND pgmt.avbc_id = :idAvisoBancario "; } if (helper.getIdArrecadadorMov() != null) { consulta = consulta + " AND armv.armv_id = :idArrecadadorMov "; } if (helper.getIdFormaArrecadacao() != null) { consulta = consulta + " AND arfm.arfm_id = :idFormaArrecadacao "; } consulta = consulta + " ORDER BY pgmt.pgmt_dtpagamento DESC "; Query query = session.createSQLQuery(consulta) .addScalar("idPagamento", Hibernate.INTEGER) .addScalar("tipoDebito", Hibernate.STRING) .addScalar("arrecadacaoForma", Hibernate.STRING) .addScalar("dataPagamento", Hibernate.DATE) .addScalar("valorPagamento", Hibernate.BIG_DECIMAL) .addScalar("nsa", Hibernate.INTEGER) .addScalar("arrecadador", Hibernate.STRING) .setInteger("idDebitoTipo", DebitoTipo.DOCUMENTO_NAO_ACEITO) .setInteger("idClienteFicticio", helper.getIdClienteFicticio()) .setDate("periodoInicial", helper.getPeriodoPagamentoInicial()) .setDate("periodoFinal", helper.getPeriodoPagamentoFinal()); if (helper.getIdArrecadador() != null) { query.setInteger("idArrecadador", helper.getIdArrecadador()); } if (helper.getIdAvisoBancario() != null) { query.setInteger("idAvisoBancario", helper.getIdAvisoBancario()); } if (helper.getIdArrecadadorMov() != null) { query.setInteger("idArrecadadorMov", helper.getIdArrecadadorMov()); } if (helper.getIdFormaArrecadacao() != null) { query.setInteger("idFormaArrecadacao", helper.getIdFormaArrecadacao()); } retorno = query.list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC1214] Informar Acerto Documentos N�o Aceitos * * 7.2.1. Total do Pagamento (PGMT _VLPAGAMENTO do pagamento doc. n�o aceito). * * @author Mariana Victor * @date 22/08/2011 * * @param idPagamento * * @return BigDecimal * @throws ErroRepositorioException */ public BigDecimal pesquisarValorPagamento( Integer idPagamento) throws ErroRepositorioException { BigDecimal retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = " SELECT pgmt.pgmt_vlpagamento AS valorPagamento " + " FROM arrecadacao.pagamento pgmt " + " WHERE pgmt.pgmt_id= :idPagamento "; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("valorPagamento", Hibernate.BIG_DECIMAL) .setInteger("idPagamento", idPagamento) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC1214] Informar Acerto Documentos N�o Aceitos * * @author Mariana Victor * @date 24/08/2011 * * @param idGuia * * @return Integer * @throws ErroRepositorioException */ public Integer pesquisarLocalidadeGuiaPagamento( Integer idGuia) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = " SELECT gpag.loca_id AS idLocalidade " + " FROM faturamento.guia_pagamento gpag " + " WHERE gpag.gpag_id = :idGuia "; retorno = (Integer) session.createSQLQuery(consulta) .addScalar("idLocalidade", Hibernate.INTEGER) .setInteger("idGuia", idGuia) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC1214] Informar Acerto Documentos N�o Aceitos * * @author Mariana Victor * @date 24/08/2011 * * @param idConta * * @return Integer * @throws ErroRepositorioException */ public Integer pesquisarLocalidadeConta( Integer idConta) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = " SELECT cnta.loca_id AS idLocalidade " + " FROM faturamento.conta cnta " + " WHERE cnta.cnta_id = :idConta "; retorno = (Integer) session.createSQLQuery(consulta) .addScalar("idLocalidade", Hibernate.INTEGER) .setInteger("idConta", idConta) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC1214] Informar Acerto Documentos N�o Aceitos * * @author Mariana Victor * @date 24/08/2011 * * @param idDebitoACobrar * * @return Integer * @throws ErroRepositorioException */ public Integer pesquisarLocalidadeDebitoACobrar( Integer idDebitoACobrar) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = " SELECT dbac.loca_id AS idLocalidade " + " FROM faturamento.debito_a_cobrar dbac " + " WHERE dbac.dbac_id = :idDebitoACobrar "; retorno = (Integer) session.createSQLQuery(consulta) .addScalar("idLocalidade", Hibernate.INTEGER) .setInteger("idDebitoACobrar", idDebitoACobrar) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Calcula o valor total do movimento arrecadador * * @author Gustavo Amaral * @date 14/09/2011 * * @param arrecadadorMovimento * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarValorAcertosArrecadadorMovimento(Integer idArrecadadorMovimento) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = " select " + " (select sum(avac.valorAcerto)" + " from AvisoAcerto avac" + " where avac.avisoBancario.arrecadadorMovimento.id = :idArrecadadorMovimento and" + " avac.indicadorCreditoDebito = 1" + " and avac.indicadorArrecadacaoDevolucao = 1)as vlAcertosArrecadacao1," + // 0 " (select sum(avac.valorAcerto)" + " from AvisoAcerto as avac" + " where avac.avisoBancario.arrecadadorMovimento.id = :idArrecadadorMovimento and" + " avac.indicadorCreditoDebito = 2" + " and avac.indicadorArrecadacaoDevolucao = 1)as vlAcertosArrecadacao2," + // 1 " (select sum(avac.valorAcerto)" + " from AvisoAcerto as avac" + " where avac.avisoBancario.arrecadadorMovimento.id = :idArrecadadorMovimento and" + " avac.indicadorCreditoDebito = 1" + " and avac.indicadorArrecadacaoDevolucao = 2)as vlAcertosDevolucao1," + // 2 " (select sum(avac.valorAcerto)" + " from AvisoAcerto as avac" + " where avac.avisoBancario.arrecadadorMovimento.id = :idArrecadadorMovimento and" + " avac.indicadorCreditoDebito = 2" + " and avac.indicadorArrecadacaoDevolucao = 2)as vlAcertosDevolucao2" + // 3 " from ArrecadadorMovimento as armv" + " where armv.id = :idArrecadadorMovimento"; retorno = (Collection) session.createQuery(consulta).setInteger( "idArrecadadorMovimento", idArrecadadorMovimento).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do Cliente * * @author Rodrigo Cabral * @date 15/09/11 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public Collection pesquisarPagamentoHistoricoClienteCount(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection retorno = null; // Object pagamentoClienteCount; String hql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.condicionaisPagamentoHistorico( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = " SELECT COUNT(c.pghi_id) as qtde " + " FROM arrecadacao.pagamento_historico c " + " INNER JOIN faturamento.conta_historico i " + " on i.cnta_id = c.cnta_id " + " INNER JOIN " + " cadastro.cliente_conta_historico b " + " on b.cnta_id = c.cnta_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " WHERE " + condicionais + " union all " + " SELECT COUNT(c.pghi_id) as qtde " + " FROM arrecadacao.pagamento_historico c " + " INNER JOIN " + " faturamento.debito_a_cobrar b1 " + " on b1.dbac_id = c.dbac_id " + " INNER JOIN " + " cadastro.cliente_imovel b " + " on b.imov_id = b1.imov_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " WHERE " + condicionais + " union all " + " SELECT COUNT(c.pghi_id) as qtde " + " FROM arrecadacao.pagamento_historico c " + " INNER JOIN " + " faturamento.guia_pagamento b1 " + " on b1.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente_guia_pagamento b " + " on b.gpag_id = c.gpag_id " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = b.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " WHERE " + condicionais + " union all " + " SELECT COUNT(c.pghi_id) as qtde " + " FROM arrecadacao.pagamento_historico c " + " INNER JOIN " + " cadastro.cliente a " + " on a.clie_id = c.clie_id " + " INNER JOIN " + " cadastro.localidade d " + " on c.loca_id = d.loca_id " + " INNER JOIN " + " arrecadacao.aviso_bancario f " + " on c.avbc_id = f.avbc_id " + " INNER JOIN " + " arrecadacao.arrecadador g " + " on f.arrc_id = g.arrc_id " + " INNER JOIN " + " cadastro.cliente h " + " on h.clie_id = g.clie_id " + " WHERE "; idTipoRelacao = null; String condicionaisClienteHistoricoPagamento = this .condicionaisPagamentoHistorico(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); hql = hql + condicionaisClienteHistoricoPagamento; retorno = session.createSQLQuery(hql).addScalar("qtde", Hibernate.INTEGER).list(); // hql = " select count (pagamento.id) " // + " from gcom.arrecadacao.pagamento.Pagamento as pagamento " // + " inner join pagamento.cliente as cliente " // + condicionais + " "; // pagamentoClienteCount = session.createQuery(hql).setMaxResults(1) // .uniqueResult(); // // if (pagamentoClienteCount != null) { // retorno = (Integer) pagamentoClienteCount; // } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Cria condi��es em Sql para pagamento historico * * @author Rodrigo Cabral * @date 15/09/11 * * @return Collection<Pagamento> * @throws ErroRepositorioException */ public String condicionaisPagamentoHistorico(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) { String sql = " "; if (idImovel != null && !idImovel.equals("")) { sql = sql + " c.imov_id = " + idImovel + " and "; } if (idCliente != null && !idCliente.equals("")) { sql = sql + " a.clie_id = " + idCliente + " and "; } if (idTipoRelacao != null && !idTipoRelacao.equals("")) { sql = sql + " b.crtp_id = " + idTipoRelacao + " and "; } if (localidadeInicial != null && localidadeFinal != null && !localidadeInicial.equals("") && !localidadeFinal.equals("")) { sql = sql + " c.loca_id >= " + localidadeInicial + " and "; sql = sql + " c.loca_id <= " + localidadeFinal + " and "; } if (idAvisoBancario != null && !idAvisoBancario.equals("")) { sql = sql + " c.avbc_id = " + idAvisoBancario + " and "; } if (idArrecadador != null && !idArrecadador.equals("")) { sql = sql + " f.armv_id = " + idArrecadador + " and "; } if (periodoArrecadacaoInicial != null && !periodoArrecadacaoInicial.equals("")) { sql = sql + " c.pghi_amreferenciaarrecadacao >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoInicial) + " and "; } if (periodoArrecadacaoFinal != null && !periodoArrecadacaoFinal.equals("")) { sql = sql + " c.pghi_amreferenciaarrecadacao <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoFinal) + " and "; } if (periodoPagamentoInicio != null && !periodoPagamentoInicio.equals("")) { sql = sql + " c.pghi_amreferenciapagamento >= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoInicio) + " and "; } if (periodoPagamentoFim != null && !periodoPagamentoFim.equals("")) { sql = sql + " c.pghi_amreferenciapagamento <= " + Util .formatarMesAnoParaAnoMesSemBarra(periodoPagamentoFim) + " and "; } if (dataPagamentoInicial != null && !dataPagamentoInicial.equals("")) { // sql = sql + " pagamento.dataPagamento >= '" + // Util.formatarData(dataPagamentoInicial) + "' and " ; String data1 = Util.recuperaDataInvertida(dataPagamentoInicial); if (data1 != null && !data1.equals("") && data1.trim().length() == 8) { data1 = data1.substring(0, 4) + "-" + data1.substring(4, 6) + "-" + data1.substring(6, 8); } sql = sql + " c.pghi_dtpagamento >= to_date('" + data1 + "','YYYY-MM-DD HH24:MI:SS') and "; } if (dataPagamentoFinal != null && !dataPagamentoFinal.equals("")) { // sql = sql + " pagamento.dataPagamento <= '" + // Util.formatarData(dataPagamentoFinal) + "' and " ; String data2 = Util.recuperaDataInvertida(dataPagamentoFinal); if (data2 != null && !data2.equals("") && data2.trim().length() == 8) { data2 = data2.substring(0, 4) + "-" + data2.substring(4, 6) + "-" + data2.substring(6, 8); } sql = sql + " c.pghi_dtpagamento <= to_date('" + data2 + "','YYYY-MM-DD HH24:MI:SS') and "; } if (idsPagamentosSituacoes != null && !idsPagamentosSituacoes.equals("")) { String valoresIn = ""; for (int i = 0; i < idsPagamentosSituacoes.length; i++) { if (!idsPagamentosSituacoes[i].equals("")) { valoresIn = valoresIn + idsPagamentosSituacoes[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " c.pgst_idatual in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsDebitosTipos != null && !idsDebitosTipos.equals("") && !idsDebitosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDebitosTipos.length; i++) { if (!idsDebitosTipos[i].equals("")) { valoresIn = valoresIn + idsDebitosTipos[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " c.dbtp_id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsArrecadacaoForma != null && !idsArrecadacaoForma.equals("") && !idsArrecadacaoForma[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsArrecadacaoForma.length; i++) { if (!idsArrecadacaoForma[i].equals("")) { valoresIn = valoresIn + idsArrecadacaoForma[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " c.arfm_id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if (idsDocumentosTipos != null && !idsDocumentosTipos.equals("") && !idsDocumentosTipos[0].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { String valoresIn = ""; for (int i = 0; i < idsDocumentosTipos.length; i++) { if (!idsDocumentosTipos[i].equals("")) { valoresIn = valoresIn + idsDocumentosTipos[i] + ","; } } if (!valoresIn.equals("")) { sql = sql + " c.dotp_id in (" + valoresIn; sql = Util.removerUltimosCaracteres(sql, 1); sql = sql + ") and "; } } if ( valorPagamentoInicial != null && !valorPagamentoInicial.equals( "" ) && valorPagamentoFinal != null && !valorPagamentoFinal.equals( "" ) ){ sql += " c.valorPagamento between " + Util.formatarMoedaRealparaBigDecimal( valorPagamentoInicial ) + " and " + Util.formatarMoedaRealparaBigDecimal( valorPagamentoFinal ) + " and "; } // retira o " and " q fica sobrando no final da query sql = Util.removerUltimosCaracteres(sql, 4); return sql; } /** * Este caso de uso cria um filtro que ser� usado na pesquisa de pagamentos historico * para o Relat�rio * * [UC0255] Filtrar Pagamentos * * Pesquisa os pagamentos do Cliente * * @author Rodrigo Cabral * @date 16/09/11 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarPagamentoHistoricoClienteRelatorio(String idImovel, String idCliente, String idTipoRelacao, String localidadeInicial, String localidadeFinal, String idAvisoBancario, String idArrecadador, String periodoArrecadacaoInicial, String periodoArrecadacaoFinal, String periodoPagamentoInicio, String periodoPagamentoFim, Date dataPagamentoInicial, Date dataPagamentoFinal, String[] idsPagamentosSituacoes, String[] idsDebitosTipos, String[] idsArrecadacaoForma, String[] idsDocumentosTipos, String valorPagamentoInicial, String valorPagamentoFinal) throws ErroRepositorioException { Collection retorno = new ArrayList(); String sql = ""; Session session = HibernateUtil.getSession(); try { String condicionais = this.condicionaisPagamentoHistorico( idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); sql = " select 'CONTA HISTORICO' as tipo, d.loca_id as idLocalidade, d.loca_nmlocalidade as nomeLocalidade, e.greg_id as idGerencia, e.greg_nmregional as nomeGerencia, c.imov_id as idImovel, c.clie_id as idCliente, a.clie_nmcliente as nomeCliente, h.clie_nmcliente as nomeArrecadador, " + " c.pghi_dtpagamento as dataPagamento, c.pghi_amreferenciapagamento as anoMesPagamento, null as tipoDebito, (cnhi_vlagua + cnhi_vlesgoto + cnhi_vldebitos - cnhi_vlcreditos) as valorDocumento, " + " c.pghi_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamento, j.pgst_dspagamentosituacao as situacaoPagamento, c.dotp_id as idDocumentoTipo " + " from cadastro.cliente a, cadastro.cliente_conta_historico b, cadastro.localidade d, cadastro.gerencia_regional e, " + " arrecadacao.aviso_bancario f, arrecadacao.arrecadador g, cadastro.cliente h, faturamento.conta_historico i, arrecadacao.pagamento_historico c " + " left join arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " where a.clie_id = b.clie_id " + " and b.cnta_id = c.cnta_id " + " and c.loca_id = d.loca_id " + " and d.greg_id = e.greg_id " + " and c.avbc_id = f.avbc_id " + " and f.arrc_id = g.arrc_id " + " and g.clie_id = h.clie_id " + " and b.cnta_id = i.cnta_id " + " and " + condicionais + " union " + " select 'D�BITO A COBRAR' as tipo, d.loca_id as idLocalidade, d.loca_nmlocalidade as nomeLocalidade, e.greg_id as idGerencia, e.greg_nmregional as nomeGerencia, c.imov_id as idImovel, c.clie_id as idCliente, a.clie_nmcliente as nomeCliente, h.clie_nmcliente as nomeArrecadador, " + " c.pghi_dtpagamento as dataPagamento, c.pghi_amreferenciapagamento as anoMesPagamento, dbtp_dsdebitotipo as tipoDebito, " + " ((dbac_nnprestacaodebito - dbac_nnprestacaocobradas) * (dbac_vldebito/ dbac_nnprestacaodebito)) as valorDocumento, " + " c.pghi_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamento, j.pgst_dspagamentosituacao as situacaoPagamento, c.dotp_id as idDocumentoTipo " + " from cadastro.cliente a, cadastro.cliente_imovel b, faturamento.debito_a_cobrar b1, cadastro.localidade d, cadastro.gerencia_regional e, " + " arrecadacao.aviso_bancario f, arrecadacao.arrecadador g, cadastro.cliente h, faturamento.debito_tipo k, arrecadacao.pagamento_historico c " + " left join arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " where a.clie_id = b.clie_id " + " and b.imov_id = b1.imov_id " + " and b1.dbac_id = c.dbac_id " + " and c.loca_id = d.loca_id " + " and d.greg_id = e.greg_id " + " and c.avbc_id = f.avbc_id " + " and f.arrc_id = g.arrc_id " + " and g.clie_id = h.clie_id " + " and b1.dbtp_id = k.dbtp_id " + " and " + condicionais + " union " + " select 'GUIA PAGAMENTO IMOVEL' as tipo, d.loca_id as idLocalidade, d.loca_nmlocalidade as nomeLocalidade, e.greg_id as idGerencia, e.greg_nmregional as nomeGerencia, c.imov_id as idImovel, c.clie_id as idCliente, a.clie_nmcliente as nomeCliente, h.clie_nmcliente as nomeArrecadador, " + " c.pghi_dtpagamento as dataPagamento, c.pghi_amreferenciapagamento as anoMesPagamento, dbtp_dsdebitotipo as tipoDebito, " + " (gpag_vldebito) as valorDocumento, " + " c.pghi_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamento, j.pgst_dspagamentosituacao as situacaoPagamento, c.dotp_id as idDocumentoTipo " + " from cadastro.cliente a, cadastro.cliente_guia_pagamento b, faturamento.guia_pagamento b1, cadastro.localidade d, cadastro.gerencia_regional e, " + " arrecadacao.aviso_bancario f, arrecadacao.arrecadador g, cadastro.cliente h, faturamento.debito_tipo k, arrecadacao.pagamento_historico c " + " left join arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " where a.clie_id = b.clie_id " + " and b.gpag_id = b1.gpag_id " + " and b1.gpag_id = c.gpag_id " + " and c.loca_id = d.loca_id " + " and d.greg_id = e.greg_id " + " and c.avbc_id = f.avbc_id " + " and f.arrc_id = g.arrc_id " + " and g.clie_id = h.clie_id " + " and b1.dbtp_id = k.dbtp_id " + " and " + condicionais + " union " + " select 'GUIA PAGAMENTO CLIENTE' as tipo, " + " d.loca_id as idLocalidade, d.loca_nmlocalidade as nomeLocalidade, " + " e.greg_id as idGerencia, e.greg_nmregional as nomeGerencia, " + " c.imov_id as idImovel, c.clie_id as idCliente, a.clie_nmcliente as nomeCliente, " + " h.clie_nmcliente as nomeArrecadador, " + " c.pghi_dtpagamento as dataPagamento, c.pghi_amreferenciapagamento as anoMesPagamento, " + " k.dbtp_dsdebitotipo as tipoDebito, " + " (b1.gpag_vldebito) as valorDocumento, " + " c.pghi_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamento, " + " j.pgst_dspagamentosituacao as situacaoPagamento, c.dotp_id as idDocumentoTipo " + " from cadastro.cliente a, cadastro.cliente_guia_pagamento b, faturamento.guia_pagamento b1, arrecadacao.pagamento_historico c," + " cadastro.localidade d, cadastro.gerencia_regional e, arrecadacao.aviso_bancario f, " + " arrecadacao.arrecadador g, cadastro.cliente h, faturamento.debito_tipo k, " + " arrecadacao.pagamento_situacao j " + " where a.clie_id = b.clie_id "// Cliente com Guia + " and b.gpag_id = b1.gpag_id " + " and b1.gpag_id = c.gpag_id "// Guia com Pagamento + " and c.loca_id = d.loca_id "// Pagamento com Localidade + " and d.greg_id = e.greg_id "// Localidade com Gerencia + " and c.avbc_id = f.avbc_id "// Pagamento com Aviso bancario + " and f.arrc_id = g.arrc_id "// Aviso Bancario com Arrecadador + " and g.clie_id = h.clie_id "// Arrecadador com Cleinte do Arrecadador + " and b1.dbtp_id = k.dbtp_id "// Guia com Debito Tipo + " and c.pgst_idatual = j.pgst_id " + " and " + condicionais + " union " + " select 'PAGAMENTO CLIENTE' as tipo, d.loca_id as idLocalidade, d.loca_nmlocalidade as nomeLocalidade, e.greg_id as idGerencia, e.greg_nmregional as nomeGerencia, c.imov_id as idImovel, c.clie_id as idCliente , a.clie_nmcliente as nomeCliente, h.clie_nmcliente as nomeArrecadador, " + " c.pghi_dtpagamento as dataPagamento, c.pghi_amreferenciapagamento as anoMesPagamento, dbtp_dsdebitotipo as tipoDebito, " + " null as valorDocumento, " + " c.pghi_vlpagamento as valorPagamento, j.pgst_id as idSituacaoPagamento, j.pgst_dspagamentosituacao as situacaoPagamento, c.dotp_id as idDocumentoTipo " + " from cadastro.cliente a, cadastro.localidade d, cadastro.gerencia_regional e, " + " arrecadacao.aviso_bancario f, arrecadacao.arrecadador g, cadastro.cliente h, faturamento.debito_tipo k, arrecadacao.pagamento_historico c " + " left join arrecadacao.pagamento_situacao j " + " on c.pgst_idatual = j.pgst_id " + " where a.clie_id = c.clie_id " + " and c.loca_id = d.loca_id " + " and d.greg_id = e.greg_id " + " and c.avbc_id = f.avbc_id " + " and f.arrc_id = g.arrc_id " + " and g.clie_id = h.clie_id " + " and c.dbtp_id = k.dbtp_id " + " and c.gpag_id IS NULL " + " and "; idTipoRelacao = null; String condicionaisClientePagamentoHistorico = this .condicionaisPagamentoHistorico(idImovel, idCliente, idTipoRelacao, localidadeInicial, localidadeFinal, idAvisoBancario, idArrecadador, periodoArrecadacaoInicial, periodoArrecadacaoFinal, periodoPagamentoInicio, periodoPagamentoFim, dataPagamentoInicial, dataPagamentoFinal, idsPagamentosSituacoes, idsDebitosTipos, idsArrecadacaoForma, idsDocumentosTipos, valorPagamentoInicial, valorPagamentoFinal); sql = sql + condicionaisClientePagamentoHistorico; // "select distinct pagamento " + " from // gcom.arrecadacao.pagamento.Pagamento as // pagamento " + " inner join pagamento.cliente as cliente " + // condicionais + " // order by pagamento.documentoTipo.id,pagamento.dataPagamento " + " // "; retorno = session.createSQLQuery(sql).addScalar("tipo", Hibernate.STRING).addScalar("idLocalidade", Hibernate.INTEGER).addScalar("nomeLocalidade", Hibernate.STRING) .addScalar("idGerencia", Hibernate.INTEGER).addScalar( "nomeGerencia", Hibernate.STRING).addScalar( "idImovel", Hibernate.INTEGER).addScalar( "idCliente", Hibernate.INTEGER).addScalar( "nomeCliente", Hibernate.STRING).addScalar( "nomeArrecadador", Hibernate.STRING).addScalar( "dataPagamento", Hibernate.DATE).addScalar( "anoMesPagamento", Hibernate.INTEGER).addScalar( "tipoDebito", Hibernate.STRING).addScalar( "valorDocumento", Hibernate.BIG_DECIMAL).addScalar( "valorPagamento", Hibernate.BIG_DECIMAL).addScalar( "idSituacaoPagamento", Hibernate.INTEGER) .addScalar("situacaoPagamento", Hibernate.STRING) .addScalar("idDocumentoTipo", Hibernate.INTEGER).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /* * Criado para a consulta, de manter conta por conjunto de im�veis, pelo id do banco * e pelo grupo de faturamento * * */ /** @author Adriana Muniz * @date: 07/04/2011 * [UC0146] Manter Conta * * FS0028 - Verificar par�metro consulta e d�bito autom�tico * @return * @throws ErroRepositorioException */ public Collection pesquisarImoveisBancoDebitoAutomaticoEPorGrupoFaturamento(String[] bancos, Integer idGrupoFaturamento) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); try{ String select = "select distinct(da.imovel.id) " + " from DebitoAutomatico da " + " inner join da.agencia ag " + " inner join da.imovel i " + " inner join i.quadra q " + " inner join q.rota r " + " where ag.banco.id in (:idBanco) " + " and da.dataExclusao is null " + " and r.faturamentoGrupo.id = :idGrupoFaturamento "; retorno = session.createQuery(select) .setParameterList("idBanco", bancos) .setInteger("idGrupoFaturamento", idGrupoFaturamento) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /* * autor: Adriana Muniz * * Altera��o para a conta considerar como filtro grupo de faturamento, * quando o mesmo estiver preenchido */ /** * @autor: Adriana Muniz * @date: 27/04/2011 * * [UC0146] Manter Conta * * FS0028 - Verificar par�metro consulta e d�bito autom�tico * * M�todo para retornar a quantidade de contas a partir dos im�veis * com d�bito autom�tico - Manter Contas de um Conjunto de im�veis. * * @return * @throws ErroRepositorioException */ public Integer countImoveisBancoDebitoAutomaticoPorGrupoFaturamento( String[] bancos, Integer anoMesInicial, Integer anoMesFinal, Date dataVencimentoInicial, Date dataVencimentoFinal, String indicadorContaPaga, Integer idGrupoFaturamento, Integer somenteDebitoAutomatico) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); Map parameters = new HashMap(); Query query = null; try { String select = "select count(conta.imovel.id) " + " from DebitoAutomaticoMovimento dam " + " inner join dam.debitoAutomatico da " + " inner join dam.contaGeral.conta conta " + " inner join da.agencia ag" + " inner join conta.debitoCreditoSituacaoAtual dcst " + " inner join conta c " + " left join conta.debitoCreditoSituacaoAnterior dcsan " + " inner join conta.imovel imov " + " where ag.banco.id in (:idBanco) " + " and dcst.id in(:normal, :retificada) " + " and conta.referencia between :anoMesInicial and :anoMesFinal " + " and da.dataExclusao is null " + " and dam.numeroSequenciaArquivoEnviado is null" + " and conta.faturamentoGrupo.id = :idGrupoFaturamento"; if (somenteDebitoAutomatico != null && somenteDebitoAutomatico == 1) { select += " and c.indicadorDebitoConta = 1 "; } if (dataVencimentoInicial != null) { select += " and conta.dataVencimentoConta between :vencimentoInicial and :vencimentoFinal "; parameters.put("vencimentoInicial", dataVencimentoInicial); parameters.put("vencimentoFinal", dataVencimentoFinal); } if (!indicadorContaPaga.equals("3")) { if (indicadorContaPaga.equals("1")) { select += " and exists "; } else { select += " and not exists "; } select += " (select conta.id " + "from Pagamento pgmt " + "inner join pgmt.contaGeral cntaGeral " + "inner join cntaGeral.conta cnta " + "where cnta.id = conta.id) "; } query = session.createQuery(select); Set set = parameters.keySet(); Iterator iterMap = set.iterator(); while (iterMap.hasNext()) { String key = (String) iterMap.next(); if (parameters.get(key) instanceof Date) { Date data = (Date) parameters.get(key); query.setDate(key, data); } } retorno = (Integer) query.setParameterList("idBanco", bancos) .setInteger("anoMesInicial", anoMesInicial) .setInteger("anoMesFinal", anoMesFinal) .setInteger("idGrupoFaturamento", idGrupoFaturamento) .setInteger("normal", DebitoCreditoSituacao.NORMAL) .setInteger("retificada", DebitoCreditoSituacao.RETIFICADA) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * @author Wellington Rocha * @data 15/04/2012 * * @param idConta * @return pagamento */ public Object[] pesquisarPagamentoDeContaEmHistorico(Integer idConta) throws ErroRepositorioException{ Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT pgmt.id,pgmt.valorPagamento, pgmt.dataPagamento " + "FROM PagamentoHistorico as pgmt " + "WHERE pgmt.contaGeral.id = :idConta "; retorno = (Object[]) session.createQuery(consulta).setInteger( "idConta", idConta).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * * Relat�rio Analitico dos valores di�rios da arrecada��o * * @author Adriana Muniz * data: 05/09/2012 * * obt�m as formas de arrecada��o por dia * @param helper * @param filtro * @return cole��o */ public Collection obterFormasDeArrecadacaoPorDia( Object helper, FiltroConsultarDadosDiariosArrecadacao filtro) throws ErroRepositorioException { Collection retorno = null; String consulta; Session session = HibernateUtil.getSession(); try { consulta = "SELECT coalesce(ardd.itemADD, ddd1.itemDDD) as campoAgrupador, " + " arfm_dsarrecadacaoforma as nomeFormaArrecadacao, " + " (COALESCE(ARDD.qtdDocumentos,0) + COALESCE(DDD1.qtdDocumentosDescontos,0) + COALESCE(DDD1.qtdDocumentosDevolucoes,0)) as qtdDocumentos, " + " (COALESCE(ARDD.qtdPagamentos,0) + COALESCE(DDD1.qtdPagamentosDescontos,0) + COALESCE(DDD1.qtdPagamentosDevolucoes,0)) as qtdPagamentos, " + " COALESCE(ARDD.debitos, 0) as debitos, " + " COALESCE(DDD1.valorDescontos, 0) as descontos, " + " COALESCE(DDD1.valorDevolucoes, 0) as devolucoes " + " from (SELECT ad.arfm_id as itemADD, " + " sum(ad.ardd_qtdocumentos) as qtdDocumentos, " + " sum(ad.ardd_qtpagamentos) as qtdPagamentos, " + " sum(ad.ardd_vlpagamentos) as debitos " + " FROM arrecadacao.arrecadacao_dados_diarios ad " + " WHERE ad.ardd_amreferenciaarrecadacao = " + filtro.getAnoMesArrecadacao() ; if(filtro.getIdArrecadador() != null && !filtro.getIdArrecadador().equals("")) consulta += " and ad.arrc_id = " + filtro.getIdArrecadador(); consulta += " and date(ardd_dtpagamento) = '" + helper.toString()+"'" + " group by itemADD ) as ARDD " + " full join (SELECT dd.arfm_id as itemDDD, " + " sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_qtdocumentos else 0 end) as qtdDocumentosDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_qtdocumentos else 0 end) as qtdDocumentosDevolucoes, " + " sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_qtdevolucoes else 0 end) as qtdPagamentosDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_qtdevolucoes else 0 end) as qtdPagamentosDevolucoes, " + " sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_vldevolucoes else 0 end) as valorDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_vldevolucoes else 0 end) as valorDevolucoes " + " FROM arrecadacao.devolucao_dados_diarios dd " + " WHERE dd.dvdd_amreferenciaarrecadacao = " + filtro.getAnoMesArrecadacao() ; if(filtro.getIdArrecadador() != null && !filtro.getIdArrecadador().equals("")) consulta += " and dd.arrc_id = " + filtro.getIdArrecadador(); consulta += " and date(dvdd_dtdevolucao) = '" + helper.toString()+"'" + " group by itemDDD ) as DDD1 on (ARDD.itemADD = DDD1.itemDDD) " + " inner join arrecadacao.arrecadacao_forma af on (af.arfm_id = coalesce(ardd.itemADD, ddd1.itemDDD)) " + " order by campoAgrupador "; retorno = session.createSQLQuery(consulta) .addScalar("campoAgrupador", Hibernate.INTEGER) .addScalar("nomeFormaArrecadacao", Hibernate.STRING) .addScalar("qtdDocumentos", Hibernate.INTEGER) .addScalar("qtdPagamentos", Hibernate.INTEGER) .addScalar("debitos", Hibernate.BIG_DECIMAL) .addScalar("descontos", Hibernate.BIG_DECIMAL) .addScalar("devolucoes", Hibernate.BIG_DECIMAL) .list(); }catch(HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); }finally{ HibernateUtil.closeSession(session); } return retorno; } /** * DATA:02/10/2012 * @author Adriana Muniz * * @param filtro * @return * @throws ErroRepositorioException */ public Collection filtrarDadosDiariosFormasArrecadacaoComTarifa(FiltroConsultarDadosDiariosArrecadacao filtro) throws ErroRepositorioException { Collection retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String SQLGeral = null; String SQLConsultaADD = " SELECT ad.ardd_dtpagamento AS dataPagamento, " + " SUM(ad.ardd_qtdocumentos) AS qtdDocumentos, " + " SUM(ad.ardd_vlpagamentos) AS debitos " + " FROM ARRECADACAO.ARRECADACAO_DADOS_DIARIOS ad " + " WHERE ardd_amreferenciaarrecadacao = " + filtro.getAnoMesArrecadacao() + " AND arrc_id = " + filtro.getIdArrecadador() + " GROUP BY dataPagamento " + " ORDER BY dataPagamento "; try { retorno = session.createSQLQuery(SQLGeral) .addScalar("qtdDocumentos", Hibernate.INTEGER) .addScalar("qtdPagamentos", Hibernate.INTEGER) .addScalar("debitos", Hibernate.BIG_DECIMAL) .addScalar("descontos", Hibernate.BIG_DECIMAL) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } // System.out.println("Tempo de execu��o da query (" + filtro.getAgrupamento() + // ") " + (System.currentTimeMillis() - t1)); return retorno; } /** * * Relat�rio Analitico dos valores di�rios da arrecada��o * * @author Adriana Muniz * data: 02/10/2012 * * obt�m as formas de arrecada��o com tarifa por dia * @param helper * @param filtro * @return cole��o */ public Collection obterFormasDeArrecadacaoComTarifaPorDia( Object helper, FiltroConsultarDadosDiariosArrecadacao filtro) throws ErroRepositorioException { Collection retorno = null; String consulta; Session session = HibernateUtil.getSession(); try { consulta = " SELECT coalesce(ardd.itemADD, ddd1.itemDDD) AS campoAgrupador, " + " arfm_dsarrecadacaoforma AS nomeFormaArrecadacao, " + " ARDD.valorTarifa as valorTarifa, " + " ardd.dataprevista as dataPrevista, " + " (COALESCE(ARDD.qtdDocumentos,0) + COALESCE(DDD1.qtdDocumentosDescontos,0) + COALESCE(DDD1.qtdDocumentosDevolucoes,0)) as qtdDocumentos," + " (COALESCE(ARDD.qtdPagamentos,0) + COALESCE(DDD1.qtdPagamentosDescontos,0) + COALESCE(DDD1.qtdPagamentosDevolucoes,0)) as qtdPagamentos, " + " COALESCE(ARDD.debitos, 0) as debitos, " + " COALESCE(DDD1.valorDescontos, 0) as descontos, " + " COALESCE(DDD1.valorDevolucoes, 0) as devolucoes " + " from (SELECT ad.arfm_id as itemADD, " + " sum(ardd_vltarifa) as valorTarifa, " + " (date(ad.ardd_dtpagamento) + cast(ad.ardd_nndiafloat as integer)) as dataPrevista, " + " sum(ad.ardd_qtdocumentos) as qtdDocumentos, " + " sum(ad.ardd_qtpagamentos) as qtdPagamentos, " + " sum(ad.ardd_vlpagamentos) as debitos " + " FROM arrecadacao.arrecadacao_dados_diarios ad " + " WHERE ad.ardd_amreferenciaarrecadacao = " + filtro.getAnoMesArrecadacao() + " and ad.arrc_id = " + filtro.getIdArrecadador() + " and date(ardd_dtpagamento) = '" + helper.toString()+"' " + " group by itemADD, dataPrevista) as ARDD " + " full join (SELECT dd.arfm_id as itemDDD, " + " 0 as valorTarifa, " + " null as dataPrevista, " + " sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_qtdocumentos else 0 end) as qtdDocumentosDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_qtdocumentos else 0 end) as qtdDocumentosDevolucoes, " + " sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_qtdevolucoes else 0 end) as qtdPagamentosDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_qtdevolucoes else 0 end) as qtdPagamentosDevolucoes, " + " sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_vldevolucoes else 0 end) as valorDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_vldevolucoes else 0 end) as valorDevolucoes " + " FROM arrecadacao.devolucao_dados_diarios dd " + " WHERE dd.dvdd_amreferenciaarrecadacao = " + filtro.getAnoMesArrecadacao() + " and dd.arrc_id = " + filtro.getIdArrecadador() + " and date(dvdd_dtdevolucao) = '" + helper.toString()+"' " + " group by itemDDD ) as DDD1 on (ARDD.itemADD = DDD1.itemDDD) " + " inner join arrecadacao.arrecadacao_forma af on (af.arfm_id = coalesce(ardd.itemADD, ddd1.itemDDD)) " + " order by campoAgrupador "; retorno = session.createSQLQuery(consulta) .addScalar("campoAgrupador", Hibernate.INTEGER) .addScalar("nomeFormaArrecadacao", Hibernate.STRING) .addScalar("valorTarifa", Hibernate.BIG_DECIMAL) .addScalar("dataPrevista", Hibernate.DATE) .addScalar("qtdDocumentos", Hibernate.INTEGER) .addScalar("qtdPagamentos", Hibernate.INTEGER) .addScalar("debitos", Hibernate.BIG_DECIMAL) .addScalar("descontos", Hibernate.BIG_DECIMAL) .addScalar("devolucoes", Hibernate.BIG_DECIMAL) .list(); }catch(HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); }finally{ HibernateUtil.closeSession(session); } return retorno; } /** * @autor Adriana MUniz * @date 10/12/2012 * * Consultar Dados Di�rios da Arrecada��o a partir da tabela arrecadacao_dados_diarios_aulixiar * * M�todo para montar a parte WHERE da query de * filtrar os dados di�rios para qualquer aba da funcionalidade * * * @param filtro * @param labelTabela * @return */ private String montarWhereFiltrarDadosDiariosArrecadacaoAuxiliar(FiltroConsultarDadosDiariosArrecadacaoAuxiliar filtro, String labelTabela){ String SQLConsultaADD = " WHERE "; if (filtro.getAnoMesArrecadacao() != null && !filtro.getAnoMesArrecadacao().equals("") && !filtro.getAnoMesArrecadacao().equals("-1")){ // @TODO: melhorar isso if(labelTabela.equals("ad")){ SQLConsultaADD += labelTabela + ".ardd_amreferenciaarrecadacao = " + filtro.getAnoMesArrecadacao() + " and "; } else { SQLConsultaADD += labelTabela + ".dvdd_amreferenciaarrecadacao = " + filtro.getAnoMesArrecadacao() + " and "; } } if (filtro.getIdGerenciaRegional() != null && !filtro.getIdGerenciaRegional().equals("") && !filtro.getIdGerenciaRegional().equals("-1")){ SQLConsultaADD += labelTabela + ".greg_id = " + filtro.getIdGerenciaRegional() + " and "; } if (filtro.getIdUnidadeNegocio() != null && !filtro.getIdUnidadeNegocio().equals("") && !filtro.getIdUnidadeNegocio().equals("-1")){ SQLConsultaADD += labelTabela + ".uneg_id = " + filtro.getIdUnidadeNegocio() + " and "; } if (filtro.getIdElo() != null && !filtro.getIdElo().equals("") && !filtro.getIdElo().equals("-1")){ SQLConsultaADD += " loc.loca_cdelo = " + filtro.getIdElo() + " and "; } if (filtro.getIdLocalidade() != null && !filtro.getIdLocalidade().equals("") && !filtro.getIdLocalidade().equals("-1")){ SQLConsultaADD += labelTabela + ".loca_id = " + filtro.getIdLocalidade() + " and "; } if (filtro.getIdArrecadador() != null && !filtro.getIdArrecadador().equals("") && !filtro.getIdArrecadador().equals("-1")){ SQLConsultaADD += labelTabela + ".arrc_id = " + filtro.getIdArrecadador() + " and "; } if (filtro.getIdFormaArrecadacao() != null && !filtro.getIdFormaArrecadacao().equals("")){ if (filtro.getIdFormaArrecadacao().equals("0")){ SQLConsultaADD += labelTabela + ".arfm_id is null and "; } else if (!filtro.getIdFormaArrecadacao().equals("-1")){ SQLConsultaADD += labelTabela + ".arfm_id = " + filtro.getIdFormaArrecadacao() + " and "; } } if (filtro.getIdDocumentoTipo() != null && !filtro.getIdDocumentoTipo().equals("")){ if (filtro.getIdDocumentoTipo().equals("0")){ SQLConsultaADD += labelTabela + ".dotp_id is null and "; } else if (!filtro.getIdDocumentoTipo().equals("-1")){ SQLConsultaADD += labelTabela + ".dotp_id = " + filtro.getIdDocumentoTipo() + " and "; } } if (filtro.getIdsDocumentoTipoAgregador() != null && filtro.getIdsDocumentoTipoAgregador().length > 0){ String idsDocumentoTipoAgregador[] = filtro.getIdsDocumentoTipoAgregador(); if (!idsDocumentoTipoAgregador[0].equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { if (idsDocumentoTipoAgregador.length == 1){ if (idsDocumentoTipoAgregador[0].equals("0")){ SQLConsultaADD += labelTabela + ".dotp_idagregador is null and "; } else { SQLConsultaADD += labelTabela + ".dotp_idagregador = " + idsDocumentoTipoAgregador[0] + " and "; } } else { SQLConsultaADD += labelTabela + ".dotp_idagregador in ( "; for (int j = 0; j < idsDocumentoTipoAgregador.length; j++) { SQLConsultaADD += idsDocumentoTipoAgregador[j] + ", "; } SQLConsultaADD = Util.removerUltimosCaracteres(SQLConsultaADD, 2); SQLConsultaADD += ") and "; } } } return SQLConsultaADD; } /** * @author Adriana Muniz * @date 10/12/2012 * * Consultar Dados Di�rios da Arrecada��o a partir da tabela arrecadacao_dados_diarios_aulixiar * * Verificar se existe dados diarios da arrecadacao de acordo com o filtro * passado * * * @param filtro * @return boolean de existencia dos dados * @throws ErroRepositorioException */ public boolean verificarExistenciaDadosDiariosArrecadacaoAuxiliar(FiltroConsultarDadosDiariosArrecadacaoAuxiliar filtro) throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); String join1 = ""; String join2 = ""; if (filtro.getIdElo() != null && !filtro.getIdElo().equals("")){ join1 = " left join cadastro.localidade loc on loc.loca_id = ad.loca_id "; join2 = " left join cadastro.localidade loc on loc.loca_id = dd.loca_id "; } String SQLVerificarADD = "SELECT ad.ardd_id as id from arrecadacao.arrecadacao_dados_diarios_auxiliar ad " + join1 + montarWhereFiltrarDadosDiariosArrecadacaoAuxiliar(filtro, "ad"); String SQLVerificarDDD1 = "SELECT dd.dvdd_id as id from arrecadacao.devolucao_dados_diarios_auxiliar dd " + join2 + montarWhereFiltrarDadosDiariosArrecadacaoAuxiliar(filtro, "dd") + " dd.dvdd_tipodevolucao <> 'N' "; String SQLVerificarDDD2 = "SELECT dd.dvdd_id as id from arrecadacao.devolucao_dados_diarios_auxiliar dd " + join2 + montarWhereFiltrarDadosDiariosArrecadacaoAuxiliar(filtro, "dd") + " dd.dvdd_tipodevolucao = 'N' "; Integer retornoSQL = null; boolean retorno = false; try { SQLVerificarADD = Util.removerUltimosCaracteres(SQLVerificarADD, 4); retornoSQL = (Integer) session.createSQLQuery(SQLVerificarADD) .addScalar("id", Hibernate.INTEGER).setMaxResults(1).uniqueResult(); if (retornoSQL != null) { retorno = true; } else { retornoSQL = (Integer) session.createSQLQuery(SQLVerificarDDD1) .addScalar("id", Hibernate.INTEGER).setMaxResults(1).uniqueResult(); if (retornoSQL != null){ retorno = true; } else { retornoSQL = (Integer) session.createSQLQuery(SQLVerificarDDD2) .addScalar("id", Hibernate.INTEGER).setMaxResults(1).uniqueResult(); if (retornoSQL != null){ retorno = true; } } } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * @author Adriana Muniz * @date 11/12/2012 * * Consultar Dados Di�rios da Arrecada��o Auxiliar * * @param filtro * @return * @throws ErroRepositorioException */ public Collection filtrarDadosDiariosArrecadacaoAuxiliar(FiltroConsultarDadosDiariosArrecadacaoAuxiliar filtro) throws ErroRepositorioException{ Collection retorno = new ArrayList(); Session session = HibernateUtil.getSession(); String SQLGeral = null; String SQLConsultaADD = "SELECT "; String SQLConsultaADD_FROM = " FROM ARRECADACAO.ARRECADACAO_DADOS_DIARIOS_AUXILIAR ad "; String SQLConsultaDDD1 = "SELECT "; String SQLConsultaDDD1_FROM = " FROM ARRECADACAO.DEVOLUCAO_DADOS_DIARIOS_AUXILIAR dd "; Type tipo= null; switch (filtro.getAgrupamento()) { case ANO_MES: SQLConsultaADD += " ad.ardd_amreferenciaarrecadacao "; SQLConsultaDDD1 += " dd.dvdd_amreferenciaarrecadacao "; tipo = Hibernate.INTEGER; break; case ARRECADADOR: SQLConsultaADD += " ad.arrc_id "; SQLConsultaDDD1 += " dd.arrc_id "; tipo = Hibernate.INTEGER; break; case CATEGORIA: SQLConsultaADD += " ad.catg_id "; SQLConsultaDDD1 += " dd.catg_id "; tipo = Hibernate.INTEGER; break; case ELO: SQLConsultaADD += " loc.loca_cdelo "; SQLConsultaDDD1 += " loc.loca_cdelo "; tipo = Hibernate.INTEGER; break; case FORMA_ARRECADACAO: SQLConsultaADD += " ad.arfm_id "; SQLConsultaDDD1 += " dd.arfm_id "; tipo = Hibernate.INTEGER; break; case GERENCIA_REGIONAL: SQLConsultaADD += " ad.greg_id "; SQLConsultaDDD1 += " dd.greg_id "; tipo = Hibernate.INTEGER; break; case LOCALIDADE: SQLConsultaADD += " ad.loca_id "; SQLConsultaDDD1 += " dd.loca_id "; tipo = Hibernate.INTEGER; break; case PERFIL: SQLConsultaADD += " ad.iper_id "; SQLConsultaDDD1 += " dd.iper_id "; tipo = Hibernate.INTEGER; break; case TIPO_DOCUMENTO: SQLConsultaADD += " ad.dotp_id "; SQLConsultaDDD1 += " dd.dotp_id "; tipo = Hibernate.INTEGER; break; case TIPO_DOCUMENTO_AGREGADOR: SQLConsultaADD += " ad.dotp_idagregador "; SQLConsultaDDD1 += " dd.dotp_idagregador "; tipo = Hibernate.INTEGER; break; case UNIDADE_NEGOCIO: SQLConsultaADD += " ad.uneg_id "; SQLConsultaDDD1 += " dd.uneg_id "; tipo = Hibernate.INTEGER; break; case DATA: SQLConsultaADD += " ad.ardd_dtpagamento "; SQLConsultaDDD1 += " dd.dvdd_dtdevolucao "; tipo = Hibernate.DATE; } // definindo somatorios para o select SQLConsultaADD += " as itemADD, sum(ad.ardd_qtdocumentos) as qtdDocumentos, sum(ad.ardd_qtpagamentos) as qtdPagamentos, " + "sum(ad.ardd_vlpagamentos) as debitos "; SQLConsultaDDD1 += " as itemDDD, sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_qtdocumentos else 0 end) as qtdDocumentosDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_qtdocumentos else 0 end) as qtdDocumentosDevolucoes, " + " sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_qtdevolucoes else 0 end) as qtdPagamentosDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_qtdevolucoes else 0 end) as qtdPagamentosDevolucoes, " + " sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_vldevolucoes else 0 end) as valorDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_vldevolucoes else 0 end) as valorDevolucoes "; // adicionando as tabelas para os joins if (filtro.getAgrupamento().equals(FiltroConsultarDadosDiariosArrecadacao.GROUP_BY.ELO) || (filtro.getIdElo() != null && !filtro.getIdElo().equals(""))){ SQLConsultaADD_FROM += " LEFT JOIN CADASTRO.LOCALIDADE LOC ON AD.LOCA_ID = LOC.LOCA_ID "; SQLConsultaDDD1_FROM += " LEFT JOIN CADASTRO.LOCALIDADE LOC ON DD.LOCA_ID = LOC.LOCA_ID "; } // acrescentando a parte from SQLConsultaADD += SQLConsultaADD_FROM; SQLConsultaDDD1 += SQLConsultaDDD1_FROM; // metodo gera as condicoes de acordo com os valores preenchidos no filtro SQLConsultaADD += montarWhereFiltrarDadosDiariosArrecadacaoAuxiliar(filtro, "ad"); SQLConsultaDDD1 += montarWhereFiltrarDadosDiariosArrecadacaoAuxiliar(filtro, "dd"); // retirar o and do final, caso exista if (SQLConsultaADD.lastIndexOf("and") >= (SQLConsultaADD.length() - 4)){ SQLConsultaADD = Util.removerUltimosCaracteres(SQLConsultaADD , 4); } // retirar o and do final, caso exista if (SQLConsultaDDD1.lastIndexOf("and") >= (SQLConsultaDDD1.length() - 4)){ SQLConsultaDDD1 = Util.removerUltimosCaracteres(SQLConsultaDDD1, 4); } SQLConsultaADD += " group by itemADD "; SQLConsultaDDD1 += " group by itemDDD "; SQLGeral = "SELECT coalesce(ardd.itemADD, ddd1.itemDDD) as campoAgrupador, " + " (COALESCE(ARDD.qtdDocumentos,0) + COALESCE(DDD1.qtdDocumentosDescontos,0) + COALESCE(DDD1.qtdDocumentosDevolucoes,0)) as qtdDocumentos, " + " (COALESCE(ARDD.qtdPagamentos,0) + COALESCE(DDD1.qtdPagamentosDescontos,0) + COALESCE(DDD1.qtdPagamentosDevolucoes,0)) as qtdPagamentos, " + " COALESCE(ARDD.debitos, 0) as debitos, COALESCE(DDD1.valorDescontos, 0) as descontos, " + " COALESCE(DDD1.valorDevolucoes, 0) as devolucoes " + " FROM (" + SQLConsultaADD + ") as ARDD " + " FULL JOIN (" + SQLConsultaDDD1 + ") as DDD1 on (ARDD.itemADD = DDD1.itemDDD) " + " order by campoAgrupador "; try { retorno = session.createSQLQuery(SQLGeral) .addScalar("campoAgrupador", tipo) .addScalar("qtdDocumentos", Hibernate.INTEGER) .addScalar("qtdPagamentos", Hibernate.INTEGER) .addScalar("debitos", Hibernate.BIG_DECIMAL) .addScalar("descontos", Hibernate.BIG_DECIMAL) .addScalar("devolucoes", Hibernate.BIG_DECIMAL) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } // System.out.println("Tempo de execu��o da query (" + filtro.getAgrupamento() + // ") " + (System.currentTimeMillis() - t1)); return retorno; } /** * @author Adriana Muniz * @date 05/12/2012 * * Exclui os dados di�rios da arrecada��o do ano/m�s da arrecada��o corrente * por localidade da a tabela arrecadacao_dados_diarios_auxiliar * * [UC0301] Gerar Dados Di�rios da Arrecada��o * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @throws ErroRepositorioException */ public void excluirDadosDiariosArrecadacaoAuxiliarPorAnoMesArrecadacaoPorLocalidade( int anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta; try { // Constroi o hql para remover os dados di�rios da arrecada��o // referentes ao ano/m�s de arrecada��o atual consulta = " DELETE ArrecadacaoDadosDiariosAuxiliar ardd " + " WHERE ardd.anoMesReferenciaArrecadacao = :anoMesReferenciaArrecadacao " + " AND ardd.localidade.id = :idLocalidade"; // Executa o hql session.createQuery(consulta) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade).executeUpdate(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } } /** * @author Adriana Muniz * @date 12/12/2012 * * Exclui os dados di�rios da devolucao auxiliar do ano/m�s da arrecada��o corrente * por localidade * * [UC0301] Gerar Dados Di�rios da Arrecada��o * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @throws ErroRepositorioException */ public void excluirDadosDiariosDevolucaoPorAnoMesArrecadacaoAuxiliarPorLocalidade( int anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta; try { // Constroi o hql para remover os dados di�rios de devolucao // referentes ao ano/m�s de arrecada��o atual consulta = "delete DevolucaoDadosDiariosAuxiliar dvdd where dvdd.anoMesReferencia = :anoMesReferenciaArrecadacao and dvdd.localidade.id = :idLocalidade"; // Executa o hql session.createQuery(consulta) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade).executeUpdate(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } } /** * @author Adriana Muniz * @date 05/12/2012 * * Acumula a quantidade e o valor dos pagamentos com ano/m�s de refer�ncia * da arrecada��o igual ao ano/m�s de refer�ncia da arrecada��o corrente, * * * [UC0301] Gerar Dados Di�rios da Arrecada��o * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection acumularQuantidadeEValorPagamentoPorAnoMesArrecadacaoAuxiliar( int anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a vari�velque vai armazenar a cole��o de pagamentos Collection retorno = new ArrayList(); // Cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta; try { // Cria o hql para acumular o valor e quantidade de pagamentos consulta = acumularQuantidadeEValorPagamentoPorAnoMesArrecadacaoAuxiliarMontarQuery(); retorno = session.createSQLQuery(consulta) .addScalar("somaValor", Hibernate.BIG_DECIMAL) .addScalar("qtdPagamento", Hibernate.INTEGER) .addScalar("idGreg", Hibernate.INTEGER) .addScalar("idAviso", Hibernate.INTEGER) .addScalar("idArrecadador", Hibernate.INTEGER) .addScalar("idTipoDocumento", Hibernate.INTEGER) .addScalar("idFormaArrec", Hibernate.INTEGER) .addScalar("dataPagamento", Hibernate.DATE) .addScalar("idUN", Hibernate.INTEGER) .addScalar("idTipoDocumentoAgregador", Hibernate.INTEGER) .addScalar("qtdDocumentosAgregados", Hibernate.INTEGER) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade) .list(); } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } // Retorna a cole��o de pagamentos return retorno; } /** * @author Adriana Muniz * @date 05/12/2012 * * Contrucao da query usada no metodo acumularQuantidadeEValorPagamentoPorAnoMesArrecadacao * * @see acumularQuantidadeEValorPagamentoPorAnoMesArrecadacaoAuxiliar */ private String acumularQuantidadeEValorPagamentoPorAnoMesArrecadacaoAuxiliarMontarQuery(){ String queryFinal = ""; String parteSelect = "select sum(pgmt.pgmt_vlpagamento) as somaValor," + "count(pgmt.pgmt_id) as qtdPagamento," + "uneg.greg_id as idGreg," + "avbc.avbc_id as idAviso," + "avbc.arrc_id as idArrecadador," + "pgmt.dotp_id as idTipoDocumento," + "pgmt.arfm_id as idFormaArrec," + "pgmt.pgmt_dtpagamento as dataPagamento," + "uneg.uneg_id as idUN, " + "pgmt.dotp_idagregador as idTipoDocumentoAgregador "; String parteFrom = " from arrecadacao.pagamento pgmt " + "left join arrecadacao.aviso_bancario avbc on pgmt.avbc_id = avbc.avbc_id " + "left join cadastro.localidade loca on pgmt.loca_id = loca.loca_id " + "left join cadastro.unidade_negocio uneg on uneg.uneg_id = loca.uneg_id "; String parteWhere = "where pgmt.pgmt_amreferenciaarrecadacao = :anoMesReferenciaArrecadacao " + "and loca.loca_id = :idLocalidade "; String parteGroupBy = "group by uneg.greg_id, avbc.avbc_id, avbc.arrc_id, pgmt.dotp_id, " + "pgmt.arfm_id, pgmt.pgmt_dtpagamento, uneg.uneg_id, " + "pgmt.dotp_idagregador "; // Caso o tipo do documento agregador seja igual ao tipo de documento do pagamento // DocumentoTipoAgregador, IdDocumento, CountDocumento queryFinal = parteSelect + ", count(distinct pgmt.pgmt_id) as qtdDocumentosAgregados " + parteFrom + parteWhere + " and (pgmt.dotp_id = pgmt.dotp_idagregador or (pgmt.cbdo_id is null and pgmt.fatu_id is null)) " + parteGroupBy // UNION > Caso a identificacao do documento agregador seja diferente de nulo + " UNION " + parteSelect + ", count(distinct pgmt.cbdo_id) as qtdDocumentosAgregados " + parteFrom + parteWhere + " and pgmt.dotp_id <> pgmt.dotp_idagregador and pgmt.cbdo_id is not null " + parteGroupBy // UNION > Caso a identificacao da fatura seja diferente de nulo + " UNION " + parteSelect + ", count(distinct pgmt.fatu_id) as qtdDocumentosAgregados " + parteFrom + parteWhere + " and pgmt.dotp_id <> pgmt.dotp_idagregador and pgmt.fatu_id is not null " + parteGroupBy ; return queryFinal; } /** * @author Adriana Muniz * @date 12/12/2012 * * Acumula a quantidade e o valor das devolucoes com ano/m�s de refer�ncia * da arrecada��o igual ao ano/m�s de refer�ncia da arrecada��o corrente * para ser persistido na tabela devolucao_dados_diarios_auxiliar * * [UC0301] Gerar Dados Di�rios da Arrecada��o * * @param anoMesReferenciaArrecadacao * @param idLocalidade * @return * @throws ErroRepositorioException */ public Collection acumularQuantidadeEValorDevolucaoPorAnoMesArrecadacaoAuxiliar( int anoMesReferenciaArrecadacao, Integer idLocalidade) throws ErroRepositorioException { // Cria a vari�velque vai armazenar a cole��o de pagamentos Collection retorno = new ArrayList(); // Cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta; try { // Cria o hql para acumular o valor e quantidade de pagamentos consulta = acumularQuantidadeEValorDevolucaoPorAnoMesArrecadacaoMontarQuery(); retorno = session.createSQLQuery(consulta) .addScalar("somaValor", Hibernate.BIG_DECIMAL) .addScalar("qtdDevolucoes", Hibernate.INTEGER) .addScalar("idGreg", Hibernate.INTEGER) .addScalar("idAviso", Hibernate.INTEGER) .addScalar("idArrecadador", Hibernate.INTEGER) .addScalar("idFormaArrec", Hibernate.INTEGER) .addScalar("dataDevolucao", Hibernate.DATE) .addScalar("idUN", Hibernate.INTEGER) .addScalar("idTipoDocumentoAgregador", Hibernate.INTEGER) .addScalar("qtdDocumentosAgregados", Hibernate.INTEGER) .addScalar("tipoDevolucao", Hibernate.STRING) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idLocalidade", idLocalidade).list(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } // Retorna a cole��o de pagamentos return retorno; } /** * @author Adriana Muniz * @date 12/12/2012 * * Contrucao da query usada no metodo acumularQuantidadeEValorDevolucaoPorAnoMesArrecadacaoAuxiliar * * @see acumularQuantidadeEValorDevolucaoPorAnoMesArrecadacaoAuxiliar */ private String acumularQuantidadeEValorDevolucaoPorAnoMesArrecadacaoAuxiliarMontarQuery(){ String queryFinal = ""; String parteSelect = "select sum(dev.devl_vldevolucao) as somaValor," + "count(dev.devl_id) as qtdDevolucoes," + "uneg.greg_id as idGreg," + "avbc.avbc_id as idAviso," + "avbc.arrc_id as idArrecadador," + "avbc.arfm_id as idFormaArrec," + "dev.devl_dtdevolucao as dataDevolucao," + "uneg.uneg_id as idUN, " + "dev.dotp_idagregador as idTipoDocumentoAgregador "; String parteFrom = " from arrecadacao.devolucao dev " + "left join arrecadacao.aviso_bancario avbc on dev.avbc_id=avbc.avbc_id " + "left join cadastro.localidade loca on dev.loca_id = loca.loca_id " + "left join cadastro.unidade_negocio uneg on uneg.uneg_id = loca.uneg_id " ; String parteWhere = "where dev.devl_amreferenciaarrecadacao = :anoMesReferenciaArrecadacao " + "and dev.loca_id = :idLocalidade "; String parteGroupBy = "group by uneg.greg_id, avbc.avbc_id, avbc.arrc_id," + "avbc.arfm_id, dev.devl_dtdevolucao, uneg.uneg_id, dev.dotp_idagregador "; // Caso o tipo do documento agregador seja nulo => Tipo de Devolucao Normal queryFinal = parteSelect + ", count(dev.devl_id) as qtdDocumentosAgregados, 'N' as tipoDevolucao " // DocumentoTipoAgregador, IdDocumento, CountDocumento + parteFrom + parteWhere + " and dev.dotp_idagregador is null " + parteGroupBy // UNION > Caso a identificacao do documento agregador seja diferente de nulo e a identificacao do Credito a // Realizar seja diferente de nulo => Tipo de Devolucao Credito + " UNION " + parteSelect + ", count(distinct dev.cbdo_id) as qtdDocumentosAgregados, 'C' as tipoDevolucao " + parteFrom + parteWhere + " and dev.dotp_idagregador is not null and dev.cbdo_id is not null and dev.crar_id is not null " + parteGroupBy // UNION > Caso a identificacao do Credito a realizar seja nula => Tipo de Devolucao Desconto + " UNION " + parteSelect + ", count(distinct dev.cbdo_id) as qtdDocumentosAgregados, 'D' as tipoDevolucao " + parteFrom + parteWhere + " and dev.dotp_idagregador is not null and dev.cbdo_id is not null and dev.crar_id is null " + parteGroupBy ; return queryFinal; } /** * * Relat�rio Analitico dos valores di�rios da arrecada��o com tarifa * * @author Adriana Muniz * data: 19/12/2012 * * obt�m as formas de arrecada��o com tarifa por dia * @param helper * @param filtro * @return cole��o */ public Collection obterFormasDeArrecadacaoComTarifaPorDiaAuxiliar( Object helper, FiltroConsultarDadosDiariosArrecadacaoAuxiliar filtro) throws ErroRepositorioException { Collection retorno = null; String consulta; Session session = HibernateUtil.getSession(); try { consulta = " SELECT coalesce(ardd.itemADD, ddd1.itemDDD) AS campoAgrupador, " + " arfm_dsarrecadacaoforma AS nomeFormaArrecadacao, " + " ARDD.valorTarifa as valorTarifa, " + " ardd.dataprevista as dataPrevista, " + " (COALESCE(ARDD.qtdDocumentos,0) + COALESCE(DDD1.qtdDocumentosDescontos,0) + COALESCE(DDD1.qtdDocumentosDevolucoes,0)) as qtdDocumentos," + " (COALESCE(ARDD.qtdPagamentos,0) + COALESCE(DDD1.qtdPagamentosDescontos,0) + COALESCE(DDD1.qtdPagamentosDevolucoes,0)) as qtdPagamentos, " + " COALESCE(ARDD.debitos, 0) as debitos, " + " COALESCE(DDD1.valorDescontos, 0) as descontos, " + " COALESCE(DDD1.valorDevolucoes, 0) as devolucoes " + " from (SELECT ad.arfm_id as itemADD, " + " sum(ardd_vltarifa) as valorTarifa, " + " (date(ad.ardd_dtpagamento) + cast(ad.ardd_nndiafloat as integer)) as dataPrevista, " + " sum(ad.ardd_qtdocumentos) as qtdDocumentos, " + " sum(ad.ardd_qtpagamentos) as qtdPagamentos, " + " sum(ad.ardd_vlpagamentos) as debitos " + " FROM arrecadacao.arrecadacao_dados_diarios_auxiliar ad " + " WHERE ad.ardd_amreferenciaarrecadacao = " + filtro.getAnoMesArrecadacao() + " and ad.arrc_id = " + filtro.getIdArrecadador() + " and date(ardd_dtpagamento) = '" + helper.toString()+"' " + " group by itemADD, dataPrevista) as ARDD " + " full join (SELECT dd.arfm_id as itemDDD, " + " 0 as valorTarifa, " + " null as dataPrevista, " + " sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_qtdocumentos else 0 end) as qtdDocumentosDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_qtdocumentos else 0 end) as qtdDocumentosDevolucoes, " + " sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_qtdevolucoes else 0 end) as qtdPagamentosDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_qtdevolucoes else 0 end) as qtdPagamentosDevolucoes, " + " sum(case when (dd.dvdd_tipodevolucao <> 'N') then dd.dvdd_vldevolucoes else 0 end) as valorDescontos, " + " sum(case when (dd.dvdd_tipodevolucao = 'N') then dd.dvdd_vldevolucoes else 0 end) as valorDevolucoes " + " FROM arrecadacao.devolucao_dados_diarios_auxiliar dd " + " WHERE dd.dvdd_amreferenciaarrecadacao = " + filtro.getAnoMesArrecadacao() + " and dd.arrc_id = " + filtro.getIdArrecadador() + " and date(dvdd_dtdevolucao) = '" + helper.toString()+"' " + " group by itemDDD ) as DDD1 on (ARDD.itemADD = DDD1.itemDDD) " + " inner join arrecadacao.arrecadacao_forma af on (af.arfm_id = coalesce(ardd.itemADD, ddd1.itemDDD)) " + " order by campoAgrupador "; retorno = session.createSQLQuery(consulta) .addScalar("campoAgrupador", Hibernate.INTEGER) .addScalar("nomeFormaArrecadacao", Hibernate.STRING) .addScalar("valorTarifa", Hibernate.BIG_DECIMAL) .addScalar("dataPrevista", Hibernate.DATE) .addScalar("qtdDocumentos", Hibernate.INTEGER) .addScalar("qtdPagamentos", Hibernate.INTEGER) .addScalar("debitos", Hibernate.BIG_DECIMAL) .addScalar("descontos", Hibernate.BIG_DECIMAL) .addScalar("devolucoes", Hibernate.BIG_DECIMAL) .list(); }catch(HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); }finally{ HibernateUtil.closeSession(session); } return retorno; } /** * Mudan�a de conta cont�bil de recebimentos at� 12/2012 classificados no m�s atual; * * @author Wellington Rocha * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idImpostoTipo * @return * @throws ErroRepositorioException */ public Collection pesquisarContasImpostosDeduzidosPagamentosContasEfetuadosAte122012ClassificadosMesPorTipoImposto( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idImpostoTipo) throws ErroRepositorioException { Collection retorno = new ArrayList(); // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + " sum(cnid.cnid_vlimposto) as col_0, " + " cnta.imov_id as col_1 " + "from " + " faturamento.conta_impostos_deduzidos cnid " + "inner join faturamento.conta cnta on cnid.cnta_id=cnta.cnta_id " + "where " + " cnid.imtp_id= :idImpostoTipo " + " and (cnta.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao < 201301 " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ")) " + " group by cnta.imov_id "; retorno = session.createSQLQuery(consulta) .addScalar("col_0", Hibernate.BIG_DECIMAL) .addScalar("col_1", Hibernate.INTEGER) .setInteger("idImpostoTipo",idImpostoTipo) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .list(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Contabilizar valores arrecadados at� dezembro de 2012 em contas diferentes. * * @author Wellington Rocha * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public Object[] acumularValorAguaEsgotoPagamentosContasEfetuadosAte122012ClassificadosNoMes( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { Object[] retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(ctcg.ctcg_vlagua) as col_0, " + "sum(ctcg.ctcg_vlesgoto) as col_1 " + "from " + "faturamento.conta_categoria ctcg " + "where " + "ctcg.catg_id= :idCategoria " + "and (ctcg.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao < 201301 " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ") ) " ; retorno = (Object[]) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Contabilizar valores arrecadados at� 31/12/2012 em contas diferentes * * @author Wellington Rocha * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @param idFinanciamentoTipo * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorDebitoCobradoPagamentosContasEfetuadosAte122012ClassificadosNoMesPorFinanciamentoTipo( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria, Integer idFinanciamentoTipo) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(dccg.dccg_vlcategoria) as col_0 " + "from " + "faturamento.debito_cobrado_categoria dccg " + "where " + "dccg.catg_id= :idCategoria " + "and (dccg.dbcb_id in ( " + "select " + "dbcb.dbcb_id " + "from " + "faturamento.debito_cobrado dbcb " + "where " + "dbcb.fntp_id= :idFinanciamentoTipo " + "and (dbcb.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao < 201301 " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0", Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idFinanciamentoTipo", idFinanciamentoTipo) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Altera��o na contabiliza��o de contas arrecadadas at� 31/12/2012 * * @author Wellington Rocha * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @param idOrigemCredito * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorCreditoRealizadoPagamentosContasEfetuadosAte122012ClassificadosNoMesPorOrigemCredito( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria, Integer idOrigemCredito) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(crcg.crcg_vlcategoria) as col_0 " + "from " + "faturamento.cred_realizado_catg crcg " + "where " + "crcg.catg_id=:idCategoria " + "and (crcg.crrz_id in ( " + "select " + "crrz.crrz_id " + "from " + "faturamento.credito_realizado crrz " + "where " + "crrz.crog_id= :idOrigemCredito " + "and (crrz.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao < 201301 " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0", Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idOrigemCredito",idOrigemCredito) .setInteger("idLocalidade",idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Contabilizar em contas diferentes os valores arrecadados at� 31/12/2012 * * @author Wellington Rocha * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorEntradaParcelamentoPagamentosGuiaPagamentoEfetuadosAte122012ClassificadosNoMesFinanciamentoTipoEntradaParcelamento( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(gpcg.gpcg_vlcategoria) as col_0 " + "from " + "faturamento.guia_pagamento_categoria gpcg " + "where " + "gpcg.catg_id= :idCategoria " + "and (gpcg.gpag_id in ( " + "select " + "gpag.gpag_id " + "from " + "faturamento.guia_pagamento gpag " + "where " + "gpag.fntp_id= :idFinanciamentoTipo " + "and (gpag.gpag_id in (" + "select " + "distinct pgmt.gpag_id as col_0 " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao < 201301 " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.gpag_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idFinanciamentoTipo",FinanciamentoTipo.ENTRADA_PARCELAMENTO) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Contabilizar em contas diferentes valores arrecadados at� 31/12/2012 * * @author Wellington Rocha * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idLancamentoItemContabil * @param idCategoria * @param idsFinanciamentoTipos * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorDebitoCobradoPagamentosContasEfetuadosAte122012ClassificadosNoMesPorFinanciamentoTipo( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idLancamentoItemContabil, Integer idCategoria, Collection<Integer> idsFinanciamentoTipos) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + " sum(dccg.dccg_vlcategoria) as col_0 " + " from " + " faturamento.debito_cobrado_categoria dccg " + " where " + " dccg.catg_id= :idCategoria " + " and (dccg.dbcb_id in ( " + "select " + "dbcb.dbcb_id " + "from " + "faturamento.debito_cobrado dbcb " + "where " + "dbcb.lict_id= :idLancamentoItemContabil " + "and (dbcb.fntp_id in (:idsFinanciamentoTipos)) " + "and (dbcb.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao < 201301 " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setParameterList("idsFinanciamentoTipos",idsFinanciamentoTipos) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Contabilizar em contas separadas valores arrecadados at� 31/12/2012 * * @author Wellington Rocha * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @param idLancamentoItemContabil * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorDebitoCobradoPagamentosContasEfetuadosAte122012ClassificadosNoMesFinanciamentoTipoDoacoes( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria, Integer idLancamentoItemContabil) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(dccg.dccg_vlcategoria) as col_0 " + "from " + "faturamento.debito_cobrado_categoria dccg " + "where " + "dccg.catg_id= :idCategoria " + "and (dccg.dbcb_id in ( " + "select " + "dbcb.dbcb_id " + "from " + "faturamento.debito_cobrado dbcb " + "where " + "dbcb.lict_id= :idLancamentoItemContabil " + "and dbcb.fntp_id= :idFinanciamentoTipo " + "and (dbcb.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao < 201301 " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setInteger("idFinanciamentoTipo",FinanciamentoTipo.DOACOES) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Contabilizar em contas separadas valores arrecadados at� 31/12/2012 * * @author Wellington Rocha * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idCategoria * @param idLancamentoItemContabil * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorCreditoRealizadoPagamentosContasEfetuadosAte122012ClassificadosNoMesOrigemCreditoValoresCobradosIndevidamente( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idCategoria, Integer idLancamentoItemContabil) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Cole��o de cr�dito origem de valores cobrados indevidamente Collection idsCreditosOrigem = new ArrayList(); idsCreditosOrigem.add(CreditoOrigem.DEVOLUCAO_TARIFA_AGUA); idsCreditosOrigem.add(CreditoOrigem.DEVOLUCAO_TARIFA_ESGOTO); idsCreditosOrigem.add(CreditoOrigem.SERVICOS_INDIRETOS_PAGOS_INDEVIDAMENTE); idsCreditosOrigem.add(CreditoOrigem.DEVOLUCAO_JUROS_PARCELAMENTO); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(crcg.crcg_vlcategoria) as col_0 " + "from " + "faturamento.cred_realizado_catg crcg " + "where " + "crcg.catg_id= :idCategoria " + "and (crcg.crrz_id in ( " + "select " + "crrz.crrz_id " + "from " + "faturamento.credito_realizado crrz " + "where " + "crrz.lict_id= :idLancamentoItemContabil " + "and (crrz.crog_id in (:idsCreditosOrigem)) " + "and (crrz.cnta_id in (" + "select " + "distinct pgmt.cnta_id " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao < 201301 " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.cnta_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setParameterList("idsCreditosOrigem", idsCreditosOrigem) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Contabilizar em contas separadas valores arrecadados at� 31/12/2012 * * @author Wellington Rocha * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idLancamentoItemContabil * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorEntradaParcelamentoPagamentosGuiaPagamentoEfetuadosAte122012ClassificadosNoMesFinanciamentoTipoServico( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idLancamentoItemContabil, Integer idCategoria) throws ErroRepositorioException { BigDecimal retorno = null; // cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(gpcg.gpcg_vlcategoria) as col_0 " + "from " + "faturamento.guia_pagamento_categoria gpcg " + "where " + "gpcg.catg_id= :idCategoria " + "and (gpcg.gpag_id in ( " + "select " + "gpag.gpag_id " + "from " + "faturamento.guia_pagamento gpag " + "where " + "gpag.lict_id= :idLancamentoItemContabil " + "and gpag.fntp_id= :idFinanciamentoTipo " + "and (gpag.gpag_id in (" + "select " + "distinct pgmt.gpag_id as col_0 " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao < 201301 " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.gpag_id is not null) " + ")) " + ") " + ")"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setInteger("idFinanciamentoTipo",FinanciamentoTipo.SERVICO_NORMAL) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0276] - Encerrar Arrecada��o do M�s * * Contabilizar em contas separadas valores arrecadados at� 31/12/2012 * * @author Wellington Rocha * * @param idLocalidade * @param anoMesReferenciaArrecadacao * @param idLancamentoItemContabil * @param idCategoria * @return * @throws ErroRepositorioException */ public BigDecimal acumularValorQueFaltaSerCobradoPagamentosDebitoACobrarEfetuadosAte122012( Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idLancamentoItemContabil, Integer idCategoria) throws ErroRepositorioException { // Cria a var�vel que vai armazenar a cole��o de retorno da pesquisa BigDecimal retorno = null; // Cria uma inst�ncia da sess�o Session session = HibernateUtil.getSession(); // Cria a vari�vel que vai conter o hql String consulta = ""; try { consulta = "select " + "sum(dbcg.dbcg_vlcategoria-(trunc(dbcg.dbcg_vlcategoria/dbac.dbac_nnprestacaodebito,2)*dbac.dbac_nnprestacaocobradas)) as col_0 " + "from " + "faturamento.deb_a_cobrar_catg dbcg " + "inner join faturamento.debito_a_cobrar dbac on dbcg.dbac_id=dbac.dbac_id " + "where " + "dbcg.dbac_id=dbac.dbac_id " + "and dbac.lict_id=:idLancamentoItemContabil " + "and dbac.loca_id= :idLocalidade " + "and dbcg.catg_id=:idCategoria " + "and (dbac.dbac_id in (" + "select " + "distinct pgmt.dbac_id as col_0 " + "from " + "arrecadacao.pagamento pgmt " + "where " + "pgmt.pgmt_amreferenciaarrecadacao < 201301 " + "and pgmt.loca_id= :idLocalidade " + "and (pgmt.pgst_idatual= :idPagamentoClassificado or pgmt.pgst_idatual= :idPagamentoValorABaixar) " + "and (pgmt.dbac_id is not null) " + ")) " ; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("col_0",Hibernate.BIG_DECIMAL) .setInteger("idLancamentoItemContabil", idLancamentoItemContabil) .setInteger("idLocalidade", idLocalidade) .setInteger("idCategoria", idCategoria) .setInteger("idPagamentoClassificado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO) .setInteger("idPagamentoValorABaixar",PagamentoSituacao.VALOR_A_BAIXAR) .setMaxResults(1) .uniqueResult(); // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * Felipe Santos - 22/10/2013 * * Retorna o total de Arrecada��o por refer�ncia e localidade * * @param anoMesReferencia * @param idLocalidade * @return BigDecimal * @throws ErroRepositorioException */ public BigDecimal pesquisarTotalArrecadacaoRelatorioBIG( Integer anoMesReferencia, Integer idLocalidade) throws ErroRepositorioException { BigDecimal retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "SELECT coalesce(sum(vlpag), 0) as total " + "FROM (" + "SELECT coalesce(sum(pgmt_vlpagamento), 0) as vlpag " + "FROM arrecadacao.pagamento " + "WHERE loca_id = :idLocalidade " + "AND pgmt_amreferenciaarrecadacao = :anoMesReferencia " + "UNION " + "SELECT coalesce(sum(pghi_vlpagamento), 0) as vlpag " + "FROM arrecadacao.pagamento_historico " + "WHERE loca_id = :idLocalidade " + "AND pghi_amreferenciaarrecadacao = :anoMesReferencia " + "UNION " + "SELECT coalesce(sum(devl_vldevolucao * -1), 0) as vlpag " + "FROM arrecadacao.devolucao " + "WHERE loca_id = :idLocalidade " + "AND devl_amreferenciaarrecadacao = :anoMesReferencia " + "UNION " + "SELECT coalesce(sum(dehi_vldevolucao * -1), 0) as vlpag " + "FROM arrecadacao.devolucao_historico " + "WHERE loca_id = :idLocalidade " + "AND dehi_amreferenciaarrecadacao = :anoMesReferencia" + ") as arrecadacao"; retorno = (BigDecimal) session.createSQLQuery(consulta) .addScalar("total",Hibernate.BIG_DECIMAL) .setInteger("idLocalidade", idLocalidade) .setInteger("anoMesReferencia", anoMesReferencia) .setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Felipe Santos - 22/10/2013 * * Retorna diferen�a de datas e quantidade de pagamentos para * Prazo Medio de Recebimento de Contas * * @param anoMesReferencia * @param idLocalidade * @return Object[] * @throws ErroRepositorioException */ public Object[] pesquisarPrazoMedioRecebimentoContasRelatorioBIG( Integer anoMesReferencia, Integer idLocalidade) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "SELECT sum(difDatas) as difDatas, " + "sum(qtdPag) as qtdPag " + "FROM (" + "SELECT coalesce(sum(pgmt_dtpagamento - cnta_dtvencimentoconta), 0) as difDatas, " + "count(pgmt_id) as qtdPag " + "FROM arrecadacao.pagamento " + "INNER JOIN faturamento.conta on conta.cnta_id = pagamento.cnta_id " + "WHERE conta.loca_id = :idLocalidade " + "AND pgmt_amreferenciaarrecadacao = :anoMesReferencia " + "UNION " + "SELECT coalesce(sum(pghi_dtpagamento - cnhi_dtvencimentoconta), 0) as difDatas, " + "count(pghi_id) as qtdPag " + "FROM arrecadacao.pagamento_historico pagamento " + "INNER JOIN faturamento.conta_historico conta on conta.cnta_id = pagamento.cnta_id " + "WHERE conta.loca_id = :idLocalidade " + "AND pghi_amreferenciaarrecadacao = :anoMesReferencia " + ") as prazoMedio"; retorno = (Object[]) session.createSQLQuery(consulta) .addScalar("difDatas",Hibernate.INTEGER) .addScalar("qtdPag",Hibernate.INTEGER) .setInteger("idLocalidade", idLocalidade) .setInteger("anoMesReferencia", anoMesReferencia) .setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Felipe Santos - 08/11/2013 * * Retorna os dados para o Relatorio BIG * * @param anoMesReferencia * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarDadosRelatorioBIG( Integer anoMesReferencia) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "SELECT greg.greg_nmregional as gerencia, " + "loca.loca_nmlocalidade as localidade, " + "boig_qtdcontas as quantidadeContas, " + "boig_vlfaturamento as valorFaturamento, " + "boig_vlarrecadacao as valorArrecadacao, " + "boig_eficarrecadacao as eficienciaArrecadacao, " + "boig_vlmediofaturamento as valorMedioFaturamento, " + "boig_icqtderroscontas as indicadorQuantidadeErrosContas, " + "boig_icvlerroscontas as indicadorValorErrosContas, " + "boig_icrecebimentomedio as indicadorRecebimentoMedio, " + "boig_icqtdinadimplenciaate30 as indicadorQuantidadeInadimplenciaAte30, " + "boig_icvlinadimplenciaate30 as indicadorValorInadimplenciaAte30, " + "boig_icqtdinadimplenciaate90 as indicadorQuantidadeInadimplenciaAte90, " + "boig_icvlinadimplenciaate90 as indicadorValorInadimplenciaAte90, " + "boig_icqtdinadimplenciamaior90 as indicadorQuantidadeInadimplenciaMaior90, " + "boig_icvlinadimplenciamaior90 as indicadorValorInadimplenciaMaior90, " + "boig_qtdfatcomprometidos as quantidadeFaturamentosComprometidos, " + "boig_indicehidrometracao as indiceHidrometracao, " + "boig_qtdhidrometrosinstalados as quantidadeHidrometrosInstalados, " + "boig_qtdhidrometrossubstituidos as quantidadeHidrometrosSubstituidos, " + "boig_prazomedioatendimentoos as prazoMedioAtendimentoOS, " + "boig_qtdnovasligesgoto as quantidadeNovasLigacoesEsgoto, " + "boig_economiasnovasligesgoto as economiasNovasLigacoesEsgoto, " + "boig_qtdnovasligagua as quantidadeNovasLigacoesAgua, " + "boig_economiasnovasligagua as economiasNovasLigacoesAgua, " + "boig_qtdconsligados as quantidadeConsumidoresLigados, " + "boig_qtdconscortados as quantidadeConsumidoresCortados, " + "boig_qtdconssuprimidos as quantidadeConsumidoresSuprimidos, " + "boig_qtdconsfactiveis as quantidadeConsumidoresFactiveis, " + "boig_qtdconstotal as quantidadeConsumidoresTotal, " + "boig_indicecortados as indiceCortados, " + "boig_indicesuprimidos as indiceSuprimidos, " + "boig_indicefactiveis as indiceFactiveis, " + "loca.loca_id as idLocalidade " + "FROM arrecadacao.boletim_informacoes_gerenciais big " + "INNER JOIN cadastro.localidade loca ON loca.loca_id = big.loca_id " + "INNER JOIN cadastro.gerencia_regional greg ON greg.greg_id = loca.greg_id " + "WHERE big.boig_amreferencia = :anoMesReferencia " + "ORDER BY loca.loca_nmlocalidade"; retorno = (Collection) session.createSQLQuery(consulta) .addScalar("gerencia", Hibernate.STRING) .addScalar("localidade", Hibernate.STRING) .addScalar("quantidadeContas", Hibernate.INTEGER) .addScalar("valorFaturamento", Hibernate.BIG_DECIMAL) .addScalar("valorArrecadacao", Hibernate.BIG_DECIMAL) .addScalar("eficienciaArrecadacao", Hibernate.BIG_DECIMAL) .addScalar("valorMedioFaturamento", Hibernate.BIG_DECIMAL) .addScalar("indicadorQuantidadeErrosContas", Hibernate.BIG_DECIMAL) .addScalar("indicadorValorErrosContas", Hibernate.BIG_DECIMAL) .addScalar("indicadorRecebimentoMedio", Hibernate.BIG_DECIMAL) .addScalar("indicadorQuantidadeInadimplenciaAte30", Hibernate.BIG_DECIMAL) .addScalar("indicadorValorInadimplenciaAte30", Hibernate.BIG_DECIMAL) .addScalar("indicadorQuantidadeInadimplenciaAte90", Hibernate.BIG_DECIMAL) .addScalar("indicadorValorInadimplenciaAte90", Hibernate.BIG_DECIMAL) .addScalar("indicadorQuantidadeInadimplenciaMaior90", Hibernate.BIG_DECIMAL) .addScalar("indicadorValorInadimplenciaMaior90", Hibernate.BIG_DECIMAL) .addScalar("quantidadeFaturamentosComprometidos", Hibernate.BIG_DECIMAL) .addScalar("indiceHidrometracao", Hibernate.BIG_DECIMAL) .addScalar("quantidadeHidrometrosInstalados", Hibernate.INTEGER) .addScalar("quantidadeHidrometrosSubstituidos", Hibernate.INTEGER) .addScalar("prazoMedioAtendimentoOS", Hibernate.BIG_DECIMAL) .addScalar("quantidadeNovasLigacoesEsgoto", Hibernate.INTEGER) .addScalar("economiasNovasLigacoesEsgoto", Hibernate.INTEGER) .addScalar("quantidadeNovasLigacoesAgua", Hibernate.INTEGER) .addScalar("economiasNovasLigacoesAgua", Hibernate.INTEGER) .addScalar("quantidadeConsumidoresLigados", Hibernate.INTEGER) .addScalar("quantidadeConsumidoresCortados", Hibernate.INTEGER) .addScalar("quantidadeConsumidoresSuprimidos", Hibernate.INTEGER) .addScalar("quantidadeConsumidoresFactiveis", Hibernate.INTEGER) .addScalar("quantidadeConsumidoresTotal", Hibernate.INTEGER) .addScalar("indiceCortados", Hibernate.BIG_DECIMAL) .addScalar("indiceSuprimidos", Hibernate.BIG_DECIMAL) .addScalar("indiceFactiveis", Hibernate.BIG_DECIMAL) .addScalar("idLocalidade", Hibernate.INTEGER) .setInteger("anoMesReferencia", anoMesReferencia) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Collection<PagamentoHelper> pesquisarValoresPagamentos(Integer pagamentoSituacao, Integer idLocalidade, Integer anoMesReferenciaArrecadacao) throws ErroRepositorioException { Collection<PagamentoHelper> retorno = new ArrayList(); Session session = HibernateUtil.getSession(); StringBuilder consulta = new StringBuilder(); try { consulta.append("select p.pgmt_id as idPagamento, p.dotp_id as tipoDocumento, p.pgmt_vlpagamento as valorPagamento") .append(", coalesce((c.cnta_vlagua + c.cnta_vlesgoto + c.cnta_vldebitos - c.cnta_vlcreditos - c.cnta_vlimpostos)") .append(", d.dbac_vldebito, g.gpag_vldebito) as valorDocumento") .append(", coalesce( c.cnta_amreferenciaconta, d.dbac_amreferenciadebito, g.gpag_amreferenciacontabil ) as dataPagamento ") .append(", p.imov_id as idImovel, p.cnta_id as idConta") .append(" from arrecadacao.pagamento p") .append(" inner join cadastro.localidade l on p.loca_id = l.loca_id") .append(" left join faturamento.conta c on p.cnta_id = c.cnta_id") .append(" left join faturamento.debito_a_cobrar d on p.dbac_id = d.dbac_id") .append(" and d.dbac_nnprestacaodebito = :qtdPrestacoes") .append(" left join faturamento.guia_pagamento g on p.gpag_id = g.gpag_id") .append(" where p.pgmt_amreferenciaarrecadacao <= :anoMesReferenciaArrecadacao") .append(" and pgst_idatual = :pagamentoSituacao") .append(" and p.loca_id = :idLocalidade"); Collection result = session.createSQLQuery(consulta.toString()) .addScalar("idPagamento", Hibernate.INTEGER) .addScalar("tipoDocumento", Hibernate.INTEGER) .addScalar("valorPagamento", Hibernate.BIG_DECIMAL) .addScalar("valorDocumento", Hibernate.BIG_DECIMAL) .addScalar("dataPagamento", Hibernate.STRING) .addScalar("idImovel", Hibernate.INTEGER) .addScalar("idConta", Hibernate.INTEGER) .setInteger("qtdPrestacoes", 1) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("pagamentoSituacao", pagamentoSituacao) .setInteger("idLocalidade", idLocalidade) .list(); for (Object item : result) { Object[] registro = (Object[]) item; PagamentoHelper pagamento = new PagamentoHelper(); pagamento.setIdPagamento((Integer)registro[0]); pagamento.setIdTipoDocumento((Integer)registro[1]); pagamento.setValorPagamento((BigDecimal)registro[2]); pagamento.setValorDocumento((BigDecimal)registro[3]); pagamento.setDataPagamento((String)registro[4]); pagamento.setIdImovel((Integer)registro[5]); pagamento.setIdConta((Integer)registro[6]); retorno.add(pagamento); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public void atualizarSituacaoPagamento(Integer pagamentoSituacao, Integer idPagamento) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); StringBuilder sql = new StringBuilder(); try { sql.append("UPDATE Pagamento") .append(" SET pgst_idatual = :pagamentoSituacao, pgmt_tmultimaalteracao = :dataAlteracao") .append(" WHERE pgmt_id = :idPagamento"); session.createQuery(sql.toString()) .setInteger("pagamentoSituacao", pagamentoSituacao) .setInteger("idPagamento", idPagamento) .setTimestamp("dataAlteracao", new Date()).executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } public void atualizarGuiasPagamentoNaoPagasAtePeriodo(Integer financiamentoTipoServico, Collection<Integer> idsGuiasPagamentoNaoPagas, Integer anoMesReferencia) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); StringBuilder sql = new StringBuilder(); try { if(idsGuiasPagamentoNaoPagas != null && !idsGuiasPagamentoNaoPagas.isEmpty()){ sql.append(" UPDATE GuiaPagamento as gpag") .append(" SET gpag.debitoCreditoSituacaoAnterior = gpag.debitoCreditoSituacaoAtual, ") .append(" gpag.debitoCreditoSituacaoAtual = :situacaoCancelada, ") .append(" gpag.ultimaAlteracao = :ultimaAlteracao, ") .append(" gpag.anoMesReferenciaContabil = :anoMesReferencia ") .append(" WHERE gpag.id IN (:guiasPagamentoNaoPagasAtePeriodo)"); session.createQuery(sql.toString()) .setInteger("situacaoCancelada", DebitoCreditoSituacao.CANCELADA) .setDate("ultimaAlteracao", new Date()) .setInteger("anoMesReferencia", anoMesReferencia) .setParameterList("guiasPagamentoNaoPagasAtePeriodo", idsGuiasPagamentoNaoPagas) .executeUpdate(); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { session.close(); } } public Collection<Integer> pesquisarIdsGuiasPagamentoNaoPagas(Date dataVencimentoLimite, Integer idLocalidade) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Collection<Integer> guiasPagamentoNaoPagasAtePeriodo = new ArrayList<Integer>(); StringBuilder sql = new StringBuilder(); try{ sql.append("SELECT pgmt_gpag.id ") .append(" FROM Pagamento as pgmt ") .append(" RIGHT JOIN pgmt.guiaPagamento as pgmt_gpag ") .append(" WHERE pgmt_gpag.dataVencimento < :dataVencimentoLimite ") .append(" AND pgmt.id IS NULL ") .append(" AND pgmt_gpag.financiamentoTipo.id in (:financiamentoTipoServicoNormal) ") .append(" AND pgmt_gpag.localidade.id = :idLocalidade ") .append(" AND pgmt_gpag.debitoCreditoSituacaoAtual in (:situacaoNormal,:situacaoRetificada,:situacaoIncluida)"); Collection ids = session.createQuery(sql.toString()) .setDate("dataVencimentoLimite", dataVencimentoLimite) .setInteger("idLocalidade", idLocalidade) .setInteger("financiamentoTipoServicoNormal", FinanciamentoTipo.SERVICO_NORMAL) .setInteger("situacaoNormal", DebitoCreditoSituacao.NORMAL) .setInteger("situacaoRetificada", DebitoCreditoSituacao.RETIFICADA) .setInteger("situacaoIncluida", DebitoCreditoSituacao.INCLUIDA) .list(); for (Object object : ids) { guiasPagamentoNaoPagasAtePeriodo.add((Integer) object); } return guiasPagamentoNaoPagasAtePeriodo; } catch(HibernateException e){ throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { session.close(); } } public Collection<Integer> pesquisarIdsLocalidadeComGuiasPagamentoNaoPagas(Integer financiamentoTipoServico, Date dataVencimentoLimite) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); StringBuilder sql = new StringBuilder(); Collection<Integer> retorno = new ArrayList<Integer>(); try { sql.append("SELECT distinct gpag.loca_id as localidade ") .append(" FROM faturamento.guia_pagamento gpag ") .append(" LEFT JOIN arrecadacao.pagamento pgmt ON pgmt.gpag_id = gpag.gpag_id ") .append(" WHERE gpag_dtvencimento < :dataVencimentoLimite ") .append(" AND pgmt_id IS NULL ") .append(" AND fntp_id in (:financiamentoTipoServicoNormal) ") .append(" AND dcst_idatual in (:situacaoNormal,:situacaoRetificada,:situacaoIncluida)"); retorno = session.createSQLQuery(sql.toString()) .addScalar("localidade", Hibernate.INTEGER) .setDate("dataVencimentoLimite", dataVencimentoLimite) .setInteger("financiamentoTipoServicoNormal", FinanciamentoTipo.SERVICO_NORMAL) .setInteger("situacaoNormal", DebitoCreditoSituacao.NORMAL) .setInteger("situacaoRetificada", DebitoCreditoSituacao.RETIFICADA) .setInteger("situacaoIncluida", DebitoCreditoSituacao.INCLUIDA).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } return retorno; } public Collection<Pagamento> obterPagamentos(Collection<Integer> idsPagamentos) throws ErroRepositorioException { Collection<Pagamento> retorno = new ArrayList<Pagamento>(); Collection<Pagamento> pagamentos = null; Session session = HibernateUtil.getSession(); String consulta = null; String innerCancelamento = null; try { consulta = "select pagamento from Pagamento as pagamento " + " where pagamento.id in (" + " select p1.id " + " from gcom.arrecadacao.pagamento.Pagamento as p1 " + " inner join pagamento.contaGeral contaGeral " + " inner join contaGeral.conta conta " + " inner join conta.contaMotivoCancelamento contaMotivoCancelamento " + " where pagamento.id in (:idsPagamentos) )" + " or pagamento.id in ( " + " select p2.id " + " from gcom.arrecadacao.pagamento.Pagamento as p2 " + " inner join pagamento.contaGeral contaGeral " + " inner join contaGeral.contaHistorico conta " + " inner join conta.contaMotivoCancelamento contaMotivoCancelamento " + " where pagamento.id in (:idsPagamentos) ) " + " order by pagamento.dataPagamento, pagamento.imovel.id, pagamento.valorPagamento "; pagamentos = session.createQuery(consulta) .setParameterList("idsPagamentos", idsPagamentos).setMaxResults(1500).list(); for (Pagamento pagamento: pagamentos) { if (pagamento.getContaGeral() != null) { ContaGeral contaGeral = (ContaGeral) session.get(ContaGeral.class, pagamento.getContaGeral().getId()); if (contaGeral.getConta() != null) { Conta conta = (Conta) session.get(Conta.class, pagamento.getContaGeral().getId()); if (conta.getImovel().getId().equals(new Integer(2697408))) { System.out.println("Debug..."); } contaGeral.setConta(conta); if (conta.getContaMotivoCancelamento() != null) { ContaMotivoCancelamento contaMotivoCancelamento = (ContaMotivoCancelamento) session.get( ContaMotivoCancelamento.class, conta.getContaMotivoCancelamento().getId()); conta.setContaMotivoCancelamento(contaMotivoCancelamento); } } else { ContaHistorico conta = (ContaHistorico) session.get(ContaHistorico.class, pagamento.getContaGeral().getId()); contaGeral.setContaHistorico(conta); if (conta.getImovel().getId().equals(new Integer(2697408))) { System.out.println("Debug..."); } if (conta.getContaMotivoCancelamento() != null) { ContaMotivoCancelamento contaMotivoCancelamento = (ContaMotivoCancelamento) session.get( ContaMotivoCancelamento.class, conta.getContaMotivoCancelamento().getId()); conta.setContaMotivoCancelamento(contaMotivoCancelamento); } } pagamento.setContaGeral(contaGeral); } retorno.add(pagamento); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Collection<DebitoAutomatico> pesquisarDebitoAutomaticoSemDataExclusao( Integer idImovel) throws ErroRepositorioException { Collection<DebitoAutomatico> retorno = new ArrayList<DebitoAutomatico>(); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "FROM DebitoAutomatico AS debitoAutomatico " + "WHERE debitoAutomatico.imovel.id = :idImovel " + "and debitoAutomatico.dataExclusao is null"; retorno = session.createQuery(consulta).setInteger("idImovel", idImovel).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Collection pesquisarClienteGuiaPagamentoECliente(Integer idGuiaPagamento) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); try { String consulta = "select cgp " + "from ClienteGuiaPagamento cgp " + "inner join fetch cgp.cliente cli " + "inner join cgp.guiaPagamento guia " + "where guia.id =:idGuiaPagamento "; retorno = (Collection) session.createQuery(consulta) .setInteger("idGuiaPagamento", idGuiaPagamento.intValue()) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Object[] acumularValorAguaEsgotoPagamentosClassificadosRecuperacaoCreditoConta(Integer idLocalidade, Integer referenciaArrecadacao, Integer idCategoria) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); StringBuilder consulta = new StringBuilder(); StringBuilder consultaConta = new StringBuilder(); try { consultaConta.append("select distinct pgmt.cnta_id ") .append("from arrecadacao.pagamento pgmt ") .append("where pgmt.loca_id= :idLocalidade ") .append("and (pgmt.pgst_idatual in (:idPagamentoClassificadoDuplicidade , :idPagamentoClassificadoCancelado)) ") .append("and pgmt.cnta_id is not null "); consulta.append("select sum(ctcg.ctcg_vlagua) as col_0, sum(ctcg.ctcg_vlesgoto) as col_1 ") .append("from faturamento.conta_categoria ctcg ") .append("where ctcg.catg_id= :idCategoria ") .append("and (ctcg.cnta_id in (") .append(consultaConta) .append(")) ") ; retorno = (Object[]) session.createSQLQuery(consulta.toString()) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1",Hibernate.BIG_DECIMAL) .setInteger("idCategoria", idCategoria) .setInteger("idLocalidade", idLocalidade) .setInteger("idPagamentoClassificadoDuplicidade",PagamentoSituacao.PAGAMENTO_CLASSIFICADO_RECUPERACAO_CREDITO_DUPLICIDADE) .setInteger("idPagamentoClassificadoCancelado",PagamentoSituacao.PAGAMENTO_CLASSIFICADO_RECUPERACAO_CREDITO_CANCELADO) .setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Collection<LancamentoItemContabil> pesquisarLancamentosItemContabil() throws ErroRepositorioException { Collection<LancamentoItemContabil> retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select lict from LancamentoItemContabil lict order by lict.id"; retorno = (Collection<LancamentoItemContabil>) session.createQuery(consulta).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Collection pesquisarContasPagamentosClassificadosRecuperacaoCredito(Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idPagamentoSituacao) throws ErroRepositorioException { Collection retorno = new ArrayList(); Session session = HibernateUtil.getSession(); StringBuilder consulta = new StringBuilder(); try { consulta.append("select sum(pgmt.pgmt_vlexcedente) as col_0, pgmt.imov_id as col_1 ") .append("from arrecadacao.pagamento pgmt ") .append("where pgmt.loca_id= :idLocalidade ") .append("and pgmt.pgmt_amreferenciaarrecadacao = :anoMesReferenciaArrecadacao ") .append("and pgmt.pgst_idatual = :idPagamentoClassificado ") .append("group by pgmt.imov_id "); retorno = session.createSQLQuery(consulta.toString()) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1", Hibernate.INTEGER) .setInteger("idLocalidade",idLocalidade) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idPagamentoClassificado", idPagamentoSituacao) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Collection pesquisarContasPagamentosClassificadosRecuperacaoCreditoMesesAnteriores(Integer idLocalidade, Integer anoMesReferenciaArrecadacao, Integer idPagamentoSituacao) throws ErroRepositorioException { Collection retorno = new ArrayList(); Session session = HibernateUtil.getSession(); StringBuilder consulta = new StringBuilder(); try { consulta.append("select sum(pgmt.pgmt_vlexcedente) as col_0, pgmt.imov_id as col_1 ") .append("from arrecadacao.pagamento pgmt ") .append("where pgmt.loca_id= :idLocalidade ") .append("and pgmt.pgmt_amreferenciaarrecadacao < :anoMesReferenciaArrecadacao ") .append("and pgmt.pgst_idatual = :idPagamentoClassificado ") .append("group by pgmt.imov_id "); retorno = session.createSQLQuery(consulta.toString()) .addScalar("col_0",Hibernate.BIG_DECIMAL) .addScalar("col_1", Hibernate.INTEGER) .setInteger("idLocalidade",idLocalidade) .setInteger("anoMesReferenciaArrecadacao", anoMesReferenciaArrecadacao) .setInteger("idPagamentoClassificado", idPagamentoSituacao) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public List<ResumoCreditosAvisosBancariosDTO> pesquisarResumoCreditosAvisosBancarios(Date data) throws ErroRepositorioException { List<ResumoCreditosAvisosBancariosDTO> retorno = new ArrayList<ResumoCreditosAvisosBancariosDTO>(); Session session = HibernateUtil.getSession(); StringBuilder select = new StringBuilder(); select.append("SELECT a.avbc_id as id_aviso, ") .append("a.avbc_dtrealizada as data_aviso, ") .append("a.arrc_id as id_arrecadador, ") .append("c.clie_nmcliente as descricao_arrecadador, ") .append("a.arfm_id as id_arrecadacao_forma, ") .append("af.arfm_dsarrecadacaoforma as descricao_arrecadacao_forma, ") .append("a.avbc_dtlancamento as data_lancamento, ") .append("(CASE WHEN a.avbc_iccreditodebito = 1 THEN a.avbc_vlrealizado ELSE 0 END) as credito, ") .append("(CASE WHEN a.avbc_iccreditodebito = 2 THEN a.avbc_vlrealizado ELSE 0 END) as debito, ") .append("a.avbc_amreferenciaarrecadacao as ano_mes_arrecadacao, ") .append("tarifa.actf_nndiafloat as dias_float, "); StringBuilder from = new StringBuilder(); from.append("FROM arrecadacao.aviso_bancario a ") .append("LEFT JOIN arrecadacao.arrecadador ar ON a.arrc_id = ar.arrc_id ") .append("LEFT JOIN cadastro.cliente c ON ar.clie_id = c.clie_id ") .append("LEFT JOIN arrecadacao.arrecadacao_forma af ON a.arfm_id = af.arfm_id ") .append("INNER JOIN arrecadacao.arrecadador_contrato contrato ON ar.arrc_id = contrato.arrc_id ") .append("INNER JOIN arrecadacao.arrecadador_contrato_tar tarifa ON tarifa.arct_id = contrato.arct_id and tarifa.arfm_id = af.arfm_id "); StringBuilder groupBy = new StringBuilder(); groupBy.append("GROUP BY id_aviso, data_aviso, id_arrecadador, descricao_arrecadador, id_arrecadacao_forma, descricao_arrecadacao_forma, ") .append(" data_lancamento, credito, debito, ano_mes_arrecadacao, dias_float, data_pagamento, tarifa.actf_vltarifa "); StringBuilder sql = new StringBuilder(); sql.append("SELECT data_pagamento_previsto, data_aviso, descricao_arrecadador, sum((valor_pagamento - (qtd_documentos * valor_tarifa))) as valor_pagamento ") .append("FROM (") .append(select) .append("p.pgmt_dtpagamento as data_pagamento, ") .append("adiciona_dias_uteis(p.pgmt_dtpagamento, tarifa.actf_nndiafloat,1) as data_pagamento_previsto, ") .append("sum(p.pgmt_vlpagamento) as valor_pagamento, ") .append("count(distinct p.amit_id) as qtd_documentos, ") .append("tarifa.actf_vltarifa as valor_tarifa ") .append(from) .append("INNER JOIN arrecadacao.pagamento p ON a.avbc_id = p.avbc_id ") .append("WHERE p.pgmt_dtpagamento >= current_date - 10 ") .append(groupBy) .append(") as resumo ") .append("WHERE data_pagamento_previsto >= :data ") .append("GROUP BY data_pagamento_previsto, data_aviso, id_arrecadador, descricao_arrecadador ") .append("ORDER BY data_pagamento_previsto, data_aviso, id_arrecadador;"); try { Collection colecao = session.createSQLQuery(sql.toString()) .addScalar("data_pagamento_previsto", Hibernate.DATE) .addScalar("data_aviso", Hibernate.DATE) .addScalar("descricao_arrecadador", Hibernate.STRING) .addScalar("valor_pagamento", Hibernate.BIG_DECIMAL) .setDate("data", data) .list(); for (Object dadosResumo : colecao) { Object[] arrayDadosResumo = (Object[]) dadosResumo; ResumoCreditosAvisosBancariosDTO dto = new ResumoCreditosAvisosBancariosDTO( (Date) arrayDadosResumo[0], (Date) arrayDadosResumo[1], (String) arrayDadosResumo[2], (BigDecimal) arrayDadosResumo[3]); retorno.add(dto); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public Object[] pesquisarPagamentoInconformeImovel(String idImovel) throws ErroRepositorioException { Object[] retorno = new Object[2]; Session session = HibernateUtil.getSession(); try { String hql = " select distinct pagamento " + " from gcom.arrecadacao.pagamento.Pagamento pagamento " + " LEFT JOIN FETCH pagamento.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.conta conta " + " LEFT JOIN FETCH contaGeral.contaHistorico contaHistorico " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAtual pagtoSitAtual " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAnterior pagtoSitAnterior " + " LEFT JOIN conta.clienteContas as clienteContas " + " WHERE conta.imovel.id = :idImovel " + " AND clienteContas.cliente = (select ci.cliente from gcom.cadastro.cliente.ClienteImovel ci where conta.imovel.id = ci.imovel.id and ci.clienteRelacaoTipo = :idTipoCliente and ci.dataFimRelacao is null) " + " AND pagamento.pagamentoSituacaoAtual = :pagamentoSituacao"; retorno[0] = session.createQuery(hql) .setParameter("idImovel", Integer.parseInt(idImovel)) .setParameter("idTipoCliente", ClienteRelacaoTipo.USUARIO) .setParameter("pagamentoSituacao", PagamentoSituacao.VALOR_NAO_CONFERE) .list(); hql = " select distinct pagamento " + " from gcom.arrecadacao.pagamento.Pagamento pagamento " + " LEFT JOIN FETCH pagamento.contaGeral contaGeral " + " LEFT JOIN FETCH contaGeral.conta conta " + " LEFT JOIN FETCH contaGeral.contaHistorico contaHistorico " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAtual pagtoSitAtual " + " LEFT JOIN FETCH pagamento.pagamentoSituacaoAnterior pagtoSitAnterior " + " LEFT JOIN conta.clienteContas as clienteContas " + " WHERE conta.imovel.id = :idImovel " + " AND clienteContas.cliente <> (select ci.cliente from gcom.cadastro.cliente.ClienteImovel ci where conta.imovel.id = ci.imovel.id and ci.clienteRelacaoTipo = :idTipoCliente and ci.dataFimRelacao is null) " + " AND pagamento.pagamentoSituacaoAtual = :pagamentoSituacao"; retorno[1] = session.createQuery(hql) .setParameter("idImovel", Integer.parseInt(idImovel)) .setParameter("idTipoCliente", ClienteRelacaoTipo.USUARIO) .setParameter("pagamentoSituacao", PagamentoSituacao.VALOR_NAO_CONFERE) .list(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public List<ArrecadadorMovimentoItemDTO> obterItensPorAviso(Integer idAvisoBancario) throws ErroRepositorioException { List<ArrecadadorMovimentoItemDTO> retorno = new ArrayList<ArrecadadorMovimentoItemDTO>(); Session session = HibernateUtil.getSession(); StringBuilder consulta = new StringBuilder(); try { consulta.append("SELECT item.imov_id as imovel, ") .append(" imovel.loca_id as localidade, ") .append(" item.amit_vldocumento as valor, ") .append(" item.cnta_id as conta, ") .append(" item.gpag_id as guia, ") .append(" item.cbdo_id as documento, ") .append(" item.fatu_id as fatura ") .append("FROM arrecadacao.arrecadador_mov_item as item ") .append("left join cadastro.imovel imovel on imovel.imov_id = item.imov_id ") .append("where item.amit_id in ") .append(" ( select pag.amit_id from arrecadacao.pagamento as pag ") .append(" where pag.avbc_id = :idAvisoBancario) ") .append("AND item.amit_vldocumento is not null"); Collection colecao = session.createSQLQuery(consulta.toString()) .addScalar("imovel", Hibernate.INTEGER) .addScalar("localidade", Hibernate.INTEGER) .addScalar("valor", Hibernate.BIG_DECIMAL) .addScalar("conta", Hibernate.INTEGER) .addScalar("guia", Hibernate.INTEGER) .addScalar("documento", Hibernate.INTEGER) .addScalar("fatura", Hibernate.INTEGER) .setInteger("idAvisoBancario", idAvisoBancario) .list(); for (Object dadosItem : colecao) { Object[] arrayDadosItem = (Object[]) dadosItem; ArrecadadorMovimentoItemDTO dto = new ArrecadadorMovimentoItemDTO( (Integer) arrayDadosItem[0], (Integer) arrayDadosItem[1], (BigDecimal) arrayDadosItem[2], (Integer) arrayDadosItem[3], (Integer) arrayDadosItem[4], (Integer) arrayDadosItem[5], (Integer) arrayDadosItem[6]); retorno.add(dto); } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } }