Ejemplo n.º 1
0
        public static OrderCancelReject CreateOrderCancelReject(OrderCancelRequest msg,
                                                                int rejectReason,
                                                                string rejectReasonText)
        {
            var orderid = (msg.IsSetOrderID()) ? msg.OrderID.Obj : "unknown orderID";
            var ocj = new OrderCancelReject(
                new OrderID(orderid),
                msg.ClOrdID,
                msg.OrigClOrdID,
                new OrdStatus(OrdStatus.REJECTED),
                new CxlRejResponseTo(CxlRejResponseTo.ORDER_CANCEL_REQUEST))
                {
                    CxlRejReason = new CxlRejReason(rejectReason),
                    Text = new Text(rejectReasonText)
                };

            return ocj;
        }
Ejemplo n.º 2
0
        private void CancelOrder()
        {
            OrderCancelRequest request = new OrderCancelRequest
            {
                Body = new OrderCancelBody
                {
                    OrderInfo = new FengjingSDK461.Model.Request.OrderCancelInfo
                    {
                        OrderId       = textBox3.Text,
                        OrderPrice    = Convert.ToDecimal(textBox9.Text),
                        OrderQuantity = Convert.ToInt32(textBox10.Text),
                        reason        = textBox11.Text,
                        Seq           = textBox12.Text
                    }
                }
            };
            var result = Class1.CancelOrder(request);

            SetMsg("取消订单: \r\n" + JsonHelper.ObjectToJson(result));
        }
