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

Subcontractor Log (Header)

Link to: source code | transactions directory

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

This class manages subcontractor time tracking and time billing in the Goldenseal accounting software,
time tracking software, time billing software and job costing software.

class CSubcontractorLog : public CTimeLog
{
public:

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

CSubcontractorLog();
virtual ~CSubcontractorLog() {}

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

virtual NeoSize GetFileLength(const CNeoFormat *aFormat) const;

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

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 Boolean IsValidBreakdown(const UInt8 breakdownType);

virtual CTextString GetBillNum() const { return mInvoiceNum; }

virtual CMoney GetAmountPaid() const { return mAmountPaid; }

virtual Boolean ShouldBePaid() const;

virtual UInt8 GetPaymentType() const { return mPaymentMethod; }
virtual DBid GetPaymentMethod() const { return mPaymentMethod; }
virtual void SetPaymentMethod(const UInt8 inMethod) { mPaymentMethod = inMethod; }

virtual CMoney GetAmountUnpaid() const;
virtual CMoney GetAmountPending() const { return GetAmountUnpaid(); }

virtual void FinishNonViewerCreate();
virtual void FinishImportCreate();

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 PostRecordChangedRemotely(const CMoney &oldAmount,
const Boolean accountChanged,
const Boolean jobChanged);
virtual void HandlePaymentCancelled();

virtual void PostVendorWithholding(const Boolean removeItem = false);
virtual void PostRetainage(const Boolean removeItem = false);

virtual void HandleTaxesPaid(const DBClass sourceClass, const DBid sourceID,
const Boolean removeItem = false);

virtual DBid GetTaxID() const { return mTaxRate; }
virtual DBid GetTaxClass() const { return id_VendorSalesTax; }
virtual CMoney GetSalesTaxAmount() const { return mTaxAmount; }
virtual void SetSalesTaxAmount(const CMoney &inMoney) { mTaxAmount = inMoney; } // TCS 4/25/01

virtual CMoney GetRetainageAmount() const { return mRetainageAmount; }
virtual void SetRetainageAmount(const CMoney &inAmount) { mRetainageAmount = inAmount; }


virtual CMoney GetAdjustedAmount() const { return mAmount + mAdjustmentAmount -
mWithholdingAmount - mRetainageAmount; } // TCS 10/9/02

/*virtual void PostChangedPurchase(const UInt8 jobClass, const DBid jobID,
const UInt8 vendorClass, const DBid vendorID,
const CMoney &amount);*/

virtual CMoney CalculateWageAmount(const CMoney &billedUnits, const DBid accountID,
const UInt8 timeUnit, const DBid wageRateID) const;

virtual CMoney GetTandMAmount(const Boolean /*includeTax*/ = false,
const Boolean /*includeAdjustments*/ = false) const { return mBillingAmount; }

virtual CMoney GetGrossAmount() const { return mGrossAmount; } // TCS 12/29/00
virtual CMoney GetSalesTaxPercent() const;

virtual DBid GetDefaultExpenseAccount() const { return account_SubcontractorExpenses; }

virtual CDate GetBillingDate() const { return mBillingDate; } // TCS 1/1/01
virtual void SetBillingDate(const CDate inDate) { mBillingDate = inDate; }

virtual DBid GetPaymentTerm() const { return mPaymentTerm; }
virtual void SetPaymentTerm(const DBid inTerm) { mPaymentTerm = inTerm; }
virtual DBid GetPaymentDetails() const { return mPaymentTerm; }

virtual DBid GetPayablesAccount() const { return account_SubsPayable; }
virtual UInt8 GetTransDetails() const { return mPaymentMethod; } // TCS 9/6/01

virtual UInt8 GetStatus() const { return mStatus; } // TCS 4/23/01

virtual DBid GetWithholdingRateID() const { return mWithholdingRate; }
virtual CMoney GetWithholdingAmount() const { return mWithholdingAmount; }
virtual CMoney GetWithholdingDeduction() const;

virtual CMoney GetAccountingAmount(const Boolean removeIt, const UInt8 type) const;

virtual void FinishBreakdownUpdate(CBreakdownEntry *breakdown, CBreakdownTable *table);

virtual void FillDataReport(CTCS_Table *table, CNeoStream *stream) const;

virtual void SetEndSafetyTag() { mEndSafetyTag = tag_endsafetytag; }

protected:
// outside members
CTextString mInvoiceNum;

// compied members
DBid mPaymentTerm,
mTaxRate,
mChargeRate, // the billing rate used for pmt to sub
mWithholdingRate, // TCS 7/24/02
mTMBillingRate, // TCS moved 9/29/02
mJobCostRate;

CDate mBillingDate;

CMoney mBillingAmount,
mGrossAmount,
mTaxAmount, // TCS 1/13/00
mWithholdingAmount,
mRetainageAmount; // TCS 9/25/02

UInt8 mStatus,
mPaymentMethod;

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

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

cFileLength = cCopyFileLength +
sizeof(TagType)
};
};