Link to: source code | unit
cost directory
Copyright Turtle Creek Software 1996-2006. All Rights Reserved.
This class manages estimating assemblies in the Goldenseal accounting software,
estimating software, project management software
and construction estimating software.
Assemblies for Goldenseal Estimating Software
class CAssembly : public CUnitCost,
public CBreakdownArrayOwner
{
public:
static CLASS_DESC *sDescriptor;
static DB_PersistentObject *MakeNew() { return TCS_NEW CAssembly; }
CAssembly();
virtual ~CAssembly() {}
static DBid GetAssemblyWithCode(const CMoney &inCode);
static void InitializeUpdateInfo(SAssemblyUpdateInfo &info);
virtual DBid GetDBClassID(void) const { return id_Assembly; }
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);
SInt32 GetSubAssemblyCount() const { return mBreakdownArray.GetCount(); }
virtual void AddBreakdown(const DBid breakdownID);
virtual void RemoveAllBreakdownEntries(const Boolean removeFromDatabase = true);
//void RemoveSubAssemblyByID(const DBid subID);
//void AppendSubAssembly(CSubAssembly *subAssembly);
//void AppendSubAssembly(const SSubAssemblyInfo &subAssemblyInfo);
//void GetNthSubAssembly(SInt32 index, SSubAssemblyInfo *subAssemblyInfo) const;
virtual void AddDependentLinks(const Boolean removeItem = false);
virtual Boolean DependsOnItem(const DBid itemID, const Boolean deeply = true) const;
virtual CMoney RecalcPrice();
virtual Boolean RemoveFromDatabase(const UInt32 clientID = cServerID);
virtual DBid GetBreakdownClassID() const { return id_SubAssembly; }
virtual void HandleBreakdownAdded(const UInt8 creationType);
virtual void FillCostBreakdown(SJobCostReportInfo &catItem,
const CMoney &quantity) const;
virtual Boolean HasBreakdowns() const { return mBreakdownArray.GetCount() > 0; } // bugfix TCS 4/23/03
virtual Boolean UsesBreakdowns() const { return true; }
virtual void HandleReplaceAll(const TMemberArray &memberArray);
virtual CMoney GetLaborAdjustment() const { return mLaborAdjustment; }
virtual CMoney GetMaterialAdjustment() const { return mMaterialAdjustment; }
virtual void HandleItemsManufactured(const CMoney &changeAmount, const DBid accountID,
const Boolean isComponent, const Boolean removeItem);
virtual CMoney GetJobCostAmount(const UInt8 costClass) const;
virtual CMoney FetchComponentCosts(SAssemblyUpdateInfo &info, const CMoney &inQuantity); // TCS 8/2/01
virtual Boolean MatchesFindCriteria(CTCS_Array &selectorArray, const Boolean matchAny,
const SInt32 selectorCount) const;
virtual Boolean HasFixedQuantity() const;
virtual Boolean GetEstimateCost(DB_PersistentObject *source, const UInt8 costArea,
const CMoney &quantity, CMoney &unitCost, CMoney &totalCost,
CMoney &hoursPerUnit, CMoney &totalHours);
virtual Boolean WriteToPrintFormTable(CReportTable *table);
virtual Boolean FillProjectReportArray(TReportRowArray *reportRowArray, const DBid reportID,
const DBid breakdownID, SInt32 runLimit) const;
virtual Boolean FillTakeoffArray(TTakeoffArray &takeoffArray, const CMoney &parentQuantity,
const DBid breakdownID, SInt32 &runLimit, const CDate dateNeeded,
const Boolean isLabor) const;
virtual void UpdateDimensions(const Boolean removeItem = false);
virtual CMoney GetCrewSize() const { return mCrewSize; }
virtual UInt8 GetCostArea() const { return costtype_assembly; }
virtual CMoney GetMaterialPrice() const { return mMaterialCost; }
virtual CMoney GetLaborPrice() const { return mLaborCost; }
virtual CMoney GetOtherPrice() const { return mEquipmentCost + mSubcontractorCost + mOtherCost + mSoftCosts;
}
virtual CMoney GetLaborHours() const { return mLaborHours; }
virtual CMoney CalcLaborHours(const CMoney &quantity) const;
virtual DBClass GetMaterialModifierClass() const
{ return mCalcMaterialModifier ? id_CalcDimension : id_Dimension; }
virtual DBClass GetLaborModifierClass() const
{ return mCalcLaborModifier ? id_CalcDimension : id_Dimension; }
virtual DBid GetMaterialModifierID() const { return mMaterialModifier; }
virtual DBid GetLaborModifierID() const { return mLaborModifier; }
virtual void ExportBreakdowns(CTextOutputStream &stream);
TCS_Real GetLaborModifier(DB_PersistentObject *source);
TCS_Real GetMaterialModifier(DB_PersistentObject *source);
virtual void FillDataReport(CTCS_Table *table, CNeoStream *stream) const;
virtual void SetEndSafetyTag() { mEndSafetyTag = tag_endsafetytag; }
protected:
TObjectInfoArray mFeedbackArray; // items used for lab/mat adjust TCS 5/20/02 rename 11/21/02
// basic members
DBid mLaborModifier, // dimension to mult labor
mMaterialModifier, // dimension to mult material
mComponentCatSystem,
mWorkCrew; // usual work crew TCS 8/14/02
CMoney mEquipmentCost, // component costs per unit
mLaborCost,
mMaterialCost,
mSubcontractorCost,
mOtherCost,
mSoftCosts,
mLaborHours, // TCS 4/26/02
mCrewSize; // TCS 5/14/02
// version 4 additions
DBid mStartsAfter,
mParallelWith;
// calculated members
SInt16 mTimesUpdated;
CMoney mLaborAdjustment, // percent adjustments from experience (job cost feedback)
mMaterialAdjustment;
TagType mEndSafetyTag; // TCS 9/6/02
enum
{
cCopyFileLength = 4*sizeof(DBid) +
8*sizeof(CMoney),
cCopyFileLength4 = cCopyFileLength +
2*sizeof(DBid),
cFileLength = cCopyFileLength +
sizeof(SInt16) +
2*sizeof(CMoney) +
sizeof(TagType),
cFileLength4 = cFileLength +
2*sizeof(DBid)
};
};
|