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 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); } } } }