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); }
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(), }); } } } } }
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); }
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); }
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); }
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); }
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); }
//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); } }
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); }
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); }
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); }
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(); } } } }
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); }
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" }; }
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); } }
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); }
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); }
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); }
/// <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); } } } } }