By Philippe Bonneau on
12/7/2014 8:01 PM
The root cause of needing this information is that we want to display user portfolio columns on which we need to calculate aggregation. I've already seen some client implementation on which the aggregation is calculated when the callback CSRPortfolioColumn::GetPositionCell is called, when detecting any change on the GetRefreshVersion of the same class.
The advantage is that this code is called only if the column is displayed, but unfortunately, that's not the right way to do it and for this reason:
- on GetPositionCell, we don't know at which level we need to calculate the aggregation and the parsing of all folios is then needed. When many folios are already loaded, it decreases dramatically the performances and the software freezes in most cases.
- on the CSRGlobalFunctions, Misys provides a method, StartPortfolioAddition, which is called each time that the core engine needs to make an aggregation. For instance, changing the currency of a folio will call this method, with the folioId corresponding to the root folio on which the aggregation needs to be recalculated.
In the last case, the method does not give the list of columns on which we need to aggregate. To detect it, Misys provides unfortunately no official and supported method.
The goal of this post is to give the way to get it, in all Sophis versions.