Products
Products on a contract determine the revenue accounts to credit with the settlement invoice. By default, the revenue account is determined by the ARCode associated with the product. The product code provides a default unit price to the contract line. When you assign a product code, you may find it helpful to include the pricing unit as part of the code; e.g., you might use "PASysDay" to indicate the cost of renting a PA system per day.
Create a product
- In the Navigation pane, highlight the Contracts Processing > Setup > Products folder.
-
Click
. The New Product window opens.
- Select the product Type. The product type determines how the product is grouped for settlement printing and reporting. In particular, the product type determines where the line for a product appears among the settlement lines on a settlement.
- Enter a unique Code for the product.
- Enter a Description of the product.
- Enter the unit Price of the product.
- If you entered a value in the Price field, the Allow Override checkbox is enabled. Mark the checkbox to allow the price to be changed when the product appears on contract lines, work orders, and settlement lines. If you did not enter a price, or entered a price and marked the checkbox, the Minimum and Maximum fields are enabled. If you want to limit the price to a range of values, enter the lowest price to allow in the Minimum field and/or the highest price to allow in the Maximum field.
- Select the Work Order Type for the product. The work order type groups products for work order processing.
- Select the default Payment Type for the product. This payment type is loaded as the default payment type on contract lines and settlement lines which reference the product.
- Select the product Groups the product belongs to. Groups can be referenced in pricing expressions.
- Select the ARCode to associate with the product. The ARCode can contribute account mask information for the sales, cost, and/or inventory accounts.
- Select the Accrued/Deferred Revenue account to use for the product. When a prepayment is applied to the product, this account is credited. When the AR invoice is created from the settlement, this account is debited, essentially moving the deferred revenue to the sales account specified on the ARCode for the product. This also causes an extra GL line to be created on the invoice. If you do not want extra GL lines created for the product, leave this field blank.
- Select the Credit ARCode to use when the product is represented on a contract credit line. This ARCode is used to record guarantees for future revenue. Leave the field blank if you do not need to record guarantees for the product. If you select an ARCode here, you must enter an expression in the Credit Expression text box.
- Use the Lead Time fields to help schedule work. For example, if a week's notice is needed for scheduling labor resources, you might want to consider adding 10 days of lead time for the "labor" product. When work orders are created, the start date/time is calculated by subtracting the lead time from the due date/time.
-
In the Expression text box, enter an expression for calculating the total amount for a contract line which references the product.
Note
Starting with ActivityHD version 8.24-1, numerical literals in product expressions can have up to five digits to the right of the decimal. Earlier releases truncate numerical literals with more than four digits to the right of the decimal to four digits.
The following functions and keywords can be used in the calculation expression along with any terms you define in the Terms table:
Functions
- IF(condition,true,false)
- ISNULL(test,alternative)
- DATE(base,expression)
- NUMBER(expression)
- ATTRIBUTEITEM(attribute)
- MIN(arg1,arg2,...)
- MAX(arg1,arg2,...)
- ROUND(expression,digit)
- TRUNCATE(expression,digit)
- TRUE()
- FALSE()
Keywords
- .DATE
- .MINUTES
- .HOURS
- .QUANTITY
- .PRICE
- .DISCOUNT
- .AMOUNT
- .CREDIT
Examples
Common expressions include:
- .QUANTITY * .PRICE
- .QUANTITY * .HOURS * .PRICE
- .HOURS/.HOURS * .QUANTITY * .PRICE
-
In the Credit Expression text box, enter an expression for calculating the amount of a contract credit line which references the product. The same functions and keywords available for expressions are available for credit expressions.
You must enter a credit expression if an ARCode is specified in the Credit ARCode field. You cannot enter a credit expression if a credit ARCode is not specified.
- In the Terms table, enter one row for each term you need to use in a calculation expression or credit calculation expression. For each row:
- In the Code column, enter the term. The code cannot contain spaces.
- From the Data Type drop-down list, select the data type of the term. Your options are:
- Numeric
- String
- Date
- True/False
- When you finish, save your changes.
Values for the terms are entered on contracts which reference the product.
Purpose
The Products Listing provides a list of the products defined in your system.
Content
For each product on the report, the listing shows:
- code
- description
- product type
- work order type.
In addition, you can include one or more of the following:
- product information (ARCode and description, accrual/deferral account, lead time, price)
- product groups
- expressions
- terms (term code and data type)
- timestamps
- memos
- custom fields.
The following total appears on the report:
- record count.
Print the report
- In the Navigation pane, highlight the Contracts Processing > Setup > Products folder.
- Start the report set-up wizard.
- To report on all or a filtered subset of products:
- Right-click the Products folder and select Select and Report > Products Listing from the shortcut menu.
On the Selection tab, define any filters to apply to the data.
- To report on specifically selected products:
- In the HD view, select the products to include on the report. You can use Ctrl and/or Shift selection to select multiple records.
- Click
and select Products Listing from the drop-down menu.
- To report on a particular product from the Product window:
- In the HD view, locate and double-click the product to report on. The Product window opens with the product loaded.
- Click
and select Products Listing from the drop-down menu.
- To report on all or a filtered subset of products:
- On the Options tab, mark the checkbox(es) for the additional information to include:
- Product Information
- Groups
- Expressions
- Terms
- Report Options. To include a section at the end of the report with the report settings used to produce the report, leave the checkbox marked. To produce the report without this information, clear the checkbox.
- Timestamps
- Memos
- Custom Fields (only visible if custom fields are set up)
- Select the Output tab.
- In the Design field, look up and select the report design to use.
- In the toolbar, click the icon for the type of output you want:
- Provides access to two preview options.
- Preview - Click the icon or click the drop-down arrow and select Preview from the drop-down menu to view the report in the Crystal Reports viewer.
- Preview to PDF - Click the drop-down arrow next to the icon and select Preview to PDF to view the report in the PDF reader.
- Opens the Print dialog so that you can select and configure a printer and then print a paper copy of the report.
- Opens the Report Email dialog so that you can address and compose an email that the report will be attached to. For best results, ensure your email client is running before you attempt to send a report via email.
- Opens the Export Report dialog so that you can save the report to a file. File types include Crystal Reports (.rpt), PDF (.pdf), Microsoft Excel (.xls), Microsoft Word (.doc), rich text (.rtf), and XML (.xml).
Data extensions
The following data extension is available for the report:
- Products
Product Record ID
The product type the product belongs to. The product type determines how the product is grouped for settlement printing and reporting. In particular, the product type determines where the line for a product appears among the settlement lines on a settlement.
Press F3 to look up the value.
If a value is already selected, you can press F4 to open the record in its native editor.
Product tab
The work order type for the product. The work order type groups products for work order processing.
Press F3 to look up the value.
If a value is already selected, you can press F4 to open the record in its native editor.
The default payment type for the product. This payment type is loaded as the default payment type on contract lines and settlement lines which reference the product.
Press F3 to look up the value.
If a value is already selected, you can press F4 to open the record in its native editor.
The product group(s) the product belongs to. Groups can be referenced in pricing expressions.
Press F2 to open a dialog box where you can add and remove selections for this field.
Press F3 to look up the item.
The ARCode to associate with the product. The ARCode can contribute account mask information for the sales, cost, and/or inventory accounts.
Press F3 to look up the value.
If a value is already selected, you can press F4 to open the record in its native editor.
The accrued/deferred revenue account used for this product. This is the GL account to credit when a contract the product is on is recorded in Accounts Receivable. Posting to this account allows you to recognize deferred revenue. At settlement time, this account is debited, essentially moving the deferred revenue to the sales account specified on the ARCode for the product.
Press F2 to open the Account Expand dialog box where you can look up an account number, find an account number by its alias, build the account number by segment, or view setup and setup sources.
Press F3 to look up the account.
If an account is already selected, you can press F4 to open the record in the Account window.
The ARCode to use when the product appears on a contract credit line. This ARCode is used to record guarantees for future revenue. The field should be blank if guarantees do not need to be recorded for the product. However, if you select an ARCode here, you must enter an expression in the Credit Expression text box.
Press F3 to look up the value.
If a value is already selected, you can press F4 to open the record in its native editor.
An expression for calculating the total amount of a contract line which references the product.
Note
Starting with ActivityHD version 8.24-1, numerical literals in product expressions can have up to five digits to the right of the decimal. Earlier releases truncate numerical literals with more than four digits to the right of the decimal to four digits.
The following functions and keywords can be used in the calculation expression along with any terms you define in the Terms table:
Functions
- IF(condition,true,false)
- ISNULL(test,alternative)
- DATE(base,expression)
- NUMBER(expression)
- ATTRIBUTEITEM(attribute)
- MIN(arg1,arg2,...)
- MAX(arg1,arg2,...)
- ROUND(expression,digit)
- TRUNCATE(expression,digit)
- TRUE()
- FALSE()
Keywords
- .DATE
- .MINUTES
- .HOURS
- .QUANTITY
- .PRICE
- .DISCOUNT
- .AMOUNT
- .CREDIT
Examples
Common expressions include:
- .QUANTITY * .PRICE
- .QUANTITY * .HOURS * .PRICE
- .HOURS/.HOURS * .QUANTITY * .PRICE
An expression for calculating the amount of a contract credit line which references the product. The same keywords available for expressions are available for credit expressions.
If an ARCode is specified in the Credit ARCode field, a credit expression is required. You cannot enter a credit expression if a credit ARCode is not specified.
- Numeric
- String
- Date
- True/False
Custom tab
This tab is visible if custom fields exist for the entity. At a minimum, if there are custom fields, a Fields subtab will be present. One or more additional categories of subtabs may also be visible.
Fields subtab
This tab prompts for values for any custom fields set up for entity records of this entity type. Respond to the prompts as appropriate.
References subtab
This tab is visible if other records reference the current record.
Example
Suppose a custom field exists on PRCodes that references an ARCode. On the ARCode record, on the Custom > References subtab, you can view all the PRCodes which reference that ARCode.
Exchange Folder subtab
This tab is visible only if you set up a custom field with a data type of "Exchange Folder". The label on this tab is the name assigned to the custom field.
This tab shows the contents of the specified Exchange folder.
File subtab
This tab is visible only if you set up a custom field with a data type of "File". The label on the tab is the name assigned to the custom field.
This tab renders the contents of the specified file according to its file type.
Internet Address subtab
This tab is visible only if you set up a custom field with a data type of "Internet Address". The label on this tab is the name assigned to the custom field.
This tab shows the contents of the specified web page.
Network Folder subtab
This tab is visible only if you set up a custom field with a data type of "Network Folder". The label on this tab is the name assigned to the custom field.
This tab shows the contents of the specified network folder.
Contract Lines tab
The Contract Lines pane shows the Contract Lines HD view filtered to show all contract lines that reference the product.
Double-click a row in the pane to drill down to its record in the Contract Line window.
Work Orders tab
The Work Orders pane shows the Work Orders HD view filtered to show all work orders that reference the product.
Double-click a row in the pane to drill down to its record in the Work Order window.
Settlement Lines tab
The Settlement Lines pane shows the Settlement Lines HD view filtered to show all settlement lines that reference the product.
Double-click a row in the pane to drill down to its record in the Settlement Line window.
Attachments tab
The Attachments tab is visible if any record for a given entity has an attachment. If the Attachments tab is not visible, this implies that no record of the entity type has an attachment on it; however, once an attachment is added to any record of the entity type, the Attachments tab will become available.
Other tab
![]() |
Extras\Contracts Processing\Import CP Products.xls |
Products security
Common accesses available on products
Product filters
The following built-in filters are available for products:
Filter Name | Effect |
---|---|
? ARCode | Prompts for an ARCode and lists the products with the specified ARCode. |
? Code | Prompts for a product code and shows the products with the specified product code. |
? Description | Prompts for a description and lists the products with a description that contains the specified search string. |
? Expression Contains | Prompts for a product expression and lists the products with an expression that contains the specified search string. |
? Has Group | Prompts for a product group and lists the products with the specified product group. |
? Type | Prompts for a product type and lists the products with the specified product type. |
Report Email dialog
- Windows user default account. Sends email using the user's Windows default email account. For most users, this is the account configured in Outlook or another email client application.
- Server personal. Sends email using the email configuration for the system or company server and the email address on the current user's authorized user record. The authorized user record must have a confirmed email address.
- Server generic. Sends email using the email configuration and "from" address for the system or company server. This option requires "Send generic" access to the Server Email resource.
Contract and settlement expression functions
Function | Explanation | Example |
---|---|---|
If | Boolean with three parameters: (test, true result, false result) | IF(Comm.Count = 12, -Park.Amount, 0) |
IsNull | Determines which of two numbers is "not null". One of the parameters must be a terms code. | ISNULL(MinQty, .Ticket.Quantity) [MinQty is a numeric terms code] |
Date | Calculates a date based on a date expression
Note This is not the same as the .Date keyword. .Date returns the date on a contract or settlement line. |
Security.Hours.History(, DATE(.Date("yesterday"))) |
Number | Converts a string value to a number | NUMBER(ATTRIBUTEITEM("Booth")) |
AttributeItem | Returns an attribute item from the contract. The syntax is AttributeItem("attribute name"). The "attribute name" argument takes a literal string and must be enclosed in quotation marks. | IF(ATTRIBUTEITEM("Booth") = "100C", .Price, .Price * .95) |
MIN | Determines which of two numbers is smaller | MIN(.Amount, Comm.Amount.History) |
MAX | Determines which of two numbers is larger | MAX(FoodT.Amount, FoodNT.Amount) |
ROUND | Rounds a number to the specified number of decimal digits | ROUND((Food.Amount * .9361) + Bev.Amount * .7238, 2) |
TRUNCATE | Truncates the number to the specified number of digits | TRUNCATE(PreTick.Quantity, -2) |
TRUE | TRUE can only reference a user-defined terms code/keyword | IF(IntProd = TRUE, .Price, .Price * 1.15), where IntProd is a true/false terms code |
FALSE | FALSE can only reference a user-defined terms code/keyword | IF(IntProd = FALSE, .Price, 0), where IntProde is a true/false terms code |
Contract and settlement expressions
All group keywords (non-history) include lines on the current settlement or contract.
All .History keywords include only the settlements on the current contract.
All the keywords listed below produce numbers, so expressions can use arithmetic operators between keywords as is illustrated in many of the examples which follow.
Keyword | Explanation | Example |
---|---|---|
.Date | The date on a contract line or settlement line | IF(.Date > #01/01/2018#, 1, .75) |
#Date# | A literal date | #01/15/2018# |
"string" | Text or string. | "ABC" |
.Minutes | Minutes on the contract or settlement line | .Minutes * .Price |
.Hours | Hours on the contract line | .Hours * .Price |
.Quantity | Quantity on the contract or settlement line | .Quantity * .Price |
.Price | Price on the contract or settlement line | .Quantity/1.0825 * .Price |
.Amount | Amount on the contract or settlement line
Note .Amount is for use in credit expressions only! |
.Amount * .25 |
.Discount | Discount on the settlement line
Note .Discount is for use in credit expressions only! |
((.Quantity * .Price) - .Discount) * .15 |
.Credit | Credit on the settlement line
Note .Credit is for use in amount expressions only! |
(.Quantity * .Price) - .Credit |
group.Minutes(begin,end) | The total minutes of all products on the contract or settlement which are assigned to group. The begin and end date parameters are optional and independent of each other.† | Staff.Minutes * .Price |
group.Hours(begin,end) | The total hours of all products on the contract or settlement which are assigned to group. The begin and end date parameters are optional and independent of each other.† | Security.Hours * .Price |
group.Quantity(begin,end) | The total quantity of all products on the contract or settlement which are assigned to group. The begin and end date parameters are optional and independent of each other.† | IF(Ticket.Quantity > 1200, Ticket.Quantity * .Price * .75, Ticket.Quantity * .Price) |
group.Discount(begin,end) | The total discount on all products on the settlement which are assigned to group. The begin and end date parameters are optional and independent of each other.† | (.Quantity * .Price) - Rent.Discount |
group.Amount(begin,end) | The total amount of all products on the contract or settlement which are assigned to group. The begin and end date parameters are optional and independent of each other.† | IF(Comm.Amount ≥ 4000, .Quantity * .Price * .15, 0) |
group.Credit(begin,end) | The total credit amount of all products on the settlement which are assigned to group. The begin and end date parameters are optional and independent of each other.† | MAX(0,Rent.Amount.History + Rent.Amount - Comm.Credit.History - Comm.Credit) |
group.Count(begin,end) | The number of settlement lines for products assigned to group. The begin and end date parameters are optional and independent of each other.† | IF(Comm.Count = 12, - Park.Amount, 0) |
group.Minutes.History(begin,end) | The total minutes for all products assigned to group on all settlements for the contract. The begin and end date parameters are optional and independent of each other.† | Security.Minutes.History(, DATE(.Date("yesterday")) * .Price |
group.Hours.History(begin,end) | The total hours for all products assigned to group on all settlements for the contract. The begin and end date parameters are optional and independent of each other.† | Security.Hours.History(, DATE(.Date("yesterday")) * .Price |
group.Quantity.History(begin,end) | The total quantity for all products assigned to group on all settlements for the contract. The begin and end date parameters are optional and independent of each other.† | MAX(0, Comm.Quantity.History(, .Date) + Comm.Quantity(, .Date) + .Quantity) - 350000 |
group.Amount.History(begin,end) | The total amount for all products assigned to group on all settlements for the contract. The begin and end date parameters are optional and independent of each other.† | MIN(.Amount, Rent.Amount.History + Rent.Amount - Comm.Credit.History(, .Date) - Comm.Credit(, .Date)) |
group.Discount.History(begin,end) | The total discount amount for all products assigned to group on all settlements for the contract. The begin and end date parameters are optional and independent of each other.† | |
group.Credit.History(begin,end) | The total credit amount for all products assigned to group on all settlements for the contract. The begin and end date parameters are optional and independent of each other.† | MIN(.Amount,Rent.Amount.History + Rent.Amount - Comm.Credit.History(, .Date) - Comm.Credit(, .Date)) |
group.Count.History(begin,end) | The total number of all settlement lines for the contract for all products assigned to group. The begin and end date parameters are optional and independent of each other.† |
† The following syntax is allowed for the begin and end date parameters of a group function:
Syntax Sample | Explanation |
---|---|
group.amount | No date range |
group.amount() | No date range |
group.amount(,) | No date range |
group.amount(begin) | Begin date only |
group.amount(begin,) | Begin date only |
group.amount(,end) | End date only |
group.amount(begin,end) | Both begin and end date |
5225 S Loop 289, #207 Lubbock, TX 79424 806.687.8500 | 800.354.7152 |
© 2025 AccountingWare, LLC All rights reserved. |