Link to: source code | source
2 | transactions
directory
Copyright Turtle Creek Software 1996-2006. All Rights Reserved.
This class manages employee hours for the Goldenseal accounting software,
time tracking software, construction
project management software and
construction
accounting software.
class CLaborLog : public CTimeLog
{
public:
static CLASS_DESC *sDescriptor;
static DB_PersistentObject *MakeNew() { return TCS_NEW CLaborLog; }
CLaborLog();
virtual ~CLaborLog() {}
virtual void CopyFrom(DB_PersistentObject *source, const UInt8 copyFlags = 0);
virtual NeoSize GetFileLength(const CNeoFormat *aFormat) const;
virtual DBid GetDBClassID(void) const { return id_LaborHours; }
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 PostRecordChanging(const Boolean accountChanging,
const Boolean jobChanging);
virtual void PostRecordChanged(const CMoney &oldAmount,
const Boolean accountChanged,
const Boolean jobChanged);
//virtual Boolean IsValidBreakdown(const UInt8 breakdownType);
virtual CMoney CalcWageRateAmount(const DBid wageRateID, const UInt8 timeUnit,
const DBid accountID) const;
virtual CMoney CalcWageRateAmount(const UInt8 timeUnit = 0) const
{
if (timeUnit)
return CalcWageRateAmount(mWageSchedule, timeUnit, mMainAccount);
else
return CalcWageRateAmount(mWageSchedule, mTimeUnit, mMainAccount);
}
virtual void SetWageRateAmount(const CMoney &inValue) { mWageRateAmount = inValue; }
virtual CMoney GetWageRateAmount() { return mWageRateAmount; }
virtual UInt8 GetOvertimeType() const { return mOvertimeType; }
virtual void SetOvertimeType(const UInt8 inType) { mOvertimeType = inType; }
virtual CMoney GetOvertimeRate(const UInt8 timeUnit = 0) const;
virtual CMoney GetOvertimeAmount() const;
virtual CMoney CalculateWageAmount(const CMoney &billedUnits, const DBid accountID,
const UInt8 timeUnit, const DBid wageRateID,
const UInt8 overtimeType = 0, const CMoney &daysWorked = 0) const;
/*virtual CMoney CalculateOvertimeAmount(const CMoney &billedUnits, const DBid accountID,
const UInt8 timeUnit, const DBid wageRateID,
const UInt8 conditions) const;*/
virtual CMoney CalculateOvertimeHours(CMoney *cumHours, const CMoney &inHours,
const CMoney &weeklyOTCutoff, const CMoney &dailyOTCutoff,
const CMoney &inDays, const UInt8 overtimeType) const;
virtual CMoney GetOvertimeHours(CMoney *cumHours, const CMoney &weeklyOTCutoff,
const CMoney &dailyOTCutoff) const;
virtual void AddToDeductionBases(SEmployeeInfo &employeeInfo,
const SLaborHoursInfo &hoursInfo);
virtual Boolean WageIsDue(const CDate startDate, const CDate endDate);
Boolean IsSalary() const;
virtual CMoney GetTandMAmount(const Boolean /*includeTax*/ = false,
const Boolean /*includeAdjustments*/ = false) const { return mBillingAmount; }
virtual void FinishViewerCreate();
virtual void FinishNonViewerCreate();
virtual void FinishTemplateCreate();
virtual void FinishImportCreate();
virtual UInt8 GetPayPeriod();
virtual CMoney GetDaysWorked() { return mDaysWorked; }
virtual void SetDaysWorked(const CMoney inAmount) { mDaysWorked = inAmount; }
virtual DBid GetWageSchedule() const { return mWageSchedule; }
virtual void SetWageSchedule(const DBid inValue) { mWageSchedule = inValue; }
virtual CMoney GetBillingAmount() { return mBillingAmount; }
virtual void PostExpenseAccount(const Boolean removeItem = false);
virtual void PostPayablesAccount(const Boolean removeItem = false);
virtual DBid GetDefaultExpenseAccount() const;
virtual Boolean AcceptsPartialPayment() const { return false; }
virtual void SetHasPayRecord(const Boolean inValue = true);
virtual Boolean HasUnpaidStatus() const;
virtual Boolean HasUnusedStatus() const;
virtual Boolean IsIrregularDraw() const;
virtual UInt8 GetStarterStatus() const;
virtual UInt8 GetWageType() const;
// we don't use the regular payables posting
virtual DBid GetPayablesAccount() const { return 0; } // rev TCS 4/30/01
virtual void HandlePayrollRecordMade(const Boolean removeItem, const CMoney &wageTotal, const CMoney &costTotal,
const CMoney &hoursTotal, CPayrollRecord *source, const CDate periodStart);
virtual void FeedbackPayrollAmount(const DBid rateID, const CMoney &wageTotal,
const CMoney &costTotal, const CMoney &hoursTotal,
const CMoney &catTaxTotal, CMoney &outAmount);
virtual void SetPayrollRecord(const DBid inValue) { mPayrollRecord = inValue; }
virtual UInt8 GetPaymentTransactionClass() const { return id_PayrollRecord; }
virtual DBid GetPaymentTransactionID() const { return mPayrollRecord; }
virtual void FinishBreakdownUpdate(CBreakdownEntry *breakdown, CBreakdownTable *table);
virtual UInt8 GetStatus() const { return mStatus; } // TCS 4/23/01
virtual DBid GetBreakdownRef() const { return mWageBreakdownID; }
virtual void SetBreakdownRef(const DBid inValue) { mWageBreakdownID = inValue; }
virtual void FillDataReport(CTCS_Table *table, CNeoStream *stream) const;
virtual void SetEndSafetyTag() { mEndSafetyTag = tag_endsafetytag; }
protected:
DBid mWageSchedule,
mTMBillingRate, // TCS moved 9/29/02
mJobCostRate;
CMoney mBillingAmount,
mDaysWorked, // TCS 3/31/00
mWageRateAmount; // wage rate, per hour
UInt8 mOvertimeType, // TCS 1/12/00
mStatus;
// version 4 additions TCS 4/20/04
CDate mStartDate,
mEndDate;
// calculated members
CMoney mBurdenAmount;
DBid mPayrollRecord, // TCS 12/19/00
mWageBreakdownID; // reference to the breakdown that pays for this item
// calculated members
TagType mEndSafetyTag; // TCS 9/8/02
enum
{
cCopyFileLength = 3*sizeof(DBid) +
3*sizeof(CMoney) +
2*sizeof(UInt8),
cCopyFileLength4 = cCopyFileLength +
2*sizeof(CDate),
cFileLength = cCopyFileLength +
sizeof(CMoney) +
2*sizeof(DBid) +
sizeof(TagType),
cFileLength4 = cFileLength +
2*sizeof(CDate)
};
}; |