} //dg_Match_UserAddedRow() private void CreateOrder(int inRow) { // TODO (1) CreateOrder() - Quick Cheat for now - assumes 1 row in dg_Match // Local Variables String myTable = "Orders"; String myColumns = ""; String Ticker = ""; String Exch = ""; String YellowKey = ""; int myRows; int FundID; int PortfolioID; FundID = SystemLibrary.ToInt32(dg_Match["FundID", inRow].Value); PortfolioID = SystemLibrary.ToInt32(dg_Match["PortfolioID", inRow].Value); SendToBloomberg.EMSTickerSplit(Order.BBG_Ticker, ref Ticker, ref Exch, ref YellowKey); // -- Place the Order DataTable dt_load = SystemLibrary.SQLBulk_GetDefinition(myColumns, myTable); DataRow drSQL = dt_load.NewRow(); drSQL["OrderRefID"] = Order.OrderRefID; drSQL["EMSX_Sequence"] = Order.OrderRefID; drSQL["EffectiveDate"] = Order.TradeDate; drSQL["BBG_Ticker"] = Order.BBG_Ticker; drSQL["Exchange"] = Exch.ToUpper(); drSQL["Crncy"] = Order.crncy; drSQL["Quantity"] = Order.Qty_Fill; drSQL["Side"] = SendToBloomberg.GetSide(Ticker, YellowKey, Order.Country, 0, Order.Qty_Fill).ToUpper(); drSQL["OrderType"] = ""; // drSQL["Limit"] = dr["Limit"]; drSQL["TimeinForce"] = ""; drSQL["UserName"] = SystemInformation.UserName; drSQL["UpdateDate"] = SystemLibrary.f_Now(); drSQL["ProcessedEOD"] = "N"; drSQL["ManualOrder"] = "N"; drSQL["Order_Completed"] = "N"; drSQL["CreatedDate"] = SystemLibrary.f_Now(); dt_load.Rows.Add(drSQL); myRows = SystemLibrary.SQLBulkUpdate(dt_load, myColumns, myTable); // Process the Splits SystemLibrary.SQLExecute("Exec sp_OrderSplits '" + drSQL["OrderRefID"].ToString() + "', " + FundID.ToString() + ", " + PortfolioID.ToString() + ", " + Order.Round_Lot_Size.ToString()); // Reprocess the Fill, so get the Fill_Allocations SystemLibrary.SQLExecute("Exec sp_ReprocessFillbyRef '" + drSQL["OrderRefID"].ToString() + "' "); SystemLibrary.SQLExecute("Exec sp_Update_Positions 'Y' "); if (ParentForm1 != null) { ParentForm1.LoadPortfolio(true); } } //CreateOrder()
} //RoundLot() public static String EMSTickerCheck(String inTicker) { // Cleans up the Ticker for EMSX API. // Local Variables String Ticker = ""; String Exch = ""; String YellowKey = ""; SendToBloomberg.EMSTickerSplit(inTicker, ref Ticker, ref Exch, ref YellowKey); return(Ticker + " " + Exch + " " + YellowKey); }
} //dgv_ShowFills_CellMouseClick() public static void dgv_ShowFillsSystemMenuItem_Click(object sender, MouseEventArgs e) { // // Purpose: A generic menu click event for the Order Right-Click // // Local Variables ToolStripMenuItem ts_From = (ToolStripMenuItem)sender; OrderMenuStruct myOrderStr = (OrderMenuStruct)ts_From.Tag; String myQuestion = ""; String myMessage = ""; String OrderRefID = myOrderStr.OrderRefID; Decimal Quantity = myOrderStr.Quantity; Decimal FillAmount = myOrderStr.FillAmount; Decimal RoutedAmount = myOrderStr.RoutedAmount; ShowFillStatus myForm = myOrderStr.myParentForm; if (OrderRefID.Length > 0) { switch (myOrderStr.Instruction) { case "Delete": if (myOrderStr.FillAmount != 0) { myQuestion = "WARNING: This order has already been filled " + myOrderStr.FillAmount.ToString("#,###") + " @" + myOrderStr.FillPrice.ToString("#,###.####") + ", so you should 'Resize to Fill' rather than Delete\r\n\r\n"; } else if (myOrderStr.RoutedAmount != 0) { myQuestion = "WARNING: Part of this order has already been routed " + myOrderStr.RoutedAmount.ToString("#,###") + " and should be cancelled first.\r\n\r\n"; } myQuestion = myQuestion + "You are about to Delete the Order for\r\n\r\n" + myOrderStr.Side + " " + myOrderStr.Quantity + " " + myOrderStr.BBG_Ticker + "\r\n"; if (myOrderStr.EMSX_Sequence.Length > 0) { myQuestion = myQuestion + "\r\nBloomberg Order# " + myOrderStr.EMSX_Sequence; } myQuestion = myQuestion + "\r\n\r\n" + "Is this Ok?"; if (MessageBox.Show(myQuestion, "Delete Order", MessageBoxButtons.YesNo) == DialogResult.Yes) { if (myOrderStr.EMSX_Sequence.Length > 0) { myMessage = SendToBloomberg.EMSXAPI_Delete(OrderRefID); } if (myMessage.Length > 0) { if (MessageBox.Show("We received the UNEXPECTED message below from Bloomberg while trying to delete the order.\r\n\r\n" + "Do you wish to continue with the Delete?\r\n\r\n" + "=============================================\r\n\r\n\r\n" + myMessage, "Delete Order", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.No) { return; } } // Delete the Order SystemLibrary.SQLExecute("Exec sp_ReverseOrder '" + OrderRefID + "'"); myForm.bt_Refresh_Click(null, null); // Update The Positions Table myForm.NeedUpdate = true; myForm.NeedFullUpdate = true; // Refresh the Portfolio Tab //myForm.ParentForm1.LoadPortfolioIncr(); // Report what Bloomberg says if (myMessage.Length > 0) { SystemLibrary.SQLExecute("Exec sp_Fills_From_EMSX_API"); MessageBox.Show("Changed in the Portfolio Management System, but received this messagae from Bloomberg.\r\n\r\n" + myMessage, myOrderStr.Instruction); } } break; case "ResizeToFill": myQuestion = "You are about to Resize the Order for\r\n\r\n" + myOrderStr.Side + " " + myOrderStr.FormattedQuantity + " " + myOrderStr.BBG_Ticker + "\r\n\n" + "To the FillAmount of " + myOrderStr.FormattedFillAmount + "\r\n\r\n" + "Is this Ok?"; if (Math.Abs(RoutedAmount) > Math.Abs(FillAmount)) { myQuestion = "WARNING: The Routed part of this order (" + myOrderStr.RoutedAmount.ToString("#,###") + ") is greater than the Filled Amount (" + myOrderStr.FillAmount.ToString("#,###") + ") and should be cancelled first.\r\n\r\n" + myQuestion; } if (FillAmount == 0) { MessageBox.Show("The Order has not been Filled (Fill Amount = 0).\r\n\r\nPlease use the [Delete Order] menu if that is your intention", "Resize order to Fill Amount"); } else if (MessageBox.Show(myQuestion, "Resize Order", MessageBoxButtons.YesNo) == DialogResult.Yes) { myMessage = SendToBloomberg.EMSXAPI_Modify(OrderRefID, myOrderStr.BBG_Ticker, Convert.ToInt32(myOrderStr.FillAmount)); // Resize the Order SystemLibrary.SQLExecute("Exec sp_ResizeOrder '" + OrderRefID + "', " + myOrderStr.FillAmount.ToString()); myForm.bt_Refresh_Click(null, null); // Update The Positions Table myForm.NeedUpdate = true; // Refresh the Portfolio Tab //myForm.ParentForm1.LoadPortfolioIncr(); // Report what Bloomberg says if (myMessage.Length > 0) { MessageBox.Show("Changed in the Portfolio Management System, but received this messagae from Bloomberg.\r\n\r\n" + myMessage, myOrderStr.Instruction); } } break; case "ResizeToRouted": if (RoutedAmount == 0) { MessageBox.Show("The Order has not been Routed (Routed Amount = 0).\r\n\r\nPlease use the [Delete Order] menu if that is your intention", "Resize order to Routed Amount"); } else if (MessageBox.Show("You are about to Resize the Order for\r\n\r\n" + myOrderStr.Side + " " + myOrderStr.FormattedQuantity + " " + myOrderStr.BBG_Ticker + "\r\n\n" + "To the RoutedAmount of " + myOrderStr.FormattedRoutedAmount + "\r\n\r\n" + "Is this Ok?", "Resize Order", MessageBoxButtons.YesNo) == DialogResult.Yes) { myMessage = SendToBloomberg.EMSXAPI_Modify(OrderRefID, myOrderStr.BBG_Ticker, Convert.ToInt32(myOrderStr.RoutedAmount)); // Resize the Order SystemLibrary.SQLExecute("Exec sp_ResizeOrder '" + OrderRefID + "', " + myOrderStr.RoutedAmount.ToString()); myForm.bt_Refresh_Click(null, null); // Update The Positions Table myForm.NeedUpdate = true; // Refresh the Portfolio Tab //myForm.ParentForm1.LoadPortfolioIncr(); // Report what Bloomberg says if (myMessage.Length > 0) { MessageBox.Show("Changed in the Portfolio Management System, but received this messagae from Bloomberg.\r\n\r\n" + myMessage, myOrderStr.Instruction); } } break; case "ResizeToDouble": Decimal DoubleQuantity = myOrderStr.Quantity * 2; if (MessageBox.Show("You are about to Double the Order for\r\n\r\n" + myOrderStr.Side + " " + myOrderStr.FormattedQuantity + " " + myOrderStr.BBG_Ticker + "\r\n\n" + "Is this Ok?", "Resize Order", MessageBoxButtons.YesNo) == DialogResult.Yes) { myMessage = SendToBloomberg.EMSXAPI_Modify(OrderRefID, myOrderStr.BBG_Ticker, Convert.ToInt32(DoubleQuantity)); // Resize the Order SystemLibrary.SQLExecute("Exec sp_ResizeOrder '" + OrderRefID + "', " + DoubleQuantity.ToString()); myForm.bt_Refresh_Click(null, null); // Update The Positions Table myForm.NeedUpdate = true; // Refresh the Portfolio Tab //myForm.ParentForm1.LoadPortfolioIncr(); // Report what Bloomberg says if (myMessage.Length > 0) { MessageBox.Show("Changed in the Portfolio Management System, but received this messagae from Bloomberg.\r\n\r\n" + myMessage, myOrderStr.Instruction); } } break; case "ResizeOrder": String myValue = myOrderStr.FormattedQuantity; long myQty; String mySql; if (SystemLibrary.InputBox("Resize Order for " + myOrderStr.BBG_Ticker + " from " + myOrderStr.FormattedQuantity, "Change the Size of the Order OR Cancel", ref myValue, myForm.validate_ResizOrder, MessageBoxIcon.Question) == DialogResult.OK) { myQty = SystemLibrary.ToInt32(myValue); if (Math.Sign(myQty) != Math.Sign(myOrderStr.Quantity)) { MessageBox.Show(@"Cannot swap between Buy & Sell.", "Resize aborted"); return; } if (Math.Abs(myQty) < Math.Abs(myOrderStr.FillAmount)) { MessageBox.Show(@"Cannot resize below the Fill Amount of " + myOrderStr.FillAmount.ToString("#,###") + ".", "Resize aborted"); return; } if (Math.Abs(myQty) < Math.Abs(myOrderStr.RoutedAmount)) { MessageBox.Show(@"Cannot resize below the Routed Amount of " + myOrderStr.RoutedAmount.ToString("#,###") + ".", "Resize aborted"); return; } myMessage = SendToBloomberg.EMSXAPI_Modify(OrderRefID, myOrderStr.BBG_Ticker, (Int32)myQty); mySql = "Exec sp_ResizeOrder '" + OrderRefID + "', " + myQty.ToString(); SystemLibrary.SQLExecute(mySql); myForm.bt_Refresh_Click(null, null); // Update The Positions Table myForm.NeedUpdate = true; // Refresh the Portfolio Tab //myForm.ParentForm1.LoadPortfolioIncr(); // Report what Bloomberg says if (myMessage.Length > 0) { MessageBox.Show("Changed in the Portfolio Management System, but received this messagae from Bloomberg.\r\n\r\n" + myMessage, myOrderStr.Instruction); } } break; } } } //dgv_ShowFillsSystemMenuItem_Click()