/// <summary>
        /// Generates the extra cost lines for the attendees in the report.
        /// </summary>
        /// <param name="ASituation"></param>
        /// <param name="AConferenceKey"></param>
        /// <param name="APartnerKey"></param>
        /// <returns></returns>
        public bool GetExtraCosts(ref TRptSituation ASituation, long AConferenceKey, long APartnerKey)
        {
            TExtentedSituation ExtentedSituation = new TExtentedSituation(ASituation);
            int ChildRowIndex = ExtentedSituation.GetRunningCode();

            int numLines = AddExtraCostLines(ref ASituation, AConferenceKey, APartnerKey,
                ChildRowIndex - 2, 3, ChildRowIndex);

            ExtentedSituation.SetRunningCode(ChildRowIndex + numLines);

            if (numLines > 0)
            {
                FNumExtraCostLines = FNumExtraCostLines + numLines;
            }

            FExtraCostLinePrinted = true;
            return true;
        }
        /// <summary>
        /// Generates the attendee sign off lines for each field in the report.
        /// </summary>
        /// <param name="ASituation"></param>
        /// <param name="AFieldName"></param>
        /// <returns></returns>
        public bool PrintAttendanceSignOffLines(ref TRptSituation ASituation, String AFieldName)
        {
            TExtentedSituation ExtentedSituation = new TExtentedSituation(ASituation);
            int ChildRowIndex = ExtentedSituation.GetRunningCode();

            AddAttendanceSignOffLines(ref ASituation, FMasterRowIndex, 1, ChildRowIndex, AFieldName);

            // 21 rows were added
            ExtentedSituation.SetRunningCode(ChildRowIndex + 21);
            return true;
        }
        /// <summary>
        /// Prints an empty line to the report
        /// </summary>
        /// <param name="ASituation"></param>
        /// <returns></returns>
        public bool PrintEmptyLineInFieldReport(ref TRptSituation ASituation)
        {
            TExtentedSituation ExtentedSituation = new TExtentedSituation(ASituation);
            int ChildRowIndex = ExtentedSituation.GetRunningCode();

            //AddEmptyRowToResults(ref ASituation, FMasterRowIndex, 2, ChildRowIndex++);
            AddEmptyRowToResults(ref ASituation, ChildRowIndex - 1, 1, ChildRowIndex);

            ++ChildRowIndex;

            ExtentedSituation.SetRunningCode(ChildRowIndex);

            return true;
        }
        /// <summary>
        /// Generates the financial lines in the report for each field
        /// </summary>
        /// <param name="ASituation"></param>
        /// <param name="AFieldName"></param>
        /// <returns></returns>
        public bool PrintFieldFinancialCosts(ref TRptSituation ASituation, String AFieldName)
        {
            bool HeaderAdded = false;

            TExtentedSituation ExtentedSituation = new TExtentedSituation(ASituation);
            int ChildRowIndex = ExtentedSituation.GetRunningCode();

            int NumberOfEntriesPerField = GetNumberOfEntriesPerField(AFieldName) + FInvisibleRowCounter;

            if (FExtraCostLinePrinted)
            {
                FMasterRowIndex = ChildRowIndex - NumberOfEntriesPerField * 2 - FNumExtraCostLines - 1;
            }
            else
            {
                FMasterRowIndex = ChildRowIndex - NumberOfEntriesPerField - 1;
            }

            if (AFieldName == "REPORT SUMMARY")
            {
                FMasterRowIndex = ChildRowIndex - 1;
            }

            foreach (DataRow ResultRow in FResultDataTable.Rows)
            {
                if (AFieldName == (String)ResultRow["Field"])
                {
                    if (!HeaderAdded)
                    {
                        AddNewFieldNameToResults(AFieldName, FMasterRowIndex, 2, ChildRowIndex, ref ASituation);

                        ChildRowIndex = ChildRowIndex + 3;
                        HeaderAdded = true;
                    }

                    AddFinancialRowToResults(ResultRow, FMasterRowIndex, 2, ChildRowIndex++, ref ASituation);
                }
            }

            AddEmptyRowToResults(ref ASituation, FMasterRowIndex, 2, ChildRowIndex++);

            ExtentedSituation.SetRunningCode(ChildRowIndex);

            FNumExtraCostLines = 0;

            return true;
        }