Exemple #1
0
        public static MonitorCustodiaInfo ConsultarDadosClienteMonitorCustodia(MonitorCustodiaInfo pParametros)
        {
            var lRetornoInterno = new MonitorCustodiaInfo();

            if (pParametros.CodigoClienteBmf.HasValue)
            {
                lRetornoInterno.CodigoClienteBmf = pParametros.CodigoClienteBmf.Value;
            }

            ObterDadosCliente(pParametros.CodigoClienteBov.HasValue ? pParametros.CodigoClienteBov.Value : pParametros.CodigoClienteBmf.Value, ref lRetornoInterno);

            ConsultarMargemRequeridaBMF(pParametros, ref lRetornoInterno);

            ConsultarGarantiaBovespa(pParametros, ref lRetornoInterno);

            if (!lRetornoInterno.CodigoClienteBmf.HasValue)
            {
                ObterContaBMF(pParametros.CodigoClienteBov.Value, ref lRetornoInterno);
            }

            if (lRetornoInterno.CodigoClienteBmf.HasValue && !lRetornoInterno.CodigoClienteBov.HasValue)
            {
                lRetornoInterno.CodigoClienteBov = lRetornoInterno.CodigoClienteBmf;
            }

            return(lRetornoInterno);
        }
        public MonitorCustodiaResponse ObterMonitorCustodiaMemoria(MonitorCustodiaRequest lRequest)
        {
            gLogger.Debug("Solicitação de consulta [ ObterMonitorCustodiaMemoria ] requisitada. Cliente = " + lRequest.CodigoCliente.ToString());

            MonitorCustodiaResponse lRetorno = new MonitorCustodiaResponse();

            MonitorCustodiaInfo lMonitorCliente = MonitorCustodiaDB.ConsultarDadosClienteMonitorCustodia(new MonitorCustodiaInfo()
            {
                CodigoClienteBov = lRequest.CodigoCliente.Value
            });

            if ((lMonitorCliente.CodigoClienteBov.HasValue) || (lMonitorCliente.CodigoClienteBmf.HasValue))
            {
                lock (MonitorCustodiaMemoria)
                {
                    if (MonitorCustodiaMemoria.ContainsKey(lRequest.CodigoCliente))
                    {
                        gLogger.InfoFormat("Pegou posicao do Cliente[{0}] da memoria", lRequest.CodigoCliente);

                        lRetorno.MonitorCustodia = MonitorCustodiaMemoria[lRequest.CodigoCliente] as MonitorCustodiaInfo;
                    }
                    else
                    {
                        gLogger.Debug("A posicao do clienet[" + lRequest.CodigoCliente + "] não estava na memória");
                        gLogger.Debug("Recalcular posicao [" + lRequest.CodigoCliente + "] novamente");
                        MonitorCustodiaInfo lInfoPosicao = this.CalcularPosicaoCustodia(lRequest.CodigoCliente.Value);
                        lRetorno.MonitorCustodia = lInfoPosicao;
                        MonitorCustodiaMemoria.Add(lInfoPosicao.CodigoClienteBov, lInfoPosicao);
                    }
                }
            }

            return(lRetorno);
        }
Exemple #3
0
        private static void ConsultarFinanceiroGarantiaDinheiro(ref MonitorCustodiaInfo lRetorno)
        {
            var lAcessaDados = new AcessaDados();

            lAcessaDados.ConnectionStringName = gNomeConexaoOracle;

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_GARANTIAS_BMF_DIN_SEL"))
            {
                lAcessaDados.AddInParameter(lDbCommand, "pCliente", DbType.Int32, lRetorno.CodigoClienteBmf);

                var lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                if (null != lDataTable && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        if (lDataTable.Rows[i]["VL_DINHEIRO"].DBToDecimal() != 0)
                        {
                            lRetorno.ListaGarantias.Add(new MonitorCustodiaInfo.CustodiaGarantiaBMF()
                            {
                                CodigoClienteBmf      = lDataTable.Rows[i]["CD_CLIENTE"].DBToInt32(),
                                DescricaoGarantia     = "VALOR DINHEIRO",
                                ValorGarantiaDeposito = lDataTable.Rows[i]["VL_DINHEIRO"].DBToDecimal(),
                            });
                        }
                    }
                }
            }
        }
Exemple #4
0
        public static List <MonitorCustodiaInfo.CustodiaGarantiaBMFOuro> ConsultarFinanceiroGarantiaBMFOuro(MonitorCustodiaInfo pParametros)
        {
            var lAcessaDados             = new AcessaDados();
            MonitorCustodiaInfo lRetorno = new MonitorCustodiaInfo();

            lRetorno.ListaGarantiasBMFOuro = new List <MonitorCustodiaInfo.CustodiaGarantiaBMFOuro>();

            lAcessaDados.ConnectionStringName = gNomeConexaoOracle;

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_GAR_OURO_BMF_DET_SEL"))
            {
                lAcessaDados.AddInParameter(lDbCommand, "pCliente", DbType.Int32, pParametros.CodigoClienteBmf);

                var lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                if (null != lDataTable && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        lRetorno.ListaGarantiasBMFOuro.Add(new MonitorCustodiaInfo.CustodiaGarantiaBMFOuro()
                        {
                            CodigoClienteBmf      = lDataTable.Rows[i]["CD_CLIENTE"].DBToInt32(),
                            DescricaoGarantia     = lDataTable.Rows[i]["DESCRICAO"].DBToString(),
                            ValorGarantiaDeposito = lDataTable.Rows[i]["VL_GARANTIA"].DBToDecimal(),
                        });
                    }
                }
            }

            return(lRetorno.ListaGarantiasBMFOuro);
        }
Exemple #5
0
        public MonitorCustodiaInfo GetPosicaoCustodiaCliente(int CodigoBovespa)
        {
            MonitorCustodiaInfo lRetorno = new MonitorCustodiaInfo();

            try
            {
                MonitorCustodiaRequest lRequest = new MonitorCustodiaRequest();

                MonitorCustodiaResponse lResponse = new MonitorCustodiaResponse();

                lRequest.CodigoCliente = CodigoBovespa;

                lResponse = gServicoCustodia.ObterMonitorCustodiaMemoria(lRequest);

                if (lResponse.StatusResposta == MensagemResponseStatusEnum.OK)
                {
                    lRetorno = lResponse.MonitorCustodia;
                }
            }
            catch (Exception ex)
            {
                gLogger.Error(ex);
            }

            return(lRetorno);
        }
