Accounting Software
Small Business Software Estimating Software
Time Tracking SoftwareTime Management SoftwareTime Billing SoftwareContact Management SoftwareCustomer Management SoftwareProject Management SoftwareBusiness Management Software

Report Tables (Header)

Link to: source code | source 2 | source 3 | source 4 | tables directory

Copyright Turtle Creek Software 1996-2006. All Rights Reserved.

This class manages accounting report tables for the Goldenseal accounting software,
small business management software, construction project management software and
construction estimating software.

class CReportTable : public CDataTable,
public CReportInfoOwner,
public CTCS_Listener
{
public:

enum
{
class_ID = 'RATT',

cRowTypeOffset = 1,
cClassIDOffset = 2,
cItemIDOffset = 3
};
CReportTable(const SPaneInfo &inPaneInfo, const SViewInfo &inViewInfo,
CInputStream &stream);
virtual ~CReportTable();

static Boolean Func_PrepBreakdownArray(DB_PersistentObject *object,
TBreakdownInfoArray *breakdownArray);

static Boolean Func_FillSimpleReportArray(DB_PersistentObject *object,
TReportRowArray *reportRowArray, SReportInfo *matchInfo);
//static Boolean Func_FillSpecialReportArray(DB_PersistentObject *object,
// TReportRowArray *reportRowArray, DBid *reportID, TagType *breakdownTag);
//static Boolean Func_FillSpecialBreakdownArray(DB_PersistentObject *object,
// TBreakdownInfoArray *breakdownArray, DBid *reportID, TagType *breakdownTag);
static Boolean Func_FillBreakdownArray(DB_PersistentObject *object,
TBreakdownInfoArray *breakdownArray, SReportInfo *matchInfo,
TagType *breakdownTag, DBLongClass *accountClass);
static Boolean Func_FillDateBreakdownArray(DB_PersistentObject *object,
TBreakdownInfoArray *breakdownArray, SReportInfo *matchInfo);
static Boolean Func_FillTimeBreakdownArray(DB_PersistentObject *object,
TBreakdownInfoArray *breakdownArray, SReportInfo *matchInfo);
static Boolean Func_FillEnumBreakdownArray(DB_PersistentObject *object,
TBreakdownInfoArray *breakdownArray, SReportInfo *matchInfo);
static Boolean Func_FillMixedBreakdownArray(DB_PersistentObject *object,
TBreakdownInfoArray *breakdownArray, SReportInfo *matchInfo);
/*static Boolean ObjectMatchesData(DB_PersistentObject *object, SReportInfo *matchInfo,
const Boolean matchDates = true);*/
static void InitializeRowInfo(SReportRowInfo &info, const UInt8 rowType);
static void ClearBreakdownArray(TBreakdownInfoArray *breakdownArray);
static void ClearTwoLevelArray(TTwoLevelArray *twoLevelArray);
static void ClearItemCategoryArray(TReportGroupArray *catArray);

virtual void CreateTitleCaptions();
//virtual void ResetReportInfo(SReportInfo &reportInfo);

virtual void AppendColInfo(const SLETableColInfo &colInfo)
{ mColumns.Append(colInfo); }
Boolean GetColInfo(const TableIndexT col, SLETableColInfo &colInfo) const
{ return mColumns.FetchItemAt(col, colInfo); }
Boolean GetColDataInfo(const TableIndexT col, SColDataInfo &tableInfo) const
{ return mColumnData.FetchItemAt(col, tableInfo); }
virtual SInt32 GetColType(const TableIndexT /*col*/) const { return coltype_caption; }
virtual SInt32 GetColType (const TableCellT &/*cell*/) const { return coltype_caption; }

void SetClassDescriptor(DB_ClassDescriptor *desc)
{ mDescriptor = desc; }
DB_ClassDescriptor *GetClassDescriptor() const { return mDescriptor; }

CTextString GetColTitle(const TableIndexT col) const;
CTextString GetStockColTitle(const TableIndexT col) const;

SInt32 GetTitleBarHeight() const { return mTitleBarHeight; }

virtual void FillTitleRow(TReportRowArray *rowArray);
virtual void FillNoticeRow(TReportRowArray *rowArray);

virtual void CreateStarterReportArray(const Boolean showNotice = true);
virtual void CreateSimpleReportArray(TReportRowArray *rowArray, const DBClass objectClass = 0,
TObjectIDArray *objectArray = nil);
virtual void CreateDateReportArray(TReportRowArray *rowArray, TagType breakdownTag, const DBClass objectClass = 0,
TObjectIDArray *objectArray = nil);
virtual void CreateTimeReportArray(TReportRowArray *rowArray, TagType breakdownTag, const DBClass objectClass = 0,
TObjectIDArray *objectArray = nil);
virtual void CreateBreakdownReportArray(TReportRowArray *rowArray, TagType breakdownTag,
const DBClass inBreakdownClass = 0, const DBClass objectClass = 0,
TObjectIDArray *objectArray = nil);
virtual void CreateEnumReportArray(TReportRowArray *rowArray, TagType breakdownTag, const DBClass objectClass = 0,
TObjectIDArray *objectArray = nil);
virtual void CreateMixedReportArray(TReportRowArray *rowArray, TagType breakdownTag);
virtual void AppendGrandTotal(TReportRowArray *rowArray);

virtual void CreateReport();
virtual UInt8 CreateSpecialReport(const DBid reportID, TReportRowArray *rowArray);
virtual void CreateCategoryReport(const DBid reportID, TReportRowArray *rowArray);
virtual void CreateSubcatItemReport(const DBid reportID, TReportRowArray *rowArray);
virtual void CreateCatItemReport(const DBid reportID, TReportRowArray *rowArray);
virtual void CreateProjectReport(const DBid reportID, TReportRowArray *rowArray);
virtual void CreateTakeoffReport(const DBid reportID, TReportRowArray *rowArray);
virtual void CreateDeductionReport(const DBid reportID, TReportRowArray *rowArray);
virtual void CreateTaxPaymentReport(const DBid reportID, TReportRowArray *rowArray);

virtual void CreateIncomeTaxReport(TReportRowArray *rowArray);
virtual void CreateSalesTaxReport(TReportRowArray *rowArray);
virtual void CreateInventoryReport(TReportRowArray *rowArray);

virtual void FillReportTableFromArray(TReportRowArray *rowArray, const UInt8 breakdownType,
const Boolean showProgress = true);

virtual void FillRowsFromBreakdownArray(TReportRowArray *rowArray,
TBreakdownInfoArray *breakdownArray,
const UInt8 breakdownType);
virtual void FillTwoLevelArray(TTwoLevelArray *breakdownArray, const DBClass mainClass,
const DBClass subClass, const Boolean includeUnallocated = false);
virtual void FillRowsFromTwoLevelArray(TReportRowArray *rowArray,
TTwoLevelArray *breakdownArray);
virtual void FillRowsFromCatItemArray(TReportRowArray *rowArray,
TReportGroupArray *breakdownArray);
virtual void FillJobCostRow(const TableIndexT row, const SReportRowInfo &rowInfo,
const UInt8 extraRows);
virtual Boolean FetchSpecialTableValue(const TagType tag, const SReportRowInfo &rowInfo,
CTextString &outString, CMoney &outValue);
virtual void FillCondensedDataRow(const SReportRowInfo &rowInfo);

virtual void FillTableTitles(const TableIndexT row);
virtual void FillDataRow(const TableIndexT row, const SReportRowInfo &rowInfo);
virtual void FillSubtotalRow(const TableIndexT row);
virtual void FillGrandTotalRow(const TableIndexT row);
virtual void FillGroupTotalRow(const TableIndexT row);
virtual void FillCondensedTotalRow(const TableIndexT row, const SReportRowInfo &rowInfo,
const UInt8 breakdownType);

virtual void CreatePrintFormReport(const DBid breakdownClass,
TObjectIDArray &breakdownArray, DB_PersistentObject *source);
virtual void CreateSimplePrintFormArray(TReportRowArray *rowArray,
const DBid breakdownClass, TObjectIDArray &objectArray);
virtual void CreateItemizedPrintFormArray(TReportRowArray *rowArray,
const DBid breakdownClass, TObjectIDArray &objectArray,
const TagType breakdownType);
virtual void CreateCatSubcatPrintForm(TReportRowArray *rowArray,
DB_PersistentObject *source, const TagType breakdownType);

virtual void SetColInfo(const TableIndexT column, const SLETableColInfo &columnInfo,
Boolean redraw = true);

virtual UInt8 GetFieldType (const TableIndexT inCol) const;

virtual TagType GetColTag(const TableIndexT col) const;
virtual void SetColTag(const TableIndexT col, const TagType tag);

virtual SInt32 GetTitleOffset() const { return 0;/*mTitleBarHeight + cTitleBarGap;*/ }

virtual short GetCellTextAlignment(const TableCellT &inCell);

virtual void UpdateReportDisplay();
//virtual DBid GetBreakdownClass(const UInt8 breakdownType);

/*virtual TagType GetBreakdownTag() { return mBreakdownTag; }
virtual void SetBreakdownTag(const TagType inTag) { mBreakdownTag = inTag; }*/

virtual UInt8 GetRowType(const TableIndexT row) const;
virtual UInt8 GetRowClassID(const TableIndexT row) const;
virtual DBid GetRowItemID(const TableIndexT row) const;

virtual Boolean TextIsTruncated() { return false; } // TCS 8/26/99
virtual Boolean DrawBlankCells() { return false; } // TCS 8/26/99
virtual Boolean SkipsZeroColumns(const DBid reportID);

virtual Boolean TextCanOverlap (const TableIndexT row,
const TableIndexT col); // TCS 8/26/99
virtual CDate GetReportEndDate(const CDate periodStart, const CDate endDate,
const TagType breakdownTag);
virtual Boolean ShowZeroItems() const { return mReportTableInfo.showZeroItems; }
virtual Boolean ShowTitles() { return mReportTableInfo.showTitles; }

CTextString GetSubtitleText(const UInt8 breakdownType, const SReportRowInfo &rowInfo) const;

virtual UInt8 GetTableType() { return mReportTableInfo.tableType; } // see also GetTableClass

virtual SInt32 GetLastReportingCol() { return GetNumCols() - 3; }
virtual TagType GetTableMatchTag() const;
virtual TagType GetTableBreakdownTag() const;
virtual UInt8 GetTableClass() { return table_reportarray; } // TCS 4/28/00

virtual Boolean SetDisplayDirty(const UInt8 source);

virtual void ListenToMessage(MessageT inMessage, void *ioParam);

virtual Boolean MemoryIsShort() const { return mMemoryIsShort; } // TCS 8/21/01
virtual void SetMemoryIsShort(const Boolean inValue = true) { mMemoryIsShort = inValue; }

virtual TableIndexT FirstDataRow() const { return mFirstDataRow; } // TCS 4/17/02
virtual TableIndexT LastDataRow() const { return mLastDataRow; }


protected:

UInt8 mTitleBarHeight;
DB_ClassDescriptor *mDescriptor;

CTextString mGroupName; // TCS 2/9/04

//TReportRowArray mReportRowArray;

// column data
TLETableColArray mColumns;
TColDataInfoArray mColumnData; // TCS 6/27/99

// reference data
SInt32 mTotalRowHeight,
mNumDisplayCols,
mFirstDataRow, // TCS 4/17/02
mLastDataRow;

TagType mDefaultMatchTag,
mDefaultBreakdownTag; // TCS 8/25/99
DBid mDefaultMatchValue; // TCS 8/3/99
//UInt8 mDateChoice;
UInt8 mShowSubTotal:1, // set if any of the columns show totals
mShowGrandTotal:1,
mCalcDirty:1,
mBoldSubtotals:1, // rev TCS 12/29/00
mBoldTotals:1,
mMemoryIsShort:1, // TCS 8/21/01
filler:2;
CMoney mSoftCostAmount, // TCS 11/8/03
mHardCostAmount;
TCS_Real mHardCostMultiplier; // TCS 2/23/04
SInt32 mSubTotalCount, // TCS 2/24/04
mGrandTotalCount,
mGroupTotalCount;

SReportTableInfo mReportTableInfo; // most of the table data is stored here

// special data arrays for special reports
TJobCostCompareArray mJobCostCompareArray; // TCS 8/5/01
TTakeoffArray mTakeoffArray; // TCS 4/8/02


// most data members are provided by CReportInfoOwner

virtual SInt32 GetCellTextOffset() { return 5; } // we do a wider offset since no divider bars TCS 9/27/00

virtual void DrawCell (const TableCellT &inCell);

virtual void HiliteCell(const TableCellT &inCell, Boolean hiliting = true);
virtual void HandleDoubleClick(const TableCellT &inCell);

void ResetTotals();
//void ResetSubtotals();
private:

void InitReportArrayTable();
void ClearJobCostCompareArray();
};