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

Material Purchases (Header)

Link to: source code | transactions directory

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

This class manages material purchases for the Goldenseal accounting software,
small business management software, construction project management software and
construction accounting software.

class CMaterialPurchase : public CInventoryUsed
{
public:

static CLASS_DESC *sDescriptor;
static DB_PersistentObject *MakeNew() { return TCS_NEW CMaterialPurchase; }
CMaterialPurchase();
virtual ~CMaterialPurchase() {}

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

virtual NeoSize GetFileLength(const CNeoFormat *aFormat) const;

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

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 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 PostNewVoidRecord(const UInt8 creationType);
virtual void PostVoidRecordDeleted();

virtual void PostRecordChanging(const Boolean accountChanging,
const Boolean jobChanging);
virtual void PostVoidRecordChanging(const Boolean accountChanging,
const Boolean jobChanging, const UInt8 startStatus,
const UInt8 finalStatus);
virtual void PostRecordChanged(const CMoney &oldAmount,
const Boolean accountChanged,
const Boolean jobChanged);
virtual void PostRecordChangedRemotely(const CMoney &oldAmount,
const Boolean accountChanged,
const Boolean jobChanged);
virtual void PostVoidRecordChanged(const CMoney &oldAmount,
const Boolean accountChanged,
const Boolean jobChanged);

virtual UInt8 GetPaymentType() const { return mPaymentMethod; }
virtual DBid GetPaymentMethod() const { return mPaymentMethod; }
virtual void SetPaymentMethod(const UInt8 inMethod) { mPaymentMethod = inMethod; }

virtual CDate GetBillingDate() const { return mBillingDate; }
virtual void SetBillingDate(const CDate inDate) { mBillingDate = inDate; }

virtual CTextString GetBillNum() const { return mInvoiceNum; }

virtual UInt8 GetStarterStatus() const { return status_Entered; }

virtual CMoney GetChangeTestAmount() const { return mAmount; }

virtual Boolean ShouldBePaid() const;

virtual DBid GetTaxID() const { return mTaxRate; } // TCS 2/11/01
virtual DBid GetTaxClass() const { return id_VendorSalesTax; } // TCS 2/11/01
virtual CMoney GetSalesTaxAmount() const { return mTaxAmount; } // rev TCS 5/2/00
virtual void SetSalesTaxAmount(const CMoney &inMoney) { mTaxAmount = inMoney; } // TCS 4/25/01

virtual CMoney GetGrossAmount() const { return mGrossAmount; } // TCS 12/29/00

virtual Boolean HasBeenPartPaid() const
{ return mAmountPaid.IsPositive() && mAmount > mAmountPaid; }

virtual DBid GetDefaultExpenseAccount() const { return account_MaterialExpenses; }

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

virtual DBid GetPaymentDetails() const { return mPaymentTerms; }
virtual DBid GetPaymentTerm() const { return mPaymentTerms; }
virtual void SetPaymentTerm(const DBid inTerms) { mPaymentTerms = inTerms; }

virtual DBid GetPayablesAccount() const { return account_MaterialsPayable; }

virtual void PostVendorWithholding(const Boolean removeItem = false);
virtual void PostRetainage(const Boolean removeItem = false);

virtual CMoney GetJobCostAmount() const;

virtual void HandleTaxesPaid(const DBClass sourceClass, const DBid sourceID,
const Boolean removeItem = false);

virtual Boolean UseOneTimeName() const { return mUseOneTimeName; }
virtual void SetUseOneTimeName(const Boolean inValue) { mUseOneTimeName = inValue; }
virtual CTextString GetOneTimeName() const { return mOneTimeVendorName; }
virtual void SetOneTimeName(const CTextString inName) { mOneTimeVendorName = inName; }

virtual void HandlePaymentCancelled();

virtual void FinishNonViewerCreate();

virtual CMoney GetAmountUnpaid() const;
virtual CMoney GetAmountPaid() const { return mAmountPaid; }

virtual CMoney GetRetainageAmount() const { return mRetainageAmount; }
virtual void SetRetainageAmount(const CMoney &inAmount) { mRetainageAmount = inAmount; }

virtual DBid GetWithholdingRateID() const { return mWithholdingRate; }
virtual CMoney GetWithholdingAmount() const { return mWithholdingAmount; }
virtual CMoney GetWithholdingDeduction() const;

virtual CMoney GetAccountingAmount(const Boolean removeIt, const UInt8 type) const; // TCS 1/29/01

virtual CMoney GetAdjustedAmount() const { return mAmount + mAdjustmentAmount -
mWithholdingAmount - mRetainageAmount; } // TCS 10/9/02

virtual Boolean SkipUpdating() const { return mSkipUpdating; } // 11/1/01

virtual void FinishBreakdownUpdate(CBreakdownEntry *breakdown, CBreakdownTable *table);

virtual void HandleDateChanged();

virtual UInt8 GetTransDetails() const { return mPaymentMethod; } // TCS 10/20/00

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

protected:

// string data
CTextString mOneTimeVendorName, // TCS 8/17/00 moved 5/30/02
mInvoiceNum; // TCS 8/17/00

// Basic Data
DBid mPaymentTerms,
mWithholdingRate;

UInt8 mPaymentMethod; // moved TCS 9/29/02

// *** NEVER insert members before this bitfield!!!
UInt8 mUseOneTimeName:1, // TCS 8/17/00
mSkipUpdating:1, // TCS 11/1/01
mPurchasePadding:6; // TCS 10/21/99

CMoney mWithholdingAmount,
mRetainageAmount;

CDate mBillingDate;

DBid mCurrency; // VERSION 2- TCS 12/10/03
CMoney mForeignAmount;

// Calculated members
TagType mMatEndSafetyTag; // TCS 9/8/02

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

cParentFileLength = cCopyFileLength,
cParentFileLength2 = cCopyFileLength2,
cFileLength = cCopyFileLength +
sizeof(TagType),
cFileLength2 = cCopyFileLength2 +
sizeof(TagType)
};
};