Exemple #6
0
        public MonitorCustodiaResponse ObterMonitorCustodiaMemoria(MonitorCustodiaRequest lRequest)
        {
            gLogger.Debug("Solicitação de consulta [ ObterMonitorCustodiaMemoria ] requisitada. Cliente = " + lRequest.CodigoCliente.ToString());

            MonitorCustodiaResponse lRetorno = new MonitorCustodiaResponse();

            try
            {
                gLogger.InfoFormat("Entrou no método-->> ObterMonitorCustodiaMemoria --> Antes do ConsultarDadosClienteMonitorCustodia");

                MonitorCustodiaInfo lMonitorCliente = MonitorCustodiaDB.ConsultarDadosClienteMonitorCustodia(new MonitorCustodiaInfo()
                {
                    CodigoClienteBov = lRequest.CodigoCliente.Value, CodAssessor = lRequest.CodAssessor
                });

                if ((lMonitorCliente.CodigoClienteBov.HasValue) || (lMonitorCliente.CodigoClienteBmf.HasValue))
                {
                    gLogger.InfoFormat("Consulta do Cliente[{0}] ObterMonitorCustodiaMemoria -->> depois do ConsultarDadosClienteMonitorCustodia", lRequest.CodigoCliente.Value);

                    this.AddRemoveClientRunTimerProcessed(lRequest.CodigoCliente.Value);

                    if (MonitorCustodiaMemoria.ContainsKey(lRequest.CodigoCliente.Value))
                    {
                        if (!ClientesMonitor.Contains(lRequest.CodigoCliente.Value))
                        {
                            gLogger.InfoFormat("O Cliente[{0}] Está no MonitorCustodiaMemoria, mas não está sendo monitorado no ClientesMonitor nesse instante", lRequest.CodigoCliente);
                            lRetorno.MonitorCustodia = this.CalcularPosicaoCustodia(lRequest.CodigoCliente.Value);
                            gLogger.Debug("Cliente [" + lRequest.CodigoCliente + "] recalculado novamente");
                        }
                        else
                        {
                            gLogger.InfoFormat("Pegou posicao do Cliente[{0}] da memoria", lRequest.CodigoCliente);
                            lRetorno.MonitorCustodia = MonitorCustodiaMemoria[lRequest.CodigoCliente.Value] as MonitorCustodiaInfo;
                        }
                    }
                    else
                    {
                        gLogger.Debug("A posicao do cliente[" + lRequest.CodigoCliente + "] não estava na memória");
                        lRetorno.MonitorCustodia = this.CalcularPosicaoCustodia(lRequest.CodigoCliente.Value);
                        gLogger.Debug("Cliente [" + lRequest.CodigoCliente + "] recalculado novamente");
                    }

                    MonitorCustodiaMemoria.AddOrUpdate(lRetorno.MonitorCustodia.CodigoClienteBov.Value, lRetorno.MonitorCustodia, (key, oldValue) => lRetorno.MonitorCustodia);

                    gLogger.InfoFormat("**************************************************************************************");
                    gLogger.InfoFormat("*******Total de calculos efetuados na memória [{0}]", MonitorCustodiaMemoria.Count);
                    gLogger.InfoFormat("**************************************************************************************");
                }
            }
            catch (Exception ex)
            {
                gLogger.Error("Erro em ObterMonitorCustodiaMemoria -> ", ex);
            }

            return(lRetorno);
        }
Exemple #7
0
        public static List <MonitorCustodiaInfo.CustodiaPosicaoDiaBMF> ConsultarCustodiaPosicaoDiaBMF(MonitorCustodiaInfo pParametros)
        {
            var lRetorno     = new MonitorCustodiaInfo();
            var lAcessaDados = new AcessaDados();

            lRetorno.ListaPosicaoDiaBMF = new List <MonitorCustodiaInfo.CustodiaPosicaoDiaBMF>();

            lAcessaDados.ConnectionStringName = gNomeConexaoOracle;

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_SEL_CUSTODIA_INTRANET_DIA"))
            {
                lAcessaDados.AddInParameter(lDbCommand, "IdCliente", DbType.Int32, pParametros.CodigoClienteBmf);

                var lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                if (null != lDataTable && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        MonitorCustodiaInfo.CustodiaPosicaoDiaBMF lPosicao = new MonitorCustodiaInfo.CustodiaPosicaoDiaBMF();

                        lPosicao.CodigoInstrumento = lDataTable.Rows[i]["CD_NEGOCIO"].DBToString();
                        lPosicao.TipoMercado       = "FUT";
                        lPosicao.TipoGrupo         = "FUT";
                        lPosicao.IdCliente         = lDataTable.Rows[i]["CD_CLIENTE"].DBToInt32();
                        lPosicao.QtdeAtual         = 0;
                        lPosicao.QtdeDisponivel    = lDataTable.Rows[i]["QT_NEGOCIO"].DBToDecimal();
                        lPosicao.CodigoSerie       = lDataTable.Rows[i]["CD_SERIE"].DBToString();

                        string lSentido = lDataTable.Rows[i]["CD_NATOPE"].DBToString();

                        lPosicao.Sentido = lSentido;

                        if (lSentido.Equals("V"))
                        {
                            lPosicao.QtdeAExecVenda = lDataTable.Rows[i]["QT_NEGOCIO"].DBToDecimal();

                            lPosicao.PrecoNegocioVenda = lDataTable.Rows[i]["PR_NEGOCIO"].DBToDecimal();
                        }
                        else if (lSentido.Equals("C"))
                        {
                            lPosicao.QtdeAExecCompra = lDataTable.Rows[i]["QT_NEGOCIO"].DBToDecimal();

                            lPosicao.PrecoNegocioCompra = lDataTable.Rows[i]["PR_NEGOCIO"].DBToDecimal();
                        }

                        lRetorno.ListaPosicaoDiaBMF.Add(lPosicao);
                    }
                }
            }

            return(lRetorno.ListaPosicaoDiaBMF);
        }
