示例#1
0
        /// <summary>
        /// This procedure uses the calculation columns,
        /// and splits them each up into 12 columns, for each period
        ///
        /// </summary>
        /// <returns>void</returns>
        protected void InitMultiPeriodColumns()
        {
            System.Int32 MaxDisplayColumns;
            System.Int32 NumberColumns;
            System.Int32 Counter;
            System.Int32 Month;
            System.Int32 NewColumn;
            TParameterList TempParameters;
            String Formula;
            System.Int32 CurrentPos;
            System.Int32 NumberPos;
            System.Int32 ColumnNumber;
            String Numberstring;

            // then each column must be written back, 12 times
            // the references must be changed to other columns
            // what about ledger sums, etc?
            MaxDisplayColumns = Parameters.Get("MaxDisplayColumns").ToInt();
            NumberColumns = MaxDisplayColumns;

            while (Parameters.Exists("param_calculation", NumberColumns))
            {
                NumberColumns = NumberColumns + 1;
            }

            // the current column calculation settings must be saved somewhere
            TempParameters = new TParameterList();

            for (Counter = 0; Counter <= NumberColumns - 1; Counter++)
            {
                TempParameters.Copy(Parameters, Counter, -1, eParameterFit.eBestFit, -1);
            }

            // clear the current column settings
            for (Counter = 0; Counter <= NumberColumns - 1; Counter++)
            {
                Parameters.RemoveColumn(Counter);
            }

            for (Counter = 0; Counter <= NumberColumns - 1; Counter++)
            {
                //TODO: Calendar vs Financial Date Handling - Check if this should use number of financial perids and not month
                for (Month = 1; Month <= 12; Month++)
                {
                    NewColumn = Counter * 13 + Month - 1;
                    Parameters.Copy(TempParameters, Counter, -1, eParameterFit.eExact, NewColumn);
                    Parameters.Add("param_column_period_i", new TVariant(Month), NewColumn);
                    Parameters.Add("param_start_period_i", new TVariant(Month), NewColumn);
                    Parameters.Add("param_end_period_i", new TVariant(Month), NewColumn);
                    Parameters.Add("param_ytd", new TVariant(false), NewColumn);

                    if (Parameters.Exists("FirstColumn", NewColumn))
                    {
                        Parameters.Add("FirstColumn", new TVariant(Parameters.Get("FirstColumn", NewColumn).ToInt() * 13 + Month - 1), NewColumn);
                    }

                    if (Parameters.Exists("SecondColumn", NewColumn))
                    {
                        Parameters.Add("SecondColumn", new TVariant(Parameters.Get("SecondColumn", NewColumn).ToInt() * 13 + Month - 1), NewColumn);
                    }

                    if (Parameters.Exists("param_formula", NewColumn))
                    {
                        Formula = Parameters.Get("param_formula", NewColumn).ToString();

                        // replace column(x) with column(mul(13,x))
                        CurrentPos = 0;
                        CurrentPos = Formula.ToLower().IndexOf("column(", CurrentPos);

                        while (CurrentPos != -1)
                        {
                            NumberPos = CurrentPos + ("column(").Length;
                            Numberstring = Formula.Substring(NumberPos, Formula.IndexOf(')', NumberPos) - NumberPos);
                            ColumnNumber = Convert.ToInt32(Numberstring);
                            Formula =
                                Formula.Substring(0,
                                    NumberPos) + "mul(13," + ColumnNumber.ToString() + ')' + Formula.Substring(Formula.IndexOf(')', NumberPos));
                            CurrentPos = Formula.ToLower().IndexOf("column(", CurrentPos + 1);
                        }

                        Parameters.Add("param_formula", new TVariant(Formula), NewColumn);
                    }
                }

                //TODO: Calendar vs Financial Date Handling - Check if this should use financial year/periods and not assume calendar
                // the ytd column
                NewColumn = Counter * 13 + 12;
                Parameters.Copy(TempParameters, Counter, -1, eParameterFit.eExact, NewColumn);
                Parameters.Add("param_column_period_i", new TVariant(12), NewColumn);
                Parameters.Add("param_ytd", new TVariant(true), NewColumn);

                // TODO: also apply the formula/ reference changes to columns!!!!
            }

            Parameters.Add("MaxDisplayColumns", NumberColumns * 13);
        }
示例#2
0
        /// <summary>
        /// Sets the selected values in the controls, using the parameters loaded from a file
        ///
        /// </summary>
        /// <param name="AColumnParameters">List with the current columns</param>
        /// <param name="AParameters"></param>
        /// <returns>the MaxDisplayColumns number</returns>
        public static System.Int32 SetControls(ref TParameterList AColumnParameters, ref TParameterList AParameters)
        {
            System.Int32 MaxDisplayColumns = 0;

            /* copy values for columns to the current set of parameters */
            AColumnParameters.Clear();

            if (AParameters.Exists("MaxDisplayColumns"))
            {
                MaxDisplayColumns = AParameters.Get("MaxDisplayColumns").ToInt();
            }

            AColumnParameters.Add("MaxDisplayColumns", MaxDisplayColumns);

            for (int Counter = 0; Counter <= MaxDisplayColumns - 1; Counter += 1)
            {
                AColumnParameters.Copy(AParameters, Counter, -1, eParameterFit.eExact, Counter);
            }

            return MaxDisplayColumns;
        }