Link to: source code | lists
directory
Copyright Turtle Creek Software 1996-2006. All Rights Reserved.
This class manages payroll taxes for the Goldenseal accounting software,
time tracking software and payroll software.
class CTaxItem : public DB_DescribedPersistent
{
public:
static CLASS_DESC *sDescriptor;
static DB_PersistentObject *MakeNew() { return TCS_NEW CTaxItem; }
CTaxItem();
virtual ~CTaxItem() {}
virtual DBid GetDBClassID(void) const { return id_TaxItem; }
//static Boolean GetConditionsText(const UInt8 conditions, CTextString *string);
//static Boolean GetRateText(CTextString *string);
static UInt8 GetCalcStep(const UInt8 inValue);
virtual void CopyFrom(DB_PersistentObject *source, const UInt8 copyFlags = 0);
virtual NeoSize GetFileLength(const CNeoFormat *aFormat) const;
virtual Boolean GetMemberValue(const NeoTag aTag, const NeoTag aType,
void *aValue) const;
virtual Boolean SetMemberValue(const NeoTag aTag, const NeoTag aType,
const void *aValue);
virtual void ReadObject(CNeoStream *aStream, const NeoTag aTag);
virtual void WriteObject(CNeoStream *aStream, const NeoTag aTag);
virtual void PostNewRecord(const UInt8 creationType);
virtual void PostDeletion(const Boolean postAudit);
virtual void PostRecordChanging(const Boolean accountChanging,
const Boolean jobChanging);
virtual void PostRecordChanged(const CMoney &oldAmount,
const Boolean accountChanged,
const Boolean jobChanged);
virtual UInt8 GetPayrollGroup();
virtual Boolean IsCredit() const;
virtual Boolean EmployeePays();
Boolean HasBaseMin() { return (mFirstType == tax_minbase || mSecondType == tax_minbase); }
Boolean HasBaseMax() { return (mFirstType == tax_maxbase || mSecondType == tax_maxbase); }
Boolean HasTaxMax() { return (mFirstType == tax_maxresult || mSecondType == tax_maxresult); }
CMoney GetAnnualBaseMax() const;
CMoney GetAnnualTaxMax() const;
virtual UInt8 GetUtilityAccountType(const TagType tag) const;
UInt8 GetBasedOn() const { return mBasedOn; }
UInt8 GetSubtractFrom() const { return mSubtractFrom; }
void IncrementBaseAmount(const SLaborHoursInfo &hoursInfo, CMoney &baseAmount,
const CMoney &timeUsed, const SInt32 daysInPeriod);
void IncrementBaseAmount(const SCommissionInfo &commishInfo, CMoney &baseAmount);
virtual CMoney CalculateDeduction(const CMoney &baseAmount, CEmployeeAccount *employee,
const UInt8 basePeriod);
virtual CMoney CalculateCatTaxDeduction(SCatTaxItemInfo &catTaxInfo, CEmployeeAccount *employee);
CMoney ApplyAdjustment(const UInt8 calcType, const CMoney &baseAmount,
const CMoney &inValue, CEmployeeAccount *employee);
//virtual void AdjustTaxReportFields(const Boolean removeIt = false);
virtual UInt8 GetPaidToClass() const { return mPaidToClass; } // TCS 10/18/00
virtual DBid GetPaidToAccount() const { return mPaidTo; }
virtual DBid GetUnpaidTaxAccount() const { return mUnpaidTaxAccount; }
virtual void SetUnpaidTaxAccount(const DBid inID) { mUnpaidTaxAccount = inID; }
virtual CMoney GetTaxPercent() const; // TCS 2/12/01
virtual SInt32 ImportMember(const TagType tag, const CTextString &inString);
virtual CMoney GetUnpaidTaxAmount(const Boolean checkAll = false) const; // TCS 6/29/01
virtual CMoney GetDateRangeAmount(const CDate startDate, const CDate endDate) const;
virtual UInt32 GetDateRangeCount(const CDate startDate, const CDate endDate) const;
virtual void AddToUseageArray(const DBClass classID, const DBid itemID,
const UInt8 transType, const Boolean removeItem) // bugfix TCS 1/25/03
{ AddToObjectInfoArray(mUseageArray, classID, itemID, transType, removeItem); }
virtual DBid HandleTaxesDue(const DBClass classID, const DBid itemID, const Boolean removeItem);
virtual void FillDataReport(CTCS_Table *table, CNeoStream *stream) const;
virtual void SetEndSafetyTag() { mEndSafetyTag = tag_endsafetytag; }
protected:
TObjectInfoArray mUseageArray; // TCS 8/16/00 rev TCS 6/28/01 (changed from TObjectIDArray)
// the length change should be ok without a version change
// since no array items have been added yet
// copied members
CMoney mCalcAmount,
mFirstAmount,
mSecondAmount;
DBid mPayrollTaxField, // unused
mIncomeTaxField, // unused
mPaidTo,
mTaxTable,
mSecondTable,
mThirdTable,
mFourthTable, // TCS 4/7/00
mFifthTable, // TCS 4/24/00
mUnpaidTaxAccount; // TCS 12/12/00
UInt8 mTaxType,
mBasedOn,
mSubtractFrom, // TCS 7/28/99
mCalculationType,
mFirstType,
mSecondType,
mPaidToClass,
mBasePeriod,
mRoundingType; // TCS 3/17/00
// *** NEVER insert members before this bitfield!!!
UInt8 mAllowNegative:1,
filler:7;
CMoney mExpansionMoney; // TCS 3/27/02
DBid mExpansionLong;
// calculated members
TagType mEndSafetyTag; // TCS 9/8/02
enum
{
cCopyFileLength = 3*sizeof(CMoney) +
9*sizeof(DBid) +
10*sizeof(UInt8) +
sizeof(CMoney) +
sizeof(DBid),
cFileLength = cCopyFileLength +
sizeof(TagType)
};
}; |