/// <summary>
 /// Set the given DateTime control to be blank instead of
 /// DateTime.Now if the value is not specified.
 /// </summary>
 private void SetdtpControlManual(Ict.Petra.Client.CommonControls.TtxtPetraDate AControl,
                                  TVariant AValue)
 {
     if (AValue.IsZeroOrNull())
     {
         AControl.Date = null;
     }
 }
Exemple #2
0
        /// <summary>
        /// todoComment
        /// </summary>
        /// <param name="precalculatedColumns"></param>
        /// <returns></returns>
        public TVariant Precalculate(TVariant[] precalculatedColumns)
        {
            String strCalculation;
            TRptDataCalcCalculation rptDataCalcCalculation;
            TRptCalculation         rptCalculation;

            TVariant ReturnValue = new TVariant();

            // calculation is used for display in the GUI, formula is used for adding ledgers
            if ((!GetParameters().Exists("param_calculation", column, Depth)))
            {
                return(ReturnValue);
            }

            if (GetParameters().Exists("param_formula", column, Depth))
            {
                strCalculation = GetParameters().Get("param_formula", column, Depth).ToString();
            }
            else
            {
                strCalculation = GetParameters().Get("param_calculation", column, Depth).ToString();
            }

            rptCalculation = ReportStore.GetCalculation(CurrentReport, strCalculation);

            if (rptCalculation == null)
            {
                ReturnValue = EvaluateFunctionCalculation(strCalculation, precalculatedColumns);
            }
            else
            {
                rptDataCalcCalculation = new TRptDataCalcCalculation(this);

                if (!rptDataCalcCalculation.EvaluateCalculationFunction(rptCalculation.rptGrpQuery, ref precalculatedColumns, ref ReturnValue))
                {
                    ReturnValue = rptDataCalcCalculation.EvaluateCalculationAll(rptCalculation,
                                                                                null,
                                                                                rptCalculation.rptGrpTemplate,
                                                                                rptCalculation.rptGrpQuery).VariantValue;

                    if (ReturnValue.IsZeroOrNull())
                    {
                        ReturnValue.ApplyFormatString(rptCalculation.strReturnsFormat);
                        return(ReturnValue);
                    }

                    // Removed some code from here due to Bug 3081 Reports crash if data contains the word SELECT
                    // Even if there were a case for running SQL at this point, it wouldn't work anyway due
                    // to the "" parameter in the call to DatabaseConnection.SelectDT().
                }

                ReturnValue.ApplyFormatString(rptCalculation.strReturnsFormat);
            }

            return(ReturnValue);
        }
Exemple #3
0
        /// <summary>
        /// returns true if the value is zero or null
        /// </summary>
        public bool IsZeroOrNull()
        {
            if (IsVariant)
            {
                return(FVariantValue.IsZeroOrNull());
            }
            TVariant v = new TVariant(this.FSQLStmt);

            return(v.IsZeroOrNull());
        }
Exemple #4
0
        /// <summary>
        /// Reads the selected values from the controls,
        /// and stores them into the parameter system of FCalculator
        ///
        /// </summary>
        /// <param name="ACalculator"></param>
        /// <param name="AReportAction"></param>
        /// <returns>void</returns>
        public void ReadControls(TRptCalculator ACalculator, TReportActionEnum AReportAction)
        {
            System.Int32 MaxDisplayColumns;

            MaxDisplayColumns = TUC_ColumnHelper.ReadControls(ref FColumnParameters, ref ACalculator);

            FPetraUtilsObject.FMaxDisplayColumns = MaxDisplayColumns;

            for (int Counter = 0; Counter <= FColumnParameters.Get("MaxDisplayColumns").ToInt() - 1; Counter += 1)
            {
                String SelectedLedgers = FColumnParameters.Get("param_selected_ledgers", Counter).ToString(false);

                if (SelectedLedgers.Length != 0)
                {
                    ACalculator.AddColumnFunctionLedgers(Counter, "add",
                                                         StringHelper.StrSplit(SelectedLedgers, ","),
                                                         FColumnParameters.Get("param_calculation", Counter).ToString(), FColumnParameters.Get("param_ytd", Counter).ToBool());
                }
            }

            // set the global param_ytd; that is needed for formatting the header of some reports
            String ytdMixed = "";

            for (int Counter = 0; Counter <= FColumnParameters.Get("MaxDisplayColumns").ToInt() - 1; ++Counter)
            {
                TVariant ParamYtd = FColumnParameters.Get("param_ytd", Counter);

                if (!ParamYtd.IsZeroOrNull())
                {
                    if (ytdMixed.Length == 0)
                    {
                        ytdMixed = ParamYtd.ToString();
                    }

                    if (ParamYtd.ToString() != ytdMixed)
                    {
                        ytdMixed = "mixed";
                    }
                }
            }

            if (ytdMixed.Length != 0)
            {
                ACalculator.AddParameter("param_ytd", ytdMixed);
            }
        }
Exemple #5
0
        /// <summary>
        /// todoComment
        /// </summary>
        /// <param name="precalculatedColumns"></param>
        /// <returns></returns>
        public TVariant Precalculate(TVariant[] precalculatedColumns)
        {
            TVariant ReturnValue;
            String   strCalculation;
            TRptDataCalcCalculation rptDataCalcCalculation;
            TRptCalculation         rptCalculation;
            DataTable tab;

            ReturnValue = new TVariant();

            // calculation is used for display in the GUI, formula is used for adding ledgers
            if ((!GetParameters().Exists("param_calculation", column, Depth)))
            {
                return(ReturnValue);
            }

            if (GetParameters().Exists("param_formula", column, Depth))
            {
                strCalculation = GetParameters().Get("param_formula", column, Depth).ToString();
            }
            else
            {
                strCalculation = GetParameters().Get("param_calculation", column, Depth).ToString();
            }

            rptCalculation = ReportStore.GetCalculation(CurrentReport, strCalculation);

            if (rptCalculation == null)
            {
                ReturnValue = EvaluateFunctionCalculation(strCalculation, precalculatedColumns);
            }
            else
            {
                rptDataCalcCalculation = new TRptDataCalcCalculation(this);

                if (!rptDataCalcCalculation.EvaluateCalculationFunction(rptCalculation.rptGrpQuery, ref precalculatedColumns, ref ReturnValue))
                {
                    ReturnValue = rptDataCalcCalculation.EvaluateCalculationAll(rptCalculation,
                                                                                null,
                                                                                rptCalculation.rptGrpTemplate,
                                                                                rptCalculation.rptGrpQuery);

                    if (ReturnValue.IsZeroOrNull())
                    {
                        ReturnValue.ApplyFormatString(rptCalculation.strReturnsFormat);
                        return(ReturnValue);
                    }

                    int SelectPos = ReturnValue.ToString().ToUpper().IndexOf("SELECT");

                    if ((SelectPos >= 0) && (SelectPos <= 3))
                    {
                        // this is an sql statement and not a function result
                        tab = DatabaseConnection.SelectDT(ReturnValue.ToString(), "", DatabaseConnection.Transaction);

                        if (tab.Rows.Count > 0)
                        {
                            if (tab.Rows[0][0].GetType() == typeof(String))
                            {
                                ReturnValue = new TVariant(Convert.ToString(tab.Rows[0][0]));
                            }
                            else
                            {
                                ReturnValue = new TVariant(tab.Rows[0][0]);
                            }
                        }
                    }
                }

                ReturnValue.ApplyFormatString(rptCalculation.strReturnsFormat);
            }

            return(ReturnValue);
        }