Accounting Software
Small Business Software Estimating Software
Inventory SoftwareInventory Tracking SoftwareInventory Control SoftwareInventory Management SoftwareConstruction Management SoftwareProject Management SoftwareBusiness Management Software

Purchase Orders & Work Orders (Header)

Link to: source code | transactions directory

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

This class manages purchase orders in the Goldenseal accounting software,
estimating software, project management software and construction accounting software.

class CPurchaseWorkOrder : public CJobCostTransaction
{
public:

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

CPurchaseWorkOrder();
virtual ~CPurchaseWorkOrder() {}

virtual void CopyFrom(DB_PersistentObject *source, const UInt8 copyFlags = 0);

virtual NeoSize GetFileLength(const CNeoFormat *aFormat) const;

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

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 Boolean IsValidBreakdown(const UInt8 breakdownType);

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 UpdateEstimate(const Boolean removeItem = false);

virtual void FinishNonViewerCreate();

virtual DBid GetPaymentTerm() const { return mPaymentTerm; }

virtual void HandleExpenseTrans(const CMoney &amount, const CMoney &taxAmount,
const UInt8 classID, const DBid costID,
const Boolean removeIt = false);

virtual Boolean AddToExpenseArray(const UInt8 inClass, const DBid inID, const UInt8 transType,
const Boolean removeIt = false) // bugfix TCS 1/25/03
{ return AddToObjectInfoArray(mExpenseArray, inClass, inID, transType, removeIt); }

virtual UInt8 ExpenseIsAcceptable(CMoney &inAmount, const DBClass inClass, const DBid inID);

virtual UInt8 GetConditions() const { return mConditions; } // TCS 9/7/00
virtual UInt8 GetStatus() const { return mStatus; } // TCS 4/23/01

virtual DBid GetTaxID() const { return mTaxRate; } // TCS 10/25/00
virtual DBid GetTaxClass() const { return id_VendorSalesTax; } // TCS 2/11/01
virtual CMoney GetSalesTaxAmount() const { return mTaxAmount; } // TCS 10/27/00
virtual void SetSalesTaxAmount(const CMoney &inMoney) { mTaxAmount = inMoney; } // TCS 4/25/01
virtual CMoney GetGrossAmount() const { return mGrossAmount; } // TCS 10/27/00
virtual CMoney GetNetPrice() const { return mAmount; }
virtual CMoney GetAmountPending() const { return mGrossAmount - mCostsToDate; } // TCS 10/31/00

virtual Boolean PaysOnAccount() const { return false; } // TCS 11/1/00

virtual CMoney GetLaborHours() const { return mLaborHours; } // TCS 5/16/02
virtual CMoney GetCrewSize() const { return mCrewSize; } // TCS 5/16/02

virtual UInt8 GetMenuJobClass() const;
virtual DBid GetMenuJobID() const;

virtual void HandleEstimateUse(const DBid estimateID, const Boolean removeIt = false);
virtual DBid SetAwardedStatus(const UInt8 jobClass, const DBid jobID,
const Boolean removeItem = false, const DBid estimateID = 0);

virtual CMoney FetchComponentCosts(SAssemblyUpdateInfo &info, const CMoney &inQuantity);

// we don't need a job to be entered TCS 6/10/03
virtual Boolean NeedsJobAccountValue() const { return false; }

virtual void FillDataReport(CTCS_Table *table, CNeoStream *stream) const;

virtual void SetEndSafetyTag() { mEndSafetyTag = tag_endsafetytag; }

protected:
// array members
TObjectInfoArray mExpenseArray; // TCS 1/18/00

// copied members
DBid mPaymentTerm,
mTaxRate;

CMoney mGrossAmount,
mTaxAmount,
mLaborHours, // TCS 5/16/02
mCrewSize;

UInt8 mStatus,
mConditions; // TCS 7/14/00

// calculated members
CMoney mCostsToDate, // TCS 1/18/00
mSalesTaxToDate; // TCS 10/31/00
DBid mEstimate; // TCS 2/14/00

// if we ever add members, also add a picture field, currency amount and ID

TagType mEndSafetyTag; // TCS 9/8/02

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

cFileLength = cCopyFileLength +
2*sizeof(CMoney) +
sizeof(DBid) +
sizeof(TagType)
};
};