Ejemplo n.º 3
0
        public async Task <ApiResult <string> > CancelOrder(OrderCancelRequest request)
        {
            var client = _httpClientFactory.CreateClient();

            client.BaseAddress = new Uri(_configuration["BaseAddress"]);
            var json        = JsonConvert.SerializeObject(request);
            var httpContent = new StringContent(json, Encoding.UTF8, "application/json");
            var respone     = await client.PostAsync($"/api/order/cancelorder", httpContent);

            var result = await respone.Content.ReadAsStringAsync();

            if (respone.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <ApiSuccessResult <string> >(result));
            }
            else
            {
                return(JsonConvert.DeserializeObject <ApiErrorResult <string> >(result));
            }
        }
        /// <summary>
        /// Cancel Limit order
        /// </summary>
        /// <param name="order"></param>
        public void CancelLimitOrder(Order order)
        {
            try
            {
                // Create FIX order
                OrderCancelRequest orderCancelRequest = OrderCancelRequest(order);

                // Send request
                Session.SendToTarget(orderCancelRequest, _orderSessionId);

                if (Logger.IsDebugEnabled)
                {
                    Logger.Debug("Cancel Order Sent " + order, _type.FullName, "CancelLimitOrder");
                }
            }
            catch (Exception exception)
            {
                Logger.Error(exception, _type.FullName, "CancelLimitOrder");
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 取消订单基础数据验证
        /// </summary>
        /// <param name="request"></param>
        /// <param name="otaBusinessId"></param>
        /// <returns></returns>
        public DataValidResult ValidDataForOrderCancelRequest(OrderCancelRequest request, int otaBusinessId)
        {
            var result = new DataValidResult {
                Status = false
            };

            if (string.IsNullOrEmpty(request.Body.OrderInfo.OrderId))
            {
                result.Code    = "114001";
                result.Message = "订单取消失败,订单id不能为空";
                return(result);
            }
            if (request.Body.OrderInfo.OrderQuantity <= 0)
            {
                result.Code    = "114003";
                result.Message = "订单取消失败,订单总票数不能小于1";
                return(result);
            }
            var tbl_Order = Get(request.Body.OrderInfo.OrderId);

            if (tbl_Order == null)
            {
                result.Code    = "114004";
                result.Message = "订单取消失败,订单不存在";
                return(result);
            }
            if (tbl_Order.OTABusinessId != otaBusinessId)
            {
                result.Code    = "114005";
                result.Message = "订单取消失败,订单存在,但不属于该调用者";
                return(result);
            }
            if (tbl_Order.BookCount != request.Body.OrderInfo.OrderQuantity)
            {
                result.Code    = "114007";
                result.Message = "订单取消失败,订单总票数和原始总票数不一致";
                return(result);
            }
            result.Status = true;
            return(result);
        }
Ejemplo n.º 6
0
        public Task CancelAsync(string orderId, [FromBody] OrderCancelRequest request = null, string accountId = null)
        {
            if (!_ordersCache.TryGetOrderById(orderId, out var order))
            {
                throw new InvalidOperationException("Order not found");
            }

            ValidationHelper.ValidateAccountId(order, accountId);

            var reason = request?.Originator == OriginatorTypeContract.System
                ? OrderCancellationReason.CorporateAction
                : OrderCancellationReason.None;

            var canceledOrder = _tradingEngine.CancelPendingOrder(order.Id, request?.AdditionalInfo,
                                                                  request?.Comment, reason);

            _operationsLogService.AddLog("action order.cancel", order.AccountId, request?.ToJson(),
                                         canceledOrder.ToJson());

            return(Task.CompletedTask);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 取消订单
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static OrderCancelResponse CancelOrder(OrderCancelRequest request)
        {
            request.Head = new HeadRequest
            {
                InvokeTime      = DateTime.Now.ToString("yyyy-MM-dd"),
                InvokeUser      = key,
                ProtocolVersion = "V1"
            };
            string url    = apiUrl + "order/cancel";
            var    result = dooPost(request, url).Result;

            if (!string.IsNullOrEmpty(result.Data))
            {
                return(Base64Helper.Base64EncodeToObject <OrderCancelResponse>(result.Data));
            }
            return(new OrderCancelResponse {
                Head = new HeadResponse {
                    Describe = "数据格式不正确"
                }
            });
        }
Ejemplo n.º 8
0
        public async Task <ApiResult <string> > CancelOrder(OrderCancelRequest request)
        {
            var order = await _context.Orders.FindAsync(request.Id);

            if (order == null)
            {
                return(new ApiErrorResult <string>("Không tìm thấy đơn hàng này trong CSDL"));
            }
            if (order.status == -1)
            {
                return(new ApiErrorResult <string>("Đơn hàng này đã bị hủy trước đó, không thể hủy lại"));
            }
            var isValid = await _context.Transports.AnyAsync(x => x.order_id == request.Id && x.ship_status == 1);

            if (isValid)
            {
                return(new ApiErrorResult <string>("Đơn hàng này đã được tạo đơn vận chuyển, không thể hủy"));
            }
            else
            {
                order.status        = -1;
                order.cancel_reason = request.reason;
                order.cancel_at     = DateTime.Now;
                var details = await _context.OrDetails.Where(x => x.order_id == order.id).ToListAsync();

                foreach (var item in details)
                {
                    var product = _context.Products.Find(item.product_id);
                    if (product != null)
                    {
                        if (product.instock != null)
                        {
                            product.instock += item.quantity;
                        }
                    }
                }
                _context.SaveChanges();
                return(new ApiSuccessResult <string>("Hủy đơn hàng thành công"));
            }
        }
Ejemplo n.º 9
0
        public ReturnResult SimulationMTGetDeal(string url, OrderCancelRequestBody body)
        {
            ReturnResult result = new ReturnResult
            {
                IsSuccess = false,
            };

            try
            {
                OrderCancelRequest requestData = new OrderCancelRequest
                {
                    partnerId = agentinfo.mt_partnerId,
                    body      = body
                };

                var responseStr = new MeiTuanInter(agentinfo.mt_partnerId, agentinfo.mt_secret, agentinfo.mt_client).DoRequest(url, JsonConvert.SerializeObject(requestData));
                if (string.IsNullOrEmpty(responseStr))
                {
                    result.Message = "返回数据为空";
                }
                else
                {
                    OrderCancelResponse responseBody = (OrderCancelResponse)JsonConvert.DeserializeObject(responseStr, typeof(OrderCancelResponse));
                    if (responseBody.code == 200)
                    {
                        result.IsSuccess = true;
                        result.Message   = JsonConvert.SerializeObject(responseBody);
                    }
                    else
                    {
                        result.Message = responseBody.describe;
                    }
                }
            }
            catch (Exception ex)
            {
                result.Message = "异常" + ex.Message;
            }
            return(result);
        }
Ejemplo n.º 10
0
 public void OnMessage(OrderCancelRequest msg, SessionID sessionID)
 {
     var execID = _execIdGenerator();
     try
     {
         var orderID = TranslateFixMessages.GetOrderIdFromMessage(msg);
         _commandFactory.EnqueueCancelOrder(_messageGenerator,
                                            sessionID,
                                            orderID,
                                            msg.ClOrdID.getValue(),
                                            msg.OrigClOrdID.getValue(),
                                            execID);
     }
     catch (QuickFIXException e)
     {
         var reply = CreateFix44Message.CreateOrderCancelReject(msg,
                                                                CxlRejReason
                                                                    .OTHER,
                                                                e.Message);
         _fixFacade.SendToTarget(reply, sessionID);
     }
 }
Ejemplo n.º 11
0
        public void OnMessage(OrderCancelRequest msg, SessionID sessionID)
        {
            var execID = _execIdGenerator();

            try
            {
                var orderID = TranslateFixMessages.GetOrderIdFromMessage(msg);
                _commandFactory.EnqueueCancelOrder(_messageGenerator,
                                                   sessionID,
                                                   orderID,
                                                   msg.ClOrdID.getValue(),
                                                   msg.OrigClOrdID.getValue(),
                                                   execID);
            }
            catch (QuickFIXException e)
            {
                var reply = CreateFix42Message.CreateOrderCancelReject(msg,
                                                                       CxlRejReason
                                                                       .OTHER,
                                                                       e.Message);
                _fixFacade.SendToTarget(reply, sessionID);
            }
        }
        /// <summary>
        /// 取消订单详情
        /// </summary>
        /// <param name="orderInfo"></param>
        private PageResult CancelOrder(OrderCancelRequest request, Tbl_OTABusiness business)
        {
            string orderId             = request.Body.OrderInfo.OrderId;
            OrderCancelResponse result = new OrderCancelResponse
            {
                Head = HeadResult.V1
            };
            var validResult = _orderService.ValidDataForOrderCancelRequest(request, business.Id);

            if (!validResult.Status)
            {
                result.Head.Code     = validResult.Code;
                result.Head.Describe = validResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            var tbl_Order   = _orderService.Get(orderId);
            var checkResult = _orderDetailService.CheckOrderDetailIsCanncel(orderId);

            if (!checkResult.Status)
            {
                result.Head.Code     = checkResult.Code;
                result.Head.Describe = checkResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            try
            {
                _orderService.BeginTran();
                foreach (var row in checkResult.List)
                {
                    //添加退款记录
                    var tbl_RefundDetail = _refundDetailService.Add(row);
                    //更新订单详情的状态:为已退款
                    _orderDetailService.UpdateOrderDetailForRefund(row);
                    //更新票的日售票数
                    _ticketService.UpdateTicketBySellCount(row);
                    //添加日志
                    _saleLogService.Add(tbl_RefundDetail);
                }
                //退激活票时,同步删除验票表存在的数据
                _ticketTestingService.Delete(tbl_Order.OrderNo);
                //提交事物
                _orderService.CommitTran();
            }
            catch
            {
                _orderService.RollbackTran();
                result.Head.Code     = "114012";
                result.Head.Describe = "订单取消失败,系统出错";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            result.Body = new FengjingSDK461.Model.Response.OrderCancelInfo
            {
                Message = "成功"
            };
            result.Head.Code     = "000000";
            result.Head.Describe = "成功";
            return(PageDataResult.Data(result, business.Saltcode.ToString()));

            //try
            //{
            //    //电子票发送退票短信
            //    _smsService.RefundSend(checkResult.List, tbl_Order.Mobile);
            //    result.Head.Code = "000000";
            //    result.Head.Describe = "成功";
            //    return PageDataResult.Data(result, business.Saltcode.ToString());
            //}
            //catch (Exception ex)
            //{
            //    result.Head.Code = "000003";
            //    result.Head.Describe = "取消订单成功,发送退票短信失败";
            //    return PageDataResult.Data(result, business.Saltcode.ToString());
            //}
        }
Ejemplo n.º 13
0
        public Message CreateOrderCancelMessage(string symbol,
                                                string clOrdID,
                                                string newClOrdID,
                                                MarketSide side,
                                                string orderID)
        {
            var ocq = new OrderCancelRequest(new OrigClOrdID(clOrdID),
                                             new ClOrdID(newClOrdID),
                                             new Symbol(symbol),
                                             TranslateFixFields.Translate(side),
                                             new TransactTime(DateTime.Now))
            {
                OrderID = new OrderID(orderID)
            };

            return ocq;
        }
        /// <summary>
        /// 取消接口
        /// </summary>
        /// <param name="requestData"></param>
        /// <returns></returns>
        public object CancelOrder(string request)
        {
            var requestBody = _ctripGateway.CheckCancelOrder(request);

            if (requestBody == null)
            {
                return(_ctripGateway.ErrorResult(ResultCode.JsonParsingFailure, "报文解析失败"));
            }
            var data = requestBody.Data;
            var CancelOrderRequest = new OrderCancelRequest
            {
                Body = new OrderCancelBody
                {
                    OrderInfo = new OrderCancelInfo
                    {
                        OrderId       = data.SupplierOrderId,
                        OtaOrderId    = data.OtaOrderId,
                        OrderPrice    = 0,
                        OrderQuantity = data.Items.Sum(a => a.Quantity),
                        reason        = "",
                        Seq           = data.SequenceId,
                        Items         = new List <CancelOrderItemInfo>()
                    }
                }
            };

            foreach (var row in data.Items)
            {
                CancelOrderRequest.Body.OrderInfo.Items.Add(new CancelOrderItemInfo
                {
                    ItemId    = row.ItemId,
                    ProductId = row.PLU,
                    Quantity  = row.Quantity,
                    Amount    = row.Amount
                });
            }
            var response = _ticketGateway.CancelOrderDetail(CancelOrderRequest);

            if (response.Head.Code == "000000")
            {
                var responseBody = new CancelOrderBodyRespose
                {
                    supplierConfirmType = 1,
                    items = new List <CancelOrderitemRespose>()
                };
                foreach (var row in data.Items)
                {
                    responseBody.items.Add(new CancelOrderitemRespose
                    {
                        itemId = row.ItemId
                    });
                }
                return(_ctripGateway.CancelOrder(responseBody));
            }
            else if (response.Head.Code == "114003" || response.Head.Code == "114014")
            {
                return(_ctripGateway.ErrorResult(ResultCode.CancelOrderForNotCount, response.Head.Describe));
            }
            else if (response.Head.Code == "114004")
            {
                return(_ctripGateway.ErrorResult(ResultCode.CancelOrderNumberNotExist, response.Head.Describe));
            }
            else if (response.Head.Code == "114009")
            {
                return(_ctripGateway.ErrorResult(ResultCode.CancelOrderForConsume, response.Head.Describe));
            }
            else if (response.Head.Code == "114010" || response.Head.Code == "114013")
            {
                return(_ctripGateway.ErrorResult(ResultCode.CancelOrderForCancel, response.Head.Describe));
            }
            else if (response.Head.Code == "114011")
            {
                return(_ctripGateway.ErrorResult(ResultCode.CancelOrderForExpired, response.Head.Describe));
            }
            else if (response.Head.Code == "114012")
            {
                return(_ctripGateway.ErrorResult(ResultCode.SystemError, response.Head.Describe));
            }
            return(_ctripGateway.ErrorResult(ResultCode.CancelOrderForError, response.Head.Describe));
        }
Ejemplo n.º 15
0
        public void SendOrderCancelRequest(OrderCancelRequest request)
        {
            IOrder iorder = ((InstrumentOrderListTable)OrderManager.Orders).All[request.OrigClOrdID];

            this.provider.CallCancel(Map.FQ_OQ_Order[(object)iorder] as Order);
        }
Ejemplo n.º 16
0
 public virtual void onMessage(OrderCancelRequest message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
Ejemplo n.º 17
0
        /// <summary>
        /// 检查订单详情的状态,是否还能取消。
        /// </summary>
        /// <param name="orderDetailId">订单编号</param>
        /// <returns></returns>
        public DataValidResult <Tbl_OrderDetail> CheckOrderDetailIsCanncel(OrderCancelRequest orderCancelRequest, string orderNo)
        {
            var result = new DataValidResult <Tbl_OrderDetail>()
            {
                Status = false,
                List   = new List <Tbl_OrderDetail>()
            };
            var list  = GetList(orderNo);
            var items = orderCancelRequest.Body.OrderInfo.Items;

            if (items == null || items.Count <= 0)
            {
                result.Code    = "114012";
                result.Message = "订单取消失败,系统出错";
                return(result);
            }
            foreach (var row in items)
            {
                var orderDetail = list.FirstOrDefault(a => a.OtaOrderDetailId == row.ItemId);
                if (orderDetail == null)
                {
                    result.Code    = "114004";
                    result.Message = "订单取消失败,订单不存在";
                    return(result);
                }
                if (orderDetail.Quantity != row.Quantity)
                {
                    result.Code    = "114014";
                    result.Message = "订单取消失败,订单取消数量不正确";
                    return(result);
                }
                if (orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Canncel || orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Refund)
                {
                    continue;
                }
                if (orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Consume)
                {
                    result.Code    = "114009";
                    result.Message = "订单取消失败,订单已消费,订单不能取消";
                    return(result);
                }
                if (orderDetail.OrderStatus == (int)OrderDetailsDataStatus.IsTaken)
                {
                    result.Code    = "114013";
                    result.Message = "订单取消失败,订单已取票,不能取消";
                    return(result);
                }
                if (orderDetail.CanRefund == false)
                {
                    result.Code    = "114010";
                    result.Message = "订单取消失败,订单不支持取消";
                    return(result);
                }
                if (orderDetail.CanRefundTime < DateTime.Now.Date)
                {
                    result.Code    = "114011";
                    result.Message = "订单取消失败,订单已过期,不可退";
                    return(result);
                }
                if (orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Success || orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Activate)
                {
                    result.List.Add(orderDetail);
                    continue;
                }
                result.Code    = "114012";
                result.Message = "订单取消失败,系统出错";
                return(result);
            }
            result.Status = true;
            return(result);
        }
Ejemplo n.º 18
0
        private void SendSelectedRequest()
        {
            switch (DataContainer.Data[_listBoxSelectedIndexNo].MsgType)
            {
            case "U1000":
                MsgAIR             requestData = (MsgAIR)DataContainer.Data[_listBoxSelectedIndexNo];
                AccountInfoRequest request     = new AccountInfoRequest();

                request.Set(new Account(Properties.Settings.Default.Account));
                request.Set(new AccReqID(requestData.AccReqID));
                //testforJack
                //request.Set(new SubscriptionRequestType('1'));

                if (!initiator.IsStopped)
                {
                    bool ret = Session.SendToTarget(request, conn.m_sessionID);
                }
                else
                {
                    MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK);
                }
                break;

            case "D":
                MsgNOSR        requestData1 = (MsgNOSR)DataContainer.Data[_listBoxSelectedIndexNo];
                NewOrderSingle request1     = new NewOrderSingle();

                request1.Set(new Account(Properties.Settings.Default.Account));
                request1.Set(new ClOrdID(requestData1.ClOrdID));
                request1.Set(new OrderQty(decimal.Parse(requestData1.OrderQty)));
                request1.Set(new OrdType(char.Parse(requestData1.OrdType)));
                request1.Set(new Side(char.Parse(requestData1.Side)));
                request1.Set(new Symbol(requestData1.Symbol));
                request1.Set(new TransactTime(DateTime.Now));

                if (!initiator.IsStopped)
                {
                    bool ret = Session.SendToTarget(request1, conn.m_sessionID);
                }
                else
                {
                    MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK);
                }
                break;

            case "H":
                MsgOSR             requestData2 = (MsgOSR)DataContainer.Data[_listBoxSelectedIndexNo];
                OrderStatusRequest request2     = new OrderStatusRequest();

                request2.Set(new Account(Properties.Settings.Default.Account));
                request2.Set(new ClOrdID(requestData2.ClOrdID));
                request2.Set(new Side(char.Parse(requestData2.Side)));
                request2.Set(new Symbol(requestData2.Symbol));
                request2.Set(new OrderID(requestData2.OrderID));

                if (!initiator.IsStopped)
                {
                    bool ret = Session.SendToTarget(request2, conn.m_sessionID);
                }
                else
                {
                    MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK);
                }
                break;

            case "AF2":
                MsgBOIR requestData3            = (MsgBOIR)DataContainer.Data[_listBoxSelectedIndexNo];
                OrderMassStatusRequest request3 = new OrderMassStatusRequest();

                request3.Set(new Account(Properties.Settings.Default.Account));
                request3.Set(new Symbol(requestData3.Symbol));
                request3.Set(new MassStatusReqID(requestData3.MassStatusReqID));
                //request3.Set(new NoStatuses(int.Parse(requestData3.GroupNums)));

                if (!initiator.IsStopped)
                {
                    bool ret = Session.SendToTarget(request3, conn.m_sessionID);
                }
                else
                {
                    MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK);
                }
                break;

            case "G":
                MsgOCRR requestData4 = (MsgOCRR)DataContainer.Data[_listBoxSelectedIndexNo];
                OrderCancelReplaceRequest request4 = new OrderCancelReplaceRequest();

                request4.Set(new Account(Properties.Settings.Default.Account));
                request4.Set(new ClOrdID(requestData4.ClOrdID));
                request4.Set(new OrderQty(decimal.Parse(requestData4.OrderQty)));
                request4.Set(new OrderID(requestData4.OrderID));

                if (!initiator.IsStopped)
                {
                    bool ret = Session.SendToTarget(request4, conn.m_sessionID);
                }
                else
                {
                    MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK);
                }
                break;

            case "F":
                MsgOCR             requestData5 = (MsgOCR)DataContainer.Data[_listBoxSelectedIndexNo];
                OrderCancelRequest request5     = new OrderCancelRequest();

                request5.Set(new Account(Properties.Settings.Default.Account));
                request5.Set(new ClOrdID(requestData5.ClOrdID));
                request5.Set(new OrderID(requestData5.OrderID));
                request5.Set(new Symbol(requestData5.Symbol));
                request5.Set(new TransactTime(DateTime.Now));

                if (!initiator.IsStopped)
                {
                    bool ret = Session.SendToTarget(request5, conn.m_sessionID);
                }
                else
                {
                    MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK);
                }
                break;

            default:
                break;
            }
        }
Ejemplo n.º 19
0
        public void SendOrderCancelRequest(SessionID session)
        {
            origClOrdID = clOrdId;
            clOrdId = DateTime.Now.Ticks.ToString();

            var cancel = new OrderCancelRequest(new OrigClOrdID(origClOrdID),
                                                new ClOrdID(clOrdId),
                                                new Symbol(lastSymbol),
                                                new Side(Side.BUY),
                                                new TransactTime(DateTime.Now))
                {
                    Account = new Account(lastAccount)
                };

            Session.SendToTarget(cancel, session);
        }
Ejemplo n.º 20
0
 public async Task <Result> Cancel([FromBody] OrderCancelRequest request)
 {
     return(await _orderService.Cancel(request.Id, request.Reason));
 }
Ejemplo n.º 21
0
        public void ProcessOrderCancelRequest(QuickFix.Message msg, string bolsa)
        {
            try
            {
                OrderCancelRequest ocr         = (OrderCancelRequest)msg;
                string             origclordid = ocr.OrigClOrdID.getValue();
                int account;
                if (bolsa.Equals(ExchangePrefixes.BOVESPA, StringComparison.InvariantCultureIgnoreCase))
                {
                    string acc = ocr.Account.getValue();
                    acc     = (acc.Remove(acc.Length - 1));
                    account = Convert.ToInt32(acc);
                }
                else
                {
                    account = Convert.ToInt32(ocr.Account.getValue());
                }

                // Buscar ordem original
                OrderDbInfo orderOrig = _db.BuscarOrdem(origclordid, account, ocr.Symbol.getValue());
                // Adicionar as informacoes da ordem original na tabela de upodate
                if (orderOrig.OrderID == 0)
                {
                    orderOrig = null;
                    orderOrig = _db.BuscarOrdem(origclordid, account, ocr.Symbol.getValue(), true);
                    if (orderOrig.OrderID == 0)
                    {
                        logger.Info("OCR - Nao achou a ordem em questao!!!: " + origclordid);
                        return;
                    }
                }
                // Adicionar informacoes originais na tabela update
                OrderDbUpdateInfo updt = new OrderDbUpdateInfo();
                updt.Account             = orderOrig.Account;
                updt.Instrumento         = orderOrig.Symbol;
                updt.OrderID             = orderOrig.OrderID;
                updt.ClOrdID             = orderOrig.ClOrdID;
                updt.OrdStatusID         = orderOrig.OrdStatus;
                updt.Price               = orderOrig.Price;
                updt.Quantidade          = orderOrig.OrderQty;
                updt.Quantidade_Exec     = orderOrig.CumQty;
                updt.Quantidade_Aparente = Convert.ToInt32(orderOrig.OrderQtyApar);
                updt.Quantidade_Minima   = Convert.ToInt32(orderOrig.OrderQtyMin);
                updt.Dt_Validade         = orderOrig.ExpireDate;
                updt.Dt_Atualizacao      = orderOrig.TransactTime;
                updt.TimeInForce         = orderOrig.TimeInForce;
                if (!_db.InserirOrdermUpdate(updt))
                {
                    logger.Error("Erro ao inserir o registro na tabela tb_fix_order_update");
                    return;
                }

                // Adicionar as novas informacoes na tabela detail
                OrderDbDetalheInfo detail = new OrderDbDetalheInfo();
                detail.OrderQty      = Convert.ToInt32(ocr.OrderQty.getValue());
                detail.OrderID       = orderOrig.OrderID;
                detail.OrderStatusID = (int)FixOrderStatus.CANCELAMENTO_SOLICITADO;
                detail.Description   = DescMsg.OCR_PENDING_CANCELLING;
                detail.TransactTime  = ocr.TransactTime.getValue();
                detail.FixMsgSeqNum  = Convert.ToInt32(ocr.Header.GetField(Tags.MsgSeqNum));
                if (!_db.InserirOrdemDetalhe(detail, orderOrig.ClOrdID))
                {
                    logger.Error("Erro ao inserir o registro na tabela tb_fix_order_update - msg cancelamento");
                    return;
                }

                // Atualizar a informacao original na tabela tb_fix_order
                // Atualiza os campos gravados na tabela tb_fix_order_update
                // Ordem original já se encontra em orderOrig
                orderOrig.OrigClOrdID = ocr.OrigClOrdID.getValue();
                orderOrig.ClOrdID     = ocr.ClOrdID.getValue();
                orderOrig.OrdStatus   = (int)FixOrderStatus.CANCELAMENTO_SOLICITADO;
                //orderOrig.OrderQty = Convert.ToInt32(ocr.OrderQty.getValue());
                orderOrig.TransactTime = ocr.TransactTime.getValue();
                orderOrig.Memo         = ocr.IsSetField(Tags.Memo) ? ocr.GetField(Tags.Memo): string.Empty;
                orderOrig.FixMsgSeqNum = Convert.ToInt32(ocr.Header.GetField(Tags.MsgSeqNum));
                orderOrig.MsgFix       = ocr.ToString().Replace('\x01', '|');
                if (!_db.AtualizarOrdem(orderOrig))
                {
                    logger.Info("Problemas na atualizacao da ordem cancelamento. ClOrdID: " + orderOrig.ClOrdID);
                    return;
                }

                DropCopyCallbackManager.Instance.EnqueueCallback(orderOrig);
            }
            catch (Exception ex)
            {
                logger.Error("Problemas no processamento da mensagem OrderCancelRequest: " + ex.Message, ex);
            }
        }
Ejemplo n.º 22
0
 public void ProcessOrderCancelRequest(NewOrderSingle nos, OrderCancelRequest msg)
 {
 }
Ejemplo n.º 23
0
 public virtual void SendOrderCancelRequest(OrderCancelRequest request)
 {
 }
Ejemplo n.º 24
0
 public void OnMessage(OrderCancelRequest msg, SessionID sessionID)
 {
     MessageDisplay(msg, sessionID, MessageDisplayer.Sender);
 }
Ejemplo n.º 25
0
		public void SendOrderCancelRequest(OrderCancelRequest request)
		{
			IOrder key = OrderManager.Orders.All[request.OrigClOrdID];
			Order order = Map.SQ_OQ_Order[key] as Order;
			this.provider.CallCancel(order);
		}
Ejemplo n.º 26
0
 public MainRule(int id, OrderCancelRequest request)
 {
     Context = new ContextModel(id, request, this);
 }
Ejemplo n.º 27
0
 public void SendOrderCancelRequest(OrderCancelRequest request)
 {
     SendOrderCancelRequest(request as FIXOrderCancelRequest);
 }
Ejemplo n.º 28
0
 public void OnMessage(OrderCancelRequest msg, SessionID sessionID)
 {
     _fix44MessageHandler.OnMessage(msg, sessionID);
 }
        /// <summary>
        /// 取消订单项
        /// </summary>
        /// <param name="orderInfo"></param>
        private PageResult CancelOrderDetail(OrderCancelRequest request, Tbl_OTABusiness business)
        {
            string orderId             = request.Body.OrderInfo.OrderId;
            string otaOrderId          = request.Body.OrderInfo.OtaOrderId;
            OrderCancelResponse result = new OrderCancelResponse
            {
                Head = HeadResult.V1
            };
            var validResult = _orderService.ValidDataForOrderCancelRequest(request, business.Id);

            if (!validResult.Status)
            {
                result.Head.Code     = validResult.Code;
                result.Head.Describe = validResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            var tbl_Order = _orderService.Get(orderId, otaOrderId);

            if (tbl_Order == null)
            {
                result.Head.Code     = "114004";
                result.Head.Describe = "订单取消失败,订单不存在";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            var checkResult = _orderDetailService.CheckOrderDetailIsCanncel(request, orderId);

            if (!checkResult.Status)
            {
                result.Head.Code     = checkResult.Code;
                result.Head.Describe = checkResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            try
            {
                if (checkResult.List.Count > 0)
                {
                    _orderService.BeginTran();
                    foreach (var row in checkResult.List)
                    {
                        //添加退款记录
                        var tbl_RefundDetail = _refundDetailService.Add(row);
                        //更新订单详情的状态:为已取消
                        _orderDetailService.UpdateOrderDetailForCanncel(row);
                        //退激活票时,同步删除验票表存在的数据
                        _ticketTestingService.Delete(row.Number);
                        //更新票的日售票数
                        _ticketService.UpdateTicketBySellCount(row);
                        //添加日志
                        _saleLogService.Add(tbl_RefundDetail);
                    }
                    //提交事物
                    _orderService.CommitTran();
                }
            }
            catch
            {
                _orderService.RollbackTran();
                result.Head.Code     = "114012";
                result.Head.Describe = "订单取消失败,系统出错";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            result.Body = new FengjingSDK461.Model.Response.OrderCancelInfo
            {
                Message = "成功"
            };
            result.Head.Code     = "000000";
            result.Head.Describe = "成功";
            return(PageDataResult.Data(result, business.Saltcode.ToString()));
        }
Ejemplo n.º 30
0
 public void OnMessage(OrderCancelRequest msg, SessionID sessionID)
 {
     _fix44MessageHandler.OnMessage(msg, sessionID);
 }
Ejemplo n.º 31
0
 public void OnMessage(OrderCancelRequest msg, SessionID sessionId)
 {
 }
Ejemplo n.º 32
0
        static void Main(string[] args)
        {
            TestFixApp testFixApp = new TestFixApp(args.FirstOrDefault());

            testFixApp.Start();

            Account account = new Account("54b97c9e-202b-11b2-be90-529049f1f1bb");
            ClOrdID clOrdId = new ClOrdID(Guid.NewGuid().ToString());
            Symbol  symbol  = new Symbol("BTC/USD");
            Side    side    = new Side(Side.BUY);

            #region SecurityListRequest
            SecurityListRequest securityListRequest = new SecurityListRequest(
                new SecurityReqID(Guid.NewGuid().ToString()),
                new SecurityListRequestType(SecurityListRequestType.SYMBOL)
                )
            {
                Symbol = symbol
            };
            Console.WriteLine("Press enter to next comand");
            Console.ReadLine();
            testFixApp.Send(securityListRequest);
            testFixApp.WaitResponces(1);
            #endregion SecurityListRequest

            #region MarketDataRequest
            MarketDataRequest marketDataRequest = new MarketDataRequest(
                new MDReqID(Guid.NewGuid().ToString()),
                new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT),
                new MarketDepth(5))
            {
                MDUpdateType = new MDUpdateType(MDUpdateType.FULL_REFRESH),
            };

            var bid = new MarketDataRequest.NoMDEntryTypesGroup()
            {
                MDEntryType = new MDEntryType(MDEntryType.BID)
            };
            var ask = new MarketDataRequest.NoMDEntryTypesGroup()
            {
                MDEntryType = new MDEntryType(MDEntryType.OFFER)
            };

            var symGroup = new MarketDataRequest.NoRelatedSymGroup
            {
                Symbol = symbol
            };

            marketDataRequest.AddGroup(bid);
            marketDataRequest.AddGroup(ask);
            marketDataRequest.AddGroup(symGroup);


            Console.WriteLine("Press enter to next comand");
            Console.ReadLine();
            testFixApp.Send(marketDataRequest);
            testFixApp.WaitResponces(1);
            #endregion MarketDataRequest

            #region NewOrderSingle
            NewOrderSingle newOrderSingle = new NewOrderSingle(
                clOrdId,
                symbol,
                side,
                new TransactTime(DateTime.Now),
                new OrdType(OrdType.LIMIT))
            {
                OrderQty     = new OrderQty(0.1m),
                Price        = new Price(1m),
                Account      = account,
                AcctIDSource = new AcctIDSource(AcctIDSource.OTHER)
            };

            Console.WriteLine("Press enter to next comand");
            Console.ReadLine();
            testFixApp.Send(newOrderSingle);
            testFixApp.WaitResponces(2);
            #endregion NewOrderSingle

            #region OrderCancelReplaceRequest
            OrderCancelReplaceRequest orderCancelReplaceRequest = new OrderCancelReplaceRequest(
                new OrigClOrdID(clOrdId.ToString()),
                clOrdId = new ClOrdID(Guid.NewGuid().ToString()),
                symbol,
                side,
                new TransactTime(DateTime.Now),
                new OrdType(OrdType.LIMIT))
            {
                Price    = new Price(2m),
                OrderQty = new OrderQty(0.2m)
            };

            Console.WriteLine("Press enter to next comand");
            Console.ReadLine();
            testFixApp.Send(orderCancelReplaceRequest);
            testFixApp.WaitResponces(2);
            #endregion OrderCancelReplaceRequest

            #region OrderStatusRequest
            OrderStatusRequest orderStatusRequest = new OrderStatusRequest(
                clOrdId,
                symbol,
                side
                );
            Console.WriteLine("Press enter to next comand");
            Console.ReadLine();
            testFixApp.Send(orderStatusRequest);
            testFixApp.WaitResponces(1);
            #endregion OrderStatusRequest

            #region OrderCancelRequest
            OrderCancelRequest orderCancelRequest = new OrderCancelRequest(
                new OrigClOrdID(clOrdId.ToString()),
                new ClOrdID(Guid.NewGuid().ToString()),
                symbol,
                side,
                new TransactTime(DateTime.Now)
                )
            {
                OrderQty = new OrderQty(0.1m)
            };

            Console.WriteLine("Press enter to next comand");
            Console.ReadLine();
            testFixApp.Send(orderCancelRequest);
            testFixApp.WaitResponces(3);
            #endregion region OrderCancelRequest

            #region OrderMassStatusRequest
            OrderMassStatusRequest orderMassStatusRequest = new OrderMassStatusRequest(
                new MassStatusReqID(Guid.NewGuid().ToString()),
                new MassStatusReqType(MassStatusReqType.STATUS_FOR_ALL_ORDERS))
            {
                Side   = side,
                Symbol = symbol
            };
            Console.WriteLine("Press enter to next comand");
            Console.ReadLine();
            testFixApp.Send(orderMassStatusRequest);
            #endregion OrderMassStatusRequest

            Console.WriteLine("Press enter to exit");
            Console.ReadLine();
            testFixApp.Stop();
        }
            void CreateLimitOrderWithAssetPair(string assetPair, decimal volume)
            {
                try
                {
                    var orderId     = Guid.NewGuid().ToString();
                    var price       = 0.01m;
                    var quantity    = volume + 0.5m;
                    var marketOrder = FixHelpers.CreateNewOrder(orderId, isMarket: false, isBuy: true, qty: quantity, price: price, assetPairId: assetPair);

                    fixClient.Send(marketOrder);

                    var response = fixClient.GetResponse <Message>();

                    int aa = 60;
                    while (aa-- > 0)
                    {
                        if (((ExecutionReport)response).ClOrdID.Obj.ToString() == orderId)
                        {
                            break;
                        }
                        response = fixClient.GetResponse <Message>();
                        System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
                    }

                    Assert.That(response, Is.Not.Null);
                    Assert.That(response, Is.TypeOf <ExecutionReport>());

                    var ex = (ExecutionReport)response;
                    Assert.That(ex.OrdStatus.Obj, Is.EqualTo(OrdStatus.PENDING_NEW), $"unexpected response status for assetPair {assetPair}. response: {response.ToString().Replace("\u0001", "|")}");
                    Assert.That(ex.ExecType.Obj, Is.EqualTo(ExecType.PENDING_NEW), $"unexpected response type for assetPair {assetPair}. response: {response.ToString().Replace("\u0001", "|")}");

                    // clean myself
                    var cancelRequest = new OrderCancelRequest
                    {
                        ClOrdID      = new ClOrdID(Guid.NewGuid().ToString()),
                        OrigClOrdID  = new OrigClOrdID(orderId),
                        TransactTime = new TransactTime(DateTime.UtcNow)
                    };

                    fixClient.Send(cancelRequest);
                    response = fixClient.GetResponse <Message>();

                    int a = 60;
                    while (a-- > 0)
                    {
                        if (((ExecutionReport)response).ClOrdID.Obj.ToString() == cancelRequest.ClOrdID.Obj.ToString())
                        {
                            break;
                        }
                        response = fixClient.GetResponse <Message>();
                        System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
                    }

                    Assert.That(response, Is.Not.Null);
                    Assert.That(response, Is.TypeOf <ExecutionReport>(), $"unexpected response type for assetPair {assetPair}. response: {response.ToString().Replace("\u0001", "|")}");

                    ex = (ExecutionReport)response;

                    //Assert.That(ex.OrdStatus.Obj, Is.EqualTo(OrdStatus.PENDING_CANCEL), $"unexpected response status for assetPair {assetPair}. response: {response.ToString().Replace("\u0001", "|")}");
                    //Assert.That(ex.ExecType.Obj, Is.EqualTo(ExecType.PENDING_CANCEL), $"unexpected response type for assetPair {assetPair}. response: {response.ToString().Replace("\u0001", "|")}");

                    int time = 120;
                    while (time-- > 0)
                    {
                        if (ex.OrdStatus.Obj != OrdStatus.CANCELED)
                        {
                            response = fixClient.GetResponse <Message>();
                            ex       = (ExecutionReport)response;
                            System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                catch (Exception)
                {
                    //Assert.Fail($"An error occured with assetPair {assetPair}. Number of Exceptions {i++}");
                }
            }
Ejemplo n.º 34
0
 public void ProcessOrderCancelRequest(NewOrderSingle nos, OrderCancelRequest msg)
 {
 }
Ejemplo n.º 35
0
 public void SendOrderCancelRequest(OrderCancelRequest request)
 {
     SendOrderCancelRequest(request as FIXOrderCancelRequest);
 }
Ejemplo n.º 36
0
 /// <inheritdoc />
 public async Task <ExecutionReport> CancelOrderAsync(
     OrderCancelRequest command,
     CancellationToken cancellationToken = default)
 {
     return(await PostAsync <ExecutionReport>(CancelOrderPath, command, cancellationToken).ConfigureAwait(false));
 }