Accounting Software
Small Business Software Estimating Software
Unit Cost SoftwareConstruction Estimating SoftwareProject Estimating SoftwareCost Estimation SoftwareCost Estimating SoftwareConstruction Management SoftwareBusiness Management Software

Summation Calculators (Header)

Link to: source code | unit cost directory

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

This class manages summation calculators in the Goldenseal accounting software,
estimating software, project management software and construction accounting software.

class CCalcSummation : public DB_ArrayOwner<SSummationInfo>
{
public: enum
{
col_type = 1,
col_item = 2,
col_subtotal = 3
};


class CCalcSummations_Desc : public CLASS_DESC
{
public:
CCalcSummations_Desc()
: CLASS_DESC(id_CalcSummation, id_DescribedPersistent, CCalcSummation::MakeNew) {}
virtual ~CCalcSummations_Desc() {}

virtual Boolean GetTableColInfo(const TagType tag, const TableIndexT col,
STableColInfo *colInfo);
virtual SInt32 GetNumTableCols(const TagType /*tableTag*/) { return 3; }
};

static CLASS_DESC *sDescriptor;
static DB_PersistentObject *MakeNew() { return TCS_NEW CCalcSummation; }

CCalcSummation();
virtual ~CCalcSummation() {}

virtual DBid GetDBClassID(void) const { return id_CalcSummation; }

virtual void CopyFrom(DB_PersistentObject *source, const UInt8 copyFlags = 0);

virtual NeoSize GetFileLength(const CNeoFormat *aFormat) const;

virtual Boolean GetMemberValue(const NeoTag aTag, const NeoTag aType,
void *aValue) const;
virtual Boolean SetMemberValue(const NeoTag aTag, const NeoTag aType,
const void *aValue);
virtual void ReadObject(CNeoStream *aStream, const NeoTag aTag);
virtual void WriteObject(CNeoStream *aStream, const NeoTag aTag);

virtual Boolean GetEntryFromRow(const CTCS_Table &aTable,
const TableIndexT row,
SSummationInfo *outInfo);
virtual Boolean FillRowFromEntry(CTCS_Table *aTable, const TableIndexT row,
const SSummationInfo &inInfo);

virtual CTextString ExportColumnCString(const TableIndexT col,
const SSummationInfo &outInfo);

virtual Boolean ImportColumnCString(const TableIndexT col,
const CTextString &inString, SSummationInfo *inInfo);

virtual Boolean IsDirty() const { return true; }
virtual Boolean IsNumber() const { return true; }
virtual Boolean IsSimpleNumber() const { return true; }
virtual Boolean IsMathable() const { return true; } // TCS 9/7/99

virtual CTextString GetDisplayCString(const FormatType format = 0, const Boolean alwaysUpdate = false);
virtual CTextString GetStarterCString(const FormatType format) const;

virtual CMoney GetCalculatorMoney();
virtual SInt32 GetCalculatorInteger();
virtual void UpdateCalculatorValue(SInt32 &runLimit, const FormatType format, const Boolean alwaysUpdate = false);
virtual CMoney GetSummation(SInt32 &runLimit) const;

virtual Boolean DependsOnCalc(const UInt8 inClassID, const DBid inItemID,
Boolean deeply = true) const;

virtual CMoney CalculateDeduction(const CMoney &baseAmount, CEmployeeAccount *employee);

virtual UInt8 GetFieldType() const { return fieldtype_money; }

virtual UInt8 GetStatusForMenuArray() const { return calc_sum; } // TCS 12/13/00

virtual Boolean IsDisplayDirty() const { return mDisplayDirty; }
virtual Boolean SetDisplayDirty(const UInt8 source);

virtual void SetCalcDirty(const Boolean inValue = true) { mCalcDirty = inValue; }
virtual Boolean IsCalcDirty() const { return mCalcDirty; }

virtual void FillDataReport(CTCS_Table *table, CNeoStream *stream) const;

virtual void SetEndSafetyTag() { mEndSafetyTag = tag_endsafetytag; }

protected:
// outside member

// copied members
CMoney mCurrentValue;

// calculated members rev TCS 12/19/00
// *** NEVER insert members before this bitfield!!!
UInt8 mCalcDirty:1,
mDisplayDirty:1,
filler:6;
UInt8 mPadding; // rev TCS 9/7/02

TagType mEndSafetyTag; // rev TCS 9/7/02

enum
{
cCopyFileLength = sizeof(CMoney),

cFileLength = cCopyFileLength +
2*sizeof(UInt8) + // bugfix TCS 9/27/02
sizeof(TagType)
};
};