public override void GetCell(CSMAccpostingData data, ref SSMCellValue value, SSMCellStyle style) { var postingData = data.GetAccPosting(); int tradeId = 0, accountNameId = 0; int REVALUATION = 11, IDB_NOSTRO = 33528; String strValue = "Could Not Get Value", tempString; style.kind = eMDataType.M_dNullTerminatedString; if (postingData != null) { if (postingData.fPostingType == REVALUATION) { CSMPosition pos = CSMPosition.GetCSRPosition(postingData.fPositionID); if (pos != null) { CSMPortfolio port = pos.GetPortfolio(); if (port != null) { CSMAmFund fund = CSMAmFund.GetFundFromFolio(port); //GetHedgeFund() if (fund != null) { strValue = GetAccountBookNameForFund(fund); } } } } else { accountNameId = postingData.fAccountNameID; tradeId = postingData.fTradeID; if (tradeId != 0 && accountNameId != 0) { if (accountNameId == IDB_NOSTRO) { strValue = GetNostroIDBAccountBook(postingData.fNostroAccountID, postingData.fAccountNumber); } else { tempString = CSxDataFacade.GetAccountBookName(postingData.fAccountingBookID); if (tempString != null) { strValue = tempString.Substring(0, Math.Min(4, tempString.Length)); } } } } } value.SetString(strValue); }
public string GetAccountBookNameForFund(CSMAmFund fund) { string result = null; int fundFolioCode = fund.GetTradingPortfolio(); string SQLQuery = "select SICOVAM ID, substr(b.name, 1,4) IDB_ACCOUNT_BOOK from FUNDS f, account_book_folio bf , account_book b where b.ID=bf.ACCOUNT_BOOK_ID and record_type=1 and f.TRADINGFOLIO=bf.FOLIO_ID AND f.FUNDTYPE=1"; using (OracleCommand myCommand = new OracleCommand(SQLQuery, DBContext.Connection)) { using (OracleDataReader myReader = myCommand.ExecuteReader()) { if (myReader.Read()) { result = myReader["IDB_ACCOUNT_BOOK"].ToString(); } } } return(result); }
public string GetAccountBookNameForFund(CSMAmFund fund) { string result = ""; int fundFolioCode = fund.GetTradingPortfolio(); string SQLQuery = "select substr(b.name, 1,4) IDB_ACCOUNT_BOOK from account_book_folio bf , account_book b where b.ID=bf.ACCOUNT_BOOK_ID and bf.FOLIO_ID = " + fundFolioCode + " and record_type=1"; using (OracleCommand myCommand = new OracleCommand(SQLQuery, DBContext.Connection)) { using (OracleDataReader myReader = myCommand.ExecuteReader()) { while (myReader.Read()) { result = myReader["IDB_ACCOUNT_BOOK"].ToString(); break; } } } return(result); }
public override void GetCell(CSMAccPostingData data, ref SSMCellValue value, SSMCellStyle style) { using (var log = LogHelper.GetLogger(GetType().Name, MethodBase.GetCurrentMethod().Name)) { style.kind = eMDataType.M_dNullTerminatedString; var accountData = data.GetAccPosting(); var tradeId = accountData.fTradeID; var accountId = 0; SSMFinalPosting _fPosting = data.GetAccPosting(); if (_fPosting != null) { accountId = _fPosting.fAccountNameID; if (_fPosting.fPostingType == 11) { CSMPosition pos = CSMPosition.GetCSRPosition(_fPosting.fPositionID); if (pos != null) { CSMPortfolio port = pos.GetPortfolio(); if (port != null) { CSMAmFund fund = CSMAmFund.GetFundFromFolio(port); if (fund != null) { string accountBookName = GetAccountBookNameForFund(fund); value.SetString(accountBookName); return; } } } return; } } if (tradeId == 0 || accountId == 0) { return; } CSMTransaction trade = CSMTransaction.newCSRTransaction(tradeId); if (trade == null) { return; } //Business Event int type = (int)trade.GetTransactionType(); //Any Posting linked to the IDB Group should have account book 1000 if (_fPosting.fAccountNameID == 33528) { value.SetString(GetNostroIDBAccountBook(_fPosting.fID)); return; } int PostingId = _fPosting.fID; int NostroId = _fPosting.fNostroAccountID; if (NostroId > 0) { int EntityId = 0; if (fDataLoaded == false) { LoadAccountEntities(); } fNostroAndEntity.TryGetValue(NostroId, out EntityId); if (IsIDBGroupEntity(EntityId)) { value.SetString("1000"); return; } } var cacheKey = string.Format("AccountBook_{0}", accountData.fID); var strValue = CacheManager.GetItem <string>(cacheKey); try { if (!string.IsNullOrEmpty(strValue)) { value.SetString(strValue); return; } //if value is not cached already we loaded it strValue = CSxDataFacade.GetAccountBookName(accountData.fAccountingBookID); //Filter on the account defined in the config file if (CSxIslamicInstrumentsHelperCLI.IsForbiddenAccountId(accountId)) { var parentId = 0; try { //parentId = CSxIslamicInstrumentsHelperCLI.GetParentTrade(tradeId); //couponS and redemption sukuk are not taken in account in this function parentId = CSxIdbTradeId.GetParentIDBMergingAllocatedTrade(type, tradeId); } catch (Exception) { log.WriteSystemError("Failed to check if tarde is merged"); } // AccountExceptions.Contains(accountData.fAccountingBookID) //FILTER on merged trades if (parentId != 0) { try { var t = CSMTransaction.newCSRTransaction(tradeId); if (t == null) { throw new Exception("Failed to open trade"); } var fid = 0; //if(CSxIslamicInstrumentsHelperCLI.IsInterFundCashTransferBusinessEvent(type)) //{ // var tr = CSMTransaction.newCSRTransaction(parentId); // if (tr == null) // throw new Exception("Failed to open trade"); // fid = CSxIslamicInstrumentsHelperCLI.GetFundForEntity(tr.GetEntity()); //} //else //{ fid = CSxIslamicInstrumentsHelperCLI.GetFundForEntity(t.GetEntity()); //} CSMAmFund f = CSMInstrument.GetInstance(fid); if (f == null) { throw new Exception("Failed to find fund for settlement entity"); } strValue = CSxDataFacade.GetAccountBookIdForFolio(f.GetTradingPortfolio()); } catch (Exception e) { log.WriteSystemError("Failed to get Account Book Id from Settlement Entity for merged trade {0} : {1}", tradeId, e.Message); } } //if (strValue != null) //{ // //strValue = strValue.Substring(0, Math.Min(4, strValue.Length)); // //we cache the value for next time // CacheManager.SetItem(cacheKey, strValue); //} } if (strValue != null) { strValue = strValue.Substring(0, Math.Min(4, strValue.Length)); value.SetString(strValue); } } catch (Exception e) { log.WriteSystemError("Failed to get Account Book Name for trade {0} : {1}", tradeId, e.Message); if (IDB.IslamicInstruments.CSxIslamicInstrumentsHelperCLI.IsInGUIMode()) { MessageBox.Show("Failed to get Account Book Name for trade " + tradeId + " Error:" + e.Message); } } } }