Link to: source code | transactions
directory
Copyright Turtle Creek Software 1996-2006. All Rights Reserved.
This class manages basic accounting transactions
in the Goldenseal business management software,
estimating software, project management software
and construction estimating software.
class DB_BaseTransaction : public DB_PersistentObject
{
public:
static CLASS_DESC *sDescriptor;
static DB_PersistentObject *MakeNew() { return TCS_NEW DB_BaseTransaction; }
DB_BaseTransaction();
virtual ~DB_BaseTransaction() {}
virtual void CopyFrom(DB_PersistentObject *source, const UInt8 copyFlags = 0);
virtual NeoSize GetFileLength(const CNeoFormat *aFormat) const;
virtual DBid GetDBClassID(void) const { return id_BaseTransaction; }
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);
// mJustImported is set to true during the import process,
// so posting operations will know that it's imported. After
// the posting is done, we turn the flag off again.
virtual void SetJustImported(const Boolean inValue = true) { mJustImported = inValue; }
virtual Boolean WasJustImported() const { return mJustImported; }
virtual void SetBeenPosted(const Boolean inValue = true) { mBeenPosted = inValue; }
virtual Boolean HasBeenPosted() const { return mBeenPosted; }
virtual void SetBeenReceivableBilled(const Boolean inValue = true) { mBeenRecvBilled = inValue; }
virtual Boolean HasBeenReceivableBilled() const { return mBeenRecvBilled; }
virtual void SetBeenTandMBilled(const Boolean inValue = true) { mBeenTandMBilled = inValue; }
virtual Boolean HasBeenTandMBilled() const { return mBeenTandMBilled; }
virtual void SetPaidInFull(const Boolean isPaid = true) { mBeenPaid = isPaid; } // subclasses override this
virtual Boolean HasBeenPaid() const { return mBeenPaid; }
virtual Boolean HasBeenPartPaid() const { return GetAmountPaid().IsPositive() && // TCS 7/21/99
(GetAmount() > GetAmountPaid()); } // rev TCS 12/18/99
virtual void SetBeenDeposited(const Boolean inValue = true) { mBeenDeposited = inValue; }
virtual Boolean HasBeenDeposited() const { return mBeenDeposited; }
virtual void SetIsInRemoteUse(const Boolean inUse = true) { mIsInRemoteUse = inUse; }
virtual Boolean IsInRemoteUse() const { return mIsInRemoteUse; }
virtual void SetStatus(const UInt8 inValue);
virtual void PostNewRecord(const UInt8 /*creationType*/) {}
virtual void PostDeletion(const Boolean /*postAudit*/ = true) {}
virtual void PostNewVoidRecord(const UInt8 /*creationType*/) {}
virtual void PostVoidRecordDeleted() {} // TCS 5/17/00
virtual void PrepareImportChange();
virtual void PostImportChange(const CMoney oldAmount);
// breakdowns and transactions generally do not need a name
virtual Boolean NeedsName() const { return false; } // TCS 1/29/01
virtual Boolean ForbidDuplicateNames() const { return false; } // TCS 7/25/01
virtual void SetSalesTaxAmount(const CMoney &/*inMoney*/) {} // TCS 4/25/01
virtual CMoney GetBilledAmount(const Boolean /*includeTax*/ = true) const;
virtual CMoney GetAdjustments() const { return 0; }
virtual CMoney GetAmount() const { return 0; }
virtual CMoney GetAmountPaid() const;
virtual CMoney GetAmountUnpaid() const { return 0; }
virtual CMoney GetAmountOverpaid() const { return GetAmountPaid() - GetAmount(); }
// subclasses should override if they store or calculate these values
virtual CDate GetBillingDate() const { return GetDate(); }
virtual CDate GetDiscountDate() const { return GetDate(); }
virtual CDate GetDatePaid() const { return GetDate(); }
virtual Boolean HasDate() const { return true; }
virtual void setDirty(const NeoDirty aReason = kNeoChanged);
virtual CTextString GetMainAccountName() const { return TCS_GetStockString(stockID_MissingItem); }
virtual Boolean FetchJobCostItemInfo(TJobCostItemArray &itemArray,
CTextString &catName,
const UInt8 costType);
virtual Boolean FillJobCostCatInfo(SJobCostCategoryInfo &costInfo,
const CMoney &amount, const DBClass transactionClass,
const UInt8 costType);
virtual Boolean FillJobCostCompareInfo(SJobCostCompareInfo &compareInfo,
const CMoney &amount, const DBClass transactionClass,
const UInt8 costType, const Boolean isEstimate);
virtual void FillCatSubcatInfo(TTwoLevelArray *twoLevelArray,
const DBid catID, const DBid subcatID,
const Boolean isCredit = false) const;
virtual void FillCatItemInfo(TReportGroupArray *catArray,
const DBid catID, const Boolean isCredit = false,
const Boolean isLocation = false) const;
virtual Boolean HasPaidStatus() const { return HasBeenPaid(); }
virtual Boolean HasUnpaidStatus() const { return !HasBeenPaid(); }
virtual UInt8 GetMainAccountClass() const { return mMainAccountClass; }
virtual void SetMainAccountClass(const DBClass classID);
virtual void SetCurrentUser(const DBid inID) { mCurrentUser = inID; }
virtual DBid GetCurrentUser() { return mCurrentUser; }
virtual Boolean IsMarked() const { return mIsMarked; }
virtual void SetIsMarked(const Boolean inValue) { mIsMarked = inValue; }
virtual void FillDataReport(CTCS_Table *table, CNeoStream *stream) const;
virtual CMoney GetCreditAmount() const { return GetAmount(); }
virtual CMoney GetDebitAmount() const { return 0; }
virtual Boolean GetSpareBoolean() const { return mBoolean; } // TCS 4/20/04
virtual Boolean GetFlexibleBoolean() const { return mBoolean; }
virtual void SetFlexibleBoolean(const Boolean inValue) { mBoolean = inValue; }
virtual Boolean IsInstantPayment() const { return mInstantPayment; }
virtual void SetIsInstantPayment(const Boolean inValue) { mInstantPayment = inValue; }
virtual Boolean IsCurrentlyDisplayed() const { return mDisplayingViewer != nil; }
virtual void SetDisplayingViewer(DB_RecordViewer *viewer) { mDisplayingViewer = viewer; }
virtual DB_RecordViewer *GetDisplayingViewer() { return mDisplayingViewer; }
virtual UInt8 GetCreationType() const;
virtual void SetCreationType(const UInt8 inValue) { mCreationType = inValue; }
virtual Boolean GetSpareBit() const { return mSpareBit; }
virtual void SetSpareBit(const Boolean inValue) { mSpareBit = inValue; }
protected:
// Copied Data
UInt8 mMainAccountClass, // class of the main account
// moved mMainAccount to subclasses TCS 3/1/00
mCreationType; // NEW METHOD-- how item was created // TCS 6/28/03
// Calculated Data.
// *** NEVER insert members before this bitfield!!!
UInt8 mJustImported:1, // used to flag items during import process TCS length change 6/8/00
mBeenPosted:1, // used to tell new transaction from prior during import
mBeenTandMBilled:1, // used for time and materials billing
mBeenRecvBilled:1, // used for accounts receivable billing new TCS 6/8/00
mBeenPaid:1,
mBeenDeposited:1,
mSpareBit:1, // flexible bit TCS 6/19/01
mIsMarked:1; // for breakdown checkmarks and similar flag bits rev TCS 5/1/00
UInt8 mBoolean:1, // flexible data bit
mInstantPayment:1, // paid instantly TCS 2/9/01
mOldCreationType:3, // OLD METHOD-- how item was created TCS 2/14/01
mTransFiller:3; // room for expansion
// calculated but not stored. **** DO NOT ADD to cFileLength ****
DBid mCurrentUser; // for multi-user access TCS 11/18/99
DB_RecordViewer *mDisplayingViewer; // TCS 11/20/99
UInt8 mIsInRemoteUse:1, // will be used for multi-user
baseTransFiller:7;
UInt8 mDBTPadding; // TCS 6/25/03
enum
{
cCopyFileLength = 2*sizeof(UInt8),
cFileLength = cCopyFileLength + sizeof(UInt16)
};
}; |