Example #1
0
        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();
        }
Example #2
0
        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);
                            }
                        }
                    }
                }
            }
        }