private void PriceTicker(PledgeObject p)
        {
            StockObject FoundStock = StockList.FirstOrDefault(x => x.Cusip.ToUpper() == p.Cusip.ToUpper());

            if (FoundStock != null)
            {
                p.Ticker    = FoundStock.Ticker;
                p.LoanValue = p.Quantity * (double)FoundStock.Price;
            }
        }
        private PledgeObject PopulateSlatePledgeObject(string source, string cusip, string ClearingNo, int qty, string pledgeType, bool sendToG1, bool sendToDTC)
        {
            PledgeObject p = new PledgeObject();

            p.PledgeType  = pledgeType;
            p.Source      = source;
            p.DateEntered = DateTime.Now;
            p.EnteredBy   = Environment.UserName;
            p.Processed   = false;
            p.SendToG1    = sendToG1;
            p.SendToDtc   = sendToDTC;
            p.ClearingNo  = ClearingNo;
            p.Cusip       = cusip;
            //p.Ticker = Ticker ?? "";
            p.Quantity = qty;
            //p.LoanValue = LoanValue;
            p.Pledgor       = ClearingNo.TrimStart("0".ToCharArray());
            p.Pledgee       = "981";
            p.DtcStatusCode = "";

            return(p);
        }
        public string PledgeStocks(Dictionary <string, int> CusipQtyList, string source, string clearingNo, bool sendToApex, bool sendToDTC)
        {
            if (!sendToApex && !sendToDTC)
            {
                //Add message if we're not sending to any
                Error += "We must at least send to Apex or Send to DTC (OCC)" + Environment.NewLine;
            }

            if (string.IsNullOrEmpty(source) || string.IsNullOrEmpty(clearingNo) || clearingNo.Length != 4)
            {
                //Add message for criteria not met
                Error += "Source and\\or clearingNo must have a value. Also, ClearingNo should also be 4 char" + Environment.NewLine;
            }

            foreach (var item in CusipQtyList)
            {
                //Add message for items you couldn't send
                if (string.IsNullOrEmpty(item.Key) || item.Value < 1)
                {
                    Error += "Cusip cannot be empty" + Environment.NewLine;
                }
            }

            if (!string.IsNullOrEmpty(Error))
            {
                return(Error);
            }

            int    ctr      = 0;
            string CurrTime = DateTime.Now.ToString("HHmmss");

            foreach (var item in CusipQtyList)
            {
                string cusip = item.Key;
                int    qty   = item.Value;

                PledgeObject p = PopulateSlatePledgeObject(source, cusip, clearingNo, qty, "P", sendToApex, sendToDTC);

                //add Loanvalue and Ticker to PledgeObject
                PriceTicker(p);

                //Set defaults
                int    internalid          = -1;
                string UniqueIdForEID      = "";
                int    UserReferenceNumber = 0;

                if (sendToDTC && sendToApex)
                {
                    Pfac.Insert(p);

                    internalid          = p.PledgeId;
                    UniqueIdForEID      = p.PledgeId.ToString();
                    UserReferenceNumber = p.PledgeId;
                }

                //When not sending to both and only 1 of them, we need to set the ID's since we were getting them from blob.slate.pledge id
                if (!sendToDTC || !sendToApex)
                {
                    internalid     = -1;
                    UniqueIdForEID = CurrTime + ctr.ToString();
                    ctr++;
                    UserReferenceNumber = 199390;       //Current implementation allows only 6 digit number or will crash
                }

                int ReturnedDTCID = 0;

                if (sendToDTC)
                {
                    ReturnedDTCID = PledgeStockToOCC(UserReferenceNumber, cusip, (int)qty, clearingNo);
                }

                int ReturnedG1ID = 0;

                string legalEntity;
                string custodianAccountShortCode;

                switch (clearingNo)
                {
                case "0269": legalEntity = "MS0269";
                    break;

                case "5239": legalEntity = "MS5239";
                    break;

                case "5289": legalEntity = "MS5289";
                    break;

                default: legalEntity = "NA";
                    break;
                }

                custodianAccountShortCode = "DTC" + clearingNo;
                string ctpyExternalId2 = "OCC-" + legalEntity;

                if (sendToApex)
                {
                    //ExternalId2 has to be unique to Apex
                    string EID = "plg_" + UniqueIdForEID + "_" + DateTime.Today.ToString("yyyyMMdd");

                    ReturnedG1ID =
                        tc.CreateTrade(source, internalid, legalEntity,
                                       EID, "CP", "GC", "OCC", ctpyExternalId2, cusip,
                                       DateTime.Today, null, qty, 0, 0, .0000001, Environment.UserName, DateTime.Today, 100, 0,
                                       null, custodianAccountShortCode, null, "OCC", "USD", true, true);
                }

                if (sendToApex && sendToDTC)
                {
                    p.G1Id  = ReturnedG1ID;
                    p.DtcId = ReturnedDTCID;
                    Pfac.Update(p);
                }
            }

            return(Error);
        }
Ejemplo n.º 4
0
 private void PriceTicker(PledgeObject p)
 {
     StockObject FoundStock = StockList.FirstOrDefault(x => x.Cusip.ToUpper() == p.Cusip.ToUpper());
     if (FoundStock != null)
     {
         p.Ticker = FoundStock.Ticker;
         p.LoanValue = p.Quantity * (double)FoundStock.Price;
     }
 }
Ejemplo n.º 5
0
        private PledgeObject PopulateSlatePledgeObject(string source, string cusip, string ClearingNo, int qty, string pledgeType, bool sendToG1, bool sendToDTC)
        {
            PledgeObject p = new PledgeObject();
            p.PledgeType = pledgeType;
            p.Source = source;
            p.DateEntered = DateTime.Now;
            p.EnteredBy = Environment.UserName;
            p.Processed = false;
            p.SendToG1 = sendToG1;
            p.SendToDtc = sendToDTC;
            p.ClearingNo = ClearingNo;
            p.Cusip = cusip;
            //p.Ticker = Ticker ?? "";
            p.Quantity = qty;
            //p.LoanValue = LoanValue;
            p.Pledgor = ClearingNo.TrimStart("0".ToCharArray());
            p.Pledgee = "981";
            p.DtcStatusCode = "";

            return p;
        }