/// <summary> /// todoComment /// </summary> /// <param name="masterRow"></param> /// <param name="condition"></param> /// <param name="code"></param> /// <returns></returns> public Boolean SavePrecalculation(int masterRow, String condition, String code) { Boolean ReturnValue; TVariant[] precalculatedColumns; TVariant[] precalculatedDescr = new TVariant[2]; TVariant[] header = new TVariant[2]; Boolean display; Boolean hideRow = false; Boolean debit_credit_indicator; Boolean param_hide_empty_lines = false; int counter; String values; TRptDataCalcValue rptDataCalcValue; List <TRptValue> rptGrpValue; int maxDisplayColumns; int numberColumns; int ColumnPartnerName = -1; int ColumnPartnerKey = -1; TResult newRow; ReturnValue = false; condition = condition.ToLower(); maxDisplayColumns = Results.GetMaxDisplayColumns(); numberColumns = maxDisplayColumns; while (Parameters.Exists("param_calculation", numberColumns, -1)) { numberColumns = numberColumns + 1; } precalculatedColumns = new TVariant[numberColumns]; for (counter = 0; counter <= maxDisplayColumns - 1; counter += 1) { precalculatedColumns[counter] = new TVariant(); } if (!Parameters.Exists("debit_credit_indicator", -1, Depth)) { debit_credit_indicator = true; } else { debit_credit_indicator = Parameters.Get("debit_credit_indicator", -1, Depth).ToBool(); } if (Parameters.Get("param_hide_empty_lines").ToString() == "true") { param_hide_empty_lines = true; } if (Depth > 0) { if (debit_credit_indicator) { Parameters.Add("debit_credit_indicator", true, -1, -1, null, null, ReportingConsts.CALCULATIONPARAMETERS); } else { Parameters.Add("debit_credit_indicator", false, -1, -1, null, null, ReportingConsts.CALCULATIONPARAMETERS); } values = Parameters.Get("ControlSource", ReportingConsts.ALLCOLUMNS, Depth).ToString(); if (values == "calculation") { // first calculate the invisible helper Columns for (counter = maxDisplayColumns; counter <= numberColumns - 1; counter += 1) { column = counter; precalculatedColumns[column] = Precalculate(precalculatedColumns); } // calculate the visible Columns for (counter = 0; counter <= maxDisplayColumns - 1; counter += 1) { column = counter; precalculatedColumns[column] = Precalculate(precalculatedColumns); if (param_hide_empty_lines) { // if this parameter is set, hide the row when all columns are empty, except // of the column partner name and partner key. TParameter CurrentParameter = Parameters.GetParameter("param_calculation", column, -1, eParameterFit.eExact); if (CurrentParameter.value.ToString() == "Partner Name") { ColumnPartnerName = CurrentParameter.column; } else if (CurrentParameter.value.ToString() == "Partner Key") { ColumnPartnerKey = CurrentParameter.column; } } } if (param_hide_empty_lines) { hideRow = IsRowEmpty(ref precalculatedColumns, ColumnPartnerName, ColumnPartnerKey, 0, maxDisplayColumns - 1); } } else { // first calculate the invisible helper Columns for (counter = maxDisplayColumns; counter <= numberColumns - 1; counter += 1) { CalculateColumnValue(counter, ref precalculatedColumns); } for (counter = 0; counter <= maxDisplayColumns - 1; counter += 1) { CalculateColumnValue(counter, ref precalculatedColumns); } } rptGrpValue = (List <TRptValue>)Parameters.GetGrpValue("ControlSource", ReportingConsts.HEADERCOLUMN + 1, Depth, eParameterFit.eExact); if (rptGrpValue != null) { Parameters.Add("headerVISIBLE", new TVariant(true), -1, Depth); column = ReportingConsts.HEADERCOLUMN + 1; rptDataCalcValue = new TRptDataCalcValue(this); header[0] = rptDataCalcValue.Calculate(rptGrpValue); } rptGrpValue = (List <TRptValue>)Parameters.GetGrpValue("ControlSource", ReportingConsts.HEADERCOLUMN + 2, Depth, eParameterFit.eExact); if (rptGrpValue != null) { Parameters.Add("headerVISIBLE", new TVariant(true), -1, Depth); column = ReportingConsts.HEADERCOLUMN + 2; rptDataCalcValue = new TRptDataCalcValue(this); header[1] = rptDataCalcValue.Calculate(rptGrpValue); } for (counter = 0; counter <= 1; counter += 1) { column = counter - 10; rptGrpValue = (List <TRptValue>)Parameters.GetGrpValue("ControlSource", column, Depth, eParameterFit.eExact); if (rptGrpValue != null) { rptDataCalcValue = new TRptDataCalcValue(this); precalculatedDescr[counter] = rptDataCalcValue.Calculate(rptGrpValue); } } debit_credit_indicator = Parameters.Get("debit_credit_indicator", column, Depth).ToBool(); display = true; newRow = Results.AddRow(masterRow, LineId, display, Depth, code, condition, debit_credit_indicator, header, precalculatedDescr, precalculatedColumns); ReturnValue = true; if (condition.Length != 0) { column = -1; display = EvaluateCondition(condition); } if (Parameters.Exists("DONTDISPLAYROW") && (Parameters.Get("DONTDISPLAYROW").ToBool() == true)) { display = false; } if ((newRow != null) && ((!display) || hideRow)) { newRow.display = false; ReturnValue = false; } } return(ReturnValue); }