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

Calculated Location Dimensions (Header)

Link to: source code | unit cost directory

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

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

class CCalcLocation : public DB_DescribedPersistent
{
public:

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

CCalcLocation();
virtual ~CCalcLocation() {}

static DBClass GetCalculatorClassID(const UInt8 inValue, const Boolean isLocation);
static Boolean HasCircularReference(const DBClass calcClass, const DBid calcID,
const DBClass thisClass, const DBid thisID);

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

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 PostImportNew(const Boolean fromPostAction = false);
virtual void PostNewRecord(const UInt8 creationType);
virtual void PostDeletion(const Boolean postAudit);
virtual void PostRecordActivated(const UInt8 creationType);
virtual void PostRecordCancelled(const UInt8 cancelType);
virtual void PostRecordChanging(const Boolean accountChanging,
const Boolean jobChanging);
virtual void PostRecordChanged(const CMoney &oldAmount,
const Boolean accountChanged,
const Boolean jobChanged);

virtual CMoney GetQuantity() const { return mCurrentValue; }
virtual CMoney GetCurrentValue() const { return mCurrentValue; }
virtual CMoney GetSuggestedAmount() const { return mSuggestAmount; } // TCS 6/8/01 rev 3/11/03

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

virtual UInt8 GetFieldType() const { return fieldtype_number; }


virtual void UpdateDependentDimensions(TDimensionArray &dimensionArray,
TDimensionArray &locDimensionArray);
virtual void UpdateDependentLocations(TDimensionArray &dimensionArray,
TDimensionArray &locDimensionArray,
const SInt32 locationID);

virtual Boolean IsDisplayDirty() const { return mDisplayDirty; }
virtual Boolean SetDisplayDirty(const UInt8 source);
virtual void SetCalcDirty(const Boolean inValue) { mCalcDirty = inValue; }
virtual Boolean IsCalcDirty() const { return mCalcDirty; }

virtual Boolean IsInvisible() { return mIsInvisible; }

virtual Boolean IsAlwaysLocked() const { return !mCanBeChanged; }
virtual void SetCurrentValue(const CMoney &inAmount);

virtual CMoney ApplyAdjuster(const UInt8 adjustType, const CMoney &adjustAmount,
const CMoney &calculatorAmount, const CMoney &inBalance) const;

virtual Boolean AddToDependentArray(const DBClass inClass, const DBid inID, const Boolean removeIt = false)
{ return AddToObjectInfoArray(mDependentArray, inClass, inID, 0, removeIt); }

virtual void PostDependents(const Boolean removeItem = false);

virtual Boolean IsCalcLocation() const { return true; }
virtual Boolean AllowNegatives() const { return mAllowNegatives; }

virtual CMoney GetListDimensionValue(const SInt32 choice, TDimensionArray &dimensionArray,
TDimensionArray &locDimensionArray,
const UInt8 locationID = 0) const;
virtual CMoney GetCalcLocationValue(TDimensionArray &dimensionArray,
TDimensionArray &locDimensionArray,
const SInt32 locationID = 0);

virtual void SetLayoutID(const DBid inID) { mLayoutID = inID; }

virtual Boolean CanBeDeleted(const Boolean giveMessage = true) const;

virtual Boolean UsesLocationCount(const UInt8 calcType) const
{
return calcType == calc_addlocationcount || calcType == calc_subtractlocationcount ||
calcType == calc_multiplylocationcount || calcType == calc_dividelocationcount ||
calcType == calc_maxoflocationcount || calcType == calc_minoflocationcount;
}

virtual void FillUseReport(CTextOutputStream &stream, CEstimate *estimate,
const UInt8 level, SInt32 &counter);
virtual void FillCalculationReport(CTextOutputStream &stream, CEstimate *estimate,
const UInt8 level, SInt32 &counter,
const UInt8 calcType = 0);
virtual void FillCalculationLine(CTextOutputStream &stream, const UInt8 level,
const UInt8 calcType, const CMoney calcAmount,
const Boolean firstLine = false);

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

virtual SInt32 GetDependentCount() const { return mDependentArray.GetCount(); }

virtual void SetEndSafetyTag() { mEndSafetyTag = tag_endsafetytag; }

protected:
// array member
TObjectInfoArray mDependentArray;

CTextString mFormulaString; // TCS 5/13/01 (for future use)
DBid mStartDimension, // TCS renamed most 6/7/01
mFirstAdjuster,
mSecondAdjuster,
mThirdAdjuster,
mFourthAdjuster,
mFifthAdjuster,
mSixthAdjuster;

UInt8 mStartDimensionType,
mFirstAdjustType,
mSecondAdjustType,
mThirdAdjustType,
mFourthAdjustType,
mFifthAdjustType,
mSixthAdjustType,
mRoundingType;

// *** NEVER insert members before this bitfield!!!
UInt8 mCanBeChanged:1,
mCalcDirty:1, // TCS 6/6/01
mDisplayDirty:1,
mIsInvisible:1, // TCS 6/8/01
mAllowNegatives:1, // TCS 3/25/02
mCalcFiller:3;
UInt8 mFiller;

CMoney mFirstAdjustAmount,
mSecondAdjustAmount,
mThirdAdjustAmount,
mFourthAdjustAmount,
mFifthAdjustAmount,
mSixthAdjustAmount,
mCurrentValue;

CMoney mSuggestAmount; // TCS 3/11/03

DBid mLayoutID;

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

enum
{
cCopyFileLength = 7*sizeof(DBid) +
10*sizeof(UInt8) +
8*sizeof(CMoney) +
sizeof(DBid),

cFileLength = cCopyFileLength +
sizeof(TagType)
};
};