Link to: source code |
source 2 | transactions
directory
Copyright Turtle Creek Software 1996-2006. All Rights Reserved.
This class manages billing records for the Goldenseal accounting
software,
small business management software, construction
project management software and
construction
accounting software.
class CBillingRecord : public CReceiptTransaction
{
public:
static CLASS_DESC *sDescriptor;
static DB_PersistentObject *MakeNew() { return TCS_NEW CBillingRecord; }
CBillingRecord();
virtual ~CBillingRecord() {}
virtual DBid GetDBClassID(void) const { return id_BillingRecord; }
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 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 PostBilling(const Boolean removeItem = false);
virtual void PostBreakdownsBilled(const Boolean removeItem = false);
static DBid FindLastBillID(const UInt8 classID, const DBid inItemID,
const UInt8 breakdownType, const DBid skipID = 0);
virtual DBid GetPaymentTerm() const { return mPaymentTerms; }
virtual DBid GetTaxID() const { return mTaxRate; }
virtual CMoney GetGrossAmount() const { return mGrossAmount; }
virtual void SetGrossAmount(const CMoney &inMoney) { mGrossAmount = inMoney; }
virtual CMoney GetContractAmount() const;
virtual Boolean HasBeenReceivableBilled() const { return !HasVoidStatus(); } // TCS 11/19/03
virtual void AddDrawBreakdownsToBill(const SProjectInfo &projectInfo,
const UInt8 entryClass);
virtual void AddTandMBreakdownsToBill(const STandMInfo &projectInfo);
virtual void AddChangeOrderBreakdownsToBill(const SAllowanceInfo &projectInfo, const DBClass breakdownClassID);
//virtual void AddAllowanceBreakdownsToBill(const SAllowanceInfo &projectInfo);
virtual void AddSaleBreakdownsToBill(const SCustomerInfo &customerInfo);
void AddRentBreakdownsToBill(const SLeaseInfo &leaseInfo); // BD 3/19/02
virtual void FillFromPriorBillBreakdown(SProjectInfo &projectInfo,
const DBid entryClassID);
//virtual Boolean IsValidBreakdown(const UInt8 breakdownType);
virtual void FinishNonViewerCreate();
virtual Boolean HasRecordLock() const;
virtual Boolean HasLockedStatus() const;
virtual Boolean CanBeDeleted(const Boolean giveMessage = true) const;
virtual Boolean HasLaterBill() const;
virtual Boolean IsOriginalSale() const { return mMainAccountClass == id_ProjectAccount; } // TCS 10/19/00
virtual DBid GetDefaultRevenueAccount() const { return account_ProjectRevenue; }
virtual void FinishBreakdownUpdate(CBreakdownEntry *breakdown, CBreakdownTable *table);
virtual CMoney GetFinanceCharge(const CDate /*compareDate*/) const { return mFinanceCharge; }
//virtual CMoney GetUnpaidBalance() const { return mUnpaidBalance; }
virtual CMoney GetRetainageAmount() const { return mRetainageAmount; }
virtual void SetRetainageAmount(const CMoney &inAmount) { mRetainageAmount = inAmount; }
virtual CMoney GetAmountCurrent() { return mAmount - GetAmountPaid(); }
virtual CMoney GetSalesTaxAmount() const { return mTaxAmount; } // rev TCS 5/2/00
virtual void SetSalesTaxAmount(const CMoney &inMoney) { mTaxAmount = inMoney; }
virtual CMoney GetSalesTaxPercent() const; // TCS 1/22/03
virtual CDate GetBillingDate() const { return mBillingDate; }
virtual void SetFinanceCharge(const CMoney &inAmount) { mFinanceCharge = inAmount; }
virtual UInt8 GetStarterStatus() const;
virtual UInt8 GetConditions() const { return mConditions; } // TCS 9/7/00
virtual UInt8 GetStatus() const { return mStatus; } // TCS 4/23/01
virtual UInt8 GetProjectType() const;
virtual UInt8 GetPhaseClassID() const;
virtual void SetJustPrinted();
virtual void SetPaidInFull(const Boolean isPaid = true);
virtual Boolean IsBilled() const { return true; } // TCS 3/7/02
virtual Boolean IsPrepaid() const { return false; }
virtual CMoney GetValueCompleted() const { return mValueCompleted; }
virtual void SetValueCompleted(const CMoney &inAmount) { mValueCompleted = inAmount; }
virtual CMoney GetPercentCompleted() const { return mPercentCompleted; }
virtual void SetPercentCompleted(const CMoney &inAmount) { mPercentCompleted = inAmount; }
virtual DBid GetEstimateID() const;
virtual DBid GetNextBill() { return mNextBill; }
virtual void SetNextBill(const DBid inValue) { mNextBill = inValue; }
virtual CMoney GetPenaltyDue(const CDate compareDate) const;
virtual DBClass GetPaymentTermClass() const;
virtual DBid GetTransactionRef() const { return mTransactionRef; } // TCS 2/20/01
virtual void SetTransactionRef(const DBid inID) { mTransactionRef = inID; }
virtual Boolean CopySelectedBreakdowns(CBreakdownTransaction *source);
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 HandleSalePaid(const CMoney amount, const Boolean removeItem = false);
virtual void HandleSaleDeposited(const CMoney amount, const Boolean removeItem = false);
virtual void HandleDateChanged();
virtual void FillDataReport(CTCS_Table *table, CNeoStream *stream) const;
virtual void SetEndSafetyTag() { mEndSafetyTag = tag_endsafetytag; }
protected:
// COPIED DATA
DBid mPaymentTerms,
mTaxRate,
mMessage,
mTransactionRef; // TCS 11/16/99 Should not be copied- we zap it in CopyFrom
CDate mBillingDate;
CMoney mGrossAmount,
mFinanceCharge,
mRetainageAmount,
mTaxAmount; // TCS removed mUnpaidBalance 11/1/00
UInt8 mStatus,
mConditions; // used for transaction class
// CALCULATED DATA
DBid mUnusedLong1,
mNextBill; // used to check deletion status
CMoney mPercentCompleted,
mValueCompleted;
TagType mEndSafetyTag; // TCS 9/8/02
//CProjectBreakdownEntry *CreateProjectBreakdownEntry(const UInt8 entryClass);
void UpdateProjectInfo(const CMoney &valueCompleted, const CMoney &percentCompleted,
const CMoney &balance);
enum
{
cCopyFileLength = 4*sizeof(DBid) +
sizeof(CDate) +
4*sizeof(CMoney) +
2*sizeof(UInt8),
cFileLength = cCopyFileLength +
2*sizeof(DBid) +
2*sizeof(CMoney) +
sizeof(TagType)
};
}; |