public void PerformSpeculativeFlagging(List <EQSpeculativeVo> eqSpeculativeVoList) { EQSpeculativeVo eqSpeculativeVo = new EQSpeculativeVo(); EQTransactionVo eqTransactionVo = new EQTransactionVo(); List <EQTransactionVo> eqTransactionVoList = new List <EQTransactionVo>(); int speculativeGroupCount = eqSpeculativeVoList.Count; int speculativeTransactionCount = 0; float buyQuantity = 0; float sellQuantity = 0; float cummBuyQuantity = 0; float cummSellQuantity = 0; int i = 0; int j = 0; for (i = 0; i < speculativeGroupCount; i++) { eqTransactionVoList = new List <EQTransactionVo>(); speculativeTransactionCount = eqSpeculativeVoList[i].EQTransactionVoList.Count; for (j = 0; j < speculativeTransactionCount; j++) { if (eqSpeculativeVoList[i].EQTransactionVoList[j].BuySell == "B") { buyQuantity = buyQuantity + eqSpeculativeVoList[i].EQTransactionVoList[j].Quantity; } else { sellQuantity = sellQuantity + eqSpeculativeVoList[i].EQTransactionVoList[j].Quantity; } } if (buyQuantity == sellQuantity) { for (j = 0; j < speculativeTransactionCount; j++) { eqSpeculativeVoList[i].EQTransactionVoList[j].IsSpeculative = 1; } } else if ((buyQuantity > 0 && sellQuantity == 0) || (sellQuantity > 0 && buyQuantity == 0)) { for (j = 0; j < speculativeTransactionCount; j++) { eqSpeculativeVoList[i].EQTransactionVoList[j].IsSpeculative = 0; } } else if (buyQuantity > sellQuantity) { cummSellQuantity = sellQuantity; cummBuyQuantity = 0; for (j = 0; j < speculativeTransactionCount; j++) { if (eqSpeculativeVoList[i].EQTransactionVoList[j].BuySell == "S") { eqSpeculativeVoList[i].EQTransactionVoList[j].IsSpeculative = 1; } else { cummBuyQuantity = cummBuyQuantity + eqSpeculativeVoList[i].EQTransactionVoList[j].Quantity; if (cummBuyQuantity <= sellQuantity) { eqSpeculativeVoList[i].EQTransactionVoList[j].IsSpeculative = 1; cummSellQuantity = cummSellQuantity - eqSpeculativeVoList[i].EQTransactionVoList[j].Quantity; } else if (cummBuyQuantity > sellQuantity && cummSellQuantity > 0) { eqTransactionVo = new EQTransactionVo(); eqTransactionVo = (eqSpeculativeVoList[i].EQTransactionVoList[j]).Clone(); eqTransactionVo.IsSpeculative = 1; eqTransactionVo.IsSplit = 1; eqTransactionVo.Quantity = cummSellQuantity; eqTransactionVo.SplitTransactionId = eqTransactionVo.TransactionId; eqTransactionVoList.Add(eqTransactionVo); eqSpeculativeVoList[i].EQTransactionVoList[j].IsSpeculative = 0; eqSpeculativeVoList[i].EQTransactionVoList[j].IsSplit = 1; eqSpeculativeVoList[i].EQTransactionVoList[j].Quantity = eqSpeculativeVoList[i].EQTransactionVoList[j].Quantity - cummSellQuantity; cummSellQuantity = 0; } else { eqSpeculativeVoList[i].EQTransactionVoList[j].IsSpeculative = 0; } } } } else { cummBuyQuantity = buyQuantity; cummSellQuantity = 0; for (j = 0; j < speculativeTransactionCount; j++) { if (eqSpeculativeVoList[i].EQTransactionVoList[j].BuySell == "B") { eqSpeculativeVoList[i].EQTransactionVoList[j].IsSpeculative = 1; } else { cummSellQuantity = cummSellQuantity + eqSpeculativeVoList[i].EQTransactionVoList[j].Quantity; if (cummSellQuantity <= buyQuantity) { eqSpeculativeVoList[i].EQTransactionVoList[j].IsSpeculative = 1; cummBuyQuantity = cummBuyQuantity - eqSpeculativeVoList[i].EQTransactionVoList[j].Quantity; } else if (cummSellQuantity > buyQuantity && cummBuyQuantity > 0) { eqTransactionVo = new EQTransactionVo(); eqTransactionVo = (eqSpeculativeVoList[i].EQTransactionVoList[j]).Clone(); eqTransactionVo.IsSpeculative = 1; eqTransactionVo.IsSplit = 1; eqTransactionVo.Quantity = cummBuyQuantity; eqTransactionVo.SplitTransactionId = eqTransactionVo.TransactionId; eqTransactionVoList.Add(eqTransactionVo); eqSpeculativeVoList[i].EQTransactionVoList[j].IsSpeculative = 0; eqSpeculativeVoList[i].EQTransactionVoList[j].IsSplit = 1; eqSpeculativeVoList[i].EQTransactionVoList[j].Quantity = eqSpeculativeVoList[i].EQTransactionVoList[j].Quantity - cummBuyQuantity; cummBuyQuantity = 0; } else { eqSpeculativeVoList[i].EQTransactionVoList[j].IsSpeculative = 0; } } } } UpdateSpeculativeTrades(eqSpeculativeVoList[i].EQTransactionVoList); AddEquityTransaction(eqTransactionVoList, 1665); } }
public List <EQSpeculativeVo> GetEquitySpeculativeTradeGroups(DateTime tradeDate) { List <EQSpeculativeVo> eqSpeculativeVoList = new List <EQSpeculativeVo>(); EQSpeculativeVo eqSpeculativeVo = new EQSpeculativeVo(); Database db; DbCommand getEquitySpeculativeTradeGroupsCmd; DataSet dsEquitySpeculativeTradeGroups; DataTable dtEquitySpeculativeTradeGroups; try { db = DatabaseFactory.CreateDatabase("wealtherp"); getEquitySpeculativeTradeGroupsCmd = db.GetStoredProcCommand("SP_GetEquityTradeGroups"); db.AddInParameter(getEquitySpeculativeTradeGroupsCmd, "@Trade_Date", DbType.String, tradeDate); dsEquitySpeculativeTradeGroups = db.ExecuteDataSet(getEquitySpeculativeTradeGroupsCmd); dtEquitySpeculativeTradeGroups = dsEquitySpeculativeTradeGroups.Tables[0]; eqSpeculativeVoList = new List <EQSpeculativeVo>(); foreach (DataRow dr in dtEquitySpeculativeTradeGroups.Rows) { eqSpeculativeVo = new EQSpeculativeVo(); if (dr["C_CustomerId"].ToString() != null && dr["C_CustomerId"].ToString() != string.Empty) { eqSpeculativeVo.CustomerId = int.Parse(dr["C_CustomerId"].ToString()); } if (dr["PEM_ScripCode"].ToString() != null && dr["PEM_ScripCode"].ToString() != string.Empty) { eqSpeculativeVo.ScripCode = int.Parse(dr["PEM_ScripCode"].ToString()); } if (dr["TradeDate"].ToString() != null && dr["TradeDate"].ToString() != string.Empty) { eqSpeculativeVo.Date = dr["TradeDate"].ToString(); } if (dr["CETA_AccountId"].ToString() != null && dr["CETA_AccountId"].ToString() != string.Empty) { eqSpeculativeVo.AccountId = int.Parse(dr["CETA_AccountId"].ToString()); } eqSpeculativeVo.BrokerCode = dr["XB_BrokerCode"].ToString(); eqSpeculativeVo.Exchange = dr["XE_ExchangeCode"].ToString(); eqSpeculativeVo.EQTransactionVoList = GetEquityTransactionsForSpeculativeFlagging(eqSpeculativeVo.CustomerId, eqSpeculativeVo.AccountId, eqSpeculativeVo.ScripCode, eqSpeculativeVo.BrokerCode, eqSpeculativeVo.Date, eqSpeculativeVo.Exchange); eqSpeculativeVoList.Add(eqSpeculativeVo); } } catch (BaseApplicationException Ex) { throw Ex; } catch (Exception Ex) { BaseApplicationException exBase = new BaseApplicationException(Ex.Message, Ex); NameValueCollection FunctionInfo = new NameValueCollection(); FunctionInfo.Add("Method", "EQSpeculativeDao.cs:GetEquitySpeculativeTradeGroups()"); object[] objects = new object[2]; objects[0] = eqSpeculativeVoList; FunctionInfo = exBase.AddObject(FunctionInfo, objects); exBase.AdditionalInformation = FunctionInfo; ExceptionManager.Publish(exBase); throw exBase; } return(eqSpeculativeVoList); }