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

Breakdown Transactions (Header)

Link to: source 1 | source 2 | source 3 | transactions directory

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

This class manages breakdown transactions for the Goldenseal accounting software,
small business management software, construction project management software and
construction accounting software.

class CBreakdownTransaction : public CTransaction,
public CBreakdownArrayOwner
{
public:

enum
{
cPaymentMade = 1,
cPaymentReceived = 2,
cDeposited = 3
};

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

CBreakdownTransaction();
virtual ~CBreakdownTransaction() {}

static Boolean IsValidBreakdownClass(const DBid inClassID);
static Boolean UsesBreakdown(const DBid classID, const DBid breakdownType,
const Boolean inPrintForm = false);

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

virtual NeoSize GetFileLength(const CNeoFormat *aFormat) const;

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

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 FillMemberFromAnother(DB_PersistentObject *source,
const TagType memberTag,
const MemberType memberType);

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 PostBreakdownChanging();

virtual void PostBreakdownsActivated(const TObjectIDArray &array,
const DBClass breakdownClassID,
const UInt8 creationType);
virtual void PostBreakdownsCancelled(const TObjectIDArray &array,
const DBClass breakdownClassID,
const UInt8 cancelType);
virtual void PostBreakdownsChanging(const TObjectIDArray &array,
const DBClass breakdownClassID,
const Boolean accountChanging = false,
const Boolean jobChanging = false);
virtual void PostBreakdownsChanged(const TObjectIDArray &array,
const DBClass breakdownClassID,
const CMoney &oldAmount,
const Boolean accountChanged = false,
const Boolean jobChanged = false);

virtual void HandlePaymentMade(const CMoney &inAmount, const UInt8 sourceClass,
const DBid sourceID, const UInt8 transactionType,
const Boolean removeItem = false);
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 HandleDeposit(const CMoney &amount, const UInt8 sourceClass,
const DBid sourceID, const Boolean removeItem = false,
const Boolean fromBillRecord = false);

virtual UInt8 GetBreakdownType() const { return mBreakdownType; }
virtual void SetBreakdownType(const UInt8 inType) { mBreakdownType = inType; }

virtual DBid GetBreakdownClassID() const { return mBreakdownClassID; }

virtual Boolean HasBreakdowns() const { return mBreakdownArray.GetCount() > 0; } // bugfix TCS 1/3/03
virtual Boolean UsesBreakdowns() const { return true; }
virtual Boolean UsesAmounts() const { return true; }
virtual Boolean CanCopyBreakdowns(const UInt8 type) const;

virtual CMoney GetTaxPercent() const;
virtual CTextString GetTaxName() const;
virtual CTextString GetWithholdingName() const;

virtual CMoney GetAmount() const { return mAmount; }
virtual void SetAmount(const CMoney &amount) { mAmount = amount; }

virtual CMoney GetAdjustedAmount() const { return mAmount; } // TCS 5/25/00
virtual Boolean IsNegative() const { return mAmount.IsNegative(); }

virtual void FillCostItemInfo(TJobCostItemArray &itemArray, const UInt8 costType,
const DBid accountID) const;
virtual CMoney GetPaymentReceiptAmount() const;

virtual void SetPaidStatus(const UInt8 inStatus); // TCS 12/18/99

virtual Boolean RemoveFromDatabase(const UInt32 clientID = cServerID);

virtual SInt32 ImportMember(const TagType tag,
const CTextString &inString);
virtual void FinishBreakdownImport(DB_PersistentObject *breakdown);

virtual void ClearAmounts();
virtual Boolean CopySelectedBreakdowns(CBreakdownTransaction */*source*/) { return false; }

virtual Boolean IsValidBreakdown(const UInt8 breakdownType);

virtual void FillCategoryArray(TJobCostCategoryArray &catArray,
const UInt8 breakdownType,
const DBid matchCategory,
const UInt8 restrictions = 0);
virtual void FillCompareArray(TJobCostCompareArray &compareArray, const DBid reportID);
virtual void FillProgressArray(TJobCostProgressArray &catArray,
const UInt8 breakdownType) const;
virtual void FillCatSubcatArray(const DBid reportID, TTwoLevelArray *twoLevelArray,
const Boolean hideSoftCosts, CMoney &softCostAmount,
CMoney &hardCostAmount) const;
virtual void FillCatItemArray(const DBid reportID, TReportGroupArray *catArray) const;

virtual void FillBreakdownsFromVendorStruct(SVendorInfo &/*vendorInfo*/, const UInt8 /*filterType*/) {}

virtual void HandleOverpayment(const CMoney &inAmount);
virtual void HandlePartialPayment(const CMoney &inAmount);

virtual void AdjustDepositedAmount(const CMoney &/*inAmount*/) {}
virtual DBClass GetPaymentTransactionClass() const;
virtual DBid GetPaymentTransactionID() const;

virtual DBid GetCategoryFromBreakdowns() const;

virtual void AddBreakdown(const DBid breakdownID);
virtual void RemoveAllBreakdownEntries(const Boolean removeFromDatabase = true);

virtual void SetJob(const DBid /*inValue*/) {}
virtual void SetJobClass(const UInt8 /*inValue*/) {}

virtual Boolean IsCredit() const
{ return mAmount.IsNegative(); } // rev TCS 2/19/01

virtual Boolean IsCostTransaction() const { return false; }
virtual Boolean AcceptsPartialPayment() const { return true; }
virtual Boolean HasPaymentReceipt() const { return false; }
virtual Boolean PaysOnAccount() const { return true; }
virtual Boolean ShowsDepositedStatus() const { return true; }

virtual void FinishBreakdownPosting(DB_PersistentObject */*breakdown*/, const UInt8 /*postType*/) {}
virtual void MarkBreakdownsPaid(TObjectIDArray &breakdownArray,
const DBClass breakdownClassID, const Boolean fullyPaid,
const CMoney &inAmount, const UInt8 sourceClass,
const DBid sourceID, const UInt8 transactionType,
const Boolean removeItem, const UInt8 paymentType);

virtual Boolean MatchesFindCriteria(CTCS_Array &selectorArray, const Boolean matchAny,
const SInt32 selectorCount) const;

virtual Boolean WriteToPrintFormTable(CReportTable *table);

virtual CMoney GetBreakdownLaborHours() const;

virtual CMoney FetchComponentCosts(SAssemblyUpdateInfo &info, const CMoney &inQuantity);

virtual void FillProjectReport(const DBid reportID, TReportRowArray *rowInfoArray);
virtual void FillTakeoffReport(const DBid reportID, TReportRowArray *rowInfoArray,
TTakeoffArray &takeoffArray);

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

virtual void ExportBreakdowns(CTextOutputStream &stream);

virtual void WriteContractSpecs(CTextOutputStream &stream, const DBid subcontractType,
const Boolean includeAllowances, const Boolean includeBids,
const Boolean includeCatBreakdowns, const Boolean includeUnlisted) const;

protected:

// array member
TObjectInfoArray mPaymentArray; // TCS 4/11/00 handles expense payments (check and/or bank payment),
// and income pmts (payment receipt and/or deposit). For some classes
// this array may include both payments made and payments received.

CMoney mAmount; // basic dollar amount of the transaction

enum
{
cCopyFileLength = sizeof(CMoney),

cFileLength = cCopyFileLength + 0
};
};