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