Post date: Nov 21, 2014 11:4:48 PM
Overview
The QBO3 accounting module manages accounting information. While not a full-blown accounting system, the module's Ledger tables can easily be used to track accounting data, and can be configured by power users to do some pretty powerful things.
Real-world use cases include:
Tracking borrower financials for a collections or loss mitigation system
Tracking vendor fees and costs
Tracking data costs associated with execution of a business process (e.g. ordering credit reports, etc.)
Tracking total debt associated with a mortgage
Classes
The accounting module comprises the following classes:
Ledger: a ledger represents an invoice or similar financial statement
Ledger Item: a ledger item represents a line item within a ledger
Ledger Template: a template that determines the behavior of a Ledger (repeatability, how to generate an invoice document, etc.)
Ledger Template Item: determines the behavior of a Ledger Item (repeatability, whether it can be edited, included in a ledger's total, etc.)
Templates
In addition to supporting extranet and repeatability, QBO3 Ledger Templates also support the following:
Expandable - Allows for the ability to add items on the fly or leave the ledger locked down to the items supplied with the template.
Locked - Locks the amount values supplied when the ledger is created.
Refresh On Insert - Pre-populates the ledger items with mapped values (or default values) when a ledger is created.
Calculate Method - Object based statement or method that is used to populate the ledger item values.
Project Method - Object based statement or method that is used to project the ledger item values.
Custom Types - a power user defined enumeration used to populate the Type drop down when editing a Ledger
Custom Statuses - a power user defined enumeration used to populate the Status drop down when editing a Ledger
Item Types - a power user defined enumeration used to populate the Type drop down when editing a Ledger Items
Item Statuses - a power user defined enumeration used to populate the Status drop down when editing a Ledger Items
Invoice Template - an Attachment Template used to generate an invoice document (usually a PDF) for a ledger
Invoice Matrix - a matrix that includes an Attachment Template output to soft-code the invoice document template to use
Ledger items are also template based and additionally support the following:
Use In Projections - Can the item be used in future projections.
Manual Insert - Determines if the item should always be included with the ledger.
Is Debit - Default value is Credit.
Is Totaled - Used to determine if the item should be included in the ledger total.
Is Locked - Locks the amount values supplied when the ledger is created.
Can Exclude - Allows the item to be excluded on the fly.
Can Refresh - Allows the item to be updated with the calculated values.
There are three key ways billing ledgers can be supported in QBO3:
Ledgers with item amounts populated by the user.
Ledgers with item amounts populated by the object summary.
Ledgers with items that are child ledgers.
Automated Calculations
The Ledger/Calculate method iterates through each item in a ledger, calling calculate on each item, and storing the sum of each item in the Ledger.Balance column. There are three scenarios that are considered when calculating an item:
Scenario 1: Simple Items
With a "simple" item in a ledger, the item's amount is added to the ledger's balance (a straight forward sum). For example, assume we have:
Scenario 2: Nested Items
A ledger item may point to a nested (child) ledger, in which case, calling calculate will call calculate on the nested ledger (recursively). For example, assume we have:
Scenario 3: Matrix-based Items
In many use cases, there are complex rules that drive the calculation of a ledger item. In such a scenario, a power user may define a Matrix to determine the amount to populate into the ledger item.