Ejemplo n.º 1
0
        /// <summary>
        /// Monta a string da mensagem de negocio pra envio ao HomeBroker
        /// </summary>
        /// <param name="registroNegocio"></param>
        /// <returns></returns>
        public static string montarLivroNegociosHomeBroker(NegocioBase registroNegocio)
        {
            StringBuilder   builder = new StringBuilder();
            NEGDadosNegocio negocio = registroNegocio.Negocio;


            builder.Append(MDSUtils.montaHeaderHomeBroker(registroNegocio.Instrumento,
                                                          ConstantesMDS.TIPO_REQUISICAO_HB_LIVRO_NEGOCIOS, registroNegocio.TipoBolsa));

            int numItens    = 30; //TODO: parametrizar
            int posicaoItem = 0;

            while (posicaoItem < numItens &&
                   posicaoItem < registroNegocio.LivroNegocios.Count)
            {
                LNGDadosNegocio item = registroNegocio.LivroNegocios[posicaoItem];

                if (item != null)
                {
                    if (!String.IsNullOrEmpty(item.NumeroNegocio))
                    {
                        builder.Append(item.NumeroNegocio.PadLeft(8, '0'));
                    }
                    else
                    {
                        builder.Append("00000000");
                    }

                    if (!String.IsNullOrEmpty(item.Hora))
                    {
                        builder.Append(item.Hora.PadLeft(6, '0'));
                    }
                    else
                    {
                        builder.Append("000000");
                    }

                    builder.Append(item.Preco.ToString("0000000000.00"));
                    builder.Append(String.Format("{0:d12}", item.Quantidade));

                    if (!String.IsNullOrEmpty(item.Compradora))
                    {
                        builder.Append(item.Compradora.PadLeft(8, '0'));
                    }
                    else
                    {
                        builder.Append("00000000");
                    }

                    if (!String.IsNullOrEmpty(item.Vendedora))
                    {
                        builder.Append(item.Vendedora.PadLeft(8, '0'));
                    }
                    else
                    {
                        builder.Append("00000000");
                    }
                }

                posicaoItem++;
            }

            return(builder.ToString());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Monta a string da mensagem de negocio pra envio ao HomeBroker
        /// </summary>
        /// <param name="registroNegocio"></param>
        /// <returns></returns>
        public static string montarNegocioHomeBroker(NegocioBase registroNegocio)
        {
            StringBuilder   builder = new StringBuilder();
            NEGDadosNegocio negocio = registroNegocio.Negocio;


            builder.Append(MDSUtils.montaHeaderHomeBroker(registroNegocio.Instrumento,
                                                          ConstantesMDS.TIPO_REQUISICAO_HB_NEGOCIO, registroNegocio.TipoBolsa));

            // Corpo da mensagem MDS de Negocio
            if (String.IsNullOrEmpty(negocio.Data))
            {
                builder.Append("00000000");
            }
            else
            {
                builder.Append(negocio.Data);
            }

            if (String.IsNullOrEmpty(negocio.Hora))
            {
                builder.Append("000000000");
            }
            else
            {
                builder.Append(negocio.Hora.PadRight(9, '0'));
            }

            if (String.IsNullOrEmpty(negocio.Compradora))
            {
                builder.Append("00000000");
            }
            else
            {
                builder.Append(negocio.Compradora.PadLeft(8, '0'));
            }

            if (String.IsNullOrEmpty(negocio.Vendedora))
            {
                builder.Append("00000000");
            }
            else
            {
                builder.Append(negocio.Vendedora.PadLeft(8, '0'));
            }

            if (negocio.Preco < 0)
            {
                builder.Append("000000000,000");
            }
            else
            {
                builder.Append(negocio.Preco.ToString("000000000.000").Replace('.', ','));
            }

            builder.Append(negocio.Quantidade.ToString().PadLeft(12, '0'));

            if (negocio.PrecoMaximo < 0)
            {
                builder.Append("000000000,000");
            }
            else
            {
                builder.Append(negocio.PrecoMaximo.ToString("000000000.000").Replace('.', ','));
            }

            if (negocio.PrecoMinimo < 0)
            {
                builder.Append("000000000,000");
            }
            else
            {
                builder.Append(negocio.PrecoMinimo.ToString("000000000.000").Replace('.', ','));
            }


            //BigDecimal volumeTotal = new BigDecimal(0);
            //try
            //{
            //    if (dadosInstrumentos.getTipoBolsa().equals(ConstantesMDS.DESCRICAO_DE_BOLSA_BMF))
            //    {
            //        if (dadosInstrumentos.getPrecoMedio() != null && !dadosInstrumentos.getPrecoMedio().trim().isEmpty())
            //        {
            //            BigDecimal precoMedio = new BigDecimal(
            //                    dadosInstrumentos.getPrecoMedio().replace(',', '.'));
            //            if (!precoMedio.equals(new BigDecimal(0)))
            //            {
            //                volumeTotal = dadosInstrumentos.getVolumeTotal().
            //                    divide(precoMedio, 6, RoundingMode.HALF_UP);
            //            }
            //        }
            //    }
            //    else
            //    {
            //        volumeTotal = dadosInstrumentos.getVolumeTotal();
            //    }
            //}
            //catch (Exception ex) { }

            //builder.Append(String.format("%013d", volumeTotal.longValue()));
            builder.Append(negocio.VolumeTotal.ToString("0000000000000", CultureInfo.InvariantCulture));

            builder.Append(negocio.QtdeNegocios.ToString().PadLeft(8, '0'));

            Decimal variacao = Math.Abs(negocio.Variacao);

            if (negocio.Variacao >= Decimal.Zero)
            {
                builder.Append(" ");
            }
            else
            {
                builder.Append("-");
            }

            if (variacao > 99999 || variacao < -99999)
            {
                builder.Append("00000,00");
            }
            else
            {
                builder.Append(variacao.ToString("00000.00", CultureInfo.InvariantCulture).Replace('.', ','));
            }

            builder.Append(negocio.EstadoInstrumento.ToString());

            if (negocio.MelhorQuantidadeCompra < 0)
            {
                builder.Append("000000000000");
            }
            else
            {
                builder.Append(negocio.MelhorQuantidadeCompra.ToString().PadLeft(12, '0'));
            }

            if (negocio.MelhorQuantidadeVenda < 0)
            {
                builder.Append("000000000000");
            }
            else
            {
                builder.Append(negocio.MelhorQuantidadeVenda.ToString().PadLeft(12, '0'));
            }

            builder.Append(negocio.QtdeNegociadaDia.ToString().PadLeft(12, '0'));


            builder.Append(negocio.PrecoMedio.ToString("000000000.000", CultureInfo.InvariantCulture).Replace('.', ','));
            // Dados do Leilao
            builder.Append(negocio.PrecoTeoricoAbertura.ToString("000000000.000", CultureInfo.InvariantCulture).Replace('.', ','));

            if (negocio.Variacao >= Decimal.Zero)
            {
                builder.Append(" ");
            }
            else
            {
                builder.Append("-");
            }
            variacao = Math.Abs(negocio.VariacaoTeorica);

            builder.Append(variacao.ToString("00000.00", CultureInfo.InvariantCulture).Replace('.', ','));
            builder.Append(negocio.HorarioTeorico.ToString("yyyyMMddHHmmss"));

            return(builder.ToString());
        }