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

Custom Calculators (Header)

Link to: source code | unit cost directory

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

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

class CCalcCustom : public DB_DescribedPersistent
{
public:

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

CCalcCustom();
virtual ~CCalcCustom() {}

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

static Boolean GetCalculation(CTextString *outString, const UInt8 firstCalcClass,
const DBid firstCalc, const UInt8 secondCalcClass,
const DBid secondCalc, const UInt8 calculationType,
const UInt8 roundingMethod, const CMoney &constant,
SInt32 &runLimit, const FormatType format);
static UInt8 GetFieldType(const UInt8 firstFieldType, const UInt8 secondFieldType);

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 TagType aTag);
virtual void WriteObject(CNeoStream *aStream, const TagType aTag);

virtual void PostNewRecord(const UInt8 creationType);
virtual void PostDeletion(const Boolean postAudit);
virtual void PostRecordChanging(const Boolean accountChanging,
const Boolean jobChanging);
virtual void PostRecordChanged(const CMoney &oldAmount,
const Boolean accountChanged,
const Boolean jobChanged);

virtual Boolean IsDirty() const { return true; }
virtual Boolean IsNumber() const { return mCalculationType != calc_breakdown; }
virtual Boolean IsSimpleNumber() const { return mCalculationType != calc_breakdown; }
virtual Boolean IsMathable() const { return mCalculationType != calc_breakdown; } // TCS 9/7/99
virtual void UpdateCalculatorValue(SInt32 &runLimit, const FormatType format, const Boolean alwaysUpdate = false);

virtual UInt8 GetFieldType() const;
virtual CMoney GetCalculatorMoney();

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

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

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

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

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
CTextString mCurrentValue;
// basic members
DBid mFirstCalculation,
mSecondCalculation;

UInt8 mCalculationType,
mFirstGroup,
mSecondGroup,
mRoundingType;

CMoney mConstant;

// calculated members
// *** NEVER insert members before this bitfield!!!
UInt8 mCalcDirty:1,
mDisplayDirty:1,
filler:6;

UInt8 mCalcCustFiller; // TCS 3/27/02

// calculated members
TagType mEndSafetyTag; // TCS 9/8/02

enum
{
cCopyFileLength = 2*sizeof(DBid) +
4*sizeof(UInt8) +
sizeof(CMoney),

cFileLength = cCopyFileLength +
2*sizeof(UInt8) +
sizeof(TagType)
};
};
enum
{
tag_firstcalculation = 'CAL1',
tag_secondcalculation = 'CAL2',
tag_firstgroup = 'GRP1',
tag_secondgroup = 'GRP2',
tag_constant = 'CNST'
};