Пример #1
0
        private static void testeContaCorrente()
        {
            IServicoMensageria servicoMensageria = Ativador.Get <IServicoMensageria>();
            ConsultarContasCorrentesResponse respostaConsultar =
                (ConsultarContasCorrentesResponse)
                servicoMensageria.ProcessarMensagem(
                    new ConsultarContasCorrentesRequest()
            {
            });

            List <double> saldoProjetado = new List <double>(new double[] { 1, 2, 3, 4 });

            ContaCorrenteInfo contaCorrente =
                new ContaCorrenteInfo()
            {
                SaldoRegularAtual     = 199,
                SaldoRegularProjetado = saldoProjetado
            };

            SalvarContaCorrenteResponse respostaSalvar =
                (SalvarContaCorrenteResponse)
                servicoMensageria.ProcessarMensagem(
                    new SalvarContaCorrenteRequest()
            {
                ContaCorrenteInfo = contaCorrente
            });
        }
Пример #2
0
        public ContaCorrenteInfo ObterSaldoContaCorrente(int CodigoCliente)
        {
            AcessaDados       lAcessaDados        = new AcessaDados();
            ContaCorrenteInfo _SaldoContaCorrente = new ContaCorrenteInfo();

            try
            {
                ContaCorrenteInfo lRetorno = new ContaCorrenteInfo();
                lAcessaDados.ConnectionStringName = gNomeConexaoOracle;

                using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_SALDO_ABERTURA_OMS"))
                {
                    lRetorno.IdClienteSinacor = CodigoCliente;

                    lAcessaDados.AddInParameter(lDbCommand, "pCodCliente", DbType.Int32, CodigoCliente);

                    gLogger.Info("Inicia a consulta de saldos no banco de dados");

                    DataTable lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                    if (lDataTable.Rows.Count > 0)
                    {
                        lRetorno.SaldoD2 = (lDataTable.Rows[0]["VL_PROJET2"]).DBToDecimal();
                    }

                    lRetorno.SaldoD0          = this.ObterSaldoD0(CodigoCliente);
                    lRetorno.SaldoD1          = this.ObterSaldoD1(CodigoCliente);
                    lRetorno.SaldoD3          = this.ObterSaldoD3(CodigoCliente);
                    lRetorno.SaldoContaMargem = this.ObtemSaldoContaMargem(CodigoCliente);
                    lRetorno.SaldoBloqueado   = this.ObtemSaldoBloqueado(CodigoCliente);

                    gLogger.Info("Consulta de saldos no banco de dados carregadas com sucesso");

                    this.ConsultarLimiteOperacionalDisponivel(lRetorno);
                    //this.ConsultarLimiteOperacionalTotal(lRetorno);

                    /*
                     * _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)
            {
                gLogger.Info("Ocorreu um erro ao consultar a posição de conta corrente do cliente no banco de dados");
                gLogger.Info("Descição do erro          :" + ex.Message);

                /*
                 * _SaldoContaCorrente.DescricaoResposta = ex.Message;
                 * _SaldoContaCorrente.StackTrace = ex.StackTrace;
                 * _SaldoContaCorrente.StatusResposta = CriticaMensagemEnum.Exception;
                 * _SaldoContaCorrente.Objeto = null;
                 * */
            }


            return(_SaldoContaCorrente);
        }
Пример #3
0
        /// <summary>
        /// Faz a consulta e cache de conta corrente
        /// </summary>
        /// <returns></returns>
        private ContaCorrenteInfo receberContaCorrente()
        {
            // Se a conta já foi carregada, retorna a carregada
            if (_contaCorrente != null)
            {
                return(_contaCorrente);
            }

            // Inicializa
            ContaCorrenteInfo contaCorrente = null;

            // Garante a criação da conta corrente
            ReceberContaCorrenteResponse respostaReceberContaCorrente =
                (ReceberContaCorrenteResponse)
                _servicoMensageria.ProcessarMensagem(
                    new ReceberContaCorrenteRequest()
            {
                CodigoSessao = receberSessaoAdmin().CodigoSessao
            });

            if (respostaReceberContaCorrente.ContaCorrenteInfo == null)
            {
                // Cria conta corrente e salva
                SalvarContaCorrenteResponse respostaSalvarContaCorrente =
                    (SalvarContaCorrenteResponse)
                    _servicoMensageria.ProcessarMensagem(
                        new SalvarContaCorrenteRequest()
                {
                    CodigoSessao      = receberSessaoAdmin().CodigoSessao,
                    ContaCorrenteInfo =
                        new ContaCorrenteInfo()
                    {
                        CodigoContaCorrente = _consCodigoContaCorrente
                    }
                });

                // Pega a conta corrente
                contaCorrente = respostaSalvarContaCorrente.ContaCorrente;

                // Informa a conta corrente no usuário e salva
                UsuarioInfo usuarioTeste = receberUsuarioTeste();
                usuarioTeste.Complementos.ReceberItem <ContextoOMSInfo>().CodigoContaCorrente = contaCorrente.CodigoContaCorrente;
                _servicoMensageria.ProcessarMensagem(
                    new SalvarUsuarioRequest()
                {
                    CodigoSessao = _sessaoAdmin.CodigoSessao,
                    Usuario      = usuarioTeste
                });
            }

            // Salva no cache
            _contaCorrente = contaCorrente;

            // Retorna
            return(contaCorrente);
        }
Пример #4
0
        public static SaldoFinanceiroCliente TraduzirCustodiaInfo(ContaCorrenteInfo pParametros)
        {
            var lRetorno = new SaldoFinanceiroCliente();

            lRetorno.SaldoD0    = pParametros.SaldoD0;
            lRetorno.SaldoD1    = pParametros.SaldoD1;
            lRetorno.SaldoD2    = pParametros.SaldoD2;
            lRetorno.SaldoD3    = pParametros.SaldoD3;
            lRetorno.SaldoTotal = pParametros.SaldoD0 + pParametros.SaldoD1 + pParametros.SaldoD2 + pParametros.SaldoD3;

            return(lRetorno);
        }
Пример #5
0
        /// <summary>
        /// Busca o limite operacional disponível para o cliente.
        /// </summary>
        private void ConsultarLimiteOperacionalDisponivel(ContaCorrenteInfo pParametro)
        {
            var lAcessaDados = new AcessaDados();

            lAcessaDados.ConnectionStringName = gNomeConexaoRisco;

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "prc_limites_cliente_sel"))
            {
                lAcessaDados.AddInParameter(lDbCommand, "@id_cliente", DbType.Int32, pParametro.IdClienteSinacor);

                gLogger.Info("Inicia a consulta de limites operacionais no banco de dados");

                var lDataTable = lAcessaDados.ExecuteDbDataTable(lDbCommand);

                if (null != lDataTable && lDataTable.Rows.Count > 0)
                {
                    DataRow dr = null;
                    int     id_parametro;

                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        dr = lDataTable.Rows[i];

                        if (!DBNull.Value.Equals(dr["id_parametro"]))
                        {
                            id_parametro = (int)dr["id_parametro"];

                            switch (id_parametro)
                            {
                            case 5:      //--> Limite descoberto no mercado a vista
                                pParametro.LimiteOperacioalDisponivelAVistaVenda = lDataTable.Rows[i]["valor"].DBToDecimal();
                                break;

                            case 7:      //--> Limite descoberto no mercado de opcoes
                                pParametro.LimiteOperacioalDisponivelOpcaoVenda = lDataTable.Rows[i]["valor"].DBToDecimal();
                                break;

                            case 12:     //--> Limite para compra mercado a vista
                                pParametro.LimiteOperacioalDisponivelAVista = lDataTable.Rows[i]["valor"].DBToDecimal();
                                break;

                            case 13:     //--> Limite para compra no mercado de opções
                                pParametro.LimiteOperacioalDisponivelOpcao = lDataTable.Rows[i]["valor"].DBToDecimal();
                                break;
                            }
                        }
                    }
                }
            }
        }
