Accounting Software
Small Business Software Estimating Software
Inventory SoftwareInventory Tracking SoftwareInventory Control SoftwareInventory Management SoftwareConstruction Management SoftwareProject Management SoftwareBusiness Management Software

Leases (Header)

Link to: source code | transactions directory

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

This class manages property rental leases in the Goldenseal accounting software,
property management software, and rental property software.

class CLease : public CMeeting
{
public:

static CLASS_DESC *sDescriptor;
static DB_PersistentObject *MakeNew() { return TCS_NEW CLease; }

CLease();
virtual ~CLease() {}

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

virtual NeoSize GetFileLength(const CNeoFormat *aFormat) const;

virtual DBid GetDBClassID(void) const { return id_Lease; }

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 PostCommission(const Boolean removeItem = false);
virtual void PostLease(const Boolean removeItem = false);

static void InitializeRentalInfo(SRentalInfo &rentInfo);

virtual Boolean FillCommissionInfo(SCommissionInfo &commishInfo, const DBid commissionID) const;

virtual CTextString GetTenantName() const;
virtual CTextString GetCustomerName() const;
virtual Boolean FillDepositInfo(SDepositInfo &depositInfo);

virtual Boolean AddToRentalTransactionArray(const DBid inID, const Boolean removeIt = false)
{ return AddToObjectIDArray(mRentalTransactionArray, inID, removeIt); }
virtual Boolean AddToUnpaidRentArray(const DBid inID, const Boolean removeIt = false)
{ return AddToObjectIDArray(mUnpaidRentArray, inID, removeIt); }
virtual Boolean AddToUnpaidBillingRecordArray(const DBid inID, const Boolean removeIt = false)
{ return AddToObjectIDArray(mUnpaidBillingRecordArray, inID, removeIt); }

virtual CMoney GetDeposit() const;
virtual CMoney GetLastMonthPrepaidRent() const;
virtual CMoney GetKeyDeposit() const { return mKeyDeposit; }
virtual CMoney GetStartingAmount() const;
virtual CMoney GetRentAmount() const { return mAmount; }
virtual CMoney GetClosingAmount() const;

virtual DBid GetPaymentTerm() const { return mPaymentTerm; }
virtual DBClass GetPropertyType() const { return mPropertyType; }
virtual DBid GetPropertyID() const { return mProperty; }
virtual DBid GetRentalUnit() const { return mRentalUnit; }

virtual CDate GetStartDate() const { return mLeaseStart; }
virtual CDate GetEndDate() const { return mLeaseEnd; }

virtual Boolean IsMonthToMonth() const { return mMonthToMonth; } // TCS 8/30/02 rev 11/13/03

virtual CTextString GetUnitName() const;
virtual CTextString GetPropertyName() const;

virtual CMoney GetQuantity() const { return 1; }

virtual CMoney GetCurrentBalance() const { return mCurrBalance; } // TCS 11/15/00
virtual void SetCurrentBalance(const CMoney &inValue)
{
mCurrBalance = inValue;
MakeDirty();
}

virtual UInt8 GetStatus() const { return mStatus; } // TCS 4/23/01
virtual UInt8 GetStarterStatus() const { return status_Pending; } // TCS 10/5/00

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 FillDepositArray(SPaymentInfo &paymentInfo) const;
virtual Boolean FillRentalInfo(SLeaseInfo &leaseInfo, CDate cutoffDate,
const Boolean inViewer = false);
virtual Boolean FillAllRentsDue(SLeaseInfo &leaseInfo, const CDate cutoffDate);
virtual Boolean FillMonthlyRents(SLeaseInfo &leaseInfo, const CDate cutoffDate, const Boolean isMonthToMonth);

virtual void InitializeLeaseInfo(SLeaseInfo &leaseInfo);

virtual SInt32 GetTransactionCount() const;
virtual Boolean HasLockedStatus() const;

virtual CMoney GetCommissionPaid() const { return mCommissionPaid; }
virtual void HandleCommissionPaid(const CMoney &amount, const Boolean removeItem = false);

virtual CDate GetRevisionDate() const { return mLeaseEnd; } // TCS 6/24/02
virtual void FillDataReport(CTCS_Table *table, CNeoStream *stream) const;

virtual void SetEndSafetyTag() { mEndSafetyTag = tag_endsafetytag; }

protected:
// array members
TObjectIDArray mRentalTransactionArray, // TCS 10/12/99
mUnpaidRentArray,
mUnpaidBillingRecordArray; // TCS 3/28/02
// string members
// TCS removed a bunch of string members 9/6/02, since they aren't used
CTextString mName; // TCS added 1/15/03
// copied data members
DBid mProperty, // real estate account
mRentalUnit,
mPaymentTerm,
mEscrowAccount,
mSalesRep, // TCS 6/5/02
mCommissionID;

CDate mLeaseStart,
mLeaseEnd;

CMoney mAmount, // rental amount
mKeyDeposit,
mLastMonthPrepaid,
mDamageDeposit;

UInt8 mPropertyType,
mStatus,
mDepositType,
mLastMonthPrepaidType;

// *** NEVER insert members before this bitfield!!!
UInt8 mMonthToMonth:1, // TCS 12/12/02
mFirstMonthPartial:1,
mLastMonthPartial:1,
mLeaseFiller:5;
UInt8 mLeasePadding;

CMoney mExpansionMoney; // TCS 12/12/02

DBid mExpansionLong,
mContractPackage; // TCS 11/13/03

CMoney mFirstMonthAmount, // TCS 11/13/03
mLastMonthAmount;

// calculated data members
CMoney mCurrBalance, // TCS 11/15/00
mCommissionPaid; // TCS 6/5/02

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


enum
{
cCopyFileLength = 6*sizeof(DBid) +
2*sizeof(CDate) +
4*sizeof(CMoney) +
6*sizeof(UInt8) +
sizeof(CMoney) +
sizeof(DBid),
cCopyFileLength3 = cCopyFileLength +
sizeof(DBid) +
2*sizeof(CMoney),

cFileLength = cCopyFileLength +
2*sizeof(CMoney) +
sizeof(TagType),
cFileLength3 = cCopyFileLength3 +
2*sizeof(CMoney) +
sizeof(TagType)
};
};