public void ProcessMergeInstanceDuration_Rule(List <ColumnInstantDurationMap> ColumnMaps) { //columnMaps = new List<ColumnInstantDurationMap>(); if (this.IsUncatReport) { this.MergeColumnsWithSameContext(); } else { List <InstanceReportColumn> instanceColumns = this.Columns.FindAll(c => c.MyPeriodType == Element.PeriodType.instant); List <InstanceReportColumn> durationColumns = this.Columns.FindAll(c => c.MyPeriodType == Element.PeriodType.duration); foreach (InstanceReportColumn instCol in instanceColumns) { int ic = this.Columns.IndexOf(instCol); List <InstanceReportColumn> durCols = durationColumns.FindAll(dc => ColumnsShouldBeMerged(dc, instCol)); foreach (InstanceReportColumn durCol in durCols) { int dc = this.Columns.IndexOf(durCol); TimeSpan timeBucketSize = durCol.MyContextProperty.PeriodEndDate - durCol.MyContextProperty.PeriodStartDate; ColumnInstantDurationMap instanceColMap = new ColumnInstantDurationMap(ic, dc, timeBucketSize); ColumnMaps.Add(instanceColMap); } } } this.SynchronizeGrid(); }
private void ProcessMissingMapsMultiCurrency(List <ColumnInstantDurationMap> columnMaps) { if (!this.ContainMultiCurrencies()) { return; } for (int durIndex = 0; durIndex < this.Columns.Count; durIndex++) { InstanceReportColumn ircDuration = this.Columns[durIndex]; if (ircDuration.MyPeriodType != Element.PeriodType.duration) { continue; } if (!string.Equals(ircDuration.CurrencyCode, InstanceUtils.USDCurrencyCode, StringComparison.CurrentCultureIgnoreCase)) { continue; } for (int instantIndex = 0; instantIndex < this.Columns.Count; instantIndex++) { InstanceReportColumn ircInstant = this.Columns[instantIndex]; if ((ircInstant.CurrencyCode.ToLower() == "usd" || String.IsNullOrEmpty(ircInstant.CurrencyCode)) && ircInstant.MyPeriodType == Element.PeriodType.instant && ircInstant.MyContextProperty.PeriodStartDate == ircDuration.MyContextProperty.PeriodEndDate) { if (ircDuration.SegmentAndScenarioEquals(ircInstant)) { bool found = false; ColumnInstantDurationMap newMap = new ColumnInstantDurationMap(instantIndex, durIndex, ircDuration.ReportingSpan); foreach (ColumnInstantDurationMap map in columnMaps) { if (map.DurationColumnIndex == durIndex && map.InstantColumnIndex == instantIndex) { found = true; break; } } if (!found) { columnMaps.Add(newMap); } } } } } }