Пример #1
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);
        }
Пример #2
0
        private List <MonitorCustodiaInfo.CustodiaPosicaoDiaBMF> TratarListaCustodia(List <MonitorCustodiaInfo.CustodiaPosicaoDiaBMF> list)
        {
            List <MonitorCustodiaInfo.CustodiaPosicaoDiaBMF> lRetorno = new List <MonitorCustodiaInfo.CustodiaPosicaoDiaBMF>();

            try
            {
                MonitorCustodiaInfo.CustodiaPosicaoDiaBMF lPosicao;

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

                    lPosicao = posicao;

                    if (lPosicao.TipoMercado.Equals("FUT") || lPosicao.TipoMercado.Equals("OPF"))
                    {
                        //decimal lQuantidadeAtual = posicao.QtdeDisponivel;
                        decimal lQuantidadeAtual = (posicao.QtdeAExecCompra - posicao.QtdeAExecVenda) == 0 ? 1 : (posicao.QtdeAExecCompra - posicao.QtdeAExecVenda);

                        decimal lValorCotacao = posicao.Cotacao;

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

                        decimal lValorPosicao = posicao.ValorFechamento;

                        decimal lDiferenca = (lValorCotacao - lValorPosicao);

                        lPosicao.Resultado = ((lDiferenca * lFatorMultiplicador) * lQuantidadeAtual);
                    }

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

            return(lRetorno);
        }
Пример #3
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);
        }