private static void CancelarOrdensExperiradas(object state) { if (DateTime.Now.Hour < HorarioFechamentoBolsa) { OrdensExpiradasAtualizadas = false; } if ((DateTime.Now.Hour >= HorarioFechamentoBolsa) && (OrdensExpiradasAtualizadas == false)) { CamadaDeDados _CamadaDeDados = new CamadaDeDados(); _CamadaDeDados.AbrirConexao(); List <string> Ordens = _CamadaDeDados.BuscarOrdensValidasParaoDia(); IServicoOrdens ServicoOrdens = Ativador.Get <IServicoOrdens>(); for (int i = 0; i <= Ordens.Count - 1; i++) { ClienteCancelamentoInfo ClienteCancelamentoInfo = new ClienteCancelamentoInfo() { OrderID = Ordens[i].ToString() }; EnviarCancelamentoOrdemRequest request = new EnviarCancelamentoOrdemRequest() { ClienteCancelamentoInfo = ClienteCancelamentoInfo }; EnviarCancelamentoOrdemResponse response = ServicoOrdens.CancelarOrdem(request); } OrdensExpiradasAtualizadas = true; } }
private void CancelarOrdem() { ClienteCancelamentoInfo info = new ClienteCancelamentoInfo(); info.OrderID = "30032012030412-36938417"; EnviarCancelamentoOrdemRequest request = new EnviarCancelamentoOrdemRequest(); request.ClienteCancelamentoInfo = info; EnviarCancelamentoOrdemResponse response = new EnviarCancelamentoOrdemResponse(); response = new ServicoOrdens().CancelarOrdem(request); }
private void CancelarOrdem() { ClienteCancelamentoInfo ClienteCancelamentoInfo = new ClienteCancelamentoInfo() { OrderID = "2192010184602-3552158" }; EnviarCancelamentoOrdemRequest request = new EnviarCancelamentoOrdemRequest() { ClienteCancelamentoInfo = ClienteCancelamentoInfo }; EnviarCancelamentoOrdemResponse response = new ServicoOrdens().CancelarOrdem(request); bool solicitacao = true; }
private OrdemFIXResponse <OrdemCancelamentoInfo> ParsearOrdemCancelamentoCliente(ClienteCancelamentoInfo pParametro) { OrdemFIXResponse <OrdemCancelamentoInfo> Response = new OrdemFIXResponse <OrdemCancelamentoInfo>(); try { OrdemInfo OrdemInfo = new PersistenciaOrdens().SelecionarOrdemCliente(pParametro.OrderID); OrdemCancelamentoInfo CancelamentoInfo = new OrdemCancelamentoInfo(); CancelamentoInfo.ClOrdID = CtrlNumber; CancelamentoInfo.OrigClOrdID = OrdemInfo.ClOrdID; CancelamentoInfo.ChannelID = OrdemInfo.ChannelID; CancelamentoInfo.Account = OrdemInfo.Account; CancelamentoInfo.OrderID = OrdemInfo.ExchangeNumberID; CancelamentoInfo.OrderQty = OrdemInfo.OrderQty; CancelamentoInfo.Side = OrdemInfo.Side; CancelamentoInfo.Symbol = OrdemInfo.Symbol; if ((OrdemInfo.OrdStatus != OrdemStatusEnum.NOVA) || (OrdemInfo.OrdStatus == OrdemStatusEnum.SUBSTITUIDA) || (OrdemInfo.OrdStatus == OrdemStatusEnum.PARCIALMENTEEXECUTADA)) { Lib.Info.PipeLineCriticaInfo info = new Lib.Info.PipeLineCriticaInfo(); info.Critica = "Não é possível cancelar uma oferta em processamento. Esta oferta pode estar cancelada ou cancelando / executada ou executando. "; info.CriticaTipo = CriticaRiscoEnum.ErroNegocio; info.DataHoraCritica = DateTime.Now; Response.CriticaInfo = new List <Lib.Info.PipeLineCriticaInfo>(); Response.CriticaInfo.Add(info); Response.StatusResposta = CriticaRiscoEnum.ErroNegocio; Response.DataResposta = DateTime.Now; Response.DescricaoResposta = "O Sistema de risco encontrou <" + Response.CriticaInfo.Count.ToString() + "> item(s) a serem verificados"; return(Response); } if (OrdemInfo.Symbol.Substring(OrdemInfo.Symbol.Length - 1, 1) == "F") { OrdemInfo.Symbol = OrdemInfo.Symbol.Remove(OrdemInfo.Symbol.Length - 1); } // Defini o Exchange pelo cadastro de papeis CadastroPapeisResponse <CadastroPapelInfo> CadastroPapeis = new ServicoCadastroPapeis().ObterInformacoesIntrumento( new CadastroPapeisRequest() { Instrumento = OrdemInfo.Symbol }); if (CadastroPapeis.Objeto == null) { Lib.Info.PipeLineCriticaInfo info = new Lib.Info.PipeLineCriticaInfo(); info.Critica = "Instrumento não encontrado"; info.CriticaTipo = CriticaRiscoEnum.ErroNegocio; info.DataHoraCritica = DateTime.Now; Response.CriticaInfo = new List <Lib.Info.PipeLineCriticaInfo>(); Response.CriticaInfo.Add(info); Response.StatusResposta = CriticaRiscoEnum.ErroNegocio; Response.DataResposta = DateTime.Now; Response.DescricaoResposta = "O Sistema de risco encontrou <" + Response.CriticaInfo.Count.ToString() + "> item(s) a serem verificados"; return(Response); } if (CadastroPapeis.Objeto.TipoMercado == OMS.CadastroPapeis.Lib.Enum.TipoMercadoEnum.FUTURO) { CancelamentoInfo.Exchange = "BMF"; CancelamentoInfo.SecurityID = new PersistenciaCadastroAtivos().ObterSecurityList(OrdemInfo.Symbol); } else { CancelamentoInfo.Exchange = "BOVESPA"; } Response.Objeto = CancelamentoInfo; Response.StatusResposta = CriticaRiscoEnum.Sucesso; Response.DataResposta = DateTime.Now; Response.DescricaoResposta = "Ordem parseado com sucesso"; } catch (Exception ex) { Lib.Info.PipeLineCriticaInfo info = new Lib.Info.PipeLineCriticaInfo(); info.Critica = ex.Message; info.CriticaTipo = CriticaRiscoEnum.ErroNegocio; info.DataHoraCritica = DateTime.Now; Response.CriticaInfo = new List <Lib.Info.PipeLineCriticaInfo>(); Response.CriticaInfo.Add(info); Response.StatusResposta = CriticaRiscoEnum.Exception; Response.DataResposta = DateTime.Now; Response.DescricaoResposta = "Ocorreu um erro ao parsear a mensagem"; } return(Response); }
/// <summary> /// Exclui as ordens selecionadas /// </summary> /// <returns>Retorna uma string com mensagem de sucesso ou erro ao excluir as ordens</returns> private string ResponderExcluirOrdens() { string lRetorno = string.Empty; try { string lIds = Request.Form["Ids"]; string lPortas = Request.Form["Portas"]; string lMensagem = ""; List <string> lstIdOrdem = new List <string>(); IServicoOrdens lOrdem = Ativador.Get <IServicoOrdens>(); Dictionary <string, string> lCriticas = new Dictionary <string, string>(); EnviarCancelamentoOrdemResponse lResponse = new EnviarCancelamentoOrdemResponse(); string[] Ordens = lIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); string[] Portas = lPortas.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); ClienteCancelamentoInfo info; EnviarCancelamentoOrdemRequest lRequestCancel; for (int i = 0; i < Ordens.Length; i++) { info = new ClienteCancelamentoInfo(); info.OrderID = Ordens[i]; info.PortaControleOrdem = Portas[i]; lRequestCancel = new EnviarCancelamentoOrdemRequest() { ClienteCancelamentoInfo = info }; lResponse = lOrdem.CancelarOrdem(lRequestCancel); if (lResponse.StatusResposta != OMS.Ordens.Lib.Enum.CriticaRiscoEnum.Sucesso) { lCriticas.Add(info.OrderID, lResponse.DescricaoResposta); } } if (lCriticas.Count > 0) { foreach (KeyValuePair <string, string> critica in lCriticas) { lMensagem += string.Concat("Ordem: ", critica.Key, "Crítica - ", critica.Value); } lRetorno = RetornarSucessoAjax(lMensagem); } else { lRetorno = RetornarSucessoAjax("Orden(s) cancelada(s) com sucesso"); base.RegistrarLogExclusao(string.Concat("Foram EXCLUÍDAS as seguintes ordens: ", lIds)); } } catch (Exception ex) { lRetorno = base.RetornarErroAjax("Erro ao tentar cancelar ordem.", ex); } return(lRetorno); }