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

Subassemblies (Header)

Link to: source code | unit cost directory

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

This class manages subassemblies in the Goldenseal accounting software,
estimating software, unit cost software, job costing software and construction estimating software.

class CSubAssembly : public CBreakdownEntry
{
public:

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

CSubAssembly();
virtual ~CSubAssembly() {}

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

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

static void AddMaterialTakeoff(TTakeoffArray &takeoffArray, const DBid costItemID,
const DBid breakdownID, const CMoney &grossQuantity,
const CMoney &netQuantity, const CDate dateNeeded,
const CMoney &purchasePrice);
static void AddUnlistedTakeoff(TTakeoffArray &takeoffArray, const CTextString itemName,
const DBid breakdownID, const CMoney &grossQuantity,
const CMoney &netQuantity, const CDate dateNeeded,
const CMoney &purchasePrice);

virtual void FinishImportCreate();

DBid GetParentAssemblyID() const { return mOwnerID; }
//CAssembly *GetParentAssembly() const;
void SetParentAssemblyID(DBid assembly)
{ mOwnerID = assembly; }

Boolean HandlePriceChange(const CMoney &newAmount, SInt32 &updateCount);
void HandleItemsManufactured(const CMoney &changeAmount, const DBid accountID,
const Boolean isComponent, const Boolean removeItem);

virtual CMoney FetchComponentCosts(SAssemblyUpdateInfo &info, const CMoney &inQuantity); // TCS 8/2/01

UInt8 GetCostArea() const { return mCostArea; }

DBid GetCostItemID() const { return mCostItem; }
DBid GetCostItemType() const
{
if (IsAssembly())
return id_Assembly;
else if (IsCostItem())
return id_CostItem;
else
return 0;
}

virtual CMoney GetAmount() const;
virtual CMoney GetUnitCost(const Boolean isComponent = true) const;
virtual CMoney GetNetCost(const CMoney &unitCost) const;
virtual CMoney GetNetQuantity() const;
virtual CMoney GetLaborPrice() const;
virtual CMoney GetMaterialPrice() const;
virtual CMoney GetOtherPrice() const;

virtual CMoney CalcLaborHours(const CMoney &quantity) const;

//virtual Boolean RemoveFromDatabase();

Boolean IsAssembly() const { return mCostArea == costtype_assembly || mCostArea == costtype_assmlabor ||
mCostArea == costtype_assmmaterial; }
Boolean IsReminder() const { return mCostArea == costtype_reminder; }
Boolean IsTool() const { return mCostArea == costtype_tool; }
Boolean IsCostItem() const
{
return mCostArea == costtype_equipment ||
mCostArea == costtype_labor ||
mCostArea == costtype_material ||
mCostArea == costtype_subcontractor ||
mCostArea == costtype_other;
}
Boolean IsUnlistedItem() const
{
return mCostArea == costtype_unlistedequip ||
mCostArea == costtype_unlistedlabor ||
mCostArea == costtype_unlistedmaterial ||
mCostArea == costtype_unlistedsub ||
mCostArea == costtype_unlistedother ||
mCostArea == costtype_unlistedtool;
}

virtual UInt8 GetCostItemClass() const;

virtual UInt8 GetOwnerClass() const { return id_Assembly; }

virtual void PostNewRecord(const UInt8 creationType);
virtual void PostDeletion(const Boolean postAudit = true);

virtual void PostRecordChanging(const Boolean accountChanging,
const Boolean jobChanging);
virtual void PostRecordChanged(const CMoney &oldAmount,
const Boolean accountChanged,
const Boolean jobChanged);

virtual void AdjustSubassemblyArray(const Boolean removeIt = false);

virtual TagType GetAccountColTag() { return tag_costitem; }

virtual Boolean CanImportEnum(const TagType tag, const SInt32 value) const;
virtual Boolean IsMixedCV(const TagType tag) const;

virtual Boolean HasFixedQuantity() const { return mFixedQuantity; }
virtual Boolean UsesLaborModifier() const { return mUseLaborModifier; }
virtual Boolean UsesMaterialModifier() const { return mUseMaterialModifier; }

virtual CMoney GetPurchasePrice() const;

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 FillDataReport(CTCS_Table *table, CNeoStream *stream) const;

virtual void SetEndSafetyTag() { mEndSafetyTag = tag_endsafetytag; }

protected:
CTextString mItemName, // TCS 12/11/01
mUnitSize;
DBid mCostItem,
mCategory,
mSubcategory;

CMoney mQuantity,
mWaste;

UInt8 mCostArea; // TCS 12/11/01

// *** NEVER insert members before this bitfield!!!
UInt8 mUseLaborModifier:1,
mUseMaterialModifier:1,
mFixedQuantity:1,
subAssmFiller:5;

CMoney mItemCost; // typed in cost for unlisted items only

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

enum
{
cCopyFileLength = 3*sizeof(DBid) +
2*sizeof(CMoney) +
2*sizeof(UInt8) +
sizeof(CMoney),

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