Link to: source code | source
2 | source 3 | transactions
directory
Copyright Turtle Creek Software 1996-2006. All Rights Reserved.
This class manages expense transactions for the Goldenseal accounting software,
small business management software, construction
project management software and
construction
accounting software.
Header for Goldenseal expense tracking and job costing. Data for Goldenseal accounting software.
class CExpenseTransaction : public CJobCostTransaction
{
public:
static CLASS_DESC *sDescriptor;
static DB_PersistentObject *MakeNew() { return TCS_NEW CExpenseTransaction; }
CExpenseTransaction();
virtual ~CExpenseTransaction() {}
virtual DBid GetDBClassID(void) const { return id_ExpenseTransaction; }
virtual void CopyFrom(DB_PersistentObject *source, const UInt8 copyFlags = 0);
virtual NeoSize GetFileLength(const CNeoFormat *aFormat) const;
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 FinishImportCreate();
static SInt32 GetPaymentDetailsClass(const SInt32 paymentMethod);
virtual Boolean NeedsPurchaseOffset(const UInt8 paymentMethod);
virtual DBClass GetPaymentClass(const UInt8 paymentMethod);
virtual CMoney GetNetPrice() const { return mAmount; }
virtual CTextString GetName() const { return mName; }
virtual void SetName(const CTextString inName)
{
TCS_ASSERTMsg(!IsInDatabase(), TCS_GetErrString(errID_BadDatabaseChange));
mName = inName;
MakeDirty(); // TCS 12/6/00
}
virtual Boolean NeedsName() const { return true; } // TCS 3/14/02
virtual Boolean ShouldBePaid() const { return false; }
virtual Boolean GetAllDueDates(CDate *billingDate, CDate *discountDate,
CDate *dueDate);
virtual Boolean IsDue(const CDate theDate) const;
virtual SInt32 GetDaysOverdue(const CDate compareDate = CDate::Today()) const;
virtual Boolean IsVendorInvoiced() const;
virtual Boolean CanImportEnum(const TagType tag, const SInt32 value) const;
virtual CDate GetDatePaid() const;
virtual void SetPaidInFull(const Boolean isPaid = true);
virtual void PostNewRecord(const UInt8 creationType);
virtual void PostDeletion(const Boolean postAudit);
virtual void PostRecordActivated(const UInt8 creationType);
virtual void PostNewVoidRecord(const UInt8 creationType);
virtual void PostRecordCancelled(const UInt8 cancelType);
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 PostVoidRecordChanged(const CMoney &oldAmount, const Boolean accountChanged,
const Boolean jobChanged);
virtual void PostRecordVoided(const Boolean accountChanged, const Boolean jobChanged,
const UInt8 startStatus, const UInt8 finalStatus);
// note that the Fetch series takes a date while the Get series doesnt
virtual CMoney FetchAmountDue(const CDate theDate) const;
virtual CMoney FetchAmountOnlyDue(const CDate theDate) const;
virtual CMoney FetchAmountOverdue(const CDate theDate) const;
virtual CMoney FetchDiscountOrPenalty(const CDate theDate) const;
//virtual CMoney FetchDiscountAmount(CDate theDate) const;
virtual CDate GetDueDate() const;
virtual void SetBillingDate(const CDate /*inDate*/) {}
virtual Boolean HasBeenTandMBilled() const;
virtual Boolean CanBeTandMBilled() const;
virtual Boolean CanBeJobCosted() const;
virtual void AdjustJobCosts(const CMoney &changeAmount,
const Boolean adjustArrays = true,
const Boolean removeFromArray = false);
virtual void AdjustMainAccount(const CMoney &changeAmount, const Boolean removeFromArray = false,
const Boolean jobCostOnly = false);
virtual void PostExpenseAccount(const Boolean removeItem = false);
virtual void PostPayablesAccount(const Boolean removeItem = false);
virtual void AdjustExpenseTransaction(const Boolean removeItem = false);
virtual Boolean FillPurchaseInfo(SVendorInfo &vendorInfo, const CDate cutoffDate,
const DBClass accountClass, const DBid accountID);
/*virtual void AdjustJobCosts(DB_Account *job, const CMoney &changeAmount,
const Boolean addToArray = true,
const Boolean removeFromArray = false);*/
virtual UInt8 GetPaymentType() const { return method_none; }
virtual DBid GetPaymentDetails() const { return 0; }
virtual CMoney GetAmountDue() const { return mAmount - mAmountPaid -
GetWithholdingAmount() - GetRetainageAmount(); } // rev TCS 10/8/02
virtual CMoney GetAmountUnpaid() const { return GetAmountDue(); }
virtual CMoney GetAmountPending() const { return GetAmountDue(); }
virtual CMoney GetPayablesAmount(const TagType tag, const CDate reportDate) const;
virtual void SetPaymentMethod(const UInt8 /*inMethod*/) {}
virtual void SetPaymentTerm(const DBid /*inMethod*/) {}
virtual CMoney GetPayablesAmount() const { return GetAmountDue(); }
virtual CMoney GetAmountPaid() const { return mAmountPaid; }
virtual void SetAmountPaid(const CMoney &inAmount)
{
mAmountPaid = inAmount;
MakeDirty();
}
virtual CMoney GetDebitAmount() const;
virtual CMoney GetCostAmount() const;
virtual Boolean HasPaidStatus() const { return GetStatus() == status_Paid; } // rev TCS 5/5/00
virtual Boolean HasUnpaidStatus() const { return !HasVoidStatus() && !HasPaidStatus(); } // rev TCS 6/6/00
virtual UInt8 GetUtilityAccountType(const TagType tag) const;
virtual DBid GetDefaultExpenseAccount() const { return 0; }
virtual void CreateOffsetTransaction();
// virtual void CancelOffsetTransaction(const UInt8 cancelType);
// virtual void UpdateOffsetTransaction(const CMoney &amount,
// const UInt8 updateType);
virtual SInt32 GetCheckbookNumber() const { return mCheckbookNumber; }
virtual void SetCheckbookNumber(const SInt32 inValue) { mCheckbookNumber = inValue; }
virtual SInt32 GetCheckNumber() const { return mCheckNumber; }
virtual void SetCheckNumber(const SInt32 inValue) { mCheckNumber = inValue; }
virtual CMoney GetAdjustmentAmount() const { return mAdjustmentAmount; } // TCS 10/29/99
virtual void SetAdjustmentAmount(const CMoney &inAmount) { mAdjustmentAmount = inAmount; }
virtual void AddAdjustmentAmount(const CMoney &inAmount) { mAdjustmentAmount += inAmount; } // TCS 10/19/01
virtual Boolean MustBePaid() const { return GetPaymentMethod() != method_billed; } // TCS 10/28/99
//virtual Boolean NeedsName() const { return true; } // TCS 1/29/01
virtual CMoney GetAdjustedAmount() const { return mAmount + mAdjustmentAmount; }
virtual void HandlePaymentMade(const CMoney &inAmount, const UInt8 sourceClass,
const DBid sourceID, const UInt8 transactionType,
const Boolean removeItem = false);
virtual void HandlePaymentReceived(const CMoney &inAmount, const UInt8 sourceClass,
const DBid sourceID, const UInt8 transactionType,
const Boolean removeItem = false,
const Boolean fromDeposit = false,
const Boolean fromBillRecord = false);
virtual void HandleDeposit(const CMoney &amount, const UInt8 sourceClass,
const DBid sourceID, const Boolean removeItem = false,
const Boolean fromBillRecord = false);
virtual void HandleTandMBilling(const DBid billID, const Boolean removeItem);
virtual void CreateInstantPayment(const UInt8 paymentMethod, const DBid paymentDetails);
virtual void CreateEmployeeReimburse(const DBid paymentDetails);
virtual void CreateBarterOffset(const DBid paymentDetails);
virtual DBid GetExpenseAccount() const { return mExpenseAccount; }
virtual void SetExpenseAccount(const DBid inID) { mExpenseAccount = inID; }
virtual DBid GetPayablesAccount() const { return 0; }
virtual DBClass GetTransactionRefClass() const;
virtual DBid GetTransactionRef() const { return mTransactionRef; } // TCS 2/20/01
virtual void SetTransactionRef(const DBid inID) { mTransactionRef = inID; }
virtual Boolean HasSpecialStatus() const;
virtual void FillDataReport(CTCS_Table *table, CNeoStream *stream) const;
/*virtual UInt8 GetPaymentTransactionClass() const { return mPaymentClass; }
virtual DBid GetPaymentTransactionID() const { return mPaymentRef; }*/
protected:
// copied data members
DBid mExpenseAccount,
mTransactionRef; // OK to copy this because dupe refs are generally OK
// calculated data members
CMoney mAmountBilled,
mAmountPaid,
mAdjustmentAmount; // TCS 10/29/99
DBid mExpenseExpansion; // use this as a ref to a specific cost item or assembly????
// temporary data. DO NOT ADD TO FILE LENGTH
SInt32 mCheckbookNumber,
mCheckNumber;
enum
{
cCopyFileLength = 2*sizeof(DBid),
cFileLength = cCopyFileLength +
3*sizeof(CMoney) +
sizeof(DBid)
};
}; |