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'
}; |