List/Record Field Basics
For the purposes of this post, I’m going to focus only on List/Record fields. If you’d like more information on other custom field types or need a basic overview of creating custom fields, see SuiteAnswers articles Kinds of Custom Fields (ID 10092) and Creating a Custom Field (ID 10078).
If you will be using a custom record or custom list as the source for your List/Record field, start by creating the custom record or custom list before creating the custom field. Note: You do not have to create all custom records or custom list values prior to creating the custom field, as these can be added or updated after the field has been created.
In the custom field UI, select List/Record in the Type field. This will expose the List/Record field immediately beneath it, which will allow you to select from standard record types and lists as well as existing custom records and custom lists to act as the source data for this field.
If you will be sourcing from a standard record type, then you should select the top-level record type (i.e. Customer or Transaction) instead of a sub-record (i.e. Lead or Invoice), just as you would when creating a saved search. You will have the ability to filter down to a particular sub-record type on the Sourcing & Filtering subtab.
Souring & Filtering Options
Once you’ve defined the List/Record for your custom field, you can then begin setting up your dynamic sourcing criteria on the Sourcing & Filtering subtab.
There are three fields on this subtab, in addition to a sublist that will allow you to set up additional conditional criteria (similar to setting up a saved search).
For basic filtering, such as transactions by customer (described above), you only really need to set up the Source List and Source Filter By fields in order to display dynamic values in your custom field.
For more complex filtering capabilities, you’ll want to leverage both the header-level fields as well as additional criteria lines in the sublist. Continuing with the example above, let’s say that you don’t want to see all transactions by a specific customer, but instead only want to see their invoices. In that case, you can add a line that sets the Filter Using to Type and the Value Is set to Invoice:
Extending this logic even further, let’s only look at invoices that are not paid in full by using Status not equal to Invoice:Paid In Full:
If you have spent time creating saved searches, then this interface should feel familiar as it is very similar to the interface used for defining saved search criteria. Just like with saved searches, a record must meet all criteria in order to be displayed as an option in the drop-down list. In the example above, a transaction must have the same entity (set using Source List and Source Filter By), must be an invoice (set on the first sublist line), and must not be paid in full (set on the second sublist line). If it does not match any of these criteria, then it will not be displayed within the list.
In the screenshots above, you’ll notice other columns for Is Checked (used when the Filter Using field is a checkbox), Is Not Empty (used to indicate that a field must have any value), and Is Empty (used to indicate that a field must be empty). Additionally, you can define a Compare To Field, which use the value in the specified field for determining matching criteria instead of the Value Is column. For example, if you only wanted to display invoices that had the same Approval Status as the transaction being entered, you could use the Compare To Field as follows:
This same logic could be used to only show transactions with the same sales rep as listed on the transaction where the custom field is being displayed or to exclude transactions that have the same PO number – the options are limitless!
Multiple Dependent Lists
For many business requirements, the above options will be sufficient to build out the necessary logic. There are some scenarios, however, that need some more advanced configuration – particularly cases where the value of one field needs to adjust based on the values selected in two other fields. As an example, let’s consider a customizable product line that is available for sale and allows customers to select a font face and a Font Color. Only certain Product Types within the product line are eligible to be customized using some of the font faces due to the material that they are made with and some of the Font Colors are not available with certain font faces, so it’s important that the list of font faces is limited to only those that are available with the selected Product Type and Font Color.
To achieve this, you can create a custom record that includes fields for Product Type and Font Color, using the same custom lists that will be used for the custom fields on the transaction record. For this example, we’ll refer to this custom record as “Font Option.” You will create a custom record that pertains to each available combination (i.e. Blue Arial on Ceramic and Blue Arial on Canvas), specifying the Product Type (ceramic or canvas) and the Font Color (blue) in the custom fields on the Font Option record.
Then, create a Font Option field on the line level that is sourcing from the Font Option custom record. On the Sourcing & Filtering tab, set the sublist values as follows:
This tells NetSuite to only display values where the line-level Product Type is the same as the Product Type on the Font Option custom record AND the line-level Font Color is the same as the Font Color on the Font Option custom record.
For a more detailed overview of this process, be sure to read the SuiteAnswers article Multiple Dependent Dropdown Lists (ID 10093).
Practical Applications for Dynamic List/Record Fields
Now that we’ve walked through the basics of creating custom List/Record fields with dynamically-sourced values, I’d like to share just a few of the ways that I’ve seen them effectively used:
Want to learn more about creating dynamic List/Record fields in NetSuite, or get guided support on creating one of the fields described in this post? Contact Concentrus today to discuss your needs.