Exemple #8
0
        public MonitorCustodiaInfo CalcularPosicaoCustodia(int idCliente)
        {
            MonitorCustodiaInfo lRetorno = new MonitorCustodiaInfo();

            try
            {
                lRetorno = MonitorCustodiaDB.ConsultarDadosClienteMonitorCustodia(new MonitorCustodiaInfo()
                {
                    CodigoClienteBov = idCliente
                });

                List <MonitorCustodiaInfo.CustodiaPosicao> lPosicaoCustodia = MonitorCustodiaDB.ConsultarCustodiaNormal(new Lib.Mensageria.MonitorCustodiaRequest()
                {
                    CodigoCliente = lRetorno.CodigoClienteBov, CodigoClienteBmf = lRetorno.CodigoClienteBmf
                });
                lRetorno.ListaCustodia = TratarListaCustodia(lPosicaoCustodia);

                List <MonitorCustodiaInfo.CustodiaPosicao> lPosicaoCustodiaSemCarteira = MonitorCustodiaDB.ConsultarCustodiaNormalSemCarteira(new Lib.Mensageria.MonitorCustodiaRequest()
                {
                    CodigoCliente = lRetorno.CodigoClienteBov, CodigoClienteBmf = lRetorno.CodigoClienteBmf
                });
                lRetorno.ListaCustodiaSemCarteira = TratarListaCustodia(lPosicaoCustodiaSemCarteira);

                List <MonitorCustodiaInfo.CustodiaPosicao> lPosicaoCustodiaAberturaBMF = MonitorCustodiaDB.ObterCustodiaAberturaBMF(new Lib.Mensageria.MonitorCustodiaRequest()
                {
                    CodigoCliente = lRetorno.CodigoClienteBov, CodigoClienteBmf = lRetorno.CodigoClienteBmf
                });
                lRetorno.ListaCustodia.AddRange(TratarListaCustodia(lPosicaoCustodiaAberturaBMF));

                List <MonitorCustodiaInfo.CustodiaPosicaoDiaBMF> lPosicaoCustodiaDia = MonitorCustodiaDB.ConsultarCustodiaPosicaoDiaBMF(new MonitorCustodiaInfo()
                {
                    CodigoClienteBmf = lRetorno.CodigoClienteBmf
                });
                lRetorno.ListaPosicaoDiaBMF = TratarListaCustodia(lPosicaoCustodiaDia);

                lRetorno.ListaGarantias = MonitorCustodiaDB.ConsultarFinanceiroGarantiaBMF(new MonitorCustodiaInfo()
                {
                    CodigoClienteBmf = lRetorno.CodigoClienteBmf
                });
                //lRetorno.ListaGarantiasBMFOuro  = MonitorCustodiaDB.ConsultarFinanceiroGarantiaBMFOuro(new MonitorCustodiaInfo()         { CodigoClienteBmf = lRetorno.CodigoClienteBmf });
                lRetorno.ListaGarantiasBMFOuro = new List <MonitorCustodiaInfo.CustodiaGarantiaBMFOuro>();
                lRetorno.ListaGarantiasBovespa = MonitorCustodiaDB.ConsultarFinanceiroGarantiaBovespa(new MonitorCustodiaInfo()
                {
                    CodigoClienteBov = lRetorno.CodigoClienteBov
                });
            }
            catch (Exception ex)
            {
                gLogger.ErrorFormat("Erro calcular posição do cliente [{0}] - StackTrace - {1} -> error {2}", idCliente, ex.StackTrace, ex);
            }

            return(lRetorno);
        }
Exemple #9
0
        //private static MonitorCustodiaInfo gRetornoInterno;
        #endregion

        #region Métodos
        public static ClienteInfo ObterDadosCliente(int CodigoCliente, ref MonitorCustodiaInfo lRetornoInterno)
        {
            AcessaDados lAcessaDados = new AcessaDados();
            ClienteInfo _ClienteInfo = new ClienteInfo();

            try
            {
                lAcessaDados.ConnectionStringName = gNomeConexaoOracle;

                using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, " prc_obtem_cliente_asse_monitor"))
                {
                    lAcessaDados.AddInParameter(lDbCommand, "IdCliente", DbType.AnsiString, CodigoCliente);

                    DataTable lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                    if (null != lDataTable && lDataTable.Rows.Count > 0)
                    {
                        for (int i = 0; i <= lDataTable.Rows.Count - 1; i++)
                        {
                            string TipoCliente = (lDataTable.Rows[i]["Tipo"]).DBToString();

                            _ClienteInfo.Assessor     = (lDataTable.Rows[i]["CD_ASSESSOR"]).DBToString();
                            _ClienteInfo.NomeCliente  = (lDataTable.Rows[i]["NM_CLIENTE"]).DBToString();
                            _ClienteInfo.NomeAssessor = (lDataTable.Rows[i]["NM_ASSESSOR"]).DBToString();

                            if (TipoCliente == "BOVESPA")
                            {
                                lRetornoInterno.CodigoClienteBov = (lDataTable.Rows[i]["Codigo"]).DBToInt32();
                                _ClienteInfo.CodigoBovespa       = (lDataTable.Rows[i]["Codigo"]).DBToString();
                                //gRetornoInterno.StatusBovespa   = (lDataTable.Rows[i]["situac"]).DBToString();
                            }
                            else
                            {
                                _ClienteInfo.CodigoBMF           = (lDataTable.Rows[i]["Codigo"]).DBToString();
                                lRetornoInterno.CodigoClienteBmf = (lDataTable.Rows[i]["Codigo"]).DBToInt32();
                                //gRetornoInterno.StatusBMF       = (lDataTable.Rows[i]["situac"]).DBToString();
                            }

                            _ClienteInfo.Assessor    = (lDataTable.Rows[i]["CD_ASSESSOR"]).DBToString();
                            _ClienteInfo.NomeCliente = (lDataTable.Rows[i]["NM_CLIENTE"]).DBToString();
                        }
                    }
                }

                return(_ClienteInfo);
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }
Exemple #10
0
        public static List <MonitorCustodiaInfo.CustodiaPosicao> ConsultarCustodiaNormal(MonitorCustodiaRequest pParametros)
        {
            MonitorCustodiaInfo lRetorno = new MonitorCustodiaInfo();
            var lAcessaDados             = new AcessaDados();

            lAcessaDados.ConnectionStringName = gNomeConexaoOracle;

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_SEL_CUSTODIA_INTRANET2"))
            {
                lAcessaDados.AddInParameter(lDbCommand, "IdCliente", DbType.Int32, pParametros.CodigoCliente);
                lAcessaDados.AddInParameter(lDbCommand, "IdClienteBMF", DbType.Int32, pParametros.CodigoClienteBmf);

                var lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                if (null != lDataTable && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        lRetorno.ListaCustodia.Add(new MonitorCustodiaInfo.CustodiaPosicao()
                        {
                            CodigoInstrumento = lDataTable.Rows[i]["COD_NEG"].DBToString(),
                            CodigoCarteira    = lDataTable.Rows[i]["COD_CART"].DBToInt32(),
                            DescricaoCarteira = lDataTable.Rows[i]["DESC_CART"].DBToString().Trim(),
                            TipoMercado       = lDataTable.Rows[i]["TIPO_MERC"].DBToString(),
                            TipoGrupo         = lDataTable.Rows[i]["TIPO_GRUP"].DBToString(),
                            IdCliente         = lDataTable.Rows[i]["COD_CLI"].DBToInt32(),
                            QtdeAtual         = lDataTable.Rows[i]["QTDE_ATUAL"].DBToDecimal(),
                            QtdeLiquidar      = lDataTable.Rows[i]["QTDE_LIQUID"].DBToDecimal(),
                            QtdeDisponivel    = lDataTable.Rows[i]["QTDE_DISP"].DBToDecimal(),
                            QtdeAExecVenda    = lDataTable.Rows[i]["QTDE_AEXE_VDA"].DBToDecimal(),
                            QtdeAExecCompra   = lDataTable.Rows[i]["QTDE_AEXE_CPA"].DBToDecimal(),
                            NomeEmpresa       = lDataTable.Rows[i]["NOME_EMP_EMI"].DBToString(),
                            ValorPosicao      = lDataTable.Rows[i]["VAL_POSI"].DBToDecimal(),
                            DtVencimento      = lDataTable.Rows[i]["DATA_VENC"].DBToDateTime(),
                            QtdeD1            = lDataTable.Rows[i]["QTDE_DA1"].DBToDecimal(),
                            QtdeD2            = lDataTable.Rows[i]["QTDE_DA2"].DBToDecimal(),
                            QtdeD3            = lDataTable.Rows[i]["QTDE_DA3"].DBToDecimal(),
                            CodigoSerie       = lDataTable.Rows[i]["COD_SERI"].DBToString(),
                            FatorCotacao      = lDataTable.Rows[i]["FAT_COT"].DBToDecimal(),
                            QtdeDATotal       = lDataTable.Rows[i]["QTDE_DATOTAL"].DBToDecimal(),
                        });
                    }
                }
            }

            return(lRetorno.ListaCustodia);
        }
