Accounting Software
Small Business Software Estimating Software
Time Tracking SoftwareTime Management SoftwareTime Billing SoftwareProject Management SoftwareBookkeeping SoftwareContact Management SoftwareBusiness Management Software

Payroll Tax Items (Header)

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)
};
};