The posting process in Costpoint Billing involves updating the general ledger, creating accounts receivable records, and inserting appropriate data into the billing history tables. This special topic will assist you in analyzing the process of posting bills and in understanding the tables involved. Once you understand the posting process, you can more easily analyze posting problems and resolve setup issues.
There are two types of bills in Costpoint: transaction-based bills and manual bills. The system calculates transaction-based bills using the transactions that are posted to the project. It calculates manual bills using a predetermined schedule, percent complete, units, or a variety of other methods. You can enter and edit manual bills in the Edit Manual Bills, Edit Project Product Bills, Edit Customer Product Bills, and Edit Milestone/Percent Complete Bills screens (all in Projects»Billing»Edit Billings). Only the transaction-based bills will collect data in the OPEN_BILLING_DETL table and have transaction history stored in the BILL_INVC_HDR_HS and BILL_DETL_HIST tables. Manual bills have their own history tables and generally do not insert data into the OPEN_BILLING_DETL table. This special topic outlines the general procedure that the system uses to post billings. This topic covers details specific to manual or transaction-based bills as necessary.
Whether you are posting manual or transaction-based bills, the posting process requires receivable and unbilled accounts. The Project Account Group that is linked to the project must contain an account with a Function Code of BILLED A/R and one with a Function Code of UNBILLED_GENRL. If you are using customer product bills, the accounts are found in the Maintain Customer screen (click Accounting»Accounts Receivable»Customer Info). The system updates the following General Ledger tables: GL_POST_SUM, FS_SUM, GL_DETL, and REF_SUM. Use the following screens to post the bills: Post Standard Bills, Post Progress Payment Bills, Post Customer Product Bills, Post Project Product Bills, Post Manual Bills, and Post Milestone/Percent Complete Bills (all in Projects»Billing»Post Billings).
When you post the bill to the general ledger, the following processes occur:
The application searches the project's project account group for the account that has been assigned a Function Code of BILLED A/R (in the Project Account Groups screen (click Projects»Project Setup»Controls)). You can assign only one BILLED A/R function code per project account group; the posting process requires one such account in the project's project account group. If the application does not find a BILLED A/R function code, it will display an error message and stop the posting process. The system uses this process regardless of which type of billing is being posted. The Post Customer Product Bills screen (click Projects»Billing»Post Billings) uses the account set up in the Default Accounts subtask of the Maintain Customer screen (click Accounting»Accounts Receivable»Customer Info) as the receivable account.
The billing is posted at the level of the project specified in the Project Billing Info screen (click Projects»Billing»Billing Master or Projects»Project Setup»Revenue Setup). The BILLED A/R function code must exist at this level. All the transactions at or below the billing level are summarized and posted at the level shown in the Project Billing Info screen.
The owning organization assigned to the project is used as the organization for posting. The project's owning organization is established in the Maintain Project Master screen (click Projects»Project Setup»Project Master). The Post Customer Product Bills application uses the organization in the Default Accounts subtask of the Maintain Customer screen.
The system posts the invoice amount net of discounts, sales tax, and shipping as the billed receivable for invoices with a status of Selected.
Sales/VAT tax - The system reviews the billing record for sales tax amounts. For each sales tax amount, there is a corresponding sales tax code. These codes are maintained in the Maintain Sales/Value Added Tax screen (click Others»System Administration»System Codes). In that screen, the sales tax code is listed along with an account/org to be used when sales or VAT tax is posted. If a bill has multiple sales tax codes, multiple accounts/orgs will be updated with sales tax amounts.
Discounts - There are two methods of recording discounts in the system. Discounts can be computed when the bill is calculated or they can be calculated based on customer terms and taken when the invoice is paid. You select the discount method in the Other Info subtask of the Project Billing Info screen (click Projects»Billing»Billing Master or Projects»Project Setup»Revenue Setup) and in the Basic Revenue Info screen (click Projects»Project Setup»Revenue Setup).
The first type of discounts compute when invoices calculate. There are seven discount methods that can be set up. They include PLC discounts, account discounts, account discounts w/burden, aggregate volume by customer, aggregate volume by customer w/burden, aggregate volume by project, and aggregate volume by project w/burden. These discounts print on the invoice and are held in the billing tables. However, the discount amount does not post to a discount account when the bill is posted.
The second type of discount are discounts that the program calculates and stores based on discount terms such as 1% net 10, etc.). This is different from a volume or good customer discount, because this is the discount that the customer will receive if he pays the invoice promptly. However, because it is not known whether the customer will make this payment in time to take advantage of the discount, only an informational entry is made.
The system multiplies the invoice amount by the terms discount to arrive at the discount amount that the customer might take. It posts this amount to the A/R Invoice History table as a memo entry. If the discount is taken, it is reflected as part of the entry to Cash Receipts when payment is posted.
When you post cash receipts, the system updates the A/R Invoice History table with the discount taken, thus providing you with a complete history by customer of discounts offered and discounts taken.
The application searches the project account group that is linked to this project for the account that has been assigned a Function Code of UNBILLED - GENERL (in the Project Account Groups screen (click Projects»Project Setup»Controls)). You can assign only one UNBILLED - GENERL function code per project account group; the posting process requires one such account in the project's project account group. If the application does not find an UNBILLED - GENERL Function Code, the system will display an error message and stop the posting process. The system uses this process regardless of which type of billing is being posted. The Post Customer Product Bills screen (click Projects»Billing»Post Billings) uses the account in the Default Accounts subtask of the Maintain Customer screen (click Accounting»Accounts Receivable»Customer Info) that has been assigned a function code of REVENUE.
The system reviews the Project Billing Info table for the level at which the receivable should be posted. It reviews the Basic Revenue Info table to find the project level at which revenue should be posted and compares the two. If the levels are different, the system posts the unbilled amount at the higher, less detailed, of the two levels.
If retainage exists, it is debited to the account in the project's project account group with a Function Code of UNBILLED-RETAIN.
During this process, the system updates the following tables: GL_DETL, GL_POST_SUM, FS_SUM, and REF_SUM. The REF_SUM table is optional.
Regardless of which type of bill being posted, the system inserts records into both the AR_HDR_HS and AR_DETL_HS tables during the posting process. All detailed information regarding the bill is transferred to these tables, including invoice ID, invoice amount, sales tax, sales tax code, discount information, customer ID, project number, posting sequences, and all account information. The system uses these tables to print the accounts receivable aging report and to post the cash receipts.
Once the General Ledger has been updated, Costpoint updates the Maintain Billing History screen (click Projects»Billing»Billing History) (BILLING_SUM). The system uses this table to print the cumulative column on billings. The Calculate Billings screen (click Projects»Billing»Calculate Billings) also uses this table to calculate potential over ceiling costs, fees, and total billings. The process updates this table at the project level where the transactions were originally posted. If you are initializing this screen and only want to print cumulative columns on the summary bills, you need to enter summary cumulative data only at the billing level.
Billed amounts are summed with previously billed amounts to arrive at Inception-to-Date (ITD) amounts billed.
Transactions are then summed by project/account/org to arrive at billed amounts at this level.
Burden amounts are stored by pool, and unit amounts are stored by CLIN and item.
Fourteen different transaction types update the Billing Summary table, as follows: Burden, Cost, Fee, Hours, Retainage, Units, Fee Over Ceiling, Cost Over Ceiling, Total Over Ceiling, Schedule, Fee on Labor, Cost of Money, Fee on Hours, and Tax.
The Billing Detail History table (BILL_DETL_HIST) is updated next. Only transaction-based bills update this table.
The Billing Detail History is updated with current transactions billed. The Billing Detail History table stores billing history at the transaction level. Supporting information, including timesheet date, journal entry number, and voucher number, is stored for each transaction. Previously billed transactions and portions of transactions that have been written off are updated at this level as well. Non-transaction billed amounts (burdens, fee, retainage, fee over ceiling, cost over ceiling) are stored by account/org and pool for burden amounts.
Manual Bills do not have detail tables. All information for manual type bills is stored in the header tables outlined in the next section.
The transactions are entered in this table at the level of the project for which they were originally posted. The level at which the bill was posted is also recorded. Each record is assigned a supporting schedule number in the Billing Detail History table. This number is also stored in the Billing Invoice Header History table. If you need to recreate invoices, the system uses this field to link the header record to the detail that was billed on a given project and invoice.
Additionally, billing format information is stored in this table. Billing format information includes the group and line number on which this transaction was billed. This allows you to gather and roll up transactions by the groups and lines on which they were billed. If you need to recreate invoices in the same format in which they were originally submitted, these fields can be used to summarize costs.
Once the transactions have been fully billed, they are deleted from the Open Billing Detail table. The Open Billing Detail table is updated by journal postings. It contains all transactions recorded but not yet billed. The Calculate Billings screen (click Projects»Billing»Calculate Billings) uses the Open Billing Detail table to arrive at current billable amounts; however, once the total amounts are billed, they must be removed from Open Billing Detail to prevent future billing.
You can partially bill transactions if the Allow Transactions To Be Partially Billed check box is clicked in the Project Billing Info screen (click Projects»Billing»Billing Master or Projects»Project Setup»Revenue Setup). Partial billings are needed only when there is some type of ceiling on the project. To make this option possible, only fully billed transactions are deleted from Open Billing Detail. If a transaction has been partially billed, it will exist in both Open Billing Detail and Billing Detail History. The Calculate Billings program (click Projects»Billing»Calculate Billings) recognizes and bills only the unbilled portion of transactions; however, a record for this transaction exists in both tables.
Next, the system updates the header history tables. The following tables are updated by each billing posting:
Posting Screen |
Table |
Post Standard Bills |
BILL_INVC_HDR_HS |
Post Customer Product Bills |
CUST_PROD_HDR_HS |
Post Project Product Bills |
PROJ_PROD_HDR_HS |
Post Manual Bills |
MANUAL BILL_HS |
Post Milestone/Percent Complete Bills |
MILESTONE_HDR_HS |
Post Progress Payment Bills |
PRG_PMT_HDR_HS |
The invoice header in each type of billing is copied to the respective header history table. When you post standard bills, the system creates a record in the invoice header history table for the project level to which the bills are posted and any detail levels that are listed in the Supporting Schedule Headers (Detail Bills) subtask in the Project Billing Info screen (click Projects»Billing»Billing Master or Projects»Project Setup»Revenue Setup). For all the manual bill types, only one record is inserted to the header history tables.
¨ Flexibility to reprint summary and detail exists in the event that invoices are posted before invoices are printed. To allow this flexibility of printing detail billings, a record exists in the Billing Edit Invoice Header table at the invoice posting level, and at the required detail level.
¨ Only records at the invoice posting level are copied to the Billing Invoice Header History table, if the billing is a manual billing or no detail bills are required.
¨ Each record is assigned a supporting schedule number in the Billing Invoice Header History. This number is also stored in the Billing Detail History. If you need to recreate invoices, the system uses this field to link the header record to the detail that was billed on a given project and invoice.
In the final step, the posting process updates the Project Billing Info table (PROJ_BILL_INFO) with the bill number. The billing number is stored in the Last Bill No field in the Project Billing Info screen (Projects»Billing»Billing Master or Projects»Project Setup»Revenue Setup) at the level to which the invoice was posted.
AR_HDR_HS
AR_DETL_HS
BILL_INVC_HDR_HS
BILLING_SUM
BILLING_DETL_HIST
PROJ_BILL_HS
CUST_PROD_HR_HS
CUST_PROD_LN_HS
PROJ_PROD_HDR_HS
PROJ_PROD_LN_HS
MANUAL_BILL_HS
MILESTONE_HDR_HS
MILESTONE_LN_HS
FS_SUM
GL_DETL
GL_POST_SUM
OPEN_BILLING_DETL
PROJ_BILL_INFO
REF_SUM (optional)