Exemple #11
0
        private static void ConsultarMargemRequeridaBMF(MonitorCustodiaInfo pParametros, ref MonitorCustodiaInfo lRetornoInterno)
        {
            var lAcessaDados = new AcessaDados();

            lAcessaDados.ConnectionStringName = gNomeConexaoOracle;

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_SALDOCLIENTE_BMF"))
            {
                lAcessaDados.AddInParameter(lDbCommand, "pId_Cliente", DbType.Int32, lRetornoInterno.CodigoClienteBmf);

                var lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                if (null != lDataTable && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        lRetornoInterno.ValorMargemRequerida = lDataTable.Rows[i]["VL_TOTMAR"].DBToDecimal();
                    }
                }
            }
        }
        private MonitorCustodiaInfo CalcularPosicaoCustodia(int idCliente)
        {
            MonitorCustodiaInfo lRetorno = new MonitorCustodiaInfo();

            try
            {
                //if (idCliente == 31940)
                //{
                lRetorno = MonitorCustodiaDB.ConsultarDadosClienteMonitorCustodia(new MonitorCustodiaInfo()
                {
                    CodigoClienteBov = idCliente
                });
                lRetorno.ListaCustodia = MonitorCustodiaDB.ConsultarCustodiaNormal(new Lib.Mensageria.MonitorCustodiaRequest()
                {
                    CodigoCliente = idCliente
                });
                lRetorno.ListaPosicaoDiaBMF = MonitorCustodiaDB.ConsultarCustodiaPosicaoDiaBMF(new MonitorCustodiaInfo()
                {
                    CodigoClienteBmf = idCliente
                });
                lRetorno.ListaGarantias = MonitorCustodiaDB.ConsultarFinanceiroGarantiaBMF(new MonitorCustodiaInfo()
                {
                    CodigoClienteBmf = idCliente
                });
                //lRetorno.ListaGarantiasBMFOuro = MonitorCustodiaDB.ConsultarFinanceiroGarantiaBMFOuro(new MonitorCustodiaInfo() { CodigoClienteBmf = idCliente });
                lRetorno.ListaGarantiasBMFOuro = new List <MonitorCustodiaInfo.CustodiaGarantiaBMFOuro>();
                lRetorno.ListaGarantiasBovespa = MonitorCustodiaDB.ConsultarFinanceiroGarantiaBovespa(new MonitorCustodiaInfo()
                {
                    CodigoClienteBov = idCliente
                });
                //}
            }
            catch (Exception ex)
            {
                gLogger.ErrorFormat("Erro calcular posição do cliente [{0}] - StackTrace - {1}", idCliente, ex.StackTrace);
            }

            return(lRetorno);
        }
Exemple #13
0
        public static MonitorCustodiaInfo ConsultarDadosClienteMonitorCustodia(MonitorCustodiaInfo pParametros)
        {
            var lRetornoInterno = new MonitorCustodiaInfo();

            if (pParametros.CodigoClienteBmf.HasValue)
            {
                lRetornoInterno.CodigoClienteBmf = pParametros.CodigoClienteBmf.Value;
            }

            if (pParametros.CodAssessor.HasValue)
            {
                List <int> lClientes = ReceberListaClientesAssessoresVinculados(pParametros.CodAssessor.Value, pParametros.CodLogin);

                int lCliente = pParametros.CodigoClienteBov.HasValue ? pParametros.CodigoClienteBov.Value : pParametros.CodigoClienteBmf.Value;

                if (!lClientes.Contains(lCliente))
                {
                    return(lRetornoInterno);
                }
            }

            ObterDadosCliente(pParametros.CodigoClienteBov.HasValue ? pParametros.CodigoClienteBov.Value : pParametros.CodigoClienteBmf.Value, ref lRetornoInterno);

            ConsultarMargemRequeridaBMF(pParametros, ref lRetornoInterno);

            ConsultarGarantiaBovespa(pParametros, ref lRetornoInterno);

            if (!lRetornoInterno.CodigoClienteBmf.HasValue)
            {
                ObterContaBMF(pParametros.CodigoClienteBov.Value, ref lRetornoInterno);
            }

            if (lRetornoInterno.CodigoClienteBmf.HasValue && !lRetornoInterno.CodigoClienteBov.HasValue)
            {
                lRetornoInterno.CodigoClienteBov = lRetornoInterno.CodigoClienteBmf;
            }

            return(lRetornoInterno);
        }