Пример #6
0
        private void InicializaConta(ContaCorrenteInfo pContaInfo)
        {
            if (pContaInfo != null)
            {
                this.SaldoAtual = pContaInfo.SaldoCompraAcoes;

                this.Acoes_SaldoD0 = pContaInfo.SaldoD0;
                this.Acoes_SaldoD1 = pContaInfo.SaldoD1;
                this.Acoes_SaldoD2 = pContaInfo.SaldoD2;
                this.Acoes_SaldoD3 = pContaInfo.SaldoD3;

                // saldo margem = d0
                this.Acoes_SaldoContaMargem = (pContaInfo.SaldoContaMargem.HasValue) ? pContaInfo.SaldoContaMargem.Value : 0;

                // limites faltam vir do serviço;
                this.Acoes_Limite       = pContaInfo.LimiteOperacioalDisponivelAVista;
                this.Acoes_Limite_Venda = pContaInfo.LimiteOperacioalDisponivelAVistaVenda;

                //SaldoDisponivelD0 + SaldoLiquidacaoD1 + SaldoLiquidacaoD2 + SaldoLiquidacaoD3 + LimiteAcoes
                this.Acoes_LimiteTotalAVista = this.Acoes_SaldoD0
                                               + this.Acoes_SaldoD1
                                               + this.Acoes_SaldoD2
                                               + this.Acoes_SaldoD3
                                               + this.Acoes_SaldoContaMargem;

                this.Opcoes_Limite       = pContaInfo.LimiteOperacioalDisponivelOpcao;
                this.Opcoes_Limite_Venda = pContaInfo.LimiteOperacioalDisponivelOpcaoVenda;

                this.Opcoes_SaldoD0 = Acoes_SaldoD0;
                this.Opcoes_SaldoD1 = Acoes_SaldoD1;

                //SaldoDisponivelD0 + SaldoLiquidacaoD1
                this.Opcoes_LimiteTotal = this.Opcoes_SaldoD0
                                          + this.Opcoes_SaldoD1
                                          + this.Opcoes_Limite
                                          + this.Opcoes_Limite_Venda;

                this.BMF_LimiteOperacional = 0;

                this.BMF_SaldoMargem = 0;

                if (pContaInfo.SaldoBloqueado.HasValue)
                {
                    this.SaldoBloqueado = pContaInfo.SaldoBloqueado.Value;
                }

                // dis. para resgate = ((SaldoMargem - SaldoBloqueado) - LimiteOperacional)
                this.BMF_DisponivelParaResgate = 0;// this.BMF_SaldoMargem - this.BMF_SaldoBloqueado - this.BMF_LimiteOperacional;
            }
        }
