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();
}; |