Link to: source code | unit
cost directory
Copyright Turtle Creek Software 1996-2006. All Rights Reserved.
This class manages unit costs in the Goldenseal accounting
software,
estimating software, unit
cost software, job costing software and construction
estimating software.
class CUnitCost : public DB_DescribedPersistent,
public CCustomFieldOwner // rev TCS 3/5/04
{
public:
static CLASS_DESC *sDescriptor;
// the creation function for DB_PersistentObject returns nil,
// because this is supposed to be an abstract class, never
// actually created
static DB_PersistentObject *MakeNew() { return nil; }
CUnitCost();
virtual ~CUnitCost() {}
virtual DBid GetDBClassID(void) const { return id_UnitCost; }
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 Boolean HasFixedQuantity(const DBClass classID, const DBid id);
static void UpdateAllUnitCosts(const DBid markupID);
/*static void GetAdjustedUnitCosts(const DBid assemblyID, const CMoney &quantity,
CMoney &unitCost, CMoney &totalCost, CMoney &hoursPerUnit,
CMoney &totalHours, const UInt8 costArea);*/
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);
virtual void FinishViewerCreate();
virtual void FinishImportCreate();
virtual void FinishNonViewerCreate();
virtual void FinishTemplateCreate();
virtual void FinishClientCreate();
CMoney GetComponentPrice() const
{
if (GetDBClassID() == id_CostItem)
return mComponentPrice;
else
return mPurchasePrice;
}
virtual CMoney GetProjectPrice() const { return mProjectPrice; }
virtual CMoney GetResalePrice() const { return mResalePrice; }
virtual CMoney GetReducedPrice() const { return mReducedPrice; }
virtual CMoney GetPurchasePrice() const { return mPurchasePrice; }
virtual CMoney GetSupplierPrice(const DBid /*supplierID*/) const { return mPurchasePrice; }
// CTextString GetTaxMarker(const DBClass ownerClass) const;
//virtual CMoney GetInventoryPrice() const { return mInventoryPrice; }
virtual CMoney GetInventoryValue(const UInt8 method) const;
virtual Boolean RecalcNetPrices(const DBid markupID = 0);
virtual Boolean CanBeDeleted(const Boolean giveMessage = true) const;
//virtual Boolean RemoveFromDatabase();
virtual CDate GetDate() const { return mCreationDate; }
virtual Boolean UpdateDependentItems(SInt32 &updateCount);
virtual void UpdateDimensions(const Boolean removeItem = false);
//void GetLinkedSubs(CTCS_Array *itemArray);
TCS_Real GetItemCode() const { return mItemCode.GetReal(); }
virtual DBid GetSubcontractType() const { return mSubcontractType; } // TCS 2/19/04
virtual Boolean AddToDependentArray(const DBClass inClass, const DBid inID, const Boolean removeIt = false);
virtual Boolean AddToSaleArray(const DBid inID, const Boolean removeIt)
{ return AddToObjectIDArray(mSaleArray, inID, removeIt); }
virtual Boolean AddToPurchaseArray(const DBClass /*inClass*/, const DBid /*inID*/,
const UInt8 /*transType*/, const Boolean /*removeIt*/ = false)
{ return false; }
virtual Boolean AddToEstimateArray(const DBid inID, const Boolean removeIt)
{ return AddToObjectIDArray(mEstimateArray, inID, removeIt); }
virtual Boolean AddToInventoryUsedArray(const DBid inID, const Boolean removeIt)
{ return AddToObjectIDArray(mInventoryUsedArray, inID, removeIt); }
virtual Boolean AddToTransferArray(const DBClass inClass, const DBid inID,
const UInt8 transType, const Boolean removeIt = false)
{ return AddToObjectInfoArray(mTransferArray, inClass, inID, transType, removeIt); } // rev TCS 1/6/01 bugfix 1/25/03
virtual Boolean AddToTimeSpentArray(const DBClass inClass, const DBid inID,
const UInt8 transType, const Boolean removeIt = false)
{ return AddToObjectInfoArray(mTimeSpentArray, inClass, inID, transType, removeIt); } // rev TCS 1/6/01 bugfix 1/25/03
virtual void SetModDate(const CDate inDate) { mModDate = inDate; }
virtual void UpdateModDate() { mModDate = CDate::Now(); }
//virtual Boolean HasActiveStatus(const UInt8 inStatus = 0) const;
//virtual Boolean HasInactiveStatus(const UInt8 /*inStatus*/ = 0) const { return !HasActiveStatus(); }
virtual Boolean HasSpecialStatus() const;
virtual DBid GetCategory() const { return mCategory; }
virtual DBid GetCategorySystem() const { return mCatSystem; } // TCS 6/13/00
virtual DBid GetUnitSize() const { return mUnitSize; }
virtual CMoney GetDiscountForCustomer(const DBid custDiscountID) const; // BD 6/13/00
virtual void SetCurrentUser(const DBid inID) { mCurrentUser = inID; } // TCS 8/22/00
virtual DBid GetCurrentUser() { return mCurrentUser; }
virtual void SetIsPosting(const Boolean inValue) { mIsPosting = inValue; } // TCS 12/27/00
virtual Boolean IsPosting() const { return mIsPosting; }
virtual Boolean IsCurrentlyDisplayed() const { return mDisplayingViewer != nil; } // TCS 8/22/00
virtual void SetDisplayingViewer(DB_RecordViewer *viewer) { mDisplayingViewer = viewer; }
virtual DB_RecordViewer *GetDisplayingViewer() { return mDisplayingViewer; }
virtual SInt32 GetDependentCount() const { return mDependentArray.GetCount(); }
virtual SInt32 GetEstimateCount() const { return mEstimateArray.GetCount(); }
virtual SInt32 GetSaleCount() const { return mSaleArray.GetCount(); }
virtual SInt32 GetPurchaseCount() const { return 0; }
virtual SInt32 GetTransferCount(const DBClass inClass = 0) const;
virtual SInt32 GetNumContacts(const DBClass inClass = 0) const;
virtual TObjectIDArray GetDependentArray(const Boolean getOwners = false) const;
virtual TObjectIDArray GetEstimateArray(const Boolean getOwners = false) const;
virtual TObjectIDArray GetSaleArray(const Boolean getOwners = false) const;
virtual TObjectIDArray GetCustomerArray() const;
virtual TObjectIDArray GetTransferArray(const DBClass inClass, const Boolean getOwners = false) const;
virtual SInt32 CleanUp(const Boolean giveWarning = false);
//virtual CMoney GetAdjustedPrice() const { return mPurchasePrice; }
virtual CMoney GetInventoryQuantity() const { return mInventoryQty; } // TCS 1/5/01
virtual UInt8 GetStatus() const { return mStatus; } // TCS 4/23/01
virtual DBid GetSuggestedDimension() const { return mSuggestDimension; } // TCS 3/5/01
virtual Boolean UseCalcDimension() const { return mCalcDimension; }
virtual CTextString GetFullName() const { return mFullName; } // TCS 1/23/01
virtual void AdjustInventory(const CMoney &changeAmount); // TCS 1/6/01
virtual void HandleItemsManufactured(const CMoney &/*changeAmount*/, const DBid /*accountID*/,
const Boolean /*isComponent*/, const Boolean /*removeItem*/) {}
virtual void HandleInventoryTransfer(const DBid transferID, const UInt8 transferType,
const CMoney &quantity, const CMoney &value, const DBid mainAccount,
const DBid secondAccount, const CDate date, const Boolean removeItem = false);
virtual CMoney GetDateRangeHours(const CDate startDate, const CDate endDate) const
{ return GetInfoArrayQuantityInRange(mTimeSpentArray, startDate, endDate); }
virtual CMoney GetDateRangeSales(const CDate startDate, const CDate endDate) const
{ return GetArrayQuantityInRange(mSaleArray, id_SaleItemBreakdownEntry, startDate, endDate); }
virtual CMoney GetDateRangeInventoryUsed(const CDate startDate, const CDate endDate) const
{ return GetArrayQuantityInRange(mInventoryUsedArray, id_CostItemBreakdownEntry, startDate, endDate); }
virtual Boolean IsTaxable(const DBClass ownerClass = 0) const; // TCS 7/23/01
virtual Boolean HasFixedQuantity() const { return false; }
virtual Boolean NeedsName() const { return true; } // TCS 7/25/01
virtual Boolean ForbidDuplicateNames() const { return true; } // TCS 7/25/01
virtual Boolean HasInventory() const { return mHasInventory; }
virtual Boolean IncludeInStarterFile() const { return mIncludeInStarterFile; } // TCS 12/5/02
virtual Boolean AllowVariablePrices() const { return mAllowVariablePrices; } // TCS 1/3/03
virtual void FillContractSpecs(CTextOutputStream &stream, const CMoney &quantity, const CMoney &cost,
const CMoney &modifier);
virtual Boolean IsFlagged() const { return mFlagged; } // TCS 11/4/03
virtual void SetFlagged(const Boolean inValue) { mFlagged = inValue; } // TCS 2/22/04
virtual Boolean IsPrintFlagged() const { return mPrintFlagged; }
virtual ResIDT GetEnumMenuID(const TagType tag, const Boolean importing = false) const;
virtual Boolean GetEstimateCost(DB_PersistentObject *source, const UInt8 costArea,
const CMoney &quantity, CMoney &unitCost, CMoney &totalCost,
CMoney &hoursPerUnit, CMoney &totalHours);
virtual CMoney GetWeight() const { return mWeight; }
virtual void FillDataReport(CTCS_Table *table, CNeoStream *stream) const;
protected:
// array members
TObjectIDArray mDependentArray, // subassemblies that contain this item
mEstimateArray, // estimate breakdowns that include this item TCS 1/5/01
mSaleArray; // sale breakdowns that include this item
TObjectInfoArray mTimeSpentArray, // labor/equip time breakdowns that include this item
mTransferArray; // inventory transfers that include this item
TObjectIDArray mInventoryUsedArray; // item breakdowns that include this item TCS 11/13/01
// string members
CTextString mFullName, // TCS 8/20/00
mContractText; // TCS 5/6/02
// version 5 additional string TCS 5/19/04
CTextString mUPCCode;
// copied members
CMoney mPurchasePrice,
mProjectPrice,
mResalePrice,
mReducedPrice,
mComponentPrice,
mInventoryPrice,
mWeight; // TCS 10/23/02
DBid mCategory,
mSubcategory,
mCatSystem,
mMarkup,
mUnitSize,
mDiscount,
mSuggestDimension, // suggested quantity
mSubcontractType; // rev TCS 5/6/02
SInt32 mReorderAmount;
UInt8 mStatus,
mContractCostDisplay,
mContractQuantDisplay;
// *** NEVER insert members before this bitfield!!!
UInt8 mTaxSale:1,
mTaxPurchase:1,
mHasInventory:1,
mRestockingCharge:1,
mCalcDimension:1,
mCanManufacture:1, // TCS 3/20/02
mContractAsList:1,
mAlwaysShow:1; // TCS 8/13/02
UInt8 mPrintFlagged:1, // TCS 1/31/00
mFlagged:1,
mCalcLaborModifier:1, // TCS 12/7/01
mCalcMaterialModifier:1,
mIncludeInStarterFile:1, // TCS 12/5/02
mAllowVariablePrices:1, // TCS 1/3/03
mUCFiller:2;
UInt8 mUCPadding;
// non-copied members // moved TCS 2/1/03
DBid mPicture;
CMoney mInventoryQty,
mItemCode;
CDate mCreationDate,
mModDate;
// calculated but not stored. DO NOT ADD to cFileLength
DBid mCurrentUser; // for multi-user access TCS 8/22/00
DB_RecordViewer *mDisplayingViewer;
Boolean mIsPosting; // TCS 12/27/00 moved 10/1/02
enum
{
cCopyFileLength = 7*sizeof(CMoney) + // TCS rev 9/6/02
8*sizeof(DBid) +
sizeof(SInt32) +
6*sizeof(UInt8),
cCopyFileLength2 = cCopyFileLength,
cFileLength = cCopyFileLength + sizeof(DBid) +
2*sizeof(CMoney) +
2*sizeof(CDate),
cFileLength2 = cFileLength
};
}; |