Пример #7
0
        /// <summary>
        /// Pede sincronização de conta corrente com o sinacor
        /// </summary>
        private void sincronizarContaCorrenteSinacor(string codigoCBLC)
        {
            // Pede sincronização da conta corrente do cliente informado
            SincronizarContaCorrenteResponse respostaSincronizar =
                (SincronizarContaCorrenteResponse)
                _servicoMensageria.ProcessarMensagem(
                    new SincronizarContaCorrenteRequest()
            {
                CodigoSessao        = receberSessaoAdmin().CodigoSessao,
                CodigoClienteCBLC   = codigoCBLC,
                CodigoContaCorrente = receberContaCorrente().CodigoContaCorrente
            });

            // Invalida a conta corrente carregada
            _contaCorrente = null;
        }
Пример #8
0
        public ContaCorrenteInfo GetSaldoContaCorrenteCliente(int CodigoCliente)
        {
            var lRetorno = new ContaCorrenteInfo();

            try
            {
                SaldoContaCorrenteRequest lRequest = new SaldoContaCorrenteRequest();

                lRequest.IdCliente = CodigoCliente;

                lRetorno = this.ObterSaldoContaCorrente(CodigoCliente); //gServicoContaCorrente.ObterSaldoContaCorrente(lRequest);
            }
            catch (Exception ex)
            {
                gLogger.Error(ex);
            }

            return(lRetorno);
        }
Пример #9
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);
        }
Пример #10
0
        private static void testeBruno()
        {
            // Referencia para a mensageria
            IServicoMensageria servicoMensageria = Ativador.Get <IServicoMensageria>();

            // Faz a autenticacao
            AutenticarUsuarioResponse responseAutenticacao =
                (AutenticarUsuarioResponse)
                servicoMensageria.ProcessarMensagem(
                    new AutenticarUsuarioRequest()
            {
                Email = "*****@*****.**",
                Senha = "123"
            });

            // Recebe o usuario
            ReceberUsuarioResponse respostaReceberUsuario =
                (ReceberUsuarioResponse)
                servicoMensageria.ProcessarMensagem(
                    new ReceberUsuarioRequest()
            {
                CodigoSessao = null,
                Email        = "*****@*****.**"
            });

            // Verifica se tem o contexto, senao cria
            ContextoOMSInfo contextoOMS =
                respostaReceberUsuario.Usuario.Complementos.ReceberItem <ContextoOMSInfo>();

            if (contextoOMS == null)
            {
                contextoOMS = respostaReceberUsuario.Usuario.Complementos.AdicionarItem <ContextoOMSInfo>(new ContextoOMSInfo());
            }

            // Verifica se tem conta corrente, senao cria
            if (contextoOMS.CodigoContaCorrente != null)
            {
                // Cria conta corrente vazia
                ContaCorrenteInfo contaCorrente =
                    new ContaCorrenteInfo()
                {
                };

                // Salva conta corrente criada
                SalvarContaCorrenteResponse respostaSalvarContaCorrente =
                    (SalvarContaCorrenteResponse)
                    servicoMensageria.ProcessarMensagem(
                        new SalvarContaCorrenteRequest()
                {
                    CodigoSessao      = responseAutenticacao.Sessao.CodigoSessao,
                    ContaCorrenteInfo = contaCorrente
                });

                // Associa conta corrente ao usuário
                contextoOMS.CodigoContaCorrente = contaCorrente.CodigoContaCorrente;

                // Salva usuário
                SalvarUsuarioResponse respostaSalvarUsuario =
                    (SalvarUsuarioResponse)
                    servicoMensageria.ProcessarMensagem(
                        new SalvarUsuarioRequest()
                {
                    CodigoSessao = responseAutenticacao.Sessao.CodigoSessao,
                    Usuario      = respostaReceberUsuario.Usuario
                });
            }
        }
Пример #11
0
 public TransporteSaldoDeConta(ContaCorrenteInfo pContaInfo)
 {
     this.InicializaConta(pContaInfo);
 }