Exemple #14
0
        public static void ObterContaBMF(int CodigoCliente, ref MonitorCustodiaInfo lRetornoInterno)
        {
            AcessaDados lAcessaDados = new AcessaDados();

            lAcessaDados.ConnectionStringName = gNomeConexaoOracle;

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, " prc_obtem_cod_bmf_monitor"))
            {
                lAcessaDados.AddInParameter(lDbCommand, "IdCliente", DbType.AnsiString, CodigoCliente);

                DataTable lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                if (null != lDataTable && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i <= lDataTable.Rows.Count - 1; i++)
                    {
                        lRetornoInterno.CodigoClienteBmf = (lDataTable.Rows[i]["Codigo"]).DBToInt32();
                        //gRetornoInterno.StatusBMF = (lDataTable.Rows[i]["Status"]).DBToString();
                    }
                }
            }
        }
Exemple #15
0
        public static List <MonitorCustodiaInfo.CustodiaGarantiaBovespa> ConsultarFinanceiroGarantiaBovespa(MonitorCustodiaInfo pParametros)
        {
            var lAcessaDados             = new AcessaDados();
            MonitorCustodiaInfo lRetorno = new MonitorCustodiaInfo();

            lRetorno.ListaGarantiasBovespa = new List <MonitorCustodiaInfo.CustodiaGarantiaBovespa>();

            lAcessaDados.ConnectionStringName = gNomeConexaoOracle;

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_GARANTIAS_BOV_DET_SEL"))
            {
                lAcessaDados.AddInParameter(lDbCommand, "pCliente", DbType.Int32, pParametros.CodigoClienteBov);

                var lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                if (null != lDataTable && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        lRetorno.ListaGarantiasBovespa.Add(new MonitorCustodiaInfo.CustodiaGarantiaBovespa()
                        {
                            CodigoClienteBov      = lDataTable.Rows[i]["CD_CLIENTE"].DBToInt32(),
                            DescricaoGarantia     = lDataTable.Rows[i]["DESCRICAO"].DBToString(),
                            ValorGarantiaDeposito = lDataTable.Rows[i]["VL_GARANTIA"].DBToDecimal(),
                            DtDeposito            = lDataTable.Rows[i]["DT_DEPOSITO"].DBToDateTime(),
                            Quantidade            = lDataTable.Rows[i]["QTDE_GARN"].DBToInt32(),
                            CodigoAtividade       = lDataTable.Rows[i]["COD_ATIV"].DBToString(),
                            FinalidadeGarantia    = lDataTable.Rows[i]["DESC_FINL_GARN"].DBToString(),
                            CodigoIsin            = lDataTable.Rows[i]["COD_ISIN"].DBToString(),
                            CodigoDistribuicao    = lDataTable.Rows[i]["NUM_DIST"].DBToInt32(),
                            NomeEmpresa           = lDataTable.Rows[i]["NOME_EMPR"].DBToString(),
                        });
                    }
                }
            }


            return(lRetorno.ListaGarantiasBovespa);
        }
Exemple #16
0
        private static void ConsultarGarantiaBovespa(MonitorCustodiaInfo pParametros, ref MonitorCustodiaInfo lRetornoInterno)
        {
            var lAcessaDados = new AcessaDados();

            lAcessaDados.ConnectionStringName = gNomeConexaoOracle;

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_SEL_GARANTIA_BOV"))
            {
                lAcessaDados.AddInParameter(lDbCommand, "pId_Cliente", DbType.Int32, pParametros.CodigoClienteBov);

                var lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                if (null != lDataTable && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        lRetornoInterno.ValorGarantiaDeposito       = lDataTable.Rows[i]["VALO_GARN_DEPO"].DBToDecimal();
                        lRetornoInterno.DataMovimentoGarantia       = lDataTable.Rows[i]["DATA_MVTO"].DBToDateTime();
                        lRetornoInterno.ValorMargemRequeridaBovespa = lDataTable.Rows[i]["VALO_GARN_REQD"].DBToDecimal();
                    }
                }
            }
        }
        public IEnumerable <PosicaoCliente> Get()
        {
            List <PosicaoCliente> lListaRetornoPosicao = new List <PosicaoCliente>();

            try
            {
                var lListaClientes = MonitorCustodiaServico.ListarClientesComCustodiaCC();


                for (int i = 0; i < lListaClientes.Count; i++)
                {
                    int lCodigoBovespa = lListaClientes[i];

                    var lContaCorrente = gServicoContaCorrente.GetSaldoContaCorrenteCliente(lCodigoBovespa);

                    var lCustodia = new MonitorCustodiaInfo();

                    lCustodia = gServicoCustodia.GetPosicaoCustodiaCliente(lCodigoBovespa);

                    var lPosicao = new PosicaoCliente();
                    lPosicao.CodigoBovespaCliente        = lCustodia.CodigoClienteBov.HasValue ? lCustodia.CodigoClienteBov.Value : 0;
                    lPosicao.CodigoBmfCliente            = lCustodia.CodigoClienteBmf.HasValue ? lCustodia.CodigoClienteBmf.Value : 0;
                    lPosicao.SaldoFinanceiro             = TransporteFinanceiro.TraduzirCustodiaInfo(lContaCorrente);
                    lPosicao.SaldoCustodiaBovespaCliente = TransporteCustodia.TraduzirCustodiaInfo(lCustodia.ListaCustodia);
                    lPosicao.SaldoCustodiaBmfCliente     = TransporteCustodia.TraduzirCustodiaInfo(lCustodia.ListaPosicaoDiaBMF, lCustodia.ListaCustodia);

                    lListaRetornoPosicao.Add(lPosicao);
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return(lListaRetornoPosicao); // new string[] { "value1", "value2" };
        }
Exemple #18
0
        public MonitorCustodiaInfo CalcularPosicaoCustodia(int idCliente)
        {
            var lRetorno = new MonitorCustodiaInfo();

            try
            {
                lRetorno = MonitorPosicaoDB.ConsultarDadosClienteMonitorCustodia(new MonitorCustodiaInfo()
                {
                    CodigoClienteBov = idCliente
                });

                MonitorPosicaoDB.ConsultarCustodiaNormal(lRetorno.CodigoClienteBov, lRetorno.CodigoClienteBmf);

                if (lRetorno.CodigoClienteBmf.HasValue)
                {
                    MonitorPosicaoDB.ConsultarCustodiaPosicaoDiaBMF(lRetorno.CodigoClienteBmf);
                }
            }
            catch (Exception ex)
            {
                gLogger.ErrorFormat("Erro calcular posição do cliente [{0}] - StackTrace - {1} -> error {2}", idCliente, ex.StackTrace, ex);
            }
            return(lRetorno);
        }
        private void TimerTask(object StateObj)
        {
            gLogger.Debug("Entrando no timertask [" + ((ClienteMutexInfo)StateObj).IdCliente + "]");
            try
            {
                ClienteMutexInfo State = (ClienteMutexInfo)StateObj;

                int Cliente = State.IdCliente;

                System.Threading.Interlocked.Increment(ref State.SomeValue);

                gLogger.Info("Thread disparada  " + DateTime.Now.ToString() + " Cliente: " + State.IdCliente.ToString());

                if (State.StatusProcessando == EnumProcessamento.LIVRE)
                {
                    State.StatusProcessando = EnumProcessamento.EMPROCESSAMENTO;

                    gLogger.Debug(" Cliente: " + State.IdCliente.ToString() + " - Aguardando Mutex");
                    State._Mutex.WaitOne();

                    gLogger.Info("INICIA CALCULO DE POSICAO  " + DateTime.Now.ToString() + " Cliente: " + State.IdCliente.ToString());

                    lock (MonitorCustodiaMemoria)
                    {
                        MonitorCustodiaInfo info = this.CalcularPosicaoCustodia(Cliente);

                        if (MonitorCustodiaMemoria.Contains(info.CodigoClienteBov))
                        {
                            MonitorCustodiaMemoria[info.CodigoClienteBov] = info;
                        }
                        else
                        {
                            MonitorCustodiaMemoria.Add(info.CodigoClienteBov, info);
                        }
                    }

                    gLogger.Info("POSICAO CALCULADA  " + DateTime.Now.ToString() + " Cliente: " + State.IdCliente.ToString());

                    State._Mutex.ReleaseMutex();
                    State.StatusProcessando = EnumProcessamento.LIVRE;
                }
                else
                {
                    gLogger.Info("processando  " + DateTime.Now.ToString() + " Cliente: " + State.IdCliente.ToString());
                }


                System.Threading.Timer myTimer = State.TimerReference;

                if (DateTime.Now.Hour <= 8 || DateTime.Now.Hour >= 20)
                {
                    if (State.Intervalo != IntervaloRecalculoForaPregao)
                    {
                        myTimer.Change(0, IntervaloRecalculoForaPregao);
                        State.Intervalo = IntervaloRecalculoForaPregao;
                        gLogger.Info("Alterando intervalo de recalculo do cliente [" + Cliente + "] para " + IntervaloRecalculoForaPregao + "ms");
                    }
                }
                else
                {
                    if (State.Intervalo != IntervaloRecalculo)
                    {
                        myTimer.Change(0, IntervaloRecalculo);
                        State.Intervalo = IntervaloRecalculo;
                        gLogger.Info("Alterando intervalo de recalculo do cliente [" + Cliente + "] para " + IntervaloRecalculo + "ms");
                    }
                }


                if (State.TimerCanceled)
                {
                    State.TimerReference.Dispose();
                    gLogger.Info("Done  " + DateTime.Now.ToString());
                }
            }
            catch (Exception ex)
            {
                gLogger.Error("Ocorreu um erro ao processar método TimerTask {requisição de processamento da rotina CalcularPosicao} " + ex.Message, ex);
            }
        }
Exemple #20
0
        private void AddRemoveClientRunTimerProcessed(int IdCliente)
        {
            ClienteMutexInfo StateObj = new ClienteMutexInfo();

            StateObj.TimerCanceled     = false;
            StateObj.SomeValue         = 1;
            StateObj.IdCliente         = IdCliente;
            StateObj.StatusProcessando = EnumProcessamento.LIVRE;
            //StateObj.FirstTimeProcessed = DateTime.Now;
            StateObj.Intervalo = IntervaloRecalculo;

            if (htClientes.ContainsKey(IdCliente))
            {
                var ClienteMutex = new ClienteMutexInfo();

                ClienteMutex = htClientes[IdCliente] as ClienteMutexInfo;

                StateObj.SomeValue          = ClienteMutex.SomeValue;
                StateObj.FirstTimeProcessed = ClienteMutex.FirstTimeProcessed;

                double lMinutes = (DateTime.Now - ClienteMutex.FirstTimeProcessed).TotalMinutes;

                gLogger.InfoFormat("FirstTimeProcessed {0} - Datetime. Now {1}", ClienteMutex.FirstTimeProcessed, DateTime.Now);

                gLogger.InfoFormat("Consulta do Cliente {1} - Ultimo acesso {0}", lMinutes, IdCliente);

                if (lMinutes > 3)
                {
                    gLogger.InfoFormat("Já passou 3 minutos da ultima consulta do Cliente {1} - Ultimo acesso {0}", lMinutes, IdCliente);

                    htClientes.TryRemove(IdCliente, out StateObj);

                    StateObj.FirstTimeProcessed = DateTime.Now;

                    if (ClientesMonitor.Contains(IdCliente))
                    {
                        lock (ClientesMonitor)
                        {
                            ClientesMonitor.Remove(IdCliente);
                        }
                    }

                    if (MonitorCustodiaMemoria.ContainsKey(IdCliente))
                    {
                        var lInfo = new MonitorCustodiaInfo();

                        MonitorCustodiaMemoria.TryRemove(IdCliente, out lInfo);
                    }
                }
                else
                {
                    //StateObj.FirstTimeProcessed = DateTime.Now;
                    htClientes.TryRemove(IdCliente, out StateObj);

                    if (!ClientesMonitor.Contains(IdCliente))
                    {
                        lock (ClientesMonitor)
                        {
                            ClientesMonitor.Add(IdCliente);
                        }
                    }
                }
            }
            else
            {
                StateObj.FirstTimeProcessed = DateTime.Now;
            }

            htClientes.AddOrUpdate(IdCliente, StateObj, (key, oldValue) => StateObj);
        }
Exemple #21
0
        public static List <MonitorCustodiaInfo.CustodiaPosicaoDiaBMF> ConsultarCustodiaPosicaoDiaBMF(Nullable <int> CodigoClienteBmf)
        {
            var lRetorno     = new MonitorCustodiaInfo();
            var lAcessaDados = new AcessaDados();

            lRetorno.ListaPosicaoDiaBMF = new List <MonitorCustodiaInfo.CustodiaPosicaoDiaBMF>();
            try
            {
                lAcessaDados.ConnectionStringName = gNomeConexaoOracle;

                using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_SEL_CUSTODIA_INTRANET_DIA"))
                {
                    lAcessaDados.AddInParameter(lDbCommand, "IdCliente", DbType.Int32, CodigoClienteBmf.Value);

                    var lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                    if (null != lDataTable && lDataTable.Rows.Count > 0)
                    {
                        for (int i = 0; i < lDataTable.Rows.Count; i++)
                        {
                            MonitorCustodiaInfo.CustodiaPosicaoDiaBMF lPosicao = new MonitorCustodiaInfo.CustodiaPosicaoDiaBMF();

                            CotacaoValor lCotacao = ObterCotacaoAtual(lDataTable.Rows[i]["CD_NEGOCIO"].DBToString());

                            lPosicao.CodigoInstrumento = lDataTable.Rows[i]["CD_NEGOCIO"].DBToString();
                            lPosicao.TipoMercado       = "FUT";
                            lPosicao.TipoGrupo         = "FUT";
                            lPosicao.IdCliente         = lDataTable.Rows[i]["CD_CLIENTE"].DBToInt32();
                            lPosicao.QtdeAtual         = 0;
                            lPosicao.QtdeDisponivel    = lDataTable.Rows[i]["QT_NEGOCIO"].DBToDecimal();
                            lPosicao.CodigoSerie       = lDataTable.Rows[i]["CD_SERIE"].DBToString();
                            lPosicao.ValorFechamento   = lCotacao.ValorAbertura;
                            lPosicao.Cotacao           = lCotacao.ValorCotacao;
                            lPosicao.Variacao          = lCotacao.Variacao;
                            lPosicao.ValorPU           = lCotacao.ValorPU;
                            lPosicao.ValorAjuste       = lCotacao.ValorAjuste;

                            string lSentido = lDataTable.Rows[i]["CD_NATOPE"].DBToString();

                            lPosicao.Sentido = lSentido;

                            if (lSentido.Equals("V"))
                            {
                                lPosicao.QtdeAExecVenda = lDataTable.Rows[i]["QT_NEGOCIO"].DBToDecimal();

                                lPosicao.PrecoNegocioVenda = lDataTable.Rows[i]["PR_NEGOCIO"].DBToDecimal();
                            }
                            else if (lSentido.Equals("C"))
                            {
                                lPosicao.QtdeAExecCompra = lDataTable.Rows[i]["QT_NEGOCIO"].DBToDecimal();

                                lPosicao.PrecoNegocioCompra = lDataTable.Rows[i]["PR_NEGOCIO"].DBToDecimal();
                            }

                            lRetorno.ListaPosicaoDiaBMF.Add(lPosicao);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            finally
            {
                if (lAcessaDados != null)
                {
                    lAcessaDados.Dispose();
                    lAcessaDados = null;
                }
            }

            if (lRetorno.ListaPosicaoDiaBMF.Count > 0)
            {
                AtualizaInserePosicaoDiaBmf(lRetorno.ListaPosicaoDiaBMF);
            }

            return(lRetorno.ListaPosicaoDiaBMF);
        }
Exemple #22
0
        private List <MonitorCustodiaInfo.CustodiaPosicao> TratarListaCustodia(List <MonitorCustodiaInfo.CustodiaPosicao> list)
        {
            List <MonitorCustodiaInfo.CustodiaPosicao> lRetorno = new List <MonitorCustodiaInfo.CustodiaPosicao>();

            MonitorCustodiaInfo lRetornaCustodia = new MonitorCustodiaInfo();

            try
            {
                MonitorCustodiaInfo.CustodiaPosicao lPosicao;

                foreach (MonitorCustodiaInfo.CustodiaPosicao posicao in list)
                {
                    lPosicao = new MonitorCustodiaInfo.CustodiaPosicao();

                    lPosicao = posicao;

                    if (lPosicao.TipoMercado.Equals("FUT") || lPosicao.TipoMercado.Equals("OPF"))
                    {
                        decimal lQuantidadeAtual = posicao.QtdeAtual;

                        decimal lValorCotacao = posicao.Cotacao; ///!= 0?posicao.Cotacao: posicao.ValorFechamento ;

                        decimal lFatorMultiplicador = RetornaFatorMultiplicador(posicao.CodigoInstrumento, Convert.ToDouble(posicao.ValorFechamento), Convert.ToDouble(posicao.Cotacao));

                        decimal lValorPosicao = posicao.ValorFechamento;

                        decimal lDiferenca = Convert.ToDecimal((lValorCotacao - lValorPosicao), gCultura);

                        lPosicao.Resultado = ((lDiferenca * lFatorMultiplicador) * lQuantidadeAtual);
                    }
                    else
                    {
                        string lpapel = posicao.CodigoInstrumento;

                        if (lpapel != string.Empty)
                        {
                            if (lpapel.Substring(lpapel.Length - 1, 1).Equals("F"))
                            {
                                lpapel = lpapel.Substring(0, lpapel.Length - 1);
                            }
                        }

                        decimal lQuantidadeAtual = posicao.QtdeAtual;

                        decimal lValorCotacao = posicao.Cotacao;

                        decimal lFatorMultiplicador = (lstFatorCotacao1000.Contains(lpapel) ? 1000 : 1);

                        //decimal lValorPosicao = posicao.ValorFechamento;

                        //decimal lDiferenca = Convert.ToDecimal((lValorCotacao - lValorPosicao), gCultura);

                        lPosicao.Resultado = ((lValorCotacao / lFatorMultiplicador) * lQuantidadeAtual);
                    }

                    lRetornaCustodia.ValorSubtotalBMFAbertura += lPosicao.Resultado;

                    lRetorno.Add(lPosicao);
                }
            }
            catch (Exception ex)
            {
                gLogger.ErrorFormat("Erro ao tratar posição de custódia - StackTrace - {0}", ex.StackTrace);
            }

            return(lRetorno);
        }
Exemple #23
0
        /// <summary>
        /// Thread de gerenciamento de atualização no banco de dados da posição global da corretora
        /// </summary>
        private void ThreadGlobalPosition()
        {
            DateTime lastRun = DateTime.MinValue;

            while (_bKeepRunning)
            {
                TimeSpan interval = DateTime.Now - lastRun;

                if (interval.TotalMilliseconds > IntervaloRecalculo)
                {
                    lastRun = DateTime.Now;

                    gLogger.Debug("Obtendo relacao de clientes que operaram nos ultimos 2 minutos");

                    var lGlobalPosition = new MonitorPositionGlobalGradulaInfo();

                    List <int> RelacaoClientesOperaram = new MonitorCustodiaDB().ListaClientesOperaramUltimoMomento();

                    if (RelacaoClientesOperaram.Count > 0)
                    {
                        gLogger.Info("Relacao de clientes encontrados que operaram nos ultimos 2 minutos.[" + RelacaoClientesOperaram.Count.ToString() + "].");
                    }
                    else
                    {
                        gLogger.Info("Não existe clientes para serem calculados nesta tentativa.");
                    }

                    if (MonitorCustodiaMemoria != null && MonitorCustodiaMemoria.Count > 0)
                    {
                        gLogger.InfoFormat("Número de clientes calculados na memória {0}.", MonitorCustodiaMemoria.Count);

                        try
                        {
                            foreach (KeyValuePair <int, MonitorCustodiaInfo> monitor in MonitorCustodiaMemoria)
                            {
                                MonitorCustodiaInfo lMonitor = monitor.Value;

                                foreach (var custodia in lMonitor.ListaPosicaoDiaBMF)
                                {
                                    if (custodia.TipoMercado.Equals("FUT") ||
                                        custodia.TipoMercado.Equals("DIS") ||
                                        custodia.TipoMercado.Equals("OPF"))
                                    {
                                        if (custodia.CodigoInstrumento.Substring(0, 1).ToLower().Equals("w"))
                                        {
                                            ///Mini Indice
                                            lGlobalPosition.ListColumn[0].TotalBuy  += int.Parse(custodia.QtdeAExecCompra.ToString());
                                            lGlobalPosition.ListColumn[0].TotalSell += int.Parse(custodia.QtdeAExecVenda.ToString());
                                            lGlobalPosition.ListColumn[0].Volume    += custodia.Resultado;
                                            lGlobalPosition.ListColumn[0].Net       += int.Parse((custodia.QtdeAExecCompra - custodia.QtdeAExecVenda).ToString());
                                            lGlobalPosition.ListColumn[0].QtyOrder  += int.Parse((custodia.QtdeAExecCompra + custodia.QtdeAExecVenda).ToString());
                                        }
                                        else
                                        {
                                            ///Mini Indice
                                            lGlobalPosition.ListColumn[1].TotalBuy  += int.Parse(custodia.QtdeAExecCompra.ToString());
                                            lGlobalPosition.ListColumn[1].TotalSell += int.Parse(custodia.QtdeAExecVenda.ToString());
                                            lGlobalPosition.ListColumn[1].Volume    += custodia.Resultado;
                                            lGlobalPosition.ListColumn[1].Net       += int.Parse((custodia.QtdeAExecCompra - custodia.QtdeAExecVenda).ToString());
                                            lGlobalPosition.ListColumn[1].QtyOrder  += int.Parse((custodia.QtdeAExecCompra + custodia.QtdeAExecVenda).ToString());
                                        }
                                    }
                                }
                            }


                            var lMonitorCustodiaBovespa = new MonitorCustodiaGradualDB().ConsultarOrdensBovespaIntraday();

                            if (lMonitorCustodiaBovespa != null && lMonitorCustodiaBovespa.ListOrders.Count > 0)
                            {
                                foreach (var order in lMonitorCustodiaBovespa.ListOrders)
                                {
                                    if (htOrderOpcao.Contains(order.Symbol)) //-->> verifica se é opção
                                    {
                                        ///Opções
                                        if (order.Side.Equals(1)) //-->> compra
                                        {
                                            lGlobalPosition.ListColumn[3].TotalBuy += order.QtyOrder;
                                        }
                                        else if (order.Side.Equals(2)) //-->> Venda
                                        {
                                            lGlobalPosition.ListColumn[3].TotalSell += order.QtyOrder;
                                        }

                                        decimal lCotacao = ObterCotacaoAtual(order.Symbol);

                                        lGlobalPosition.ListColumn[3].Volume += (lCotacao * order.QtyOrder);
                                        //lGlobalPosition.ListColumn[3].Net       +=   // int.Parse((custodia.QtdeAExecCompra - custodia.QtdeAExecVenda).ToString());
                                        lGlobalPosition.ListColumn[3].QtyOrder += order.QtyOrder;
                                    }
                                    else
                                    {
                                        if (order.Side.Equals(1)) //-->> compra
                                        {
                                            lGlobalPosition.ListColumn[2].TotalBuy += order.QtyOrder;
                                        }
                                        else if (order.Side.Equals(2)) //-->> Venda
                                        {
                                            lGlobalPosition.ListColumn[2].TotalSell += order.QtyOrder;
                                        }

                                        decimal lCotacao = ObterCotacaoAtual(order.Symbol);

                                        lGlobalPosition.ListColumn[2].Volume += (lCotacao * order.QtyOrder);
                                        //lGlobalPosition.ListColumn[2].Net += int.Parse((custodia.QtdeAExecCompra - custodia.QtdeAExecVenda).ToString());
                                        lGlobalPosition.ListColumn[2].QtyOrder += order.QtyOrder;// int.Parse((custodia.QtdeAExecCompra + custodia.QtdeAExecVenda).ToString());
                                    }
                                }

                                ///net de quantidade para opções
                                lGlobalPosition.ListColumn[3].Net += (lGlobalPosition.ListColumn[3].TotalBuy - lGlobalPosition.ListColumn[3].TotalSell);
                                ///net de quantidade para a vista
                                lGlobalPosition.ListColumn[2].Net += (lGlobalPosition.ListColumn[2].TotalBuy - lGlobalPosition.ListColumn[2].TotalSell);
                            }
                        }
                        catch (Exception ex)
                        {
                            gLogger.Error("Erro encontrado na rotina de GlobalPosition ", ex);
                        }

                        gLogger.InfoFormat("Atualizando as informações de Posição de Custodia Gradual no banco de dados");

                        try
                        {
                            new MonitorCustodiaGradualDB().AtualizaPosicaoCustodiaGradual(lGlobalPosition);
                        }
                        catch (Exception ex)
                        {
                            gLogger.Error("Erro encontrado na atualização de informações de POsição de Custodia Gradual", ex);
                        }
                    }
                }
            }
        }