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