package gcom.cobranca.contratoparcelamento;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import gcom.arrecadacao.pagamento.GuiaPagamento;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.ClienteTipo;
import gcom.cadastro.imovel.Imovel;
import gcom.cobranca.CobrancaDocumento;
import gcom.cobranca.CobrancaDocumentoItem;
import gcom.cobranca.CobrancaForma;
import gcom.cobranca.DocumentoTipo;
import gcom.cobranca.bean.ContaValoresHelper;
import gcom.cobranca.parcelamento.ParcelamentoSituacao;
import gcom.faturamento.conta.Conta;
import gcom.faturamento.conta.ContaMotivoRevisao;
import gcom.faturamento.debito.DebitoACobrar;
import gcom.faturamento.debito.DebitoCreditoSituacao;
import gcom.faturamento.debito.DebitoTipo;
import gcom.util.ConstantesSistema;
import gcom.util.ErroRepositorioException;
import gcom.util.HibernateUtil;
import org.hibernate.Criteria;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
/**
* @author Paulo Diniz
* @created 18 de mar�o de 2011
*/
public class RepositorioContratoParcelamentoHBM implements IRepositorioContratoParcelamento {
private static IRepositorioContratoParcelamento instancia;
/**
* Constructor for the RepositorioClienteTipoHBM object
*/
public RepositorioContratoParcelamentoHBM() {
}
/**
* Retorna o valor de instancia
*
* @return O valor de instancia
*/
public static IRepositorioContratoParcelamento getInstancia() {
if (instancia == null) {
instancia = new RepositorioContratoParcelamentoHBM();
}
return instancia;
}
public ContratoParcelamentoRD pesquisarContratoParcelamentoRDPorNumero(String numero) throws ErroRepositorioException {
//cria a cole��o de retorno
ContratoParcelamentoRD retorno = null;
// obt�m a sess�o
Session session = HibernateUtil.getSession();
try {
Criteria crit = session.createCriteria(ContratoParcelamentoRD.class);
crit.add(Restrictions.eq("numero", numero));
retorno = (ContratoParcelamentoRD) crit.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 o usuario pesquisado
return retorno;
}
public ContratoParcelamentoRD pesquisarContratoParcelamentoRDPorID(Integer id) throws ErroRepositorioException {
//cria a cole��o de retorno
ContratoParcelamentoRD retorno = null;
// obt�m a sess�o
Session session = HibernateUtil.getSession();
try {
Criteria crit = session.createCriteria(ContratoParcelamentoRD.class);
crit.add(Restrictions.eq("id", id));
retorno = (ContratoParcelamentoRD) crit.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 o usuario pesquisado
return retorno;
}
/**
* Verifica Resolu��o de Diretoria associada a um Contrato Parcelamento n�o Encerrado
*
* [UC1134] Atualizar Resolu��o de Diretoria para Contratos de Parcelamento por Cliente
*
*
* @author Paulo Diniz
* @date 10/04/2011
*
*/
public boolean verificaResolucaoDiretoriaAssociadaContratoParcelamentoNaoEncerrado(Integer idRd)
throws ErroRepositorioException{
boolean retorno = false;
Session session = HibernateUtil.getSession();
String consulta;
Integer quantidadeContas = null;
try {
consulta = "SELECT COUNT(*) AS quantidade from COBRANCA.contrato_parcel cpar " +
" where cpar.cprd_id = 1 and cpar.pcst_id = :idRd and cpar.pcst_id = " + ParcelamentoSituacao.NORMAL;
quantidadeContas = (Integer) session.createSQLQuery(consulta)
.addScalar("quantidade", Hibernate.INTEGER).setInteger("idRd", idRd)
.setMaxResults(1).uniqueResult();
if (quantidadeContas != null && quantidadeContas > 0) {
retorno = true;
}
} 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;
}
/**
* Verifica Conta Vinculada a um Contrato Parcelamento por Cliente Item
*
* [UC1143] Consultar Dados do Contrato de Parcelamento por Cliente
*
*
* @author Paulo Diniz
* @date 10/05/2011
*
*/
public boolean verificaContaVinculadaAContratoParcel(Integer idConta, Integer idContrato) throws ErroRepositorioException{
boolean retorno = false;
Session session = HibernateUtil.getSession();
String consulta;
Integer quantidadeContas = null;
try {
consulta = "SELECT COUNT(*) AS quantidade from COBRANCA.contrato_parcel_item item " +
"inner join COBRANCA.contrato_parcel cpar on cpar.cpar_id = item.cpar_id " +
" where cpar.cpar_id = :idContrato and item.cnta_id = :idConta";
quantidadeContas = (Integer) session.createSQLQuery(consulta)
.addScalar("quantidade", Hibernate.INTEGER).setInteger("idConta", idConta)
.setInteger("idContrato", idContrato)
.setMaxResults(1).uniqueResult();
if (quantidadeContas != null && quantidadeContas > 0) {
retorno = true;
}
} 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;
}
/**
* Consultar Contrato de Parcelamento por Cliente Com Pagamento jah efetuado
*
* [UC1143] Consultar Dados do Contrato de Parcelamento por Cliente
*
*
* @author Paulo Diniz
* @date 10/05/2011
*
*/
public boolean verificaContratoParcelComPagamentoFeito(Integer idContrato) throws ErroRepositorioException{
boolean retorno = false;
Session session = HibernateUtil.getSession();
String consulta;
Integer quantidadeContas = null;
try {
consulta = "SELECT COUNT(*) AS quantidade from cobranca.contrato_parcel_prest " +
" where cppr_vlpagamento is not null and cppr_vlpagamento != 0 and cpar_id = :idContrato";
quantidadeContas = (Integer) session.createSQLQuery(consulta)
.addScalar("quantidade", Hibernate.INTEGER)
.setInteger("idContrato", idContrato)
.setMaxResults(1).uniqueResult();
if (quantidadeContas != null && quantidadeContas > 0) {
retorno = true;
}
} 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;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* Pesquisa os dados do contrato de parcelamento
* [FS0003] � Validar contrato
*
* @author Mariana Victor
* @data 03/06/2011
*/
public Object[] pesquisarDadosContratoParcelamento(String numeroContrato) throws ErroRepositorioException {
Object[] retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT cpar.cpar_id AS idContrato, " //0
+ " cpar.cpar_nncontrato AS numContrato, " //1
+ " cpar.cbfm_id AS idFormaPag, " //2
+ " cbfm.cbfm_dscobrancaforma AS formaPag, " //3
+ " cpar.cpar_vlparcelamentoacobrar as valorParcACobrar, " //4
+ " cpar.pcst_id AS idSituacaoParc, " //5
+ " pcst.pcst_dsparcelamentosituacao AS situacaoParc, " //6
+ " cpar.cpar_vlparcelado AS valorParc, " //7
+ " cpar.cpar_nnprestacoes AS numPrestacoes, " //8
+ " sum(cppr.cppr_vlpagamento) AS valorPg " //9
+ " FROM cobranca.contrato_parcel cpar "
+ " INNER JOIN cobranca.parcelamento_situacao pcst ON pcst.pcst_id = cpar.pcst_id "
+ " INNER JOIN cobranca.cobranca_forma cbfm ON cbfm.cbfm_id = cpar.cbfm_id "
+ " INNER JOIN cobranca.contrato_parcel_prest cppr ON cppr.cpar_id = cpar.cpar_id "
+ " WHERE (upper(cpar.cpar_nncontrato) like upper('"+numeroContrato+"'))"
+ " GROUP BY cpar.cpar_id, cpar.cpar_nncontrato, cpar.cbfm_id, cbfm.cbfm_dscobrancaforma, "
+ " cpar.cpar_vlparcelamentoacobrar, cpar.pcst_id, pcst.pcst_dsparcelamentosituacao, "
+ " cpar.cpar_vlparcelado, cpar.cpar_nnprestacoes ";
retorno = (Object[]) session.createSQLQuery(consulta)
.addScalar("idContrato", Hibernate.INTEGER)
.addScalar("numContrato", Hibernate.STRING)
.addScalar("idFormaPag", Hibernate.INTEGER)
.addScalar("formaPag", Hibernate.STRING)
.addScalar("valorParcACobrar", Hibernate.BIG_DECIMAL)
.addScalar("idSituacaoParc", Hibernate.INTEGER)
.addScalar("situacaoParc", Hibernate.STRING)
.addScalar("valorParc", Hibernate.BIG_DECIMAL)
.addScalar("numPrestacoes", Hibernate.INTEGER)
.addScalar("valorPg", Hibernate.BIG_DECIMAL)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* Pesquisa os dados do contrato de parcelamento
* [FS0003] � Validar contrato
*
* @author Mariana Victor
* @data 03/06/2011
*/
public Integer pesquisarDadosContratoParcelamentoNumeroParcelasPagas(Integer idContrato) throws ErroRepositorioException {
Integer retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT MAX(cppr.cppr_nnprestacao) AS numParcPg "
+ " from cobranca.contrato_parcel_prest cppr "
+ " where cppr.cpar_id = :idContrato "
+ " AND cppr.cppr_vlpagamento is not null ";
retorno = (Integer) session.createSQLQuery(consulta)
.addScalar("numParcPg", Hibernate.INTEGER)
.setInteger("idContrato", idContrato)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* Pesquisa os dados do contrato de parcelamento por cliente
* [FS0005] � Verificar exist�ncia de contratos para o cliente
*
* @author Mariana Victor
* @data 03/06/2011
*/
public Collection<Object[]> pesquisarDadosContratoParcelamentoPorCliente(Integer idCliente) throws ErroRepositorioException {
Collection<Object[]> retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT cpar.cpar_id AS idContrato, " //0
+ " cpar.cpar_nncontrato AS numContrato, " //1
+ " cpar.cpar_vlparcelado AS valorParc, " //2
+ " cpar.cpar_nnprestacoes AS numPrestacoes, " //3
+ " sum(cppr.cppr_vlpagamento) AS valorPg, " //4
+ " max(cppr.cppr_nnprestacao) AS numParcPg " //5
+ " FROM cobranca.contrato_parcel cpar "
+ " INNER JOIN cobranca.contrato_parcel_cliente cpcl ON cpcl.cpar_id = cpar.cpar_id "
+ " INNER JOIN cobranca.contrato_parcel_prest cppr ON cppr.cpar_id = cpar.cpar_id "
+ " WHERE cpar.cpar_vlparcelamentoacobrar IS NOT NULL "
+ " AND cpar.cpar_vlparcelamentoacobrar > 0 "
+ " AND cpar.pcst_id = :pagamentoSituacao "
+ " AND cpar.cbfm_id = :cobrancaForma "
+ " AND cpcl.clie_id = :idCliente "
+ " AND cpcl.cpcl_idsuperior IS NULL "
+ " GROUP BY cpar.cpar_id, cpar.cpar_nncontrato, cpar.cpar_vlparcelado, cpar.cpar_nnprestacoes "
+ " ORDER BY cpar.cpar_nncontrato ";
retorno = session.createSQLQuery(consulta)
.addScalar("idContrato", Hibernate.INTEGER)
.addScalar("numContrato", Hibernate.INTEGER)
.addScalar("valorParc", Hibernate.BIG_DECIMAL)
.addScalar("numPrestacoes", Hibernate.INTEGER)
.addScalar("valorPg", Hibernate.BIG_DECIMAL)
.addScalar("numParcPg", Hibernate.INTEGER)
.setInteger("idCliente", idCliente)
.setInteger("pagamentoSituacao", ParcelamentoSituacao.NORMAL)
.setInteger("cobrancaForma", CobrancaForma.COBRANCA_POR_ICMS)
.list();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* Consultar Se Prestacao Ja Esta Paga
*
* [UC1143] Consultar Dados do Contrato de Parcelamento por Cliente
*
*
* @author Paulo Diniz
* @date 10/05/2011
*
*/
public boolean verificaPrestacaoPaga(Integer idPrestacao) throws ErroRepositorioException{
boolean retorno = false;
Session session = HibernateUtil.getSession();
String consulta;
Integer quantidadeContas = null;
try {
consulta = "SELECT COUNT(*) AS quantidade from COBRANCA.contrato_parcel_pre_item cpit "+
" inner join COBRANCA.contrato_parcel_prest cppr on cppr.cppr_id = cpit.cppr_id where cppr.cppr_id = :idPrestacao";
quantidadeContas = (Integer) session.createSQLQuery(consulta)
.addScalar("quantidade", Hibernate.INTEGER)
.setInteger("idPrestacao", idPrestacao)
.setMaxResults(1).uniqueResult();
if (quantidadeContas != null && quantidadeContas > 0) {
retorno = true;
}
} 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;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* Pesquisa os dados do contrato de parcelamento por cliente
* [SB0002] � Informar Dados do Pagamento
*
* @author Mariana Victor
* @data 06/06/2011
*/
public Object[] pesquisarDadosContratoParcelamentoPorClienteSelecionado(Integer idContrato) throws ErroRepositorioException {
Object[] retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT cppr_nnprestacao AS numeroPrestacao, " //0
+ " cppr_vlprestacao AS valorPrestacao, " //1
+ " cppr_dtvencimento AS dataVencimento, " //2
+ " cppr_id AS idContrParcPrest " //3
+ " FROM cobranca.contrato_parcel_prest "
+ " WHERE cppr_vlpagamento IS NULL "
+ " AND cpar_id = :idContrato "
+ " and cppr_nnprestacao IN (SELECT MIN(cppr_nnprestacao) "
+ " FROM cobranca.contrato_parcel_prest "
+ " WHERE cppr_vlpagamento IS NULL "
+ " AND cpar_id = :idContrato) "
+ " GROUP BY cppr_nnprestacao, cppr_vlprestacao, cppr_dtvencimento, cppr_id ";
retorno = (Object[]) session.createSQLQuery(consulta)
.addScalar("numeroPrestacao", Hibernate.INTEGER)
.addScalar("valorPrestacao", Hibernate.BIG_DECIMAL)
.addScalar("dataVencimento", Hibernate.DATE)
.addScalar("idContrParcPrest", Hibernate.INTEGER)
.setInteger("idContrato", idContrato)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* @author Mariana Victor
* @data 06/06/2011
*/
public ContratoParcelamento pesquisarContratoParcelamento(Integer idContrato) throws ErroRepositorioException {
ContratoParcelamento contratoParcelamento = null;
Object[] retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT cpar_icparcelamentocomjuros AS indicadorParcComJuros, " //0
+ " cpar_vljurosparcelamento AS valorJurosParc, " //1
+ " cpar_icdebitocomacrescimo AS indicadorDebAcresc, " //2
+ " cpar_vlacrescimosimpont AS valorAcrecImpont, " //3
+ " cpar_nncontrato AS numeroContrato " //4
+ " FROM cobranca.contrato_parcel "
+ " WHERE cpar_id = :idContrato ";
retorno = (Object[]) session.createSQLQuery(consulta)
.addScalar("indicadorParcComJuros", Hibernate.SHORT)
.addScalar("valorJurosParc", Hibernate.BIG_DECIMAL)
.addScalar("indicadorDebAcresc", Hibernate.SHORT)
.addScalar("valorAcrecImpont", Hibernate.BIG_DECIMAL)
.addScalar("numeroContrato", Hibernate.STRING)
.setInteger("idContrato", idContrato)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
if (retorno != null) {
contratoParcelamento = new ContratoParcelamento();
contratoParcelamento.setId(idContrato);
if (retorno[0] != null) {
contratoParcelamento.setIndicadorParcelamentoJuros((Short) retorno[0]);
}
if (retorno[1] != null) {
contratoParcelamento.setValorJurosParcelamento((BigDecimal) retorno[1]);
}
if (retorno[2] != null) {
contratoParcelamento.setIndicadorDebitosAcrescimos((Short) retorno[2]);
}
if (retorno[3] != null) {
contratoParcelamento.setValorTotalAcrescImpontualidade((BigDecimal) retorno[3]);
}
if (retorno[4] != null) {
contratoParcelamento.setNumero((String) retorno[4]);
}
}
return contratoParcelamento;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* [SB0005] � Gerar Pagamento Guias Juros de Parcelamento e Guias de Acr�scimos
*
* Seleciona a guia de juros ou de acr�scimos sobre contrato de parcelamento correspondente � parcela paga.
*
* @author Mariana Victor
* @data 06/06/2011
*/
public Object[] pesquisarGuiaDeJurosOuComAcrescimos(Integer idContrato, Integer debitoTipo, Integer idPrestacao) throws ErroRepositorioException {
Object[] retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT gpag.gpag_id AS idGuia, " //0
+ " cpit.cpit_vlitem AS valorItem, " //1
+ " cpit.cpit_id AS idCpit, " //2
+ " gpag.loca_id AS idLoca, " //3
+ " gpag.imov_id AS idImov, " //4
+ " gpag.clie_id AS idClie " //5
+ " FROM cobranca.contrato_parcel_item cpit "
+ " INNER JOIN cobranca.contrato_parcel cpar ON cpit.cpar_id = cpar.cpar_id "
+ " INNER JOIN cobranca.contrato_parcel_prest cppr ON cppr.cpar_id = cpar.cpar_id "
+ " INNER JOIN faturamento.guia_pagamento gpag ON gpag.gpag_id = cpit.gpag_id "
+ " AND cppr.cppr_dtvencimento = gpag.gpag_dtvencimento "
+ " WHERE cpit.cpar_id = :idContrato "
+ " AND cppr.cppr_id = :idPrestacao "
+ " AND cpit.dotp_id = :docTipoGuia "
+ " AND gpag.dbtp_id = :debTipo "
+ " AND gpag.dcst_idatual = :debCredSitNormal "
+ " AND NOT EXISTS (SELECT pgmt.gpag_id FROM arrecadacao.pagamento pgmt WHERE pgmt.gpag_id = gpag.gpag_id) "
+ " AND NOT EXISTS (SELECT pghi.gpag_id FROM ARRECADACAO.pagamento_historico pghi WHERE pghi.gpag_id = gpag.gpag_id) "
+ " GROUP BY gpag.gpag_id, cpit.cpit_vlitem, cpit.cpit_id, gpag.loca_id, gpag.imov_id, gpag.clie_id ";
retorno = (Object[]) session.createSQLQuery(consulta)
.addScalar("idGuia", Hibernate.INTEGER)
.addScalar("valorItem", Hibernate.BIG_DECIMAL)
.addScalar("idCpit", Hibernate.INTEGER)
.addScalar("idLoca", Hibernate.INTEGER)
.addScalar("idImov", Hibernate.INTEGER)
.addScalar("idClie", Hibernate.INTEGER)
.setInteger("idContrato", idContrato)
.setInteger("idPrestacao", idPrestacao)
.setInteger("docTipoGuia", DocumentoTipo.GUIA_PAGAMENTO)
.setInteger("debTipo", debitoTipo)
.setInteger("debCredSitNormal", DebitoCreditoSituacao.NORMAL)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* [SB0007] � Gerar Pagamento
*
* Calcula o valor j� pago para o item
*
* @author Mariana Victor
* @data 06/06/2011
*/
public BigDecimal pesquisarValorPagoItem(Integer idContrato, Integer idItem) throws ErroRepositorioException {
BigDecimal retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT sum(cppi.cppi_vlpago) AS valorPago "
+ " FROM cobranca.contrato_parcel_pre_item cppi "
+ " INNER JOIN cobranca.contrato_parcel_item cpit ON cpit.cpit_id = cppi.cpit_id "
+ " INNER JOIN cobranca.contrato_parcel cpar ON cpit.cpar_id = cpar.cpar_id "
+ " WHERE cpit.cpar_id = :idContrato "
+ " AND cpit.cpit_id = :idItem ";
retorno = (BigDecimal) session.createSQLQuery(consulta)
.addScalar("valorPago", Hibernate.BIG_DECIMAL)
.setInteger("idContrato", idContrato)
.setInteger("idItem", idItem)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* [SB0011] � Atualizar Item da Negativa��o
*
* Verifica se a negativa��o est� exclu�da
*
* @author Mariana Victor
* @data 07/06/2011
*/
public Integer pesquisarCodigoExclusaoNegativacao(Integer idItemNegativacao) throws ErroRepositorioException {
Integer retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT nmrg.nmrg_cdexclusaotipo AS codigoExclusao "
+ " FROM cobranca.negatd_mov_reg_item nmri "
+ " INNER JOIN cobranca.negatd_movimento_reg nmrg ON nmri.nmrg_id = nmrg.nmrg_id "
+ " WHERE nmri.nmri_id = :idItem ";
retorno = (Integer) session.createSQLQuery(consulta)
.addScalar("codigoExclusao", Hibernate.INTEGER)
.setInteger("idItem", idItemNegativacao)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* [SB0005] � Gerar Pagamento Guias Juros de Parcelamento e Guias de Acr�scimos
*
* Seleciona a guia de juros ou de acr�scimos sobre contrato de parcelamento correspondente � parcela paga.
*
* @author Mariana Victor
* @data 06/06/2011
*/
public Object[] pesquisarContratoParcelamentoPrestacao(Integer idContrato) throws ErroRepositorioException {
Object[] retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT cppr.cppr_nnprestacao AS numeroPrestacao " //0
+ " FROM cobranca.contrato_parcel cpar "
+ " INNER JOIN cobranca.contrato_parcel_prest cppr ON cppr.cpar_id = cpar.cpar_id "
+ " WHERE cpit.cpar_id = :idContrato ";
retorno = (Object[]) session.createSQLQuery(consulta)
.addScalar("numeroPrestacao", Hibernate.INTEGER)
.setInteger("idContrato", idContrato)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* [SB0006] � Gerar Pagamento para Itens de D�bito do Contrato
*
* Pesquisa itens de d�bito com valor pago a menor
*
* @author Mariana Victor
* @data 07/06/2011
*/
public Object[] pesquisarItemDebitoValorPagoAMenor(Integer idContrato) throws ErroRepositorioException {
Object[] retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT distinct cpit.cpit_id AS idItem, " //0
+ " cpit.dotp_id AS docTipo, " //1
+ " cpit_vlitem AS valorItem " //2
+ " FROM cobranca.contrato_parcel_item cpit "
+ " INNER JOIN cobranca.contrato_parcel cpar ON cpit.cpar_id = cpar.cpar_id "
+ " WHERE cpit.cpar_id = :idContrato "
+ " AND cpit.cpit_vlitem <> "
+ " (SELECT SUM(cppi.cppi_vlpago) "
+ " FROM cobranca.contrato_parcel_pre_item cppi "
+ " INNER JOIN cobranca.contrato_parcel_prest cppr ON cppr.cppr_id = cppi.cppr_id "
+ " WHERE cppi.cpit_id = cpit.cpit_id "
+ " AND cppr.cpar_id = :idContrato) ";
retorno = (Object[]) session.createSQLQuery(consulta)
.addScalar("idItem", Hibernate.INTEGER)
.addScalar("docTipo", Hibernate.INTEGER)
.addScalar("valorItem", Hibernate.BIG_DECIMAL)
.setInteger("idContrato", idContrato)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* [SB0006] � Gerar Pagamento para Itens de D�bito do Contrato
*
* Pesquisa a conta com valor pago a menor
*
* @author Mariana Victor
* @data 07/06/2011
*/
public Object[] pesquisarContaValorPagoAMenor(Integer idItem) throws ErroRepositorioException {
Object[] retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT cnta.cnta_id AS idConta, " //0
+ " cnta.cnta_amreferenciaconta AS anoMesConta, " //1
+ " cnta.loca_id AS idLoca, " //2
+ " cnta.imov_id AS idImov " //3
+ " FROM faturamento.conta cnta "
+ " INNER JOIN cobranca.contrato_parcel_item cpit ON cpit.cnta_id = cnta.cnta_id "
+ " WHERE cnta.dcst_idatual in (:debCredSitNormal, :debCredSitRetificada, :debCredSitIncluida) "
+ " AND cnta.cmrv_id = :contaMotivoRevisao "
+ " AND cpit.cpit_id = :idItem "
+ " AND ((SELECT COALESCE(SUM(pgmt.pgmt_vlpagamento), 0) FROM arrecadacao.pagamento pgmt WHERE pgmt.cnta_id = cnta.cnta_id) "
+ " + (SELECT COALESCE(SUM(pghi.pghi_vlpagamento), 0) FROM arrecadacao.pagamento_historico pghi WHERE pghi.cnta_id = cnta.cnta_id)) "
+ " < cpit.cpit_vlitem ";
retorno = (Object[]) session.createSQLQuery(consulta)
.addScalar("idConta", Hibernate.INTEGER)
.addScalar("anoMesConta", Hibernate.INTEGER)
.addScalar("idLoca", Hibernate.INTEGER)
.addScalar("idImov", Hibernate.INTEGER)
.setInteger("idItem", idItem)
.setInteger("debCredSitNormal", DebitoCreditoSituacao.NORMAL)
.setInteger("debCredSitRetificada", DebitoCreditoSituacao.RETIFICADA)
.setInteger("debCredSitIncluida", DebitoCreditoSituacao.INCLUIDA)
.setInteger("contaMotivoRevisao", ContaMotivoRevisao.CONTA_EM_CONTRATO_PARCELAMENTO)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* [SB0006] � Gerar Pagamento para Itens de D�bito do Contrato
*
* Pesquisa o valor da menor presta��o
*
* @author Mariana Victor
* @data 07/06/2011
*/
public Object[] pesquisarValoMinimoPrestacoes(Integer idContrato) throws ErroRepositorioException {
Object[] retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT cppr_vlprestacao AS valorPrestacao, "
+ " cppr_id AS idPrestacao "
+ " from cobranca.contrato_parcel_prest "
+ " where cpar_id = :idContrato "
+ " and cppr_nnprestacao in (SELECT MIN(cppr_nnprestacao) "
+ " FROM cobranca.contrato_parcel_prest "
+ " WHERE cppr_vlpagamento IS NULL "
+ " AND cpar_id = :idContrato) ";
retorno = (Object[]) session.createSQLQuery(consulta)
.addScalar("valorPrestacao", Hibernate.BIG_DECIMAL)
.addScalar("idPrestacao", Hibernate.INTEGER)
.setInteger("idContrato", idContrato)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* [SB0006] � Gerar Pagamento para Itens de D�bito do Contrato
*
* Pesquisa os itens de d�bitos do tipo conta para gera��o de pagamento
*
* @author Mariana Victor
* @data 07/06/2011
*/
public Collection<Object[]> pesquisarItensDebitoConta(Integer idContrato) throws ErroRepositorioException {
Collection<Object[]> retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT distinct cpit.cpit_id AS idItem, " //0
+ " cpit.cpit_vlitem AS valorItem, " //1
+ " cpit.cnta_id AS idConta, " //2
+ " cnta.cnta_amreferenciaconta AS anoMesConta, " //3
+ " cnta.loca_id AS idLoca, " //4
+ " cnta.imov_id AS idImov " //5
+ " FROM cobranca.contrato_parcel_item cpit "
+ " INNER JOIN faturamento.conta cnta ON cpit.cnta_id = cnta.cnta_id "
+ " WHERE cpit.cpar_id = :idContrato "
+ " AND cpit.dotp_id = :documentoTipoConta "
+ " AND cnta.dcst_idatual in (:debCredSitNormal,:debCredSitRetificada,:debCredSitIncluida) "
+ " AND cnta.cmrv_id = :contaMotivoRevisao "
+ " AND NOT EXISTS (SELECT pgmt.cnta_id FROM arrecadacao.pagamento pgmt WHERE pgmt.cnta_id = cnta.cnta_id) "
+ " AND NOT EXISTS (SELECT pghi.cnta_id FROM arrecadacao.pagamento_historico pghi WHERE pghi.cnta_id = cnta.cnta_id) "
+ " ORDER BY cnta.cnta_amreferenciaconta, cnta.imov_id ";
retorno = session.createSQLQuery(consulta)
.addScalar("idItem", Hibernate.INTEGER)
.addScalar("valorItem", Hibernate.BIG_DECIMAL)
.addScalar("idConta", Hibernate.INTEGER)
.addScalar("anoMesConta", Hibernate.INTEGER)
.addScalar("idLoca", Hibernate.INTEGER)
.addScalar("idImov", Hibernate.INTEGER)
.setInteger("idContrato", idContrato)
.setInteger("debCredSitNormal", DebitoCreditoSituacao.NORMAL)
.setInteger("debCredSitRetificada", DebitoCreditoSituacao.RETIFICADA)
.setInteger("debCredSitIncluida", DebitoCreditoSituacao.INCLUIDA)
.setInteger("contaMotivoRevisao", ContaMotivoRevisao.CONTA_EM_CONTRATO_PARCELAMENTO)
.setInteger("documentoTipoConta", DocumentoTipo.CONTA)
.list();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* [SB0003] � Efetuar Pagamento da Parcela do Contrato de Parcelamento Por Cliente
*
* 1.8.1. Seleciona as guias de pagamento do contrato, atuais e sem pagamento
*
* @author Mariana Victor
* @data 08/06/2011
*/
public Collection<Object[]> pesquisarGuiasPagamentoContratoAtuaisSemPagamento(Integer idContrato) throws ErroRepositorioException {
Collection<Object[]> retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT gpag.gpag_id AS idGuia, " //0
+ " gpag.clie_id AS idCliente, " //1
+ " gpag.imov_id AS idImovel, " //2
+ " gpag.gpag_amreferenciacontabil AS anoMesContabil, " //3
+ " gpag.fntp_id AS idFinanciamentoTipo, " //4
+ " gpag.gpag_dtemissao AS dataEmissao, " //5
+ " gpag.gpag_dtvencimento AS dataVencimento, " //6
+ " gpag.gpag_vldebito AS valorDebito, " //7
+ " gpag.gpag_iccobrancamulta AS indicadoCobrancaMulta, " //8
+ " gpag.gpag_icemitirobservacao AS indicadorEmitirObservacao, " //9
+ " gpag.loca_id AS localidade, " //10
+ " gpag.dbtp_id AS debitoTipo, " //11
+ " gpag.lict_id AS lancamentoItemContabil " //12
+ " FROM cobranca.contrato_parcel_item cpit "
+ " INNER JOIN faturamento.guia_pagamento gpag ON gpag.gpag_id = cpit.gpag_id "
+ " WHERE cpit.cpar_id = :idContrato "
+ " AND cpit.dotp_id = :documentoTipoGuia "
+ " AND cpit.cpit_id not in "
+ " (SELECT cppi.cpit_id "
+ " FROM cobranca.contrato_parcel_pre_item cppi "
+ " INNER JOIN cobranca.contrato_parcel_prest cppr ON cppr.cppr_id = cppi.cppr_id "
+ " WHERE cppr.cpar_id = :idContrato) ";
retorno = session.createSQLQuery(consulta)
.addScalar("idGuia", Hibernate.INTEGER)
.addScalar("idCliente", Hibernate.INTEGER)
.addScalar("idImovel", Hibernate.INTEGER)
.addScalar("anoMesContabil", Hibernate.INTEGER)
.addScalar("idFinanciamentoTipo", Hibernate.INTEGER)
.addScalar("dataEmissao", Hibernate.DATE)
.addScalar("dataVencimento", Hibernate.DATE)
.addScalar("valorDebito", Hibernate.BIG_DECIMAL)
.addScalar("indicadoCobrancaMulta", Hibernate.SHORT)
.addScalar("indicadorEmitirObservacao", Hibernate.SHORT)
.addScalar("localidade", Hibernate.INTEGER)
.addScalar("debitoTipo", Hibernate.INTEGER)
.addScalar("lancamentoItemContabil", Hibernate.INTEGER)
.setInteger("idContrato", idContrato)
.setInteger("documentoTipoGuia", DocumentoTipo.GUIA_PAGAMENTO)
.list();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* Desvincula a guia de pagamento do contrato de parcelamento,
* atualizando dados do contrato na tabela cobranca.CONTRATO_PARCEL_ITEM
*
* @author Mariana Victor
* @data 08/06/2011
*
* @param
* @return void
*/
public void atualizarContratoParcelamentoItemDesvincularGuiaContrato(String[] idsGuias) throws ErroRepositorioException {
String consulta;
Session session = HibernateUtil.getSession();
try {
consulta = "update gcom.cobranca.contratoparcelamento.ContratoParcelamentoItem "
+ " set cpit_icitemcancelado = :indicadorItemCancelado, cpit_tmultimaalteracao = :ultimaAlteracao "
+ " where gpag_id in (:idsGuias) ";
session.createQuery(consulta).setInteger("indicadorItemCancelado",
ConstantesSistema.SIM).setTimestamp("ultimaAlteracao", new Date())
.setParameterList("idsGuias", idsGuias)
.executeUpdate();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
}
/**
* [UC1141] Emitir Contrato de Parcelamento por Cliente
*
* [SB0003] � Emitir Dados do Parcelamento
*
* Pesquisa se a parcela j� foi paga
*
* @author Mariana Victor
* @data 13/06/2011
*/
public Boolean pesquisarParcelaPaga(Integer idPrestacao) throws ErroRepositorioException {
Integer retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT count(*) AS quantidadeItem "
+ " FROM cobranca.contrato_parcel_pre_item "
+ " WHERE cppr_id = :idPrestacao ";
retorno = (Integer) session.createSQLQuery(consulta)
.addScalar("quantidadeItem", Hibernate.INTEGER)
.setInteger("idPrestacao", idPrestacao)
.setMaxResults(1).uniqueResult();
if (retorno != null
&& retorno.compareTo(new Integer(0)) > 0) {
return true;
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return false;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* Deleta Os Clientes Vinculados a um ContratoParcelamento
*
* @author Paulo Diniz
* @data 13/06/2011
*/
public Boolean removerClientesVinculadosAContratoParcelamento(Integer idContratoParcelamento) throws ErroRepositorioException {
Boolean retorno = true;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " DELETE FROM gcom.cobranca.contratoparcelamento.ContratoParcelamentoCliente "
+ " WHERE CPAR_ID = :idContratoParcelamento ";
int removeu = (Integer) session.createQuery(consulta)
.setInteger("idContratoParcelamento", idContratoParcelamento)
.executeUpdate();
if (removeu == 0) {
retorno = false;
}else{
retorno = true;
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* Deleta Os Itens de D�bitos Atuais do Contrato de Parcelamento por Cliente
*
* @author Paulo Diniz, Mariana Victor
* @data 13/06/2011, 27/07/2011
*/
public Boolean removerItensDebitosVinculadosAContratoParcelamento(Integer idContratoParcelamento) throws ErroRepositorioException {
Boolean retorno = true;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = "DELETE FROM gcom.cobranca.contratoparcelamento.ContratoParcelamentoItem "
+ " WHERE cpar_id = :idContratoParcelamento and DOTP_ID in ("
+ DocumentoTipo.CONTA + ", " + DocumentoTipo.DEBITO_A_COBRAR + ")";
int removeu = (Integer) session.createQuery(consulta)
.setInteger("idContratoParcelamento", idContratoParcelamento)
.executeUpdate();
if (removeu == 0) {
retorno = false;
}else{
retorno = true;
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* Deleta as PrestacaoContratoParcelamento vinculadas ao Contrato de Parcelamento por Cliente
*
* @author Paulo Diniz
* @data 13/06/2011
*/
public Boolean removerPrestacoesVinculadasAContratoParcelamento(Integer idContratoParcelamento) throws ErroRepositorioException {
Boolean retorno = true;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = "DELETE FROM gcom.cobranca.contratoparcelamento.PrestacaoContratoParcelamento "
+ " WHERE cpar_id = :idContratoParcelamento";
int removeu = (Integer) session.createQuery(consulta)
.setInteger("idContratoParcelamento", idContratoParcelamento)
.executeUpdate();
if (removeu == 0) {
retorno = false;
}else{
retorno = true;
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* Deleta as Guias de Pagamento de 'Acrescimos por Impontualidade' vinculadas ao Contrato de Parcelamento por Cliente
*
* @author Paulo Diniz
* @data 13/06/2011
*/
public Boolean removerGuiasDePagtoDeAcrescImpontualidadeVinculadasAContratoParcelamento(Integer idContratoParcelamento) throws ErroRepositorioException {
Boolean retorno = true;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " select cpit.id from " + ContratoParcelamentoItem.class.getName() +" cpit, "+GuiaPagamento.class.getName() +" gpag "+
" where cpit.contrato.id = :idContratoParcelamento and cpit.documentoTipo.id = " +DocumentoTipo.GUIA_PAGAMENTO+" and gpag.id = cpit.guiaPagamentoGeral.guiaPagamento.id " +
"and gpag.debitoTipo.id = " + DebitoTipo.ACRESCIMOS_POR_IMPONTUALIDADE;
Collection contratoItens = session.createQuery(consulta)
.setInteger("idContratoParcelamento", idContratoParcelamento).list();
int removeu = 1;
if(contratoItens != null && !contratoItens.isEmpty()){
consulta = " delete from " + ContratoParcelamentoItem.class.getName() +" where cpit.contrato.id in "+ contratoItens.toString().replaceAll("[", "(").replaceAll("]", ")");
removeu = (Integer) session.createQuery(consulta).executeUpdate();
}
if (removeu == 0) {
retorno = false;
}else{
retorno = true;
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* Deleta as Guias de Pagamento de 'Juros sobre Contrato' vinculadas ao Contrato de Parcelamento por Cliente
*
* @author Paulo Diniz
* @data 13/06/2011
*/
public Boolean removerGuiasDePagtoJurosSobreContratoVinculadasAContratoParcelamento(Integer idContratoParcelamento) throws ErroRepositorioException {
Boolean retorno = true;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " select cpit.id from " + ContratoParcelamentoItem.class.getName() +" cpit, "+GuiaPagamento.class.getName() +" gpag "+
" where cpit.contrato.id = :idContratoParcelamento and cpit.documentoTipo.id = " +DocumentoTipo.GUIA_PAGAMENTO+" and gpag.id = cpit.guiaPagamentoGeral.guiaPagamento.id " +
"and gpag.debitoTipo.codigoConstante = " + DebitoTipo.JUROS_SOBRE_CONTR_PARCELAMENTO;
Collection contratoItens = session.createQuery(consulta)
.setInteger("idContratoParcelamento", idContratoParcelamento).list();
int removeu = 1;
if(contratoItens != null && !contratoItens.isEmpty()){
consulta = " delete from " + ContratoParcelamentoItem.class.getName() +" where cpit.contrato.id in "+ contratoItens.toString().replaceAll("[", "(").replaceAll("]", ")");
removeu = (Integer) session.createQuery(consulta).executeUpdate();
}
if (removeu == 0) {
retorno = false;
}else{
retorno = true;
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* Consulta o id da RD relacionada ao contrato de parcelamento
*
* @author Mariana Victor
* @data 29/06/2011
*/
public Integer pesquisarRDContratoParcelamento(Integer idContratoParcelamento) throws ErroRepositorioException {
Integer retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try {
consulta = " SELECT cprd_id AS idRD FROM cobranca.contrato_parcel "
+ " WHERE cpar_id = :idContratoParcelamento";
retorno = (Integer) session.createSQLQuery(consulta)
.addScalar("idRD", Hibernate.INTEGER)
.setInteger("idContratoParcelamento", idContratoParcelamento)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* Consulta os dados das contas vinculadas ao contrato de parcelamento
*
* @author Mariana Victor
* @data 02/07/2011
*/
public Collection<ContaValoresHelper> pesquisarDadosDasContasContratoParcelamento(Integer idContratoParcelamento)
throws ErroRepositorioException {
Collection<Object[]> dados = null;
Collection<ContaValoresHelper> retorno = new ArrayList();
Session session = HibernateUtil.getSession();
String consulta;
try {
consulta = " SELECT cnta.cnta_id AS idConta, cnta.cnta_amreferenciaconta AS anoMes, "
+ " cnta.cnta_dtvencimentoconta AS dataVencimento, "
+ " cnta.cnta_vlagua AS valorAgua, cnta.cnta_vlesgoto AS valorEsgoto, "
+ " cnta.cnta_vldebitos AS valorDebitos, cnta.cnta_vlcreditos AS valorCreditos, "
+ " cnta.cnta_vlimpostos AS valorImpostos, "
+ " cpit.cpit_vlacrescimosimpont AS valorAcrescimos, "
+ " dcst.dcst_dsdebitocreditosituacao AS dcstDescricao, "
+ " dcst.dcst_dsabreviado AS dcstDescricaoAbreviada, cnta.imov_id AS idImovel, "
+ " cnta.cnta_dtrevisao AS dataRevisao, cnta.cmrv_id AS idMotivoRevisao, "
+ " cnta_nnconsumoagua AS consumoAgua, cnta_nnconsumoesgoto AS consumoEsgoto "
+ " FROM faturamento.conta cnta "
+ " INNER JOIN cobranca.contrato_parcel_item cpit ON cnta.cnta_id = cpit.cnta_id "
+ " INNER JOIN faturamento.debito_credito_situacao dcst ON dcst.dcst_id = cnta.dcst_idatual "
+ " WHERE cpit.cpar_id = :idContratoParcelamento ";
dados = (Collection<Object[]>) session.createSQLQuery(consulta)
.addScalar("idConta", Hibernate.INTEGER)
.addScalar("anoMes", Hibernate.INTEGER)
.addScalar("dataVencimento", Hibernate.DATE)
.addScalar("valorAgua", Hibernate.BIG_DECIMAL)
.addScalar("valorEsgoto", Hibernate.BIG_DECIMAL)
.addScalar("valorDebitos", Hibernate.BIG_DECIMAL)
.addScalar("valorCreditos", Hibernate.BIG_DECIMAL)
.addScalar("valorImpostos", Hibernate.BIG_DECIMAL)
.addScalar("valorAcrescimos", Hibernate.BIG_DECIMAL)
.addScalar("dcstDescricao", Hibernate.STRING)
.addScalar("dcstDescricaoAbreviada", Hibernate.STRING)
.addScalar("idImovel", Hibernate.INTEGER)
.addScalar("dataRevisao", Hibernate.DATE)
.addScalar("idMotivoRevisao", Hibernate.INTEGER)
.addScalar("consumoAgua", Hibernate.INTEGER)
.addScalar("consumoEsgoto", Hibernate.INTEGER)
.setInteger("idContratoParcelamento", idContratoParcelamento)
.list();
if (dados != null && !dados.isEmpty()) {
Iterator iterator = dados.iterator();
while(iterator.hasNext()) {
Object[] dadosConta = (Object[]) iterator.next();
ContaValoresHelper helper = new ContaValoresHelper();
Conta conta = new Conta();
DebitoCreditoSituacao debitoCreditoSituacao = new DebitoCreditoSituacao();
if (dadosConta[0] != null) {
conta.setId((Integer) dadosConta[0]);
}
if (dadosConta[1] != null) {
conta.setReferencia((Integer) dadosConta[1]);
}
if (dadosConta[2] != null) {
conta.setDataVencimentoConta((Date) dadosConta[2]);
}
if (dadosConta[3] != null) {
conta.setValorAgua((BigDecimal) dadosConta[3]);
}
if (dadosConta[4] != null) {
conta.setValorEsgoto((BigDecimal) dadosConta[4]);
}
if (dadosConta[5] != null) {
conta.setDebitos((BigDecimal) dadosConta[5]);
}
if (dadosConta[6] != null) {
conta.setValorCreditos((BigDecimal) dadosConta[6]);
}
if (dadosConta[7] != null) {
conta.setValorImposto((BigDecimal) dadosConta[7]);
}
if (dadosConta[8] != null) {
helper.setValorJurosMora((BigDecimal) dadosConta[8]);
helper.setValorAtualizacaoMonetaria(BigDecimal.ZERO);
helper.setValorMulta(BigDecimal.ZERO);
}
if (dadosConta[9] != null) {
debitoCreditoSituacao.setDescricaoAbreviada((String) dadosConta[9]);
}
if (dadosConta[10] != null) {
debitoCreditoSituacao.setDescricaoAbreviada((String) dadosConta[10]);
}
if (dadosConta[11] != null) {
Imovel imovel = new Imovel();
imovel.setId((Integer) dadosConta[11]);
conta.setImovel(imovel);
}
if (dadosConta[12] != null) {
conta.setDataRevisao((Date) dadosConta[12]);
}
if (dadosConta[13] != null) {
ContaMotivoRevisao contaMotivoRevisao = new ContaMotivoRevisao();
contaMotivoRevisao.setId((Integer) dadosConta[13]);
conta.setContaMotivoRevisao(contaMotivoRevisao);
}
if (dadosConta[14] != null) {
conta.setConsumoAgua((Integer) dadosConta[14]);
}
if (dadosConta[15] != null) {
conta.setConsumoEsgoto((Integer) dadosConta[15]);
}
conta.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao);
helper.setConta(conta);
helper.setRevisao(new Integer(1));
retorno.add(helper);
}
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* [FS0008] � Verificar exist�ncia do contrato anterior
*
* @author Mariana Victor
* @data 08/07/2011
*/
public Boolean verificarExistenciaContratoAnterior(String numeroContratoAnterior)
throws ErroRepositorioException {
Integer retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " select count(distinct cpar_nncontrato) AS quantidade "
+ " from cobranca.contrato_parcel "
+ " where cpar_nncontrato = :numeroContratoAnterior " ;
retorno = (Integer) session.createSQLQuery(consulta)
.addScalar("quantidade",
Hibernate.INTEGER)
.setString("numeroContratoAnterior",
numeroContratoAnterior)
.setMaxResults(1).uniqueResult();
if(retorno != null && retorno > 0){
return true;
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return false;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* [FS0037] - Verificar situa��o do contrato anterior
*
* @author Mariana Victor
* @data 08/07/2011
*/
public Boolean verificarSituacaoContratoAnterior(String numeroContratoAnterior)
throws ErroRepositorioException {
Integer retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " select pcst_id AS situacaoParcelamento "
+ " from cobranca.contrato_parcel "
+ " where cpar_nncontrato = :numeroContratoAnterior " ;
retorno = (Integer) session.createSQLQuery(consulta)
.addScalar("situacaoParcelamento",
Hibernate.INTEGER)
.setString("numeroContratoAnterior",
numeroContratoAnterior)
.setMaxResults(1).uniqueResult();
if (retorno != null
&& retorno.compareTo(ParcelamentoSituacao.NORMAL) == 0) {
return true;
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return false;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* [SB0006] � Gerar Pagamento para Itens de D�bito do Contrato
*
* Pesquisa o d�bito a cobrar com valor pago a menor
*
* @author Mariana Victor
* @data 21/07/2011
*/
public Object[] pesquisarDebitoACobrarValorPagoAMenor(Integer idItem) throws ErroRepositorioException {
Object[] retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT dbac.dbac_id AS idDebito, " //0
+ " dbac.dbac_amreferenciadebito AS anoMesDebito, " //1
+ " dbac.loca_id AS idLoca, " //2
+ " dbac.imov_id AS idImov, " //3
+ " dbac.dbtp_id AS idDebitoTipo " //4
+ " FROM faturamento.debito_a_cobrar dbac "
+ " INNER JOIN cobranca.contrato_parcel_item cpit ON cpit.dbac_id = dbac.dbac_id "
+ " WHERE dbac.dcst_idatual = :debCredSitNormal "
+ " AND dbac.cmrv_id = :contaMotivoRevisao "
+ " AND cpit.cpit_id = :idItem "
+ " AND ((SELECT COALESCE(SUM(pgmt.pgmt_vlpagamento), 0) FROM arrecadacao.pagamento pgmt WHERE pgmt.dbac_id = dbac.dbac_id) "
+ " + (SELECT COALESCE(SUM(pghi.pghi_vlpagamento), 0) FROM arrecadacao.pagamento_historico pghi WHERE pghi.dbac_id = dbac.dbac_id)) "
+ " < cpit.cpit_vlitem ";
retorno = (Object[]) session.createSQLQuery(consulta)
.addScalar("idDebito", Hibernate.INTEGER)
.addScalar("anoMesDebito", Hibernate.INTEGER)
.addScalar("idLoca", Hibernate.INTEGER)
.addScalar("idImov", Hibernate.INTEGER)
.addScalar("idDebitoTipo", Hibernate.INTEGER)
.setInteger("idItem", idItem)
.setInteger("debCredSitNormal", DebitoCreditoSituacao.NORMAL)
.setInteger("contaMotivoRevisao", ContaMotivoRevisao.DEBITO_A_COBRAR_EM_CONTRATO_PARCELAMENTO)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente
*
* [SB0006] � Gerar Pagamento para Itens de D�bito do Contrato
*
* Pesquisa os itens de d�bitos do tipo d�bito a cobrar para gera��o de pagamento
*
* @author Mariana Victor
* @data 21/07/2011
*/
public Collection<Object[]> pesquisarItensDebitoACobrar(Integer idContrato) throws ErroRepositorioException {
Collection<Object[]> retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT distinct cpit.cpit_id AS idItem, " //0
+ " cpit.cpit_vlitem AS valorItem, " //1
+ " cpit.dbac_id AS idDebito, " //2
+ " dbac.dbac_amreferenciadebito AS anoMesDebito, " //3
+ " dbac.loca_id AS idLoca, " //4
+ " dbac.imov_id AS idImov, " //5
+ " dbac.dbtp_id AS idDebitoTipo " //6
+ " FROM cobranca.contrato_parcel_item cpit "
+ " INNER JOIN faturamento.debito_a_cobrar dbac ON cpit.dbac_id = dbac.dbac_id "
+ " WHERE cpit.cpar_id = :idContrato "
+ " AND cpit.dotp_id = :documentoTipoDebitoACobrar "
+ " AND dbac.dcst_idatual = :debCredSitNormal "
+ " AND dbac.cmrv_id = :contaMotivoRevisao "
+ " AND NOT EXISTS (SELECT pgmt.cnta_id FROM arrecadacao.pagamento pgmt WHERE pgmt.dbac_id = dbac.dbac_id) "
+ " AND NOT EXISTS (SELECT pghi.cnta_id FROM arrecadacao.pagamento_historico pghi WHERE pghi.dbac_id = dbac.dbac_id) "
+ " ORDER BY dbac.dbac_amreferenciadebito, dbac.imov_id ";
retorno = session.createSQLQuery(consulta)
.addScalar("idItem", Hibernate.INTEGER)
.addScalar("valorItem", Hibernate.BIG_DECIMAL)
.addScalar("idDebito", Hibernate.INTEGER)
.addScalar("anoMesDebito", Hibernate.INTEGER)
.addScalar("idLoca", Hibernate.INTEGER)
.addScalar("idImov", Hibernate.INTEGER)
.addScalar("idDebitoTipo", Hibernate.INTEGER)
.setInteger("idContrato", idContrato)
.setInteger("debCredSitNormal", DebitoCreditoSituacao.NORMAL)
.setInteger("contaMotivoRevisao", ContaMotivoRevisao.DEBITO_A_COBRAR_EM_CONTRATO_PARCELAMENTO)
.setInteger("documentoTipoDebitoACobrar", DocumentoTipo.DEBITO_A_COBRAR)
.list();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* Consulta os dados dos d�bitos a cobrar vinculados ao contrato de parcelamento
*
* @author Mariana Victor
* @data 26/07/2011
*/
public Collection<DebitoACobrar> pesquisarDadosDosDebitosACobrarContratoParcelamento(Integer idContratoParcelamento)
throws ErroRepositorioException {
Collection<Object[]> dados = null;
Collection<DebitoACobrar> retorno = new ArrayList();
Session session = HibernateUtil.getSession();
String consulta;
try {
consulta = " SELECT dbac.dbac_id AS idDebitoACob, " //0
+ " dbtp.dbtp_dsdebitotipo AS debitoTipo, " //1
+ " dbac.dbac_amreferenciadebito AS anoMesReferencia, " //2
+ " dbac.dbac_amcobrancadebito AS anoMesCobranca, " //3
+ " dbac.dbac_nnprestacaocobradas AS numeroParcelasCobradas, " //4
+ " dbac.dbac_nnprestacaodebito AS numeroParcelasDebitos, " //5
+ " dbac.dbac_nnparcelabonus AS numeroParcelasBonus, " //6
+ " dbac.dbac_vldebito as valorRestante, " //7
+ " dbac.imov_id AS idImovel, " //8
+ " dbac.cmrv_id AS idContaMotRev " //9
+ " FROM faturamento.debito_a_cobrar dbac "
+ " INNER JOIN cobranca.contrato_parcel_item cpit ON dbac.dbac_id = cpit.dbac_id "
+ " INNER JOIN faturamento.debito_tipo dbtp ON dbtp.dbtp_id = dbac.dbtp_id "
+ " WHERE cpit.cpar_id = :idContratoParcelamento AND cpit.cpit_icitemcancelado = :icItemCancelado ";
dados = (Collection<Object[]>) session.createSQLQuery(consulta)
.addScalar("idDebitoACob", Hibernate.INTEGER)
.addScalar("debitoTipo", Hibernate.STRING)
.addScalar("anoMesReferencia", Hibernate.INTEGER)
.addScalar("anoMesCobranca", Hibernate.INTEGER)
.addScalar("numeroParcelasCobradas", Hibernate.SHORT)
.addScalar("numeroParcelasDebitos", Hibernate.SHORT)
.addScalar("numeroParcelasBonus", Hibernate.SHORT)
.addScalar("valorRestante", Hibernate.BIG_DECIMAL)
.addScalar("idImovel", Hibernate.INTEGER)
.addScalar("idContaMotRev", Hibernate.INTEGER)
.setInteger("idContratoParcelamento", idContratoParcelamento)
.setInteger("icItemCancelado", ConstantesSistema.NAO)
.list();
if (dados != null && !dados.isEmpty()) {
Iterator iterator = dados.iterator();
while(iterator.hasNext()) {
Object[] dadosDebitos = (Object[]) iterator.next();
DebitoACobrar debitoACobrar = new DebitoACobrar();
if (dadosDebitos[0] != null) {
debitoACobrar.setId((Integer) dadosDebitos[0]);
}
if (dadosDebitos[1] != null) {
DebitoTipo debitoTipo = new DebitoTipo();
debitoTipo.setDescricao((String) dadosDebitos[1]);
debitoACobrar.setDebitoTipo(debitoTipo);
}
if (dadosDebitos[2] != null) {
debitoACobrar.setAnoMesReferenciaDebito((Integer) dadosDebitos[2]);
}
if (dadosDebitos[3] != null) {
debitoACobrar.setAnoMesCobrancaDebito((Integer) dadosDebitos[3]);
}
if (dadosDebitos[4] != null) {
debitoACobrar.setNumeroPrestacaoCobradas((Short) dadosDebitos[4]);
}
if (dadosDebitos[5] != null) {
debitoACobrar.setNumeroPrestacaoDebito((Short) dadosDebitos[5]);
}
if (dadosDebitos[6] != null) {
debitoACobrar.setNumeroParcelaBonus((Short) dadosDebitos[6]);
}
if (dadosDebitos[7] != null) {
debitoACobrar.setValorDebito((BigDecimal) dadosDebitos[7]);
}
if (dadosDebitos[8] != null) {
Imovel imovel = new Imovel();
imovel.setId((Integer) dadosDebitos[8]);
debitoACobrar.setImovel(imovel);
}
if (dadosDebitos[9] != null) {
ContaMotivoRevisao contaMotivoRevisao = new ContaMotivoRevisao();
contaMotivoRevisao.setId((Integer) dadosDebitos[9]);
debitoACobrar.setContaMotivoRevisao(contaMotivoRevisao);
}
retorno.add(debitoACobrar);
}
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC0184] Manter D�bito A Cobrar
*
* Verifica se o d�bito a cobrar est� vinculado a um Contrato Parcelamento por Cliente
*
* @author Mariana Victor
* @date 28/07/2011
*/
public boolean verificaDebitoACobrarVinculadoContratoParcelamentoCliente(Integer idDebitoACobrar)
throws ErroRepositorioException {
boolean retorno = false;
Session session = HibernateUtil.getSession();
String consulta;
Integer quantidadeDebitosACobrar = null;
try {
consulta = "SELECT COUNT(*) AS quantidade FROM cobranca.contrato_parcel_item item " +
" INNER JOIN cobranca.contrato_parcel cpar ON cpar.cpar_id = item.cpar_id " +
" WHERE item.dbac_id = :idDebitoACobrar and cpar.pcst_id = " + ParcelamentoSituacao.NORMAL;
quantidadeDebitosACobrar = (Integer) session.createSQLQuery(consulta)
.addScalar("quantidade", Hibernate.INTEGER)
.setInteger("idDebitoACobrar", idDebitoACobrar)
.setMaxResults(1).uniqueResult();
if (quantidadeDebitosACobrar != null && quantidadeDebitosACobrar > 0) {
retorno = true;
}
} 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;
}
/**
* [UC1201] Emitir Extrato de Contrato de Parcelamento por Cliente
*
* 1. O sistema obt�m os dados do contrato de parcelamento por cliente
*
* @author Mariana Victor
* @data 30/07/2011
*/
public ContratoParcelamento obterDadosContratoParcelamento(String numeroContratoParcelamento)
throws ErroRepositorioException {
Object[] dados = null;
ContratoParcelamento contratoParcelamento = null;
Session session = HibernateUtil.getSession();
String consulta;
try {
consulta = " SELECT cpar.cpar_id AS idContrato, " //0
+ " cpar.cpar_vlparcelamentoacobrar AS valorACobrar, " //1
+ " cbfm.cbfm_id AS idCobrancaForma, " //2
+ " cbfm.cbfm_dscobrancaforma AS descCobForma, " //3
+ " pcst.pcst_id AS idParcSituacao, " //4
+ " pcst.pcst_dsparcelamentosituacao AS descParcSituacao, " //5
+ " crtp.crtp_dsclienterelacaotipo AS descRelacTipo, " //6
+ " cpar.cpar_tmimplantacao AS dataImplantacao, " //7
+ " cpar.cpar_nnprestacoes AS numeroPrestacoes " //8
+ " FROM cobranca.contrato_parcel cpar "
+ " LEFT JOIN cobranca.cobranca_forma cbfm ON cbfm.cbfm_id = cpar.cbfm_id "
+ " LEFT JOIN cobranca.parcelamento_situacao pcst ON pcst.pcst_id = cpar.pcst_id "
+ " LEFT JOIN cadastro.cliente_relacao_tipo crtp ON crtp.crtp_id = cpar.crtp_id "
+ " WHERE cpar.cpar_nncontrato = :numeroContratoParcelamento ";
dados = (Object[]) session.createSQLQuery(consulta)
.addScalar("idContrato", Hibernate.INTEGER)
.addScalar("valorACobrar", Hibernate.BIG_DECIMAL)
.addScalar("idCobrancaForma", Hibernate.INTEGER)
.addScalar("descCobForma", Hibernate.STRING)
.addScalar("idParcSituacao", Hibernate.INTEGER)
.addScalar("descParcSituacao", Hibernate.STRING)
.addScalar("descRelacTipo", Hibernate.STRING)
.addScalar("dataImplantacao", Hibernate.DATE)
.addScalar("numeroPrestacoes", Hibernate.INTEGER)
.setString("numeroContratoParcelamento", numeroContratoParcelamento)
.setMaxResults(1).uniqueResult();
if (dados != null) {
contratoParcelamento = new ContratoParcelamento();
if (dados[0] != null) {
contratoParcelamento.setId((Integer) dados[0]);
}
if (dados[1] != null) {
contratoParcelamento.setValorParcelamentoACobrar((BigDecimal) dados[1]);
}
if (dados[2] != null && dados[3] != null) {
CobrancaForma cobrancaForma = new CobrancaForma();
cobrancaForma.setId((Integer) dados[2]);
cobrancaForma.setDescricao((String) dados[3]);
contratoParcelamento.setCobrancaForma(cobrancaForma);
}
if (dados[4] != null && dados[5] != null) {
ParcelamentoSituacao parcelamentoSituacao = new ParcelamentoSituacao();
parcelamentoSituacao.setId((Integer) dados[4]);
parcelamentoSituacao.setDescricao((String) dados[5]);
contratoParcelamento.setParcelamentoSituacao(parcelamentoSituacao);
}
if (dados[6] != null) {
ClienteRelacaoTipo clienteRelacaoTipo = new ClienteRelacaoTipo();
clienteRelacaoTipo.setDescricao((String) dados[6]);
contratoParcelamento.setRelacaoCliente(clienteRelacaoTipo);
}
if (dados[7] != null) {
contratoParcelamento.setDataImplantacao((Date) dados[7]);
}
if (dados[8] != null) {
contratoParcelamento.setNumeroPrestacoes((Integer) dados[8]);
}
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return contratoParcelamento;
}
/**
* [UC1201] Emitir Extrato de Contrato de Parcelamento por Cliente
*
* 2.2. Dados do Parcelamento
*
* @author Mariana Victor
* @data 30/07/2011
*/
public Collection<PrestacaoContratoParcelamento> obterDadosPrestacoesContratoParcelamento(Integer idContratoParcelamento)
throws ErroRepositorioException {
Collection<Object[]> dados = null;
Collection<PrestacaoContratoParcelamento> retorno = new ArrayList();
Session session = HibernateUtil.getSession();
String consulta;
try {
consulta = " SELECT cppr.cppr_id AS idPrestacao, " //0
+ " cppr.cppr_nnprestacao AS numeroPrestacao, " //1
+ " cppr.cppr_dtvencimento AS dataVencimento, " //2
+ " cppr.cppr_vlprestacao AS valorPrestacao " //3
+ " FROM cobranca.contrato_parcel_prest cppr "
+ " WHERE cppr.cpar_id = :idContratoParcelamento "
+ " ORDER BY cppr.cppr_nnprestacao ";
dados = (Collection<Object[]>) session.createSQLQuery(consulta)
.addScalar("idPrestacao", Hibernate.INTEGER)
.addScalar("numeroPrestacao", Hibernate.INTEGER)
.addScalar("dataVencimento", Hibernate.DATE)
.addScalar("valorPrestacao", Hibernate.BIG_DECIMAL)
.setInteger("idContratoParcelamento", idContratoParcelamento)
.list();
if (dados != null && !dados.isEmpty()) {
Iterator iterator = dados.iterator();
while(iterator.hasNext()) {
Object[] dadosPrestacao = (Object[]) iterator.next();
PrestacaoContratoParcelamento prestacaoContratoParcelamento = new PrestacaoContratoParcelamento();
if (dadosPrestacao[0] != null) {
prestacaoContratoParcelamento.setId((Integer) dadosPrestacao[0]);
}
if (dadosPrestacao[1] != null) {
prestacaoContratoParcelamento.setNumero((Integer) dadosPrestacao[1]);
}
if (dadosPrestacao[2] != null) {
prestacaoContratoParcelamento.setDataVencimento((Date) dadosPrestacao[2]);
}
if (dadosPrestacao[3] != null) {
prestacaoContratoParcelamento.setValor((BigDecimal) dadosPrestacao[3]);
}
retorno.add(prestacaoContratoParcelamento);
}
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1201] Emitir Extrato de Contrato de Parcelamento por Cliente
*
* @author Mariana Victor
* @data 30/07/2011
*/
public CobrancaDocumentoItem obterDocumentoCobrancaPrestacao(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.cbdo_nnsequenciadocumento AS seqDocumento, " //1
+ " clie.clie_id AS idCliente, " //2
+ " clie.clie_nmcliente AS nomeCliente, " //3
+ " cdit.cdit_id AS idItem " //4
+ " FROM cobranca.cobranca_documento_item cdit "
+ " INNER JOIN cobranca.cobranca_documento cbdo on cbdo.cbdo_id = cdit.cbdo_id "
+ " INNER JOIN cadastro.cliente clie on cbdo.clie_id = clie.clie_id "
+ " WHERE cdit.cppr_id = :idPrestacao ";
dados = (Object[]) session.createSQLQuery(consulta)
.addScalar("idDocumento", Hibernate.INTEGER)
.addScalar("seqDocumento", Hibernate.INTEGER)
.addScalar("idCliente", Hibernate.INTEGER)
.addScalar("nomeCliente", Hibernate.STRING)
.addScalar("idItem", 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) {
cobrancaDocumento.setNumeroSequenciaDocumento((Integer) dados[1]);
}
if (dados[2] != null && dados[3] != null) {
Cliente cliente = new Cliente();
cliente.setId((Integer) dados[2]);
cliente.setNome((String) dados[3]);
cobrancaDocumento.setCliente(cliente);
}
if (dados[4] != null) {
retorno.setId((Integer) dados[4]);
}
retorno.setCobrancaDocumento(cobrancaDocumento);
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* Deleta o Documento de Cobran�a vinculado ao Contrato de Parcelamento por Cliente
*
* @author Mariana Victor
* @data 01/08/2011
*/
public Boolean removerDocumentoCobrancaVinculadoAContratoParcelamento(Integer idDocumentoCobranca)
throws ErroRepositorioException {
Boolean retorno = true;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = "DELETE gcom.cobranca.CobrancaDocumento cbdo "
+ " where cbdo.id = :idDocumentoCobranca) ";
int removeu = (Integer) session.createQuery(consulta)
.setInteger("idDocumentoCobranca", idDocumentoCobranca)
.executeUpdate();
if (removeu == 0) {
retorno = false;
}else{
retorno = true;
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* Deleta os Itens de Documento de Cobran�a vinculados ao Contrato de Parcelamento por Cliente
*
* @author Mariana Victor
* @data 01/08/2011
*/
public Boolean removerItemDocumentoCobrancaVinculadoAContratoParcelamento(Integer idItem)
throws ErroRepositorioException {
Boolean retorno = true;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " DELETE gcom.cobranca.CobrancaDocumentoItem cdit "
+ " where cdit.id = :idItem ";
int removeu = (Integer) session.createQuery(consulta)
.setInteger("idItem", idItem)
.executeUpdate();
if (removeu == 0) {
retorno = false;
}else{
retorno = true;
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1136] Inserir Contrato de Parcelamento por Cliente
*
* Retorna os dados do d�bito a cobrar caso exista algum pagamento para o mesmo.
*
* @author Mariana Victor
* @data 03/08/2011
*/
public Object[] obterDadosDebitoACobrarPagoAMenor(Integer idDebitoACobrar)
throws ErroRepositorioException {
Object[] retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT dbac.imov_id AS idImovel, "
+ " dbtp.dbtp_dsdebitotipo AS debitoTipo "
+ " FROM faturamento.debito_a_cobrar dbac "
+ " INNER JOIN faturamento.debito_tipo dbtp ON dbtp.dbtp_id = dbac.dbtp_id "
+ " AND (EXISTS (SELECT pgmt.dbac_id FROM arrecadacao.pagamento pgmt WHERE pgmt.dbac_id = dbac.dbac_id) "
+ " OR EXISTS (SELECT pghi.dbac_id FROM arrecadacao.pagamento_historico pghi WHERE pghi.dbac_id = dbac.dbac_id)) "
+ " WHERE dbac.dbac_id = :idDebitoACobrar ";
retorno = (Object[]) session.createSQLQuery(consulta)
.addScalar("idImovel", Hibernate.INTEGER)
.addScalar("debitoTipo", Hibernate.STRING)
.setInteger("idDebitoACobrar", idDebitoACobrar)
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* @author Mariana Victor
* @data 05/08/2011
*/
public ContratoParcelamento pesquisarContratoParcelamentoCompleto(Integer idContrato, String numeroContrato)
throws ErroRepositorioException {
ContratoParcelamento contratoParcelamento = null;
Object[] retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try{
consulta = " SELECT cpar_icparcelamentocomjuros AS indicadorParcComJuros, " //0
+ " cpar_vljurosparcelamento AS valorJurosParc, " //1
+ " cpar_icdebitocomacrescimo AS indicadorDebAcresc, " //2
+ " cpar_vlacrescimosimpont AS valorAcrecImpont, " //3
+ " cpar_nncontrato AS numeroContrato, " //4
+ " cpar_dtcontrato AS dataContrato, " //5
+ " cpar_cdresponsavel AS codigoResponsavel, " //6
+ " cpar_amreferenciadebitoini AS anoMesInicial, " //7
+ " cpar_amreferenciadebitofim AS anoMesFim, " //8
+ " cpar_dtvencimentodebitoini AS dataInicial, " //9
+ " cpar_dtvencimentodebitofim AS dataFim, " //10
+ " cpar_dsobservacao AS observacao, " //11
+ " cpar_icinformarvalorparcela AS icInformValorParc, " //12
+ " cpar_dtvencimento AS dataVencimento, " //13
+ " cpar_nndiasentrevencimentoparc AS diasVencParc, " //14
+ " cpar_qtfaturasparceladas AS qtdFatParcelas, " //15
+ " cpar_vlconta AS valorConta, " //16
+ " cpar_vldebitoacobrar AS valorDebACobrar, " //17
+ " cpar_iccontasrevisao AS icContasRev, " //18
+ " cpar_icdebitoacobrar AS icDebitosACobrar, " //19
+ " cpar_iccreditoarealizar AS icCredARealizar, " //20
+ " cpar_nnprestacoes AS numeroPrestacoes, " //21
+ " cpar_txjuros AS taxaJuros, " //22
+ " cpar_vljurosmora AS valorJuros, " //23
+ " cpar_vlparcelado AS valorParcelado, " //24
+ " cpar_vldebitoatualizado AS valorDebAtu, " //25
+ " cpar_vlparcelamentoacobrar AS valorParcACobrar, " //26
+ " cpar_amreferenciafaturamento AS anoMesFaturamento, " //27
+ " cpar_tmimplantacao AS dataImplantacao, " //28
+ " cpar_tmcancelamento AS dataCancelamento, " //29
+ " cpar_icvlparcelainformadausur AS icInfValorParc, " //30
+ " pcst_id AS parcelamentoSituacao, " //31
+ " cpar_id AS idContrato " //32
+ " FROM cobranca.contrato_parcel ";
if (idContrato != null) {
consulta = consulta
+ " WHERE cpar_id = :idContrato ";
} else if (numeroContrato != null && !numeroContrato.trim().equals("")) {
consulta = consulta
+ " WHERE cpar_nncontrato = :numeroContrato ";
}
Query query = session.createSQLQuery(consulta)
.addScalar("indicadorParcComJuros", Hibernate.SHORT)
.addScalar("valorJurosParc", Hibernate.BIG_DECIMAL)
.addScalar("indicadorDebAcresc", Hibernate.SHORT)
.addScalar("valorAcrecImpont", Hibernate.BIG_DECIMAL)
.addScalar("numeroContrato", Hibernate.STRING)
.addScalar("dataContrato", Hibernate.DATE)
.addScalar("codigoResponsavel", Hibernate.SHORT)
.addScalar("anoMesInicial", Hibernate.INTEGER)
.addScalar("anoMesFim", Hibernate.INTEGER)
.addScalar("dataInicial", Hibernate.DATE)
.addScalar("dataFim", Hibernate.DATE)
.addScalar("observacao", Hibernate.STRING)
.addScalar("icInformValorParc", Hibernate.SHORT)
.addScalar("dataVencimento", Hibernate.DATE)
.addScalar("diasVencParc", Hibernate.INTEGER)
.addScalar("qtdFatParcelas", Hibernate.INTEGER)
.addScalar("valorConta", Hibernate.BIG_DECIMAL)
.addScalar("valorDebACobrar", Hibernate.BIG_DECIMAL)
.addScalar("icContasRev", Hibernate.SHORT)
.addScalar("icDebitosACobrar", Hibernate.SHORT)
.addScalar("icCredARealizar", Hibernate.SHORT)
.addScalar("numeroPrestacoes", Hibernate.INTEGER)
.addScalar("taxaJuros", Hibernate.BIG_DECIMAL)
.addScalar("valorJuros", Hibernate.BIG_DECIMAL)
.addScalar("valorParcelado", Hibernate.BIG_DECIMAL)
.addScalar("valorDebAtu", Hibernate.BIG_DECIMAL)
.addScalar("valorParcACobrar", Hibernate.BIG_DECIMAL)
.addScalar("anoMesFaturamento", Hibernate.INTEGER)
.addScalar("dataImplantacao", Hibernate.DATE)
.addScalar("dataCancelamento", Hibernate.DATE)
.addScalar("icInfValorParc", Hibernate.SHORT)
.addScalar("parcelamentoSituacao", Hibernate.INTEGER)
.addScalar("idContrato", Hibernate.INTEGER);
if (idContrato != null) {
query.setInteger("idContrato", idContrato);
} else if (numeroContrato != null && !numeroContrato.trim().equals("")) {
query.setString("numeroContrato", numeroContrato);
}
retorno = (Object[]) query
.setMaxResults(1).uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
if (retorno != null) {
contratoParcelamento = new ContratoParcelamento();
if (retorno[0] != null) {
contratoParcelamento.setIndicadorParcelamentoJuros((Short) retorno[0]);
}
if (retorno[1] != null) {
contratoParcelamento.setValorJurosParcelamento((BigDecimal) retorno[1]);
}
if (retorno[2] != null) {
contratoParcelamento.setIndicadorDebitosAcrescimos((Short) retorno[2]);
}
if (retorno[3] != null) {
contratoParcelamento.setValorTotalAcrescImpontualidade((BigDecimal) retorno[3]);
}
if (retorno[4] != null) {
contratoParcelamento.setNumero((String) retorno[4]);
}
if (retorno[5] != null) {
contratoParcelamento.setDataContrato((Date) retorno[5]);
}
if (retorno[6] != null) {
contratoParcelamento.setIndicadorResponsavel((Short) retorno[6]);
}
if (retorno[7] != null) {
contratoParcelamento.setAnoMesDebitoInicio((Integer) retorno[7]);
}
if (retorno[8] != null) {
contratoParcelamento.setAnoMesDebitoFinal((Integer) retorno[8]);
}
if (retorno[9] != null) {
contratoParcelamento.setDataVencimentoInicio((Date) retorno[9]);
}
if (retorno[10] != null) {
contratoParcelamento.setDataVencimentoFinal((Date) retorno[10]);
}
if (retorno[11] != null) {
contratoParcelamento.setObservacao((String) retorno[11]);
}
if (retorno[12] != null) {
contratoParcelamento.setIndicadorPermiteInformarValorParcel((Short) retorno[12]);
}
if (retorno[13] != null) {
contratoParcelamento.setDataVencimentoPrimParcela((Date) retorno[13]);
}
if (retorno[14] != null) {
contratoParcelamento.setNumeroDiasEntreVencimentoParcel((Integer) retorno[14]);
}
if (retorno[15] != null) {
contratoParcelamento.setQtdFaturasParceladas((Integer) retorno[15]);
}
if (retorno[16] != null) {
contratoParcelamento.setValorTotalConta((BigDecimal) retorno[16]);
}
if (retorno[17] != null) {
contratoParcelamento.setValorTotalDebitosCobrar((BigDecimal) retorno[17]);
}
if (retorno[18] != null) {
contratoParcelamento.setIndicadorContasRevisao((Short) retorno[18]);
}
if (retorno[19] != null) {
contratoParcelamento.setIndicadorDebitoACobrar((Short) retorno[19]);
}
if (retorno[20] != null) {
contratoParcelamento.setIndicadorCreditoARealizar((Short) retorno[20]);
}
if (retorno[21] != null) {
contratoParcelamento.setNumeroPrestacoes((Integer) retorno[21]);
}
if (retorno[22] != null) {
contratoParcelamento.setTaxaJuros((BigDecimal) retorno[22]);
}
if (retorno[23] != null) {
contratoParcelamento.setValorJurosMora((BigDecimal) retorno[23]);
}
if (retorno[24] != null) {
contratoParcelamento.setValorJurosParcelamento((BigDecimal) retorno[24]);
}
if (retorno[25] != null) {
contratoParcelamento.setValorDebitoAtualizado((BigDecimal) retorno[25]);
}
if (retorno[26] != null) {
contratoParcelamento.setValorParcelamentoACobrar((BigDecimal) retorno[26]);
}
if (retorno[27] != null) {
contratoParcelamento.setAnoMesReferenciaFaturamento((Integer) retorno[27]);
}
if (retorno[28] != null) {
contratoParcelamento.setDataImplantacao((Date) retorno[28]);
}
if (retorno[29] != null) {
contratoParcelamento.setDataCancelamento((Date) retorno[29]);
}
if (retorno[30] != null) {
contratoParcelamento.setIndicadorParcelaInformadaPeloUsuario((Short) retorno[30]);
}
if (retorno[31] != null) {
ParcelamentoSituacao parcelamentoSituacao = new ParcelamentoSituacao();
parcelamentoSituacao.setId((Integer) retorno[31]);
contratoParcelamento.setParcelamentoSituacao(parcelamentoSituacao);
}
if (retorno[31] != null) {
contratoParcelamento.setId((Integer) retorno[32]);
}
}
return contratoParcelamento;
}
/**
* [UC1201] Emitir Extrato de Contrato de Parcelamento por Cliente
*
* @author Mariana Victor
* @data 06/08/2011
*/
public Integer pesquisarIdClientecontrato(Integer idContratoParcelamento)
throws ErroRepositorioException {
Integer retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
Collection<Object[]> dadosClienteContrato = null;
try{
consulta = " SELECT cpcl_id AS idClienteContrato, "
+ " cpcl_icclientesuperior AS indicadorSuperior"
+ " FROM cobranca.contrato_parcel_cliente "
+ " WHERE cpar_id = :idContratoParcelamento ";
dadosClienteContrato = (Collection<Object[]>) session.createSQLQuery(consulta)
.addScalar("idClienteContrato", Hibernate.INTEGER)
.addScalar("indicadorSuperior", Hibernate.SHORT)
.setInteger("idContratoParcelamento", idContratoParcelamento)
.list();
if (dadosClienteContrato != null && !dadosClienteContrato.isEmpty()) {
Iterator iterator = dadosClienteContrato.iterator();
while(iterator.hasNext()) {
Object[] dados = (Object[]) iterator.next();
if (dados[1] != null
&& ((Short) dados[1]).compareTo(ConstantesSistema.SIM) == 0) {
retorno = (Integer) dados[0];
break;
}
}
if (retorno == null) {
Object[] dados = dadosClienteContrato.iterator().next();
retorno = (Integer) dados[0];
}
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1140] Cancelar Contrato de Parcelamento por Cliente
*
* @author Mariana Victor
* @data 06/08/2011
*/
public ContratoParcelamentoCliente pesquisarClienteContrato(Integer idContratoParcelamento)
throws ErroRepositorioException {
ContratoParcelamentoCliente retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
Collection<Object[]> dadosClienteContrato = null;
try{
consulta = " SELECT cpcl.cpcl_id AS idClienteContrato, "
+ " cpcl.cpcl_icclientesuperior AS indicadorSuperior,"
+ " clie.clie_nmcliente AS nome,"
+ " clie.clie_nncnpj AS cnpj, "
+ " clie.clie_id AS idCliente "
+ " FROM cobranca.contrato_parcel_cliente cpcl "
+ " INNER JOIN cadastro.cliente clie ON clie.clie_id = cpcl.clie_id "
+ " WHERE cpcl.cpar_id = :idContratoParcelamento ";
dadosClienteContrato = (Collection<Object[]>) session.createSQLQuery(consulta)
.addScalar("idClienteContrato", Hibernate.INTEGER)
.addScalar("indicadorSuperior", Hibernate.SHORT)
.addScalar("nome", Hibernate.STRING)
.addScalar("cnpj", Hibernate.STRING)
.addScalar("idCliente", Hibernate.INTEGER)
.setInteger("idContratoParcelamento", idContratoParcelamento)
.list();
if (dadosClienteContrato != null && !dadosClienteContrato.isEmpty()) {
Iterator iterator = dadosClienteContrato.iterator();
while(iterator.hasNext()) {
Object[] dados = (Object[]) iterator.next();
if (dados[1] != null
&& ((Short) dados[1]).compareTo(ConstantesSistema.SIM) == 0) {
retorno = new ContratoParcelamentoCliente();
retorno.setId((Integer) dados[0]);
Cliente cliente = new Cliente();
cliente.setNome((String) dados[2]);
cliente.setCnpj((String) dados[3]);
cliente.setId((Integer) dados[4]);
retorno.setCliente(cliente);
break;
}
}
if (retorno == null) {
Object[] dados = dadosClienteContrato.iterator().next();
retorno = new ContratoParcelamentoCliente();
retorno.setId((Integer) dados[0]);
Cliente cliente = new Cliente();
cliente.setNome((String) dados[2]);
cliente.setCnpj((String) dados[3]);
cliente.setId((Integer) dados[4]);
retorno.setCliente(cliente);
}
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* @author Mariana Victor
* @data 12/08/2011
*/
public ContratoParcelamentoCliente pesquisarClienteContrato(
Integer idContratoParcelamento,
Integer idCliente)
throws ErroRepositorioException {
ContratoParcelamentoCliente retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
Collection<Object[]> dadosClienteContrato = null;
try{
consulta = " SELECT cpcl.cpcl_id AS idClienteContrato, "
+ " cpcl.cpcl_icclientesuperior AS indicadorSuperior,"
+ " clie.clie_nmcliente AS nome,"
+ " clie.clie_nncnpj AS cnpj, "
+ " clie.clie_id AS idCliente, "
+ " cltp.cltp_id AS idClienteTipo, "
+ " cltp.cltp_dsclientetipo AS clienteTipo "
+ " FROM cobranca.contrato_parcel_cliente cpcl "
+ " INNER JOIN cadastro.cliente clie ON clie.clie_id = cpcl.clie_id "
+ " INNER JOIN cadastro.cliente_tipo cltp ON clie.cltp_id = cltp.cltp_id "
+ " WHERE cpcl.cpar_id = :idContratoParcelamento "
+ " AND clie.clie_id = :idCliente ";
dadosClienteContrato = (Collection<Object[]>) session.createSQLQuery(consulta)
.addScalar("idClienteContrato", Hibernate.INTEGER) //0
.addScalar("indicadorSuperior", Hibernate.SHORT) //1
.addScalar("nome", Hibernate.STRING) //2
.addScalar("cnpj", Hibernate.STRING) //3
.addScalar("idCliente", Hibernate.INTEGER) //4
.addScalar("idClienteTipo", Hibernate.INTEGER) //5
.addScalar("clienteTipo", Hibernate.STRING) //6
.setInteger("idContratoParcelamento", idContratoParcelamento)
.setInteger("idCliente", idCliente)
.list();
if (dadosClienteContrato != null && !dadosClienteContrato.isEmpty()) {
Iterator iterator = dadosClienteContrato.iterator();
while(iterator.hasNext()) {
Object[] dados = (Object[]) iterator.next();
if (dados[1] != null
&& ((Short) dados[1]).compareTo(ConstantesSistema.SIM) == 0) {
retorno = new ContratoParcelamentoCliente();
retorno.setId((Integer) dados[0]);
Cliente cliente = new Cliente();
cliente.setNome((String) dados[2]);
cliente.setCnpj((String) dados[3]);
cliente.setId((Integer) dados[4]);
ClienteTipo clienteTipo = new ClienteTipo();
clienteTipo.setId((Integer) dados[5]);
clienteTipo.setDescricao((String) dados[6]);
cliente.setClienteTipo(clienteTipo);
retorno.setCliente(cliente);
break;
}
}
if (retorno == null) {
Object[] dados = dadosClienteContrato.iterator().next();
retorno = new ContratoParcelamentoCliente();
retorno.setId((Integer) dados[0]);
Cliente cliente = new Cliente();
cliente.setNome((String) dados[2]);
cliente.setCnpj((String) dados[3]);
cliente.setId((Integer) dados[4]);
ClienteTipo clienteTipo = new ClienteTipo();
clienteTipo.setId((Integer) dados[5]);
clienteTipo.setDescricao((String) dados[6]);
cliente.setClienteTipo(clienteTipo);
retorno.setCliente(cliente);
}
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* @author Mariana Victor
* @data 15/08/2011
*/
public Collection<ContratoParcelamentoCliente> pesquisarClienteContrato(
Integer idContratoParcelamento,
Short indicadorClienteSuperior)
throws ErroRepositorioException {
Collection<ContratoParcelamentoCliente> retorno = new ArrayList<ContratoParcelamentoCliente>();
Session session = HibernateUtil.getSession();
String consulta;
Collection<Object[]> dadosClienteContrato = null;
try{
consulta = " SELECT cpcl.cpcl_id AS idClienteContrato, "
+ " cpcl.cpcl_icclientesuperior AS indicadorSuperior,"
+ " clie.clie_nmcliente AS nome,"
+ " clie.clie_nncnpj AS cnpj, "
+ " clie.clie_id AS idCliente, "
+ " cltp.cltp_id AS idClienteTipo, "
+ " cltp.cltp_dsclientetipo AS clienteTipo "
+ " FROM cobranca.contrato_parcel_cliente cpcl "
+ " INNER JOIN cadastro.cliente clie ON clie.clie_id = cpcl.clie_id "
+ " INNER JOIN cadastro.cliente_tipo cltp ON clie.cltp_id = cltp.cltp_id "
+ " WHERE cpcl.cpar_id = :idContratoParcelamento ";
if (indicadorClienteSuperior != null) {
consulta = consulta
+ " AND cpcl.cpcl_icclientesuperior = " + indicadorClienteSuperior;
}
dadosClienteContrato = (Collection<Object[]>) session.createSQLQuery(consulta)
.addScalar("idClienteContrato", Hibernate.INTEGER) //0
.addScalar("indicadorSuperior", Hibernate.SHORT) //1
.addScalar("nome", Hibernate.STRING) //2
.addScalar("cnpj", Hibernate.STRING) //3
.addScalar("idCliente", Hibernate.INTEGER) //4
.addScalar("idClienteTipo", Hibernate.INTEGER) //5
.addScalar("clienteTipo", Hibernate.STRING) //6
.setInteger("idContratoParcelamento", idContratoParcelamento)
.list();
if (dadosClienteContrato != null && !dadosClienteContrato.isEmpty()) {
Iterator iterator = dadosClienteContrato.iterator();
while(iterator.hasNext()) {
Object[] dados = (Object[]) iterator.next();
ContratoParcelamentoCliente contratoParcelamentoCliente = new ContratoParcelamentoCliente();
contratoParcelamentoCliente.setId((Integer) dados[0]);
Cliente cliente = new Cliente();
cliente.setNome((String) dados[2]);
cliente.setCnpj((String) dados[3]);
cliente.setId((Integer) dados[4]);
ClienteTipo clienteTipo = new ClienteTipo();
clienteTipo.setId((Integer) dados[5]);
clienteTipo.setDescricao((String) dados[6]);
cliente.setClienteTipo(clienteTipo);
contratoParcelamentoCliente.setCliente(cliente);
retorno.add(contratoParcelamentoCliente);
}
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC1141] Emitir Contrato de Parcelamento por Cliente
*
* @author Mariana Victor
* @created 29/08/2011
*
* @param idContratoParcelamento
* @exception ErroRepositorioException
*/
public Collection<ContratoParcelamentoItem> pesquisarContratoParcelamentoItem(
Integer idContratoParcelamento, Integer idDocumentoTipo) throws ErroRepositorioException {
Session session = HibernateUtil.getSession();
Collection<ContratoParcelamentoItem> retorno = null;
String consulta;
try {
consulta = " SELECT contratoParcelamentoItem FROM ContratoParcelamentoItem contratoParcelamentoItem "
+ " left join fetch contratoParcelamentoItem.contaGeral contaGeral "
+ " left join fetch contaGeral.conta conta "
+ " left join fetch conta.imovel imovelConta "
+ " left join fetch conta.debitoCreditoSituacaoAtual dcstConta "
+ " left join fetch contratoParcelamentoItem.debitoACobrarGeral debitoACobrarGeral "
+ " left join fetch debitoACobrarGeral.debitoACobrar debitoACobrar "
+ " left join fetch debitoACobrar.imovel imovelDebACob "
+ " left join fetch debitoACobrar.debitoTipo debitoTipo "
+ " WHERE contratoParcelamentoItem.contrato.id = :idContratoParcelamento "
+ " AND contratoParcelamentoItem.documentoTipo.id = :idDocumentoTipo ";
retorno = session.createQuery(consulta)
.setInteger("idContratoParcelamento", idContratoParcelamento)
.setInteger("idDocumentoTipo", idDocumentoTipo)
.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;
}
/**
* [UC1139] Atualizar Contrato de Parcelamento por Cliente
*
* @author Mariana Victor
* @data 13/09/2011
*/
public CobrancaForma pesquisarFormaPagamentoRD(
Integer idRD)
throws ErroRepositorioException {
CobrancaForma retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
Object[] dados = null;
try{
consulta = " SELECT cbfm.cbfm_id AS id, "
+ " cbfm.cbfm_dscobrancaforma AS descricao "
+ " FROM cobranca.cobranca_forma cbfm "
+ " INNER JOIN cobranca.contrato_parcel_rd cprd ON cprd.cbfm_id = cbfm.cbfm_id "
+ " WHERE cprd.cprd_id = :idRD ";
dados = (Object[]) session.createSQLQuery(consulta)
.addScalar("id", Hibernate.INTEGER) //0
.addScalar("descricao", Hibernate.STRING) //1
.setInteger("idRD", idRD)
.setMaxResults(1).uniqueResult();
if (dados != null
&& dados[0] != null
&& dados[1] != null) {
retorno = new CobrancaForma();
retorno.setId((Integer)dados[0]);
retorno.setDescricao((String)dados[1]);
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
}