/// <summary> /// Busca os detalhes de uma transação /// </summary> public IList <TransacaoCapptaTef> GetListTransacoes(Helper.UtilsFinanceiro.TipoReceb tipoRecebimento, int idReferencia) { var sql = "SELECT * FROM transacao_cappta_tef WHERE CheckoutGuid IS NOT NULL AND TipoRecebimento = ?tpReceb AND IdReferencia = ?id"; var dados = objPersistence.LoadData(sql, new GDAParameter("?tpReceb", tipoRecebimento), new GDAParameter("?id", idReferencia)).ToList(); dados.ForEach(d => BuscarDados(d)); return(dados); }
/// <summary> /// Finaliza uma transação que ficou na situação processando /// </summary> public void FinalizarTransacaoProcessando(Helper.UtilsFinanceiro.TipoReceb tipoRecebimento, int idReferencia) { using (var transacation = new GDATransaction()) { try { transacation.BeginTransaction(); var sql = "SELECT COUNT(*) > 0 FROM transacao_cappta_tef WHERE COALESCE(CodigoControle, '') <> '' AND TipoRecebimento = ?tr AND IdReferencia = ?id"; var temRecebimento = ExecuteScalar <bool>(transacation, sql, new GDAParameter("?tr", (int)tipoRecebimento), new GDAParameter("?id", idReferencia)); switch (tipoRecebimento) { case Helper.UtilsFinanceiro.TipoReceb.LiberacaoAVista: { if (temRecebimento) { LiberarPedidoDAO.Instance.FinalizarPreLiberacaoAVista(transacation, idReferencia); } else { LiberarPedidoDAO.Instance.CancelarPreLiberacaoAVista(transacation, DateTime.Now, idReferencia, "Cancelamento de liberação em situação processando."); } break; } case Helper.UtilsFinanceiro.TipoReceb.Acerto: { if (temRecebimento) { ContasReceberDAO.Instance.FinalizarPreRecebimentoAcerto(transacation, idReferencia); } else { ContasReceberDAO.Instance.CancelarPreRecebimentoAcerto(transacation, DateTime.Now, idReferencia, "Cancelamento de liberação em situação processando."); } break; } case Helper.UtilsFinanceiro.TipoReceb.ChequeDevolvido: { if (temRecebimento) { ChequesDAO.Instance.FinalizarPreQuitacaoChequeDevolvido(transacation, idReferencia); } else { ChequesDAO.Instance.CancelarPreQuitacaoChequeDevolvido(transacation, DateTime.Now, idReferencia, "Cancelamento de liberação em situação processando."); } break; } case Helper.UtilsFinanceiro.TipoReceb.ContaReceber: { if (temRecebimento) { ContasReceberDAO.Instance.FinalizarPreRecebimentoConta(transacation, idReferencia); } else { ContasReceberDAO.Instance.CancelarPreRecebimentoConta(transacation, DateTime.Now, idReferencia, "Cancelamento de liberação em situação processando."); } break; } case Helper.UtilsFinanceiro.TipoReceb.SinalPedido: { if (temRecebimento) { SinalDAO.Instance.FinalizarPreRecebimentoSinalPagamentoAntecipado(transacation, idReferencia); } else { SinalDAO.Instance.CancelarPreRecebimentoSinalPagamentoAntecipado(transacation, idReferencia, "Cancelamento de liberação em situação processando."); } break; } case Helper.UtilsFinanceiro.TipoReceb.Obra: { if (temRecebimento) { ObraDAO.Instance.FinalizarPrePagamentoVista(transacation, idReferencia, string.Empty); } else { ObraDAO.Instance.CancelarPrePagamentoVista(transacation, idReferencia, "Cancelamento de liberação em situação processando."); } break; } default: break; } transacation.Commit(); transacation.Close(); } catch (Exception ex) { transacation.Rollback(); transacation.Close(); ErroDAO.Instance.InserirFromException("FinalizarTransacaoProcessando", ex); throw; } } }
/// <summary> /// Verifica se a referencia informada possui recebimento com TEF /// </summary> public bool TemRecebimentoComTef(GDASession sessao, Helper.UtilsFinanceiro.TipoReceb tipoRecebimento, int id) { var sql = @"SELECT count(*) FROM transacao_cappta_tef WHERE CheckoutGuid IS NOT NULL AND IdReferencia = ?id AND tipoRecebimento = ?tipoRecebimento"; return(objPersistence.ExecuteSqlQueryCount(sessao, sql, new GDAParameter("?id", id), new GDAParameter("?tipoRecebimento", tipoRecebimento)) > 0); }