private void ObterDadosInstrumento(string Instrumento) { CadastroPapeisRequest request = new CadastroPapeisRequest() { Instrumento = Instrumento }; CadastroPapeisResponse <CadastroPapelBovespaInfo> Info = new ServicoCadastroPapeis().ObterInformacoesIntrumento(request); }
/// <summary> /// Metodo responsável por retornar as informações básicas do instrumento oriundas dos arquivos ( PAPD, PAPT,PAPH e DB_FINAL) /// </summary> /// <param name="pParametros">Objeto contendo o código do instrumento do ativo</param> /// <returns>Dados do Instrumento</returns> public CadastroPapeisResponse <CadastroPapelInfo> ObterInformacoesIntrumento(CadastroPapeisRequest pParametros) { CadastroPapeisResponse <CadastroPapelInfo> Response = new PersistenciaCadastroAtivos().ObterInformacoesPapeis(pParametros); if (Response.Objeto != null) { Response.StatusResposta = Lib.Enum.CriticaMensagemEnum.OK; Response.DataResposta = DateTime.Now; Response.DescricaoResposta = "Instrumento encontrado com sucesso."; } else { Response.StatusResposta = Lib.Enum.CriticaMensagemEnum.Exception; Response.DataResposta = DateTime.Now; Response.DescricaoResposta = "Instrumento não encontrado"; } return(Response); }
private ValidacaoRiscoResponse VenderCarteiraRecomendada(ValidacaoRiscoRequest pParametros, string CodigoCarteiraRecomendada) { ValidacaoRiscoResponse PipeLineResponse = new ValidacaoRiscoResponse(); List <PipeLineCriticaInfo> CriticaInfoCollection = new List <PipeLineCriticaInfo>(); PipeLineCriticaInfo CriticaInfo = null; logger.Info("Inicia Rotina de validação de compra de ações, cliente: " + pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString()); logger.Info("Caracteristicas da ordem"); logger.Info("Cliente :" + pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString()); logger.Info("Operação : Compra"); logger.Info("Instrumento :" + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol); logger.Info("Quantidade :" + pParametros.EnviarOrdemRequest.OrdemInfo.OrderQty.ToString()); logger.Info("Preco : ORDEM A MERCADO "); logger.Info("DtVencimento :" + pParametros.EnviarOrdemRequest.OrdemInfo.ExpireDate.ToString()); logger.Info("ClasseCliente : Institucional"); CadastroPapeisRequest _CadastroPapeisRequest = new CadastroPapeisRequest(); _CadastroPapeisRequest.Instrumento = pParametros.EnviarOrdemRequest.OrdemInfo.Symbol; CadastroPapeisResponse <CadastroPapelInfo> CadastroPapeis = new PersistenciaCarteiraRecomendada().ObterInformacoesPapeis(_CadastroPapeisRequest); int FatorCotacao = int.Parse(CadastroPapeis.Objeto.FatorCotacao); // TRATAMENTO [ FRACIONARIO / INTEGRAL ] int LoteNegociacao = int.Parse(CadastroPapeis.Objeto.LoteNegociacao); int ModuloLoteNegociacao = pParametros.EnviarOrdemRequest.OrdemInfo.OrderQty % LoteNegociacao; if (pParametros.EnviarOrdemRequest.OrdemInfo.OrderQty >= LoteNegociacao) { // ENVIAR INTEGRAL pParametros.EnviarOrdemRequest.OrdemInfo.OrderQty -= ModuloLoteNegociacao; logger.Info("Inicia operação de compra de: " + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol + " no mercado Integral"); // Inseri a Ordem solicitada no banco de dados if (InserirOrdemCliente(pParametros.EnviarOrdemRequest)) { //TODO: COMPRA O PAPEL COM O SERVICO DE ORDENS logger.Info("Compra de: " + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol + " no mercado integral efetuada com sucesso."); logger.Info("Envia a ordem para o roteador de ordens"); pParametros.EnviarOrdemRequest.OrdemInfo.Account = RetornaCodigoCliente(227, pParametros.EnviarOrdemRequest.OrdemInfo.Account); ExecutarOrdemResponse RespostaRoteador = this.EnviarOrdemRoteador(pParametros.EnviarOrdemRequest.OrdemInfo); pParametros.EnviarOrdemRequest.OrdemInfo.Account = int.Parse(pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString().Remove(pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString().Length - 1, 1)); // VERIFICA SE A ORDEM FOI ENVIADA COM SUCESSO PARA O ROTEADOR if (RespostaRoteador.DadosRetorno.StatusResposta == StatusRoteamentoEnum.Sucesso) { logger.Info("Ordem institucional enviada com sucesso para o Roteador de Ordens"); PipeLineResponse.DataResposta = DateTime.Now; PipeLineResponse.DescricaoResposta = RespostaRoteador.DadosRetorno.Ocorrencias[0].Ocorrencia; PipeLineResponse.StatusResposta = OMS.Risco.Lib.Enum.CriticaRiscoEnum.Sucesso; } else { logger.Info("Ocorreu um erro ao enviar a ordem para o roteador de Ordens"); CriticaInfo = new PipeLineCriticaInfo(); CriticaInfo.Critica = RespostaRoteador.DadosRetorno.Ocorrencias[0].Ocorrencia; CriticaInfo.CriticaTipo = OMS.Ordens.Lib.Enum.CriticaRiscoEnum.ErroRoteadorOrdem; CriticaInfo.DataHoraCritica = DateTime.Now; // Adiciona as criticas no pipeline de risco. CriticaInfoCollection.Add(CriticaInfo); } } if (ModuloLoteNegociacao > 0) { // ENVIAR FRACIONARIO logger.Info("Calcula restante a ser enviado para o mercado fracionário"); // ENVIAR FRACIONARIO pParametros.EnviarOrdemRequest.OrdemInfo.OrderQty = ModuloLoteNegociacao; pParametros.EnviarOrdemRequest.OrdemInfo.Symbol += "F"; pParametros.EnviarOrdemRequest.OrdemInfo.ClOrdID = this.CtrlNumber(CodigoCarteiraRecomendada); logger.Info("Inicia compra de: " + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol + " no mercado fracionário"); // Inseri a Ordem solicitada no banco de dados if (InserirOrdemCliente(pParametros.EnviarOrdemRequest)) { //TODO: COMPRA O PAPEL COM O SERVICO DE ORDENS logger.Info("Compra de: " + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol + " no mercado fracionario efetuada com sucesso."); logger.Info("Envia a ordem para o roteador de ordens"); pParametros.EnviarOrdemRequest.OrdemInfo.Account = RetornaCodigoCliente(227, pParametros.EnviarOrdemRequest.OrdemInfo.Account); ExecutarOrdemResponse RespostaRoteador = this.EnviarOrdemRoteador(pParametros.EnviarOrdemRequest.OrdemInfo); pParametros.EnviarOrdemRequest.OrdemInfo.Account = int.Parse(pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString().Remove(pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString().Length - 1, 1)); // VERIFICA SE A ORDEM FOI ENVIADA COM SUCESSO PARA O ROTEADOR if (RespostaRoteador.DadosRetorno.StatusResposta == StatusRoteamentoEnum.Sucesso) { logger.Info("Ordem enviada com sucesso para o Roteador de Ordens"); PipeLineResponse.DataResposta = DateTime.Now; PipeLineResponse.DescricaoResposta = RespostaRoteador.DadosRetorno.Ocorrencias[0].Ocorrencia; PipeLineResponse.StatusResposta = OMS.Risco.Lib.Enum.CriticaRiscoEnum.Sucesso; } else { logger.Info("Ocorreu um erro ao enviar a ordem para o roteador de Ordens"); CriticaInfo = new PipeLineCriticaInfo(); CriticaInfo.Critica = RespostaRoteador.DadosRetorno.Ocorrencias[0].Ocorrencia; CriticaInfo.CriticaTipo = OMS.Ordens.Lib.Enum.CriticaRiscoEnum.ErroRoteadorOrdem; CriticaInfo.DataHoraCritica = DateTime.Now; // Adiciona as criticas no pipeline de risco. CriticaInfoCollection.Add(CriticaInfo); } } } } else { //FRACIONARIO pParametros.EnviarOrdemRequest.OrdemInfo.Symbol += "F"; logger.Info("Inicia compra de: " + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol + " no mercado fracionário"); // Inseri a Ordem solicitada no banco de dados if (InserirOrdemCliente(pParametros.EnviarOrdemRequest)) { //TODO: COMPRA O PAPEL COM O SERVICO DE ORDENS logger.Info("Compra de: " + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol + " no mercado fracionário efetuada com sucesso."); //ENVIA ORDEM PARA O ROTEADOR pParametros.EnviarOrdemRequest.OrdemInfo.Account = RetornaCodigoCliente(227, pParametros.EnviarOrdemRequest.OrdemInfo.Account); logger.Info("Envia a ordem para o roteador de ordens"); var RespostaRoteador = this.EnviarOrdemRoteador(pParametros.EnviarOrdemRequest.OrdemInfo); pParametros.EnviarOrdemRequest.OrdemInfo.Account = int.Parse(pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString().Remove(pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString().Length - 1, 1)); //// VERIFICA SE A ORDEM FOI ENVIADA COM SUCESSO PARA O ROTEADOR if (RespostaRoteador.DadosRetorno.StatusResposta == StatusRoteamentoEnum.Sucesso) { logger.Info("Ordem enviada com sucesso para o Roteador de Ordens"); PipeLineResponse.DataResposta = DateTime.Now; PipeLineResponse.DescricaoResposta = RespostaRoteador.DadosRetorno.Ocorrencias[0].Ocorrencia; PipeLineResponse.StatusResposta = OMS.Risco.Lib.Enum.CriticaRiscoEnum.Sucesso; } else { logger.Info("Ocorreu um erro ao enviar a ordem para o roteador de Ordens"); CriticaInfo = new PipeLineCriticaInfo(); CriticaInfo.Critica = RespostaRoteador.DadosRetorno.Ocorrencias[0].Ocorrencia; CriticaInfo.CriticaTipo = OMS.Ordens.Lib.Enum.CriticaRiscoEnum.ErroRoteadorOrdem; CriticaInfo.DataHoraCritica = DateTime.Now; // Adiciona as criticas no pipeline de risco. CriticaInfoCollection.Add(CriticaInfo); } } } return(PipeLineResponse); }