/// <summary> /// Obtem o saldo em conta corrente do cliente /// </summary> /// <param name="pParametro">Objeto com parametros do cliente</param> /// <returns>Objeto SaldoContaCorrenteResponse com as informacoes de saldo em conta corrente do cliente </returns> public SaldoContaCorrenteResponse <ContaCorrenteInfo> ObterSaldoContaCorrente(SaldoContaCorrenteRequest pParametro) { AcessaDados lAcessaDados = new AcessaDados(); SaldoContaCorrenteResponse <ContaCorrenteInfo> _SaldoContaCorrente = new SaldoContaCorrenteResponse <ContaCorrenteInfo>(); try { ContaCorrenteInfo lRetorno = new ContaCorrenteInfo(); lAcessaDados.ConnectionStringName = gNomeConexao; using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "pccsaldoprojetado")) { lAcessaDados.AddInParameter(lDbCommand, "PCODCLIENTE", DbType.AnsiString, pParametro.IdCliente.DBToString()); lAcessaDados.AddOutParameter(lDbCommand, "PSALDO", DbType.Decimal, 12); lAcessaDados.AddOutParameter(lDbCommand, "PD1", DbType.Decimal, 12); lAcessaDados.AddOutParameter(lDbCommand, "PD2", DbType.Decimal, 12); lAcessaDados.AddOutParameter(lDbCommand, "PD3", DbType.Decimal, 12); lAcessaDados.ExecuteNonQuery(lDbCommand); lRetorno.SaldoD0 = lAcessaDados.GetParameterValue(lDbCommand, "PSALDO").DBToDecimal(); lRetorno.SaldoD1 = lAcessaDados.GetParameterValue(lDbCommand, "PD1").DBToDecimal(); lRetorno.SaldoD2 = lAcessaDados.GetParameterValue(lDbCommand, "PD2").DBToDecimal(); lRetorno.SaldoD3 = lAcessaDados.GetParameterValue(lDbCommand, "PD3").DBToDecimal(); lRetorno.SaldoContaMargem = this.ObtemSaldoContaMargem(pParametro.IdCliente); _SaldoContaCorrente.Objeto = lRetorno; _SaldoContaCorrente.DescricaoResposta = string.Format("Saldo de conta corrente do cliente: {0} carregado com sucesso", pParametro.IdCliente.DBToString()); _SaldoContaCorrente.StatusResposta = CriticaMensagemEnum.OK; } } catch (Exception ex) { _SaldoContaCorrente.DescricaoResposta = ex.Message; _SaldoContaCorrente.StackTrace = ex.StackTrace; _SaldoContaCorrente.StatusResposta = CriticaMensagemEnum.Exception; _SaldoContaCorrente.Objeto = null; } return(_SaldoContaCorrente); }
/// <summary> /// Realiza a consulta do extrato de conta corrente de um cliente. /// </summary> /// <param name="pParametros">Data início/fim da pesquisa, código do cliente no Sinacor e nome do cliente.</param> /// <returns>Lista com dados do extrato do cliente.</returns> public ContaCorrenteExtratoResponse ConsultarExtratoContaCorrente(ContaCorrenteExtratoRequest pParametros) { var lAcessaDados = new AcessaDados(); var lDataTable = new DataTable(); var lRetorno = new ContaCorrenteExtratoResponse(); var lContaCorrenteMovimentoRelInfo = new ContaCorrenteMovimentoInfo(); decimal lSaldoDAnterior, lSaldoDisponivel, lSaldoTotal, lLancamento; try { gLogger.Debug(String.Format("Inicio ConsultarExtratoContaCorrente. Cliente: {0}", pParametros.ConsultaCodigoCliente)); if (pParametros.ConsultaCodigoCliente == 0) { return(null); } lAcessaDados = new AcessaDados(); lAcessaDados.ConnectionStringName = "SINACOR"; var lProcedure = EnumTipoExtradoDeConta.Liquidacao.Equals(pParametros.ConsultaTipoExtratoDeConta) ? "PRC_EXTRATO_CC_LIQUI_SEL" : "PRC_EXTRATO_CC_MOVTO_SEL"; using (DbCommand lComando = lAcessaDados.CreateCommand(CommandType.StoredProcedure, lProcedure)) { lAcessaDados.AddInParameter(lComando, "pcd_cliente", DbType.Int32, pParametros.ConsultaCodigoCliente); lAcessaDados.AddInParameter(lComando, "pdt_inicio", DbType.DateTime, pParametros.ConsultaDataInicio); lAcessaDados.AddInParameter(lComando, "pdt_fim", DbType.DateTime, pParametros.ConsultaDataFim); lAcessaDados.AddOutParameter(lComando, "psaldo_d_anterior", DbType.VarNumeric, 4); lAcessaDados.AddOutParameter(lComando, "psaldo_disponivel", DbType.VarNumeric, 4); lAcessaDados.AddOutParameter(lComando, "psaldo_total", DbType.VarNumeric, 4); lDataTable = lAcessaDados.ExecuteOracleDataTable(lComando); lSaldoDAnterior = Convert.ToDecimal(lAcessaDados.GetParameterValue(lComando, "psaldo_d_anterior")); lSaldoDisponivel = Convert.ToDecimal(lAcessaDados.GetParameterValue(lComando, "psaldo_disponivel")); lSaldoTotal = Convert.ToDecimal(lAcessaDados.GetParameterValue(lComando, "psaldo_total")); } lLancamento = 0; lRetorno.Relatorio.CodigoCliente = pParametros.ConsultaCodigoCliente.Value; lRetorno.Relatorio.NomeCliente = BuscarNomeDoClienteSeNecessario(pParametros.ConsultaCodigoCliente, pParametros.ConsultaNomeCliente); // pParametros.CodigoCliente.ToString(); //TODO: De onde vem o nome do cliente? lRetorno.Relatorio.SaldoAnterior = lSaldoDAnterior; lRetorno.Relatorio.SaldoDisponivel = lSaldoDisponivel; lRetorno.Relatorio.SaldoTotal = lSaldoTotal; foreach (DataRow lRow in lDataTable.Rows) { lContaCorrenteMovimentoRelInfo = new ContaCorrenteMovimentoInfo(); if (!Convert.IsDBNull(lRow["Credito"])) { lLancamento = Convert.ToDecimal(lRow["Credito"]); lContaCorrenteMovimentoRelInfo.ValorCredito = lLancamento; lSaldoDAnterior += lLancamento; } else { lLancamento = (Math.Abs(Convert.ToDecimal(lRow["Debito"])) * -1); lContaCorrenteMovimentoRelInfo.ValorDebito = lLancamento; lSaldoDAnterior += lLancamento; } lContaCorrenteMovimentoRelInfo.DataMovimento = lRow["dt_lancamento"].DBToDateTime(); lContaCorrenteMovimentoRelInfo.DataLiquidacao = lRow["dt_liquidacao"].DBToDateTime(); lContaCorrenteMovimentoRelInfo.ValorSaldo = lSaldoDAnterior; lContaCorrenteMovimentoRelInfo.Historico = lRow["ds_lancamento"].ToString(); //lSaldoDAnterior += lLancamento; lRetorno.Relatorio.ListaContaCorrenteMovimento.Add(lContaCorrenteMovimentoRelInfo); } lRetorno.StatusResposta = CriticaMensagemEnum.OK; } catch (Exception ex) { gLogger.Error("ConsultarExtratoContaCorrente", ex); lRetorno.DescricaoResposta = ex.ToString(); lRetorno.StackTrace = ex.StackTrace; lRetorno.StatusResposta = CriticaMensagemEnum.Exception; } finally { lAcessaDados = null; lDataTable.Dispose(); lDataTable = null; } gLogger.Debug(String.Format("Fim ConsultarExtratoContaCorrente. Cliente: {0}. Descrição Resposta: {1}, count: {2}, consulta de {3} até {4}", pParametros.ConsultaCodigoCliente, lRetorno.StatusResposta, lRetorno.Relatorio.ListaContaCorrenteMovimento.Count.ToString(), pParametros.ConsultaDataInicio.ToString(), pParametros.ConsultaDataFim.ToString())); return(lRetorno); }