Accounting Software
Small Business Software Estimating Software
Contact SoftwareInventory SoftwareInventory Tracking SoftwareInventory Management SoftwareInventory Control SoftwareCustomer Management SoftwareBusiness Management Software

Recurring Transactions (Header)

Link to: source code | prefs directory

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

This class manages recurring accounting transations for the Goldenseal accounting software,
small business management software, construction project management software and
construction estimating software.

class CRecurringTransaction : public DB_ArrayOwner<CDate>
{
public:
static CLASS_DESC *sDescriptor;
static DB_PersistentObject *MakeNew() { return TCS_NEW CRecurringTransaction; }
CRecurringTransaction();
virtual ~CRecurringTransaction() {}

enum
{
col_date = 1
};

class CRecurring_Desc : public CLASS_DESC
{
public:
CRecurring_Desc()
: CLASS_DESC(id_RecurringTransaction, id_DescribedPersistent, CRecurringTransaction::MakeNew) {}
virtual ~CRecurring_Desc() {}

virtual Boolean GetTableColInfo(const TagType tag, const TableIndexT col,
STableColInfo *colInfo);
virtual SInt32 GetNumTableCols(const TagType /*tableTag*/) { return 1; }
};

virtual NeoID GetDBClassID(void) const { return id_RecurringTransaction; }
virtual NeoSize GetFileLength(const CNeoFormat *aFormat) const;

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

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 GetEntryFromRow(const CTCS_Table &aTable,
const TableIndexT row,
CDate *outDate);
virtual Boolean FillRowFromEntry(CTCS_Table *aTable, const TableIndexT row,
const CDate &inDate);

virtual CTextString ExportColumnCString(const TableIndexT col,
const CDate &outDate);

virtual Boolean ImportColumnCString(const TableIndexT col,
const CTextString &inString, CDate *inDate);

UInt8 GetFrequency() const { return mFrequency; }
virtual CDate GetDueDate() const { return mDate; }
virtual void SetDate(const CDate inDate) { mDate = inDate; } // TCS 4/11/01
Boolean AutoEnterAmounts() const { return mAutoEnterAmounts; }
Boolean AutoEnterBreakdowns() const { return mAutoEnterBreakdowns; }
Boolean AutoEnterJobCosts() const { return mAutoEnterJobCosts; }

virtual DBid GetTemplateID() const { return mTemplateID; }
virtual void SetTemplateID(const DBid inValue) { mTemplateID = inValue; }
virtual DBClass GetTemplateClass() const { return mTemplateClass; }
virtual void SetTemplateClass(const DBClass inValue) { mTemplateClass = inValue; }

// the template may not be an account, but we use these so it's
// possible to fetch values from a DB_PersistentObject cast TCS 1/20/04
virtual DBClass GetMainAccountClass() const { return mTemplateClass; }
virtual DBid GetMainAccountID() const { return mTemplateID; }

virtual void UpdateDateArray();
virtual void FillDateTable(const UInt8 period, const CDate &inDate,
CMemberTable *table);

Boolean MakeRecurringTransactions(const CDate &matchDate, const CDate now);
virtual void PostDeletion(const Boolean postAudit);

virtual CDate GetReminderDate() const { return mDate; }
virtual Boolean UpdateNextRecurDate(CDate &currentMatchDate);

virtual Boolean HasOpenStatus() const { return true; } // always open

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

virtual void SetEndSafetyTag() { mEndSafetyTag = tag_endsafetytag; }
protected:

// copied members
DBid mTemplateID; // the ID of the transaction being copied

CDate mDate; // the date of the next recurring item

UInt8 mTemplateClass, // the type of transaction being copied
mFrequency,
mAction;

// *** NEVER insert members before this bitfield!!!
UInt8 mAutoEnterAmounts:1,
mAutoEnterBreakdowns:1,
mAutoEnterJobCosts:1,
mEnterMultipleItems:1, // TCS 8/11/01
filler:4;

CDate mExtraDate; // no longer used. Could be changed to DBid or
// anything else that takes up 32 bits.

// calculated members
TagType mEndSafetyTag; // TCS 9/8/02

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

cFileLength = cCopyFileLength +
sizeof(TagType)
};
};