Accounting Software
Small Business Software Estimating Software
Inventory SoftwareInventory Tracking SoftwareInventory Control SoftwareInventory Management SoftwareConstruction Management SoftwareProject Management SoftwareBusiness Management Software

Estimates (Header)

Link to: source code | source 2 | source 3 | transactions directory | estimating info

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

Goldenseal Estimating Software and Construction Estimating Software

This class manages estimating for the Goldenseal estimating software,
project estimating software and construction estimating software.

class CEstimate : public CBreakdownTransaction
{
public:
static CLASS_DESC *sDescriptor;
static DB_PersistentObject *MakeNew() { return TCS_NEW CEstimate; }

static DBid GetJobCatSystem(DBid jobID);
static DBid GetJobAccountType(DBid jobID);

CEstimate();
virtual ~CEstimate() {}

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

virtual NeoSize GetFileLength(const CNeoFormat *aFormat) const;

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

virtual Boolean GetMemberValue(const TagType aTag, const TagType aType,
void *aValue) const;
virtual Boolean SetMemberValue(const TagType aTag, const TagType 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 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 void PostEstimate(const Boolean removeItem = false);

static SDimensionInfo GetLocationDimensionInfo(const TagType tag, TDimensionArray &dimensionArray,
const UInt8 locationID);
static CMoney GetDimensionValue(const TagType tag, const TDimensionArray &dimensionArray);
static CMoney GetLocationDimensionValue(const TagType tag, const TDimensionArray &dimensionArray,
const UInt8 locationID);
static void SetDimensionValue(const TagType tag, const CMoney &inAmount,
const Boolean locked, TDimensionArray &dimensionArray);
static void SetLocationDimensionValue(const TagType tag, const UInt8 locationID,
const CMoney &inAmount, const Boolean locked,
TDimensionArray &dimensionArray);

static SDimensionInfo GetDimensionInfo(const TagType tag, TDimensionArray &dimensionArray);
static Boolean DimensionIsLocked(const TagType tag, TDimensionArray dimensionArray);
static Boolean LocationDimensionIsLocked(const TagType tag, const UInt8 locationIndex,
TDimensionArray locDimensionArray);
static Boolean CanIncludeCostClass(const UInt8 costClass, const Boolean includeSoft = false,
const Boolean includeAllowances = false);

virtual CTextString GetName() const { return mName; }
virtual void SetName(const CTextString inName)
{
TCS_ASSERTMsg(!IsInDatabase(), TCS_GetErrString(errID_BadDatabaseChange));
mName = inName;
}
virtual Boolean NeedsName() const { return true; } // TCS 3/14/02

DBid GetSalesRep() const { return mSalesRep; }

Boolean IsItemized();

Boolean FillProgressCatArray(TJobCostReportArray &costArray, const DBid reportID);
Boolean FillProgressItemArray(SProjectInfo &projectInfo);

Boolean FillContractInfo(TJobCostCategoryArray &costArray,
const UInt8 breakdownType, const DBid matchCatID = 0,
const Boolean includeSoft = true);
Boolean FillProgressContractInfo(TJobCostProgressArray &costArray,
const UInt8 breakdownType, const Boolean includeSoft = true);

virtual void FillCompareArray(TJobCostCompareArray &compareArray, const DBid reportID);

virtual void FillCatSubcatArray(const DBid reportID, TTwoLevelArray *twoLevelArray,
const Boolean hideSoftCosts, CMoney &softCostAmount,
CMoney &hardCostAmount) const;
virtual void FillCatItemArray(const DBid reportID, TReportGroupArray *catArray) const;

virtual void FinishBreakdownUpdate(CBreakdownEntry *breakdown, CBreakdownTable *table);

//virtual void BuildAllowanceMenuList(TNameIDArray &array);

SInt32 FindCategory(const DBid catID,
TJobCostReportArray &costArray) const;
SInt32 FindCategory(const DBid catID,
TJobCostCategoryArray &costArray) const;
SInt32 FindCategory(const DBid catID,
TJobCostProgressArray &costArray) const;

//virtual Boolean IsValidBreakdown(const UInt8 breakdownType);
virtual Boolean HasLockedStatus() const;
virtual Boolean HasRecordLock() const;

virtual DBid GetPaymentTerm() const { return mPaymentTerm; }
virtual DBid GetTaxID() const { return mTaxRate; }
virtual DBid GetTaxClass() const { return id_JobSalesTax; } // TCS 2/11/01
virtual CMoney GetGrossAmount() const { return mGrossAmount; }
virtual void SetGrossAmount(const CMoney &inAmount) { mGrossAmount = inAmount; } // TCS 7/6/00
virtual CMoney GetNetPrice() const { return mAmount; }
virtual CMoney GetSalesTaxAmount() const { return mTaxAmount; } // rev TCS 5/2/00
virtual void SetSalesTaxAmount(const CMoney &inMoney) { mTaxAmount = inMoney; } // TCS 4/25/01
virtual void UpdateNetAmount();

virtual CMoney GetModifierAmount(const DBid assemblyID = 0) const;

virtual DBid GetJobID() const { return mProject; } // TCS 2/29/00
virtual void SetJob(const DBid inValue) { mProject = inValue; }
virtual DBClass GetJobClass() const { return id_ProjectAccount; }

virtual DBid GetCategorySystem() const { return mCatSystem; } // TCS 6/13/00
virtual void SetCategorySystem(const DBid inID) { mCatSystem = inID; } // TCS 7/5/00
virtual DBid GetLocationPackage() const { return mLocationPackage; } // TCS 6/13/00

virtual DBid SetAwardedStatus(const UInt8 jobClass, const DBid jobID,
const Boolean removeItem = false,
const DBid estimateID = 0);
virtual void SetCompletedStatus(const Boolean removeItem);

virtual void ReplaceMatchText(CTextString &baseString, const CTextString &matchString,
const TagType tag, const Boolean removeReturns = false, const Boolean replaceAll = false) const;

virtual Boolean ExportDimensions(CTextOutputStream &outStream);
virtual Boolean ImportDimensions(CTextInputStream &inStream);

virtual void FinishNonViewerCreate();

//virtual Boolean NeedsName() const { return true; } // TCS 1/29/01

virtual void UpdateLineItem(const UInt8 costType, const DBid bidID, const CMoney &inAmount,
const CMoney &laborHours, const CMoney &crewSize, const Boolean perUnit);

virtual UInt8 GetJobAccountRefClass() const { return id_ProjectAccount; }
virtual DBid GetJobAccountRefID() const { return mProject; }

// dimension array management
TDimensionArray GetDimensionArray() const { return mDimensionArray; }
void SetDimensionArray(const TDimensionArray &inArray);

//void ConvertDimensionArrays();
void SetDimensionsDirty(const Boolean inValue = true);
void SetLocationsDirty(const UInt8 locationID, const Boolean inValue = true);

// dimension/location number values
virtual Boolean DimensionIsLocked(const TagType tag) const;
virtual CMoney GetDimensionValue(const TagType tag) const;
virtual void SetDimensionValue(const TagType tag, const CMoney &inAmount, const Boolean locked);

virtual Boolean LocationDimensionIsLocked(const TagType tag, const UInt8 locationIndex) const;
virtual CMoney GetLocationDimensionValue(const TagType tag, const UInt8 locationID) const;
virtual void SetLocationDimensionValue(const TagType tag, const UInt8 locationID,
const CMoney &inAmount, const Boolean locked);

// location array management
void AddLocation(const CTextString locationName, const DBid locationID = 0); // TCS 4/11/01
void RenameLocation(const UInt8 index, const CTextString locationName);
void DeleteLocation(const UInt8 index);

CTextString GetNthLocationName(const UInt8 index, const Boolean isSorted) const;
CTextString GetLocationName(const DBid inID) const;
CTextString GetDetails() const { return mDetails; }

DBid GetNthLocationID(const UInt8 index, const Boolean isSorted) const;
UInt8 GetLocationIndex(const CTextString inName, const Boolean isSorted) const;
UInt8 GetLocationIndex(const DBid inID, const Boolean isSorted) const;

TNameIDArray GetLocationArray() const { return mLocationArray; }
TDimensionArray GetLocationDimensionArray() const { return mLocationDimensionArray; }
void SetLocationDimensionArray(const TDimensionArray &inArray);

void CalculateLocationDimensions();

CMoney HandleDimensionChanged(const TagType fieldTag, const CMoney &inValue,
const MessageT source);
CMoney HandleLocationDimensionChanged(const TagType fieldTag, const UInt8 locationID,
const CMoney &inValue, const MessageT source);

virtual UInt8 GetStatus() const { return mStatus; } // TCS 4/23/01
virtual DBid GetWorkingHours() const { return mWorkingHours; }

virtual Boolean CanCopyBreakdown(DB_PersistentObject *breakdown);

virtual CMoney GetQuantity() const { return mProjectSize; }

virtual Boolean HasSubcategories() const;

virtual CDate GetStartDate() const { return mStartDate; } // TCS 11/5/02
virtual CDate GetEndDate() const { return mFinishDate; } // TCS 11/5/02

virtual void UpdateContactAccount(const Boolean removeItem = false);

// we don't care if account is blank TCS 1/30/03
virtual Boolean NeedsMainAccountValue() const { return false; }

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

virtual void SetEndSafetyTag() { mEndSafetyTag = tag_endsafetytag; }

protected:
// array members
TNameIDArray mLocationArray; // list of locations for estimate dimensions
TDimensionArray mDimensionArray; // basic dimension values
TDimensionArray mLocationDimensionArray; // all dimension values for all locations

// string members
CTextString mName,
mAddress,
mDetails,
mScopeOfWork; // TCS 12/18/03

// copied members
DBid mProjectType,
mMessage,
mSalesRep,
mPaymentTerm,
mTaxRate,
mCatSystem,
mLocationPackage,
mProject,
mContract, // TCS 9/1/00
mWorkingHours, // TCS 5/24/02
mWorkCrew; // TCS 5/28/02

CDate mStartDate,
mFinishDate;

CMoney mGrossAmount,
mProjectSize,
mTaxAmount,
mAdjustPercent; // TCS 1/22/04

DBid mPictureID; // TCS 3/28/02 rev 7/17/03

UInt8 mTimePeriod,
mSpareEnum; // formerly mProjectClass TCS rev 3/13/03

// VERSION TWO members
DBid mPreparedBy, // TCS 12/18/03
mSupervisor;

// next version update add-- markup, currency, currency value

// non-copied members
UInt8 mStatus;
// *** NEVER insert members before this bitfield!!!
UInt8 mLocationsFromDims:1, // TCS 12/12/02
mPadding:7; // TCS 3/28/02

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

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

cFileLength = cCopyFileLength +
2*sizeof(UInt8) +
sizeof(TagType),
cFileLength2 = cFileLength +
2*sizeof(DBid)
};
};