/// <summary> /// Notificacao de cancelamento de negocio /// </summary> /// <param name="evento"></param> private void _parse100(EventoSTM evento) { int offset = 0; MEGA0100NotificacaoCancelamentoNegocioInfo info100 = new MEGA0100NotificacaoCancelamentoNegocioInfo(); info100.FunctionCode = evento.Cabecalho; info100.InternalReference = evento.Corpo.Substring(offset, MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD001_TAM_INTERNAL_REFERENCE); offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD001_TAM_INTERNAL_REFERENCE; offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD002_TAM_FUNCTION_CODE; string dthr = evento.Corpo.Substring(offset, MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD003_TAM_DSEABSEVEN); info100.DataNegocio = DateTime.ParseExact(dthr, "yyyyMMdd", CultureInfo.InvariantCulture); offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD003_TAM_DSEABSEVEN; info100.Papel = evento.Corpo.Substring(offset, MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD004_TAM_CVALISIN).Trim(); offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD004_TAM_CVALISIN; dthr = evento.Corpo.Substring(offset, MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD005_TAM_DSAIOM); info100.DataRegistro = DateTime.ParseExact(dthr, "yyyyMMdd", CultureInfo.InvariantCulture); offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD005_TAM_DSAIOM; info100.SequencialOrdem = evento.Corpo.Substring(offset, MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD006_TAM_NSEQOM); offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD006_TAM_NSEQOM; info100.IndicadorFormatoPreco = evento.Corpo.Substring(offset, MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD007_TAM_IND_PRICE); offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD007_TAM_IND_PRICE; string preco = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD009_TAM_PRICE); preco = STMUtilities.saidaFormatada(info100.IndicadorFormatoPreco[0], preco, false, true, false, preco.Length); info100.Preco = Convert.ToDecimal(preco, STMUtilities.ciPtBR); offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD008_TAM_PRICE; info100.QuantidadeExecutadaNegocio = Convert.ToInt64(evento.Corpo.Substring(offset, MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD009_TAM_QTITTRAN)); offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD009_TAM_QTITTRAN; info100.HoraExecucaoNegocio = evento.Corpo.Substring(offset, MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD010_TAM_HTRAN); offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD010_TAM_HTRAN; offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD011_TAM_NMSGREPON; offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD012_TAM_HMSGREPON; info100.CorretoraContraparte = evento.Corpo.Substring(offset, MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD013_TAM_CLDADFCIE); offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD013_TAM_CLDADFCIE; info100.NumeroNegocio = evento.Corpo.Substring(offset, MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD014_TAM_NTRAN); offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD014_TAM_NTRAN; info100.Side = evento.Corpo.Substring(offset, MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD015_TAM_ISENOM); offset += MEGA0100NotificacaoCancelamentoNegocioInfo.FIELD015_TAM_ISENOM; EventoMega newevent = new EventoMega(TIPO_MSG_0100, info100, evento.MsgID); ServicoConectorSTM.epService.EPRuntime.SendEvent(newevent); }
void stmclient_OnReceiveData(string LastMsgId, string SPF_Header, string DataPtr, int DataSize) { logger.Debug("stmclient_OnReceiveData():"); string cabecalho; string corpo; string tipo; string instrumento; long antesSendEvent; long depoisSendEvent; ultimoMsgId = LastMsgId; try { if (DataPtr.Length < TAM_CABECALHO_STM) { logger.Error("Tamanho da mensagem invalida [" + DataPtr + "]"); } antesSendEvent = DateTime.Now.Ticks; cabecalho = DataPtr.Substring(0, TAM_CABECALHO_STM); tipo = EventoSTM.TIPO_MSG_CBLC; if (this.isMsgCBLC(cabecalho)) { corpo = DataPtr.Substring(TAM_CABECALHO_STM); } else { cabecalho = DataPtr.Substring(MSG_MEGA_FUNCTIONCODE_OFFSET, TAM_MSG_MEGA_FUNCTIONCODE); corpo = DataPtr.ToString(); tipo = EventoSTM.TIPO_MSG_MEGA; } EventoSTM evento = new EventoSTM(tipo, cabecalho, corpo, ultimoMsgId); ServicoConectorSTM.epService.EPRuntime.SendEvent(evento); depoisSendEvent = DateTime.Now.Ticks; TimeSpan duracaoSendEvent = new TimeSpan(depoisSendEvent - antesSendEvent); logger.Debug("OnReceiveData(): msg [" + ultimoMsgId + "] [" + tipo + ":" + cabecalho + "] processado em " + duracaoSendEvent.TotalMilliseconds + " ms"); stmclient.Ack = true; } catch (Exception ex) { logger.Error("Erro em OnDataReceived():" + ex.Message); logger.Error(ex); } }
public void Parse(EventoSTM evento) { logger.Debug("Parse(): " + evento.Cabecalho); switch (evento.Cabecalho) { case TIPO_MSG_0172: _parse172(evento); break; case TIPO_MSG_0105: _parse105(evento); break; default: logger.Warn("Mensagem desconhecida: [" + evento.Cabecalho + "]"); break; } }
public void Parse(EventoSTM evento) { switch (evento.Cabecalho) { case TIPO_MSG_AN: _parseAN(evento); break; case TIPO_MSG_ANF: _parseANF(evento); break; case TIPO_MSG_AN53: msgID53 = evento.MsgID; Parse(evento.Corpo); break; default: logger.Warn("Mensagem desconhecida: [" + evento.Cabecalho + "]"); break; } }
/// <summary> /// Confirmacao de ordem /// </summary> /// <param name="evento"></param> private void _parse172(EventoSTM evento) { int offset = 0; MEGA0172ConfirmacaoOrdemInfo info172 = new MEGA0172ConfirmacaoOrdemInfo(); info172.FunctionCode = evento.Cabecalho; info172.InternalReference = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD001_TAM_INTERNAL_REFERENCE); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD001_TAM_INTERNAL_REFERENCE; offset += MEGA0172ConfirmacaoOrdemInfo.FIELD002_TAM_FUNCTION_CODE; string dthr = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD003_TAM_DSAIOM); info172.DataEntradaOrdem = DateTime.ParseExact(dthr, "yyyyMMdd", CultureInfo.InvariantCulture); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD003_TAM_DSAIOM; info172.NumeroSequencialOrdem = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD004_TAM_NSEQOM); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD004_TAM_NSEQOM; info172.StatusOrdem = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD005_TAM_IMAJOM); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD005_TAM_IMAJOM; info172.Papel = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD006_TAM_CVALISIN).Trim(); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD006_TAM_CVALISIN; info172.QuantidadeOrdem = Convert.ToInt64(evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD007_TAM_QTITTOTOM)); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD007_TAM_QTITTOTOM; info172.Side = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD008_TAM_ISENSOM); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD008_TAM_ISENSOM; info172.IndicadorFormato = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD009_TAM_FORMAT_INDICATOR); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD009_TAM_FORMAT_INDICATOR; string preco = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD010_TAM_PRICE); preco = STMUtilities.saidaFormatada(info172.IndicadorFormato[0], preco, false, true, false, preco.Length); info172.Preco = Convert.ToDecimal(preco, STMUtilities.ciPtBR); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD010_TAM_PRICE; info172.CorretoraEmitente = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD011_TAM_CLDAFTEMETOM); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD011_TAM_CLDAFTEMETOM; offset += MEGA0172ConfirmacaoOrdemInfo.FIELD012_TAM_NMSGREPON; offset += MEGA0172ConfirmacaoOrdemInfo.FIELD013_TAM_HMSGREPON; info172.TipoOrdem = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD014_TAM_YPLIMSAIOM); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD014_TAM_YPLIMSAIOM; offset += MEGA0172ConfirmacaoOrdemInfo.FIELD015_TAM_QTITXTEINTROM; offset += MEGA0172ConfirmacaoOrdemInfo.FIELD016_TAM_CFONORG; info172.DataModificacao = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD017_TAM_DOMINI); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD017_TAM_DOMINI; info172.NumeroSequencialOriginal = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD018_TAM_NSEQOMINI); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD018_TAM_NSEQOMINI; info172.TipoValidadeOrdem = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD019_TAM_YVALIOMNSC); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD019_TAM_YVALIOMNSC; info172.DataValidadeOrdem = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD020_TAM_DVALIOM); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD020_TAM_DVALIOM; offset += MEGA0172ConfirmacaoOrdemInfo.FIELD021_TAM_QTITMINOM; offset += MEGA0172ConfirmacaoOrdemInfo.FIELD022_TAM_QTITDVLOM; info172.CodigoOrigemOferta = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD023_TAM_YOM); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD023_TAM_YOM; offset += MEGA0172ConfirmacaoOrdemInfo.FIELD024_TAM_ICFMOM; info172.QuantidadeRemanescente = Convert.ToInt64(evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD025_TAM_QTITRESTOMINI)); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD025_TAM_QTITRESTOMINI; offset += MEGA0172ConfirmacaoOrdemInfo.FIELD026_TAM_FORMAT_INDICATOR2; offset += MEGA0172ConfirmacaoOrdemInfo.FIELD027_TAM_PRICE2; offset += MEGA0172ConfirmacaoOrdemInfo.FIELD028_TAM_TVALIOM; info172.CodigoOperadorMega = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD029_TAM_CLDNGSAIOM); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD029_TAM_CLDNGSAIOM; offset += MEGA0172ConfirmacaoOrdemInfo.FIELD030_TAM_YCPTEMBROM; info172.CodigoClienteMegabolsa = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD031_TAM_NCPTEPOSIPTOM).Trim(); info172.CodigoCliente = STMUtilities.RetornarNumeros(info172.CodigoClienteMegabolsa); offset += MEGA0172ConfirmacaoOrdemInfo.FIELD031_TAM_NCPTEPOSIPTOM; offset += MEGA0172ConfirmacaoOrdemInfo.FIELD032_TAM_CLDOMNG; dthr = evento.Corpo.Substring(offset, MEGA0172ConfirmacaoOrdemInfo.FIELD033_TAM_DHSAIOMADF); info172.DataHoraCriacaoOrdem = DateTime.ParseExact(dthr, "yyyyMMddHHmmss", CultureInfo.InvariantCulture); EventoMega newevent = new EventoMega(TIPO_MSG_0172, info172, evento.MsgID); ServicoConectorSTM.epService.EPRuntime.SendEvent(newevent); }
/// <summary> /// Notificacao de cancelamento de negocio /// </summary> /// <param name="evento"></param> private void _parse138(EventoSTM evento) { int offset = 0; MEGA0138OrdemEliminadaInfo info138 = new MEGA0138OrdemEliminadaInfo(); info138.FunctionCode = evento.Cabecalho; info138.InternalReference = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD001_TAM_INTERNAL_REFERENCE); offset += MEGA0138OrdemEliminadaInfo.FIELD001_TAM_INTERNAL_REFERENCE; offset += MEGA0138OrdemEliminadaInfo.FIELD002_TAM_FUNCTION_CODE; string dthr = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD003_TAM_DSAIOM); info138.DataEntradaOrdem = DateTime.ParseExact(dthr, "yyyyMMdd", CultureInfo.InvariantCulture); offset += MEGA0138OrdemEliminadaInfo.FIELD003_TAM_DSAIOM; info138.NumeroSequencialOrdem = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD004_TAM_NSEQOM); offset += MEGA0138OrdemEliminadaInfo.FIELD004_TAM_NSEQOM; info138.StatusOrdem = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD005_TAM_IMAJOM); offset += MEGA0138OrdemEliminadaInfo.FIELD005_TAM_IMAJOM; info138.Papel = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD006_TAM_CVALISIN).Trim(); offset += MEGA0138OrdemEliminadaInfo.FIELD006_TAM_CVALISIN; info138.QuantidadeRemanescente = Convert.ToInt64(evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD007_TAM_QTITRESTOM)); offset += MEGA0138OrdemEliminadaInfo.FIELD007_TAM_QTITRESTOM; info138.IndicadorFormato = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD008_TAM_FORMAT_INDICATOR); offset += MEGA0138OrdemEliminadaInfo.FIELD008_TAM_FORMAT_INDICATOR; string preco = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD009_TAM_PRICE); preco = STMUtilities.saidaFormatada(info138.IndicadorFormato[0], preco, false, true, false, preco.Length); info138.Preco = Convert.ToDecimal(preco, STMUtilities.ciPtBR); offset += MEGA0138OrdemEliminadaInfo.FIELD009_TAM_PRICE; info138.CorretoraEmitente = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD010_TAM_CLDADFEMETOM); offset += MEGA0138OrdemEliminadaInfo.FIELD010_TAM_CLDADFEMETOM; info138.TipoValidade = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD011_TAM_YVALIOMNSC); offset += MEGA0138OrdemEliminadaInfo.FIELD011_TAM_YVALIOMNSC; info138.FlagCliente = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD012_TAM_YCPTEOM); offset += MEGA0138OrdemEliminadaInfo.FIELD012_TAM_YCPTEOM; dthr = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD013_TAM_DVALIOM); info138.DataValidadeOrdem = DateTime.ParseExact(dthr, "yyyyMMddHHmmss", CultureInfo.InvariantCulture); offset += MEGA0138OrdemEliminadaInfo.FIELD013_TAM_DVALIOM; info138.Side = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD014_TAM_ISENSOM); offset += MEGA0138OrdemEliminadaInfo.FIELD014_TAM_ISENSOM; info138.TipoOrdem = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD015_TAM_YPLIMSAIOM); offset += MEGA0138OrdemEliminadaInfo.FIELD015_TAM_YPLIMSAIOM; offset += MEGA0138OrdemEliminadaInfo.FIELD016_TAM_NMSGREPON; offset += MEGA0138OrdemEliminadaInfo.FIELD017_TAM_HMSGREPON; info138.CodigoClienteMegabolsa = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD018_TAM_NCPTEPOSIPTOM).Trim(); info138.CodigoCliente = STMUtilities.RetornarNumeros(info138.CodigoClienteMegabolsa); offset += MEGA0138OrdemEliminadaInfo.FIELD018_TAM_NCPTEPOSIPTOM; info138.CodigoOperadorMega = evento.Corpo.Substring(offset, MEGA0138OrdemEliminadaInfo.FIELD019_TAM_CLDNGSAIOM); offset += MEGA0138OrdemEliminadaInfo.FIELD019_TAM_CLDNGSAIOM; EventoMega newevent = new EventoMega(TIPO_MSG_0138, info138, evento.MsgID); ServicoConectorSTM.epService.EPRuntime.SendEvent(newevent); }
/// <summary> /// Notificacao de execucao de Negocio /// </summary> /// <param name="evento"></param> private void _parse105(EventoSTM evento) { int offset = 0; MEGA0105NotificacaoExecucaoInfo info105 = new MEGA0105NotificacaoExecucaoInfo(); info105.FunctionCode = evento.Cabecalho; info105.InternalReference = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD001_TAM_INTERNAL_REFERENCE); offset += MEGA0105NotificacaoExecucaoInfo.FIELD001_TAM_INTERNAL_REFERENCE; offset += MEGA0105NotificacaoExecucaoInfo.FIELD002_TAM_FUNCTION_CODE; string dthr = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD003_TAM_DSAIOM); info105.DataRegistro = DateTime.ParseExact(dthr, "yyyyMMdd", CultureInfo.InvariantCulture); offset += MEGA0105NotificacaoExecucaoInfo.FIELD003_TAM_DSAIOM; info105.NumeroSequencialOrdem = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD004_TAM_NSEQOM); offset += MEGA0105NotificacaoExecucaoInfo.FIELD004_TAM_NSEQOM; info105.Papel = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD005_TAM_CVALISIM).Trim(); offset += MEGA0105NotificacaoExecucaoInfo.FIELD005_TAM_CVALISIM; info105.GrupoPapel = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD006_TAM_CGRVALCOT); offset += MEGA0105NotificacaoExecucaoInfo.FIELD006_TAM_CGRVALCOT; info105.Side = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD007_TAM_ISENSOM); offset += MEGA0105NotificacaoExecucaoInfo.FIELD007_TAM_ISENSOM; info105.QuantidadeNegocio = Convert.ToInt64(evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD008_TAM_QTITTRAN)); offset += MEGA0105NotificacaoExecucaoInfo.FIELD008_TAM_QTITTRAN; info105.IndicadorFormato = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD009_TAM_FORMAT_INDICATOR); offset += MEGA0105NotificacaoExecucaoInfo.FIELD009_TAM_FORMAT_INDICATOR; string preco = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD010_TAM_PRICE); preco = STMUtilities.saidaFormatada(info105.IndicadorFormato[0], preco, false, true, false, preco.Length); info105.Preco = Convert.ToDecimal(preco, STMUtilities.ciPtBR); offset += MEGA0105NotificacaoExecucaoInfo.FIELD010_TAM_PRICE; info105.IndicadorQtdeRemanescente = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD011_TAM_IPRSQTITREST); offset += MEGA0105NotificacaoExecucaoInfo.FIELD011_TAM_IPRSQTITREST; info105.QuantidadeRemanescente = Convert.ToInt64(evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD012_TAM_QTITRESTOM)); offset += MEGA0105NotificacaoExecucaoInfo.FIELD012_TAM_QTITRESTOM; info105.CorretoraContraparte = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD013_TAM_CLDADFCIE); offset += MEGA0105NotificacaoExecucaoInfo.FIELD013_TAM_CLDADFCIE; info105.CodigoOrigemOferta = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD014_TAM_YOM); offset += MEGA0105NotificacaoExecucaoInfo.FIELD014_TAM_YOM; offset += MEGA0105NotificacaoExecucaoInfo.FIELD015_TAM_NMSGREPON; offset += MEGA0105NotificacaoExecucaoInfo.FIELD016_TAM_DMSGREPON; offset += MEGA0105NotificacaoExecucaoInfo.FIELD017_TAM_HMSGREPON; info105.NumeroNegocio = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD018_TAM_NTRAN); offset += MEGA0105NotificacaoExecucaoInfo.FIELD018_TAM_NTRAN; info105.DataNegocio = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD019_TAM_DTRAN); offset += MEGA0105NotificacaoExecucaoInfo.FIELD019_TAM_DTRAN; offset += MEGA0105NotificacaoExecucaoInfo.FIELD020_TAM_YPLIMSAIOM; info105.TipoValidadeOrdem = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD021_TAM_YVAIOMNSC); offset += MEGA0105NotificacaoExecucaoInfo.FIELD021_TAM_YVAIOMNSC; offset += MEGA0105NotificacaoExecucaoInfo.FIELD022_TAM_CGDSVAL; info105.CodigoOperadorMega = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD023_TAM_CLDNGSAIOM); offset += MEGA0105NotificacaoExecucaoInfo.FIELD023_TAM_CLDNGSAIOM; offset += MEGA0105NotificacaoExecucaoInfo.FIELD024_TAM_YCPTEMBROM; info105.CodigoClienteMegabolsa = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD025_TAM_NCPTEPOSIPTOM).Trim(); info105.CodigoCliente = STMUtilities.RetornarNumeros(info105.CodigoClienteMegabolsa); offset += MEGA0105NotificacaoExecucaoInfo.FIELD025_TAM_NCPTEPOSIPTOM; offset += MEGA0105NotificacaoExecucaoInfo.FIELD026_TAM_CLDNGSAIOM; dthr = evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD027_TAM_DHSAIOMADF); info105.DataHoraEntradaOrdem = DateTime.ParseExact(dthr, "yyyyMMddHHmmss", CultureInfo.InvariantCulture); offset += MEGA0105NotificacaoExecucaoInfo.FIELD027_TAM_DHSAIOMADF; info105.QuantidadePatas = Convert.ToInt32(evento.Corpo.Substring(offset, MEGA0105NotificacaoExecucaoInfo.FIELD028_TAM_ZPRODCPSTRAN)); offset += MEGA0105NotificacaoExecucaoInfo.FIELD028_TAM_ZPRODCPSTRAN; for (int i = 0; i < info105.QuantidadePatas; i++) { PataEstrategiaNegocioInfo pata = new PataEstrategiaNegocioInfo(); pata.CodigoIdentificacao = evento.Corpo.Substring(offset, PataEstrategiaNegocioInfo.FIELD001_TAM_CISINPRODCPS); offset += PataEstrategiaNegocioInfo.FIELD001_TAM_CISINPRODCPS; pata.SinalCompraVenda = evento.Corpo.Substring(offset, PataEstrategiaNegocioInfo.FIELD002_TAM_CSIGNKMUPRODCPS); offset += PataEstrategiaNegocioInfo.FIELD002_TAM_CSIGNKMUPRODCPS; pata.ProporcaoPata = evento.Corpo.Substring(offset, PataEstrategiaNegocioInfo.FIELD003_TAM_KRAOCPSSTG); offset += PataEstrategiaNegocioInfo.FIELD003_TAM_KRAOCPSSTG; pata.FormatIndicator = evento.Corpo.Substring(offset, PataEstrategiaNegocioInfo.FIELD004_TAM_FORMAT_INDICATOR); offset += PataEstrategiaNegocioInfo.FIELD004_TAM_FORMAT_INDICATOR; preco = evento.Corpo.Substring(offset, PataEstrategiaNegocioInfo.FIELD005_TAM_DATA); preco = STMUtilities.saidaFormatada(pata.FormatIndicator[0], preco, false, true, false, preco.Length); pata.Preco = Convert.ToDecimal(preco, STMUtilities.ciPtBR); offset += PataEstrategiaNegocioInfo.FIELD005_TAM_DATA; pata.NumeroNegocio = evento.Corpo.Substring(offset, PataEstrategiaNegocioInfo.FIELD006_TAM_NTRANSCPRODCPS); offset += PataEstrategiaNegocioInfo.FIELD006_TAM_NTRANSCPRODCPS; info105.Patas.Add(pata); } EventoMega newevent = new EventoMega(TIPO_MSG_0105, info105, evento.MsgID); ServicoConectorSTM.epService.EPRuntime.SendEvent(newevent); }
/// <summary> /// Notificacao de cancelamento de negocio /// </summary> /// <param name="evento"></param> private void _parse103(EventoSTM evento) { int offset = 0; MEGA0103CriacaoNegocioInfo info103 = new MEGA0103CriacaoNegocioInfo(); info103.FunctionCode = evento.Cabecalho; info103.InternalReference = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD001_TAM_INTERNAL_REFERENCE); offset += MEGA0103CriacaoNegocioInfo.FIELD001_TAM_INTERNAL_REFERENCE; offset += MEGA0103CriacaoNegocioInfo.FIELD002_TAM_FUNCTION_CODE; string dthr = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD003_TAM_DSEABS); info103.DataNegocio = DateTime.ParseExact(dthr, "yyyyMMdd", CultureInfo.InvariantCulture); offset += MEGA0103CriacaoNegocioInfo.FIELD003_TAM_DSEABS; info103.Papel = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD004_TAM_CVALISIN).Trim(); offset += MEGA0103CriacaoNegocioInfo.FIELD004_TAM_CVALISIN; info103.IndicadorFormato = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD005_TAM_INDICADOR_FORMATO); offset += MEGA0103CriacaoNegocioInfo.FIELD005_TAM_INDICADOR_FORMATO; string preco = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD006_TAM_PRECO); preco = STMUtilities.saidaFormatada(info103.IndicadorFormato[0], preco, false, true, false, preco.Length); info103.Preco = Convert.ToDecimal(preco, STMUtilities.ciPtBR); offset += MEGA0103CriacaoNegocioInfo.FIELD006_TAM_PRECO; info103.QuantidadeNegocio = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD007_TAM_QTITTRAN); offset += MEGA0103CriacaoNegocioInfo.FIELD007_TAM_QTITTRAN; dthr = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD008_TAM_DHTRANBS); info103.DataHoraNegocio = DateTime.ParseExact(dthr, "yyyyMMddHHmmss", CultureInfo.InvariantCulture); offset += MEGA0103CriacaoNegocioInfo.FIELD008_TAM_DHTRANBS; info103.Side = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD009_TAM_ISENSOM); offset += MEGA0103CriacaoNegocioInfo.FIELD009_TAM_ISENSOM; info103.CorretoraContraparte = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD010_TAM_CLDADFCIE); offset += MEGA0103CriacaoNegocioInfo.FIELD010_TAM_CLDADFCIE; info103.CodigoOrigemOferta = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD011_TAM_YOM); offset += MEGA0103CriacaoNegocioInfo.FIELD011_TAM_YOM; offset += MEGA0103CriacaoNegocioInfo.FIELD012_TAM_NMSGREPON; offset += MEGA0103CriacaoNegocioInfo.FIELD013_TAM_HMSGREPON; info103.NumeroNegocio = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD014_TAM_NTRAN); offset += MEGA0103CriacaoNegocioInfo.FIELD014_TAM_NTRAN; info103.TipoOrdemOrigem = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD015_TAM_IORGINFMAR); offset += MEGA0103CriacaoNegocioInfo.FIELD015_TAM_IORGINFMAR; info103.CodigoOperadorMega = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD016_TAM_CLDNGSAIOM); offset += MEGA0103CriacaoNegocioInfo.FIELD016_TAM_CLDNGSAIOM; offset += MEGA0103CriacaoNegocioInfo.FIELD017_TAM_YCPTEMBROM; info103.CodigoClienteMegabolsa = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD018_TAM_NCPTEMBROM); info103.CodigoCliente = STMUtilities.RetornarNumeros(info103.CodigoClienteMegabolsa); offset += MEGA0103CriacaoNegocioInfo.FIELD018_TAM_NCPTEMBROM; offset += MEGA0103CriacaoNegocioInfo.FIELD019_TAM_CLDOMNG; dthr = evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD020_TAM_DHSAIOMADF); info103.DataHoraRegistro = DateTime.ParseExact(dthr, "yyyyMMddHHmmss", CultureInfo.InvariantCulture); offset += MEGA0103CriacaoNegocioInfo.FIELD020_TAM_DHSAIOMADF; info103.QuantidadePatas = Convert.ToInt32(evento.Corpo.Substring(offset, MEGA0103CriacaoNegocioInfo.FIELD021_TAM_ZPRODCPSTRAN)); offset += MEGA0103CriacaoNegocioInfo.FIELD021_TAM_ZPRODCPSTRAN; for (int i = 0; i < info103.QuantidadePatas; i++) { PataEstrategiaNegocioInfo pata = new PataEstrategiaNegocioInfo(); pata.CodigoIdentificacao = evento.Corpo.Substring(offset, PataEstrategiaNegocioInfo.FIELD001_TAM_CISINPRODCPS); offset += PataEstrategiaNegocioInfo.FIELD001_TAM_CISINPRODCPS; pata.SinalCompraVenda = evento.Corpo.Substring(offset, PataEstrategiaNegocioInfo.FIELD002_TAM_CSIGNKMUPRODCPS); offset += PataEstrategiaNegocioInfo.FIELD002_TAM_CSIGNKMUPRODCPS; pata.ProporcaoPata = evento.Corpo.Substring(offset, PataEstrategiaNegocioInfo.FIELD003_TAM_KRAOCPSSTG); offset += PataEstrategiaNegocioInfo.FIELD003_TAM_KRAOCPSSTG; pata.FormatIndicator = evento.Corpo.Substring(offset, PataEstrategiaNegocioInfo.FIELD004_TAM_FORMAT_INDICATOR); offset += PataEstrategiaNegocioInfo.FIELD004_TAM_FORMAT_INDICATOR; preco = evento.Corpo.Substring(offset, PataEstrategiaNegocioInfo.FIELD005_TAM_DATA); preco = STMUtilities.saidaFormatada(pata.FormatIndicator[0], preco, false, true, false, preco.Length); pata.Preco = Convert.ToDecimal(preco, STMUtilities.ciPtBR); offset += PataEstrategiaNegocioInfo.FIELD005_TAM_DATA; pata.NumeroNegocio = evento.Corpo.Substring(offset, PataEstrategiaNegocioInfo.FIELD006_TAM_NTRANSCPRODCPS); offset += PataEstrategiaNegocioInfo.FIELD006_TAM_NTRANSCPRODCPS; info103.Patas.Add(pata); } EventoMega newevent = new EventoMega(TIPO_MSG_0103, info103, evento.MsgID); ServicoConectorSTM.epService.EPRuntime.SendEvent(newevent); }
/// <summary> /// Confirmacao Negocio Megabolsa /// </summary> /// <param name="evento"></param> private void _parseAN(EventoSTM evento) { try { int offset = 0; CBLCConfirmacaoNegocioMegaBolsaInfo infoan = new CBLCConfirmacaoNegocioMegaBolsaInfo(); infoan.Cabecalho = evento.Cabecalho; infoan.NaturezaOperacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD001_TAM_NATUREZA_OPERACAO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD001_TAM_NATUREZA_OPERACAO; if (!infoan.NaturezaOperacao.Equals("60") && !infoan.NaturezaOperacao.Equals("61") && !infoan.NaturezaOperacao.Equals("64") && !infoan.NaturezaOperacao.Equals("65")) { logger.Info("Ignorando Msg [" + evento.Corpo + "]"); return; } infoan.CodigoMontagem = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD002_TAM_CODIGO_MONTAGEM); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD002_TAM_CODIGO_MONTAGEM; infoan.CodigoNegociacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD003_TAM_CODIGO_NEGOCIACAO).Trim(); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD003_TAM_CODIGO_NEGOCIACAO; infoan.CodigoISIN = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD004_TAM_CODIGO_ISIN).Trim(); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD004_TAM_CODIGO_ISIN; infoan.NumeroDistribuicaoPapel = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD005_TAM_NUMERO_DISTRIBUICAO_PAPEL); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD005_TAM_NUMERO_DISTRIBUICAO_PAPEL; infoan.NomeResumidoEmpresa = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD006_TAM_NOME_RESUMIDO_EMPRESA).Trim(); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD006_TAM_NOME_RESUMIDO_EMPRESA; infoan.EspecificacaoPapel = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD007_TAM_ESPEC_PAPEL).Trim(); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD007_TAM_ESPEC_PAPEL; infoan.FatorCotacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD008_TAM_FATOR_COTACAO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD008_TAM_FATOR_COTACAO; infoan.CodigoMercado = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD009_TAM_CODIGO_MERCADO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD009_TAM_CODIGO_MERCADO; offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD010_TAM_RESERVADO1; offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD011_TAM_RESERVADO2; string preco = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD012_TAM_PRECO_EXERCICIO_OPCOES); preco = preco.Insert(11, "."); infoan.PrecoExercicioOpcoes = Convert.ToDecimal(preco, CultureInfo.InvariantCulture); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD012_TAM_PRECO_EXERCICIO_OPCOES; infoan.CodigoNegociacaoPapelObjeto = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD013_TAM_CODIGO_NEGOCIACAO_PAPEL_OBJETO).Trim(); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD013_TAM_CODIGO_NEGOCIACAO_PAPEL_OBJETO; infoan.NumeroSerie = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD014_TAM_NUMERO_SERIE); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD014_TAM_NUMERO_SERIE; infoan.CodigoBDI = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD015_TAM_CODIGO_BDI); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD015_TAM_CODIGO_BDI; offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD016_TAM_RESERVADO3; infoan.NumeroNegocio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD017_TAM_NUMERO_NEGOCIO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD017_TAM_NUMERO_NEGOCIO; infoan.HorarioFato = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD018_TAM_HORARIO_FATO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD018_TAM_HORARIO_FATO; infoan.TipoTransacaoNegocio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD019_TAM_TIPO_TRANSACAO_NEGOCIO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD019_TAM_TIPO_TRANSACAO_NEGOCIO; preco = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD020_TAM_PRECO_NEGOCIO); preco = preco.Insert(11, "."); infoan.PrecoNegocio = Convert.ToDecimal(preco, CultureInfo.InvariantCulture); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD020_TAM_PRECO_NEGOCIO; infoan.QuantidadeNegocio = Convert.ToInt64(evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD021_TAM_QUANTIDADE_NEGOCIO)); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD021_TAM_QUANTIDADE_NEGOCIO; preco = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD022_TAM_PRECO_MEDIO_PAPEL); preco = preco.Insert(11, "."); infoan.PrecoMedioPapel = Convert.ToDecimal(preco, CultureInfo.InvariantCulture); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD022_TAM_PRECO_MEDIO_PAPEL; infoan.CodigoCliente = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD023_TAM_CODIGO_CLIENTE); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD023_TAM_CODIGO_CLIENTE; infoan.DVCliente = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD024_TAM_DIGITO_CLIENTE); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD024_TAM_DIGITO_CLIENTE; infoan.PrazoContradosTermo = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD025_TAM_PRAZO_CONTRATOS_TERMO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD025_TAM_PRAZO_CONTRATOS_TERMO; string dtvc = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD026_TAM_DATA_VENCIMENTO); if (dtvc.Equals("9999-12-31")) { infoan.DataVencimento = DateTime.MaxValue; } else { infoan.DataVencimento = DateTime.ParseExact(dtvc, "yyyy-MM-dd", CultureInfo.InvariantCulture); } offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD026_TAM_DATA_VENCIMENTO; infoan.TipoPosicaoCliente = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD027_TAM_TIPO_POSICAO_CLIENTE); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD027_TAM_TIPO_POSICAO_CLIENTE; infoan.TipoLiquidacaoNegocio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD028_TAM_TIPO_LIQUIDACAO_NEGOCIO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD028_TAM_TIPO_LIQUIDACAO_NEGOCIO; infoan.IndicadorEstrategiaOpcoes = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD029_TAM_INDICADOR_ESTRATEGIA_OPCOES); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD029_TAM_INDICADOR_ESTRATEGIA_OPCOES; preco = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD030_TAM_PRECO_ULTIMO_NEGOCIO_PAPEL); preco = preco.Insert(11, "."); infoan.PrecoUltimoNegocioPapel = Convert.ToDecimal(preco, CultureInfo.InvariantCulture); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD030_TAM_PRECO_ULTIMO_NEGOCIO_PAPEL; infoan.QuantidadeNegociadaTotalPapel = Convert.ToInt64(evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD031_TAM_QTDE_TOTAL_NEGOCIADA_PAPEL)); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD031_TAM_QTDE_TOTAL_NEGOCIADA_PAPEL; infoan.VolumeNegociadoTotalPapel = Convert.ToInt64(evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD032_TAM_VOLUME_TOTAL_NEGOCIADO_PAPEL)); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD032_TAM_VOLUME_TOTAL_NEGOCIADO_PAPEL; offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD033_TAM_RESERVADO4; infoan.IdentificacaoCorretoraDestino = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD034_TAM_IDENTIFICACAO_CORRETORA_DESTINO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD034_TAM_IDENTIFICACAO_CORRETORA_DESTINO; infoan.NumeroSequencialRegistro = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD035_TAM_NUMERO_SEQUENCIAL_REGISTRO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD035_TAM_NUMERO_SEQUENCIAL_REGISTRO; infoan.IdentificacaoCorretoraContraparte = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD036_TAM_IDENTIFICACAO_CORRETORA_CONTRAPARTE); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD036_TAM_IDENTIFICACAO_CORRETORA_CONTRAPARTE; dtvc = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD037_TAM_DATA_MOVIMENTO); infoan.DataMovimento = DateTime.ParseExact(dtvc, "yyyy-MM-dd", CultureInfo.InvariantCulture); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD037_TAM_DATA_MOVIMENTO; infoan.CodigoEmpresaEmissoraPapel = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD038_TAM_CODIGO_EMPRESA_EMISSORA); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD038_TAM_CODIGO_EMPRESA_EMISSORA; infoan.TipoTituloPapel = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD039_TAM_TIPO_TITULO_PAPEL); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD039_TAM_TIPO_TITULO_PAPEL; infoan.EspecieTituloPapel = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD040_TAM_ESPECIA_TITULO_PAPEL); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD040_TAM_ESPECIA_TITULO_PAPEL; infoan.IndicadorOrigemNegocio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD041_TAM_INDICADOR_ORIGEM_NEGOCIO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD041_TAM_INDICADOR_ORIGEM_NEGOCIO; infoan.CodigoClienteVendedor = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD042_TAM_CODIGO_CLIENTE_VENDEDOR).Trim(); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD042_TAM_CODIGO_CLIENTE_VENDEDOR; infoan.CodigoClienteComprador = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD043_TAM_CODIGO_CLIENTE_COMPRADOR).Trim(); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD043_TAM_CODIGO_CLIENTE_COMPRADOR; infoan.CodigoSistema = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD044_TAM_CODIGO_SISTEMA); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD044_TAM_CODIGO_SISTEMA; infoan.FormaLiquidacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD045_TAM_FORMA_LIQUIDACAO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD045_TAM_FORMA_LIQUIDACAO; infoan.PrazoLiquidacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD046_TAM_PRAZO_LIQUIDACAO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD046_TAM_PRAZO_LIQUIDACAO; offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD047_TAM_RESERVADO5; infoan.NumeroOfertaCompraMega = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD048_TAM_NUMERO_OFERTA_COMPRA_MEGA); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD048_TAM_NUMERO_OFERTA_COMPRA_MEGA; infoan.NumeroOfertaVendaMega = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD049_TAM_NUMERO_OFERTA_VENDA_MEGA); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD049_TAM_NUMERO_OFERTA_VENDA_MEGA; infoan.TipoTermo = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD050_TAM_TIPO_TERMO); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD050_TAM_TIPO_TERMO; infoan.OperadorComprador = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD051_TAM_OPERADOR_COMPRADOR); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD051_TAM_OPERADOR_COMPRADOR; infoan.OperadorVendedor = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD052_TAM_OPERADOR_VENDEDOR); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD052_TAM_OPERADOR_VENDEDOR; infoan.CodigoOfertaEstrategia1 = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD053_TAM_CODIGO_OFERTA_ESTRATEG1); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD053_TAM_CODIGO_OFERTA_ESTRATEG1; infoan.CodigoOfertaEstrategia2 = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD054_TAM_CODIGO_OFERTA_ESTRATEG2); offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD054_TAM_CODIGO_OFERTA_ESTRATEG2; offset += CBLCConfirmacaoNegocioMegaBolsaInfo.FIELD055_TAM_RESERVADO6; EventoCBLC newevent = new EventoCBLC(TIPO_MSG_AN, infoan, evento.MsgID); ServicoConectorSTM.epService.EPRuntime.SendEvent(newevent); } catch (Exception ex) { logger.Error("Erro _parseAN()" + ex.Message, ex); logger.Error("Msg: [" + evento.Corpo + "]"); } }
/// <summary> /// Mensagens Bovespa FIX /// </summary> /// <param name="evento"></param> private void _parseANF(EventoSTM evento) { try { int offset = 0; CBLCConfirmacaoNegocioBovespaFixInfo infoanf = new CBLCConfirmacaoNegocioBovespaFixInfo(); infoanf.Cabecalho = evento.Cabecalho; infoanf.CodigoSistemaNegociacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD001_TAM_CODIGO_SISTEMA_NEGOCIACAO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD001_TAM_CODIGO_SISTEMA_NEGOCIACAO; infoanf.DataNegociacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD002_TAM_DATA_NEGOCIACAO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD002_TAM_DATA_NEGOCIACAO; infoanf.TipoOperacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD003_TAM_TIPO_OPERACAO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD003_TAM_TIPO_OPERACAO; infoanf.CodigoInstrumento = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD004_TAM_CODIGO_INSTRUMENTO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD004_TAM_CODIGO_INSTRUMENTO; infoanf.CodigoISIN = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD005_TAM_CODIGO_ISIN); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD005_TAM_CODIGO_ISIN; infoanf.NumeroDistribuicao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD006_TAM_NUMERO_DISTRIBUICAO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD006_TAM_NUMERO_DISTRIBUICAO; infoanf.NumeroSerie = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD007_TAM_NUMERO_SERIE); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD007_TAM_NUMERO_SERIE; infoanf.NomeResumidoSociedadeEmissora = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD008_TAM_NOME_SOCIEDADE_EMISSORA); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD008_TAM_NOME_SOCIEDADE_EMISSORA; infoanf.EspecificacaoPapel = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD009_TAM_ESPECIFICACAO_PAPEL); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD009_TAM_ESPECIFICACAO_PAPEL; infoanf.CodigoOperacaoOrigem = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD010_TAM_CODIGO_OPERACAO_ORIGEM); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD010_TAM_CODIGO_OPERACAO_ORIGEM; infoanf.CodigoRodaNegociacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD011_TAM_CODIGO_RODA_NEGOCIACAO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD011_TAM_CODIGO_RODA_NEGOCIACAO; infoanf.FatorCotacaoPreco = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD012_TAM_FATOR_COTACAO_PRECO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD012_TAM_FATOR_COTACAO_PRECO; infoanf.CodigoMercado = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD013_TAM_CODIGO_MERCADO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD013_TAM_CODIGO_MERCADO; infoanf.PrecoExercicio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD014_TAM_PRECO_EXERCICIO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD014_TAM_PRECO_EXERCICIO; infoanf.CodigoColocacaoMercado = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD015_TAM_CODIGO_COLOCACAO_MERCADO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD015_TAM_CODIGO_COLOCACAO_MERCADO; infoanf.TipoCotacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD016_TAM_TIPO_COTACAO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD016_TAM_TIPO_COTACAO; infoanf.CodigoBDI = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD017_TAM_CODIGO_BDI); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD017_TAM_CODIGO_BDI; infoanf.NumeroNegocio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD018_TAM_NUMERO_NEGOCIO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD018_TAM_NUMERO_NEGOCIO; infoanf.HoraNegocio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD019_TAM_HORA_NEGOCIO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD019_TAM_HORA_NEGOCIO; infoanf.TipoTransacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD020_TAM_TIPO_TRANSACAO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD020_TAM_TIPO_TRANSACAO; infoanf.CodigoOrigemOperacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD021_TAM_CODIGO_ORIGEM_OPERACAO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD021_TAM_CODIGO_ORIGEM_OPERACAO; infoanf.PrecoNegocio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD022_TAM_PRECO_NEGOCIO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD022_TAM_PRECO_NEGOCIO; infoanf.QuantidadeTitulosNegocio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD023_TAM_QTDE_TITULOS_NEGOCIO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD023_TAM_QTDE_TITULOS_NEGOCIO; infoanf.VolumeFinanceiroNegocio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD024_TAM_VOL_FINANCEIRO_NEGOCIO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD024_TAM_VOL_FINANCEIRO_NEGOCIO; infoanf.PercentualOscilacaoPreco = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD025_TAM_PERCENTUAL_OSCILACAO_PRECO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD025_TAM_PERCENTUAL_OSCILACAO_PRECO; infoanf.SinalOscilacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD026_TAM_SINAL_OSCILACAO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD026_TAM_SINAL_OSCILACAO; infoanf.PrecoMedio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD027_TAM_PRECO_MEDIO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD027_TAM_PRECO_MEDIO; infoanf.PrecoMedio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD027_TAM_PRECO_MEDIO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD027_TAM_PRECO_MEDIO; infoanf.PrecoReferenciaInstrumento = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD028_TAM_PRECO_REFERENCIA_INSTRUMENTO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD028_TAM_PRECO_REFERENCIA_INSTRUMENTO; infoanf.Side = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD029_TAM_NATUREZA_OPERACAO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD029_TAM_NATUREZA_OPERACAO; infoanf.CodigoAgenteDestino = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD030_TAM_CODIGO_AGENTE_DESTINO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD030_TAM_CODIGO_AGENTE_DESTINO; infoanf.CodigoCorretoraDestino = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD031_TAM_CODIGO_CORRETORA_DESTINO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD031_TAM_CODIGO_CORRETORA_DESTINO; infoanf.CodigoAgenteContraparte = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD032_TAM_CODIGO_AGENTE_CONTRAPARTE); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD032_TAM_CODIGO_AGENTE_CONTRAPARTE; infoanf.CodigoCorretoraContraparte = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD033_TAM_CODIGO_CORRETORA_CONTRAPARTE); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD033_TAM_CODIGO_CORRETORA_CONTRAPARTE; infoanf.CodigoInvestidor = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD034_TAM_CODIGO_INVESTIDOR); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD034_TAM_CODIGO_INVESTIDOR; infoanf.PrazoLiquidacaoNegocio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD035_TAM_PRAZO_LIQUIDACAO_NEGOCIO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD035_TAM_PRAZO_LIQUIDACAO_NEGOCIO; infoanf.DataVencimento = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD036_TAM_DATA_VENCIMENTO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD036_TAM_DATA_VENCIMENTO; infoanf.FormaLiquidacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD037_TAM_FORMA_LIQUIDACAO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD037_TAM_FORMA_LIQUIDACAO; infoanf.NumeroOferta = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD038_TAM_NUMERO_OFERTA); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD038_TAM_NUMERO_OFERTA; infoanf.CodigoInstrumentoObjeto = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD039_TAM_CODIGO_INSTRUMENTO_OBJETO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD039_TAM_CODIGO_INSTRUMENTO_OBJETO; infoanf.NumeroOperacaoVinculada = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD040_TAM_NUMERO_OPERACAO_VINCULADA); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD040_TAM_NUMERO_OPERACAO_VINCULADA; infoanf.Brokeragem = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD041_TAM_BROKERAGEM); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD041_TAM_BROKERAGEM; infoanf.CodigoNegociacao = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD042_TAM_CODIGO_NEGOCIACAO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD042_TAM_CODIGO_NEGOCIACAO; infoanf.DataPrecoReferencia = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD043_TAM_DATA_PRECO_REFERENCIA); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD043_TAM_DATA_PRECO_REFERENCIA; infoanf.NomeResumidoSistema = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD044_TAM_NOME_RESUMIDO_SISTEMA); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD044_TAM_NOME_RESUMIDO_SISTEMA; infoanf.TaxaNegocio = evento.Corpo.Substring(offset, CBLCConfirmacaoNegocioBovespaFixInfo.FIELD045_TAM_TAXA_NEGOCIO); offset += CBLCConfirmacaoNegocioBovespaFixInfo.FIELD045_TAM_TAXA_NEGOCIO; EventoCBLC newevent = new EventoCBLC(TIPO_MSG_ANF, infoanf, evento.MsgID); ServicoConectorSTM.epService.EPRuntime.SendEvent(newevent); } catch (Exception ex) { logger.Error("Erro _parseANF()" + ex.Message, ex); logger.Error("Msg: [" + evento.Corpo + "]"); } }