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