Link to: source code | transactions
directory
Copyright Turtle Creek Software 1996-2006. All Rights Reserved.
This class manages receipt transactions in the Goldenseal accounting software,
estimating software, project management software
and construction estimating software.
class CReceiptTransaction : public CBreakdownTransaction
{
public:
static CLASS_DESC *sDescriptor;
static DB_PersistentObject *MakeNew() { return TCS_NEW CReceiptTransaction; }
CReceiptTransaction();
virtual ~CReceiptTransaction() {}
static UInt8 GetPaymentType(const DBid paymentID);
static SInt32 GetPaymentDetailsClass(const DBid paymentID);
virtual DBid GetDBClassID(void) const { return id_ReceiptTransaction; }
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();
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 PostRevenueAccount(const Boolean removeItem = false);
virtual DBid GetDefaultRevenueAccount() const { return 0; }
virtual void PostSalesTaxDue(const Boolean removeItem = false);
virtual CMoney FetchDiscountOrPenalty(const CDate theDate) const;
virtual Boolean GetAllDueDates(CDate *billingDate, CDate *discountDate,
CDate *dueDate);
virtual SInt32 GetDaysOverdue(CDate compareDate = CDate::Today()) const;
//virtual Boolean CanBeBilled() const;
virtual Boolean IsBilled() const;
virtual Boolean IsPrepaid() const;
virtual Boolean IsOriginalSale() const { return false; } // TCS 10/19/00
virtual void HandlePaymentMade(const CMoney &inAmount, const UInt8 sourceClass,
const DBid sourceID, const UInt8 transactionType,
const Boolean removeItem = false);
virtual void HandleTaxesPaid(const DBClass sourceClass, const DBid sourceID,
const Boolean removeItem = false);
virtual CDate GetDatePaid() const;
virtual void SetBillingDate(const CDate /*inDate*/) {}
virtual CDate GetDueDate() const;
virtual DBid GetPaymentTerm() const { return 0; }
virtual DBClass GetPaymentTermClass() const { return 0; }
virtual CMoney GetAccountingAmount(const Boolean removeIt, const UInt8 type) const;
virtual CMoney GetReceivablesAmount(const TagType tag, const CDate reportDate) const;
virtual CMoney GetReceivablesAmount() const { return GetAmountUnpaid(); }
virtual CMoney GetUnpaidBalance() const;
virtual CMoney GetPastDueBalance(const CDate cutoffDate) const;
virtual CMoney GetCreditAmount() const;
virtual CMoney GetIncomeAmount() const;
// note that HasPaidStatus refers to the status field value,
// while HasBeenPaid refers to the amount. They should match.
virtual Boolean HasPaidStatus() const { return GetStatus() == status_Paid || GetStatus() == status_Deposited; }
virtual Boolean HasUnpaidStatus() const { return !HasPaidStatus() && !HasVoidStatus(); } // rev TCS 3/8/00
virtual Boolean HasBeenPaid() const { return !GetAmountDue().IsPositive(); }
//virtual Boolean HasOverdueStatus() const;
virtual Boolean GetCommishPaid() const { return mCommishPaid; }
virtual void SetCommishPaid(const Boolean inValue = true) { mCommishPaid = inValue; }
/*virtual Boolean IsMixedPayMethods() const { return mMixedPayMethods; }
virtual void SetMixedPayMethods(const Boolean inValue = true) { mMixedPayMethods = inValue; }*/
/*virtual Boolean IsPartCredit() const { return mPartCredit; }
virtual void SetPartCredit(const Boolean inValue = true) { mPartCredit = inValue; }*/
virtual Boolean IsJobCosted() const { return mJobCosted; }
virtual void SetJobCosted(const Boolean inValue = true) { mJobCosted = inValue; }
virtual void SetPaidInFull(const Boolean isPaid = true);
virtual void SetAmountPaid(const CMoney &inAmount) { mAmountPaid = inAmount; }
virtual CTextString GetCustomerName() const;
virtual CTextString GetAccountNumber() const;
virtual Boolean HasPaymentReceipt() const;
virtual Boolean HasBeenDeposited() const; // TCS 4/5/00 rev 9/18/01
/*virtual Boolean GetPaymentReceived() const { return mPaymentReceived; }
virtual void SetPaymentReceived(const Boolean inValue = true) { mPaymentReceived = inValue; } */
virtual UInt8 GetUtilityAccountType(const TagType /*tag*/) const { return virtual_accruedrevenue; } // TCS 9/4/99
virtual CMoney GetAmountPaid() const { return mAmountPaid; }
virtual CMoney GetAmountDeposited() const { return mAmountDeposited; }
virtual CMoney GetAmountDue() const { return mAmount - GetAmountPaid() - mAdjustmentAmount; }
virtual CMoney GetAmountUnpaid() const { return GetAmountDue(); }
virtual CMoney GetAmountPending() const { return GetAmountDue(); }
virtual CMoney GetAmountOverdue(const CDate compareDate) const;
virtual CMoney GetAmountVeryOverdue(const CDate compareDate) const;
virtual CMoney GetPenaltyDue(const CDate /*compareDate*/) const { return 0; }
virtual CMoney GetAdjustedAmount() const { return mAmount + mAdjustmentAmount; } // TCS 11/21/01
virtual CMoney GetAdjustmentAmount() const { return mAdjustmentAmount; }
virtual void SetAdjustmentAmount(const CMoney &inAmount) { mAdjustmentAmount = inAmount; }
virtual void AddAdjustmentAmount(const CMoney &inAmount) { mAdjustmentAmount += inAmount; } // TCS 10/19/01
virtual DBid GetRevenueAccount() const { return mRevenueAccount; }
virtual void SetRevenueAccount(const DBid inID) { mRevenueAccount = inID; }
virtual CTextString GetBillingAddress() const;
virtual DBid GetTaxClass() const { return id_JobSalesTax; }
virtual DBid GetTaxID() const { return 0; }
virtual CMoney GetSalesTaxAmount() const { return 0; }
virtual DBid GetPaymentMethod() const { return mPaymentMethod; }
virtual void SetPaymentMethod(const UInt8 inMethod) { mPaymentMethod = inMethod; } // the payment method object id
virtual UInt8 GetPaymentType() const { return GetPaymentType(mPaymentMethod); } // the basic type of pmt (method_cash etc)
virtual DBid GetBillPaymentMethod() const; // the payment method id used to pay a billed item
// we store the pmt method in the transaction array
virtual UInt8 GetTransDetails() const { return GetPaymentType(); } // TCS 10/20/00
virtual DBClass GetDepositTransactionClass() const;
virtual DBid GetDepositTransactionID() const;
virtual Boolean IsValidJobCost(const UInt8 costType) const // TCS 5/8/01
{ return (costType == 0 || costType == costtype_income); }
virtual void AdjustDepositedAmount(const CMoney &inAmount) { mAmountDeposited += inAmount; }
virtual Boolean FillJobCostCatInfo(SJobCostCategoryInfo &costInfo,
const CMoney &amount, const DBClass transactionClass,
const UInt8 costType);
virtual Boolean FetchJobCostItemInfo(TJobCostItemArray &itemArray,
CTextString &catName,
const UInt8 costType);
virtual void FillCostItemInfo(TJobCostItemArray &itemArray, const UInt8 costType,
const DBid accountID) const;
virtual Boolean UsesSalePricing() const { return mSalePricing; } // 11/1/01
virtual void FillDataReport(CTCS_Table *table, CNeoStream *stream) const;
protected:
// copied members
DBid mPaymentMethod,
mRevenueAccount;
// calculated data members (TCS rev 9/1/99, 10/12/99)
CMoney mAmountPaid,
mAmountDeposited,
mAdjustmentAmount; // TCS 1/26/00
//DBid mDepositRef; // TCS removed 4/10/00. Now handled by mPaymentArray
// *** NEVER insert members before this bitfield!!!
UInt8 mCommishPaid:1,
mJobCosted:1,
//mHasPaymentReceipt:1, // TCS removed 6/6/00. Now handled by look at mPaymentArray
mSalePricing:1,
filler:5;
UInt8 mReceiptPadding; // TCS 3/27/02
enum
{
cCopyFileLength = 2*sizeof(DBid),
cFileLength = cCopyFileLength +
3*sizeof(CMoney) + // bugfix TCS 8/3/00
2*sizeof(UInt8)
};
}; |