Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }