SuiteBuilder (Customization) Guide

SuiteBuilder (Customization) Guide
November 15, 2017
2017.2
Copyright © 2005, 2017, Oracle and/or its affiliates. All rights reserved.
This software and related documentation are provided under a license agreement containing
restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly
permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate,
broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any
form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless
required by law for interoperability, is prohibited.
The information contained herein is subject to change without notice and is not warranted to be errorfree. If you find any errors, please report them to us in writing.
If this is software or related documentation that is delivered to the U.S. Government or anyone
licensing it on behalf of the U.S. Government, then the following notice is applicable:
U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software,
any programs installed on the hardware, and/or documentation, delivered to U.S. Government end
users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation
and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification,
and adaptation of the programs, including any operating system, integrated software, any programs
installed on the hardware, and/or documentation, shall be subject to license terms and license
restrictions applicable to the programs. No other rights are granted to the U.S. Government.
This software or hardware is developed for general use in a variety of information management
applications. It is not developed or intended for use in any inherently dangerous applications, including
applications that may create a risk of personal injury. If you use this software or hardware in dangerous
applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and
other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any
damages caused by use of this software or hardware in dangerous applications.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be
trademarks of their respective owners.
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC
trademarks are used under license and are trademarks or registered trademarks of SPARC
International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.
This software or hardware and documentation may provide access to or information about content,
products, and services from third parties. Oracle Corporation and its affiliates are not responsible
for and expressly disclaim all warranties of any kind with respect to third-party content, products,
and services unless otherwise set forth in an applicable agreement between you and Oracle. Oracle
Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to
your access to or use of third-party content, products, or services, except as set forth in an applicable
agreement between you and Oracle.
If this document is in public or private pre-General Availability status:
This documentation is in pre-General Availability status and is intended for demonstration and
preliminary use only. It may not be specific to the hardware on which you are using the software.
Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any
kind with respect to this documentation and will not be responsible for any loss, costs, or damages
incurred due to the use of this documentation.
If this document is in private pre-General Availability status:
The information contained in this document is for informational sharing purposes only and should be
considered in your capacity as a customer advisory board member or pursuant to your pre-General
Availability trial agreement only. It is not a commitment to deliver any material, code, or functionality,
and should not be relied upon in making purchasing decisions. The development, release, and timing
of any features or functionality described in this document remains at the sole discretion of Oracle.
This document in any form, software or printed matter, contains proprietary information that is the
exclusive property of Oracle. Your access to and use of this confidential material is subject to the terms
and conditions of your Oracle Master Agreement, Oracle License and Services Agreement, Oracle
PartnerNetwork Agreement, Oracle distribution agreement, or other license agreement which has
been executed by you and Oracle and with which you agree to comply. This document and information
contained herein may not be disclosed, copied, reproduced, or distributed to anyone outside Oracle
without prior written consent of Oracle. This document is not part of your license agreement nor can it
be incorporated into any contractual agreement with Oracle or its subsidiaries or affiliates.
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program
website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc
Oracle customers that have purchased support have access to electronic support through My Oracle
Support. For information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit http://
www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.
Sample Code
Oracle may provide sample code in SuiteAnswers, the Help Center, User Guides, or elsewhere through
help links. All such sample code is provided "as is” and “as available”, for use only with an authorized
NetSuite Service account, and is made available as a SuiteCloud Technology subject to the SuiteCloud
Terms of Service at www.netsuite.com/tos.
Oracle may modify or remove sample code at any time without notice.
No Excessive Use of the Service
As the Service is a multi-tenant service offering on shared databases, Customer may not use the
Service in excess of limits or thresholds that Oracle considers commercially reasonable for the Service.
If Oracle reasonably concludes that a Customer’s use is excessive and/or will cause immediate or
ongoing performance issues for one or more of Oracle’s other customers, Oracle may slow down or
throttle Customer’s excess use until such time that Customer’s use stays within reasonable limits. If
Customer’s particular usage pattern requires a higher limit or threshold, then the Customer should
procure a subscription to the Service that accommodates a higher limit and/or threshold that more
effectively aligns with the Customer’s actual usage pattern.
Beta Features
Oracle may make available to Customer certain features that are labeled “beta” that are not yet
generally available. To use such features, Customer acknowledges and agrees that such beta features
are subject to the terms and conditions accepted by Customer upon activation of the feature, or in the
absence of such terms, subject to the limitations for the feature described in the User Guide and as
follows: The beta feature is a prototype or beta version only and is not error or bug free and Customer
agrees that it will use the beta feature carefully and will not use it in any way which might result in
any loss, corruption or unauthorized access of or to its or any third party’s property or information.
Customer must promptly report to Oracle any defects, errors or other problems in beta features
to support@netsuite.com or other designated contact for the specific beta feature. Oracle cannot
guarantee the continued availability of such beta features and may substantially modify or cease
providing such beta features without entitling Customer to any refund, credit, or other compensation.
Oracle makes no representations or warranties regarding functionality or use of beta features and
Oracle shall have no liability for any lost data, incomplete data, re-run time, inaccurate input, work
delay, lost profits or adverse effect on the performance of the Service resulting from the use of beta
features. Oracle’s standard service levels, warranties and related commitments regarding the Service
shall not apply to beta features and they may not be fully supported by Oracle’s customer support.
These limitations and exclusions shall apply until the date that Oracle at its sole option makes a beta
feature generally available to its customers and partners as part of the Service without a “beta” label.
Table of Contents
SuiteBuilder Overview ............................................................................................................ 1
Customize Your NetSuite Account ........................................................................................ 5
Custom Fields ..................................................................................................................... 14
Table of Custom Field Type Descriptions ............................................................................. 14
Available Standard Fields and Field Types ........................................................................... 19
Kinds of Custom Fields ..................................................................................................... 26
Custom CRM Fields ...................................................................................................... 27
Custom Entity Fields ..................................................................................................... 28
Custom Item Fields ...................................................................................................... 30
Custom Transaction Body Fields .................................................................................... 31
Custom Transaction Column Fields ................................................................................. 33
Custom Transaction Item Options .................................................................................. 35
Custom Item Number Fields .......................................................................................... 37
Other Custom Fields .................................................................................................... 38
Creating a Custom Field .................................................................................................... 40
Assigning Custom Fields to Specific Record Types ............................................................. 42
Setting Display Options for Custom Fields ....................................................................... 43
Setting Validation and Defaulting Properties .................................................................... 46
Setting Sourcing Criteria ............................................................................................... 50
Sourcing and Filtering Examples .................................................................................... 52
Setting Filtering Criteria ................................................................................................ 55
Multiple Dependent Dropdown Lists .............................................................................. 56
Restricting Access to Custom Fields ................................................................................ 59
Creating Read-Only Custom Fields ................................................................................. 61
Adding Translations for Custom Fields ............................................................................ 61
Adding Custom Fields to Transaction Forms .................................................................... 63
Tracking Changes to Custom Fields ................................................................................ 63
Inactivating a Custom Field ............................................................................................... 64
Editing a Custom Field ...................................................................................................... 65
Renaming Custom Fields .............................................................................................. 66
Mass Updating Custom Fields ........................................................................................ 67
Advanced Features for Custom Fields ................................................................................. 67
Encrypted Custom Field Stored Values ............................................................................ 67
Creating Custom Fields with Values Derived from Summary Search Results .......................... 68
Dynamic Defaults and Dynamic Hyperlinks ..................................................................... 70
Creating Formula Fields ................................................................................................ 72
SQL Expressions .......................................................................................................... 76
Custom Lists ................................................................................................................... 84
Creating a Custom List ................................................................................................. 84
Adding Translations for Custom Lists .............................................................................. 85
Managing Large Custom Lists ........................................................................................ 87
Custom Forms ..................................................................................................................... 89
Creating Custom Entry and Transaction Forms ..................................................................... 91
Storing Custom Forms with Transactions ........................................................................ 94
Configuring Subtabs for Custom Entry and Transaction Forms ........................................... 95
Moving Fields and Lists Between Subtabs ....................................................................... 96
Configuring Field Groups .............................................................................................. 96
Configuring Fields or Screens ........................................................................................ 99
Configuring Buttons and Actions .................................................................................. 102
Configuring Printing Fields ........................................................................................... 105
Configuring Lists ........................................................................................................ 106
Configuring QuickViews ............................................................................................... 107
Associating Custom Code (Client SuiteScript) Files With Custom Forms .............................. 109
Defining Preferred Forms ............................................................................................ 111
Adding Disclaimers to Transaction Form Footers ............................................................ 113
Customizing Multiple Page Transaction Forms ................................................................ 113
Linking Transaction Forms ........................................................................................... 114
Transaction Form Printing Preferences .............................................................................. 115
Creating Custom Subtabs ................................................................................................ 116
Creating Custom Note Forms ........................................................................................... 117
Customizing Address Forms ............................................................................................ 118
Scripting Billing and Shipping Addresses ....................................................................... 120
Creating Custom Address Fields ................................................................................... 120
Country-Specific Address Forms ................................................................................... 120
Custom Sublists ............................................................................................................. 122
Saved Searches for Custom Sublists ............................................................................. 122
Applying Custom Sublists to Standard Records ............................................................... 123
Applying Custom Sublists in SDF-Enabled Accounts ......................................................... 126
Applying Custom Sublists to Custom Record Types ......................................................... 127
Custom Child Record Sublist Creation with SuiteScript ..................................................... 129
Customizing a Transaction Sublist .................................................................................... 139
Advanced PDF/HTML Templates ........................................................................................... 142
Enabling the Advanced PDF/HTML Templates Feature ......................................................... 143
Reviewing Available Advanced Templates .......................................................................... 143
Advanced PDF/HTML Template for Multiple Currencies Customers ........................................ 144
Setting Custom Forms to Use Advanced Templates ............................................................. 145
Customizing Advanced Templates in the Template Editor ..................................................... 147
Training Videos for Advanced PDF/HTML Templates ........................................................ 152
WYSIWYG Editing in the Template Editor ........................................................................... 152
Template Editor Toolbar .............................................................................................. 154
Adding and Removing Fields in Advanced Templates ....................................................... 155
Adding and Formatting Text in Advanced Templates ....................................................... 156
Adding Tables to Advanced Templates .......................................................................... 157
Including Images in Advanced Templates ...................................................................... 158
Including Bar Codes in Advanced Templates .................................................................. 159
HTML Markup Source Editing in the Template Editor ........................................................... 160
HTML Markup Source Editing to Customize Advanced Templates ...................................... 162
Syntax for Advanced Template Fields ............................................................................ 165
Setting a Template to Use a Font Unavailable in NetSuite ................................................ 169
Languages for Printed Forms that Use Advanced Templates ............................................. 170
Adding Striping to Line Items in Advanced Templates ...................................................... 171
Adding Page Breaks to Tables ...................................................................................... 174
Printing Subsidiary Logo on Advanced Templates ........................................................... 176
Adding Apply Sublist to Check Templates ...................................................................... 176
Using Custom Data Sources for Advanced Printing ............................................................. 177
Example of Using Custom Data Sources for Advanced Printing ......................................... 178
Previewing Advanced PDF/HTML Templates ....................................................................... 184
Error Messages in Advanced Templates ............................................................................ 186
Advanced Templates for Printing Saved Search Results ....................................................... 186
Advanced Templates Support for Company Printing Preferences .......................................... 189
Using SuiteScript for Transaction Records .......................................................................... 190
Using SuiteScript to Apply Advanced Templates to Non-Transaction Records ........................... 192
Basic Printing Layouts ......................................................................................................... 195
Customizing Transaction Form PDF Layouts ....................................................................... 195
Defining Custom Elements .......................................................................................... 199
Configuring Borders and Placement ............................................................................. 200
Formatting Label Text ................................................................................................. 201
Formatting Data Text .................................................................................................. 201
Using a Standard #10 Window Envelope With Transactions ..............................................
Transaction Form HTML Layouts ......................................................................................
Totals Transaction Form Layouts ......................................................................................
Custom Records .................................................................................................................
Creating Custom Record Types ........................................................................................
Creating a New Custom Record Type ............................................................................
Entering Name and Display Settings .............................................................................
Specifying Permission and UI Settings ...........................................................................
Configuring File and Child Record Settings .....................................................................
Defining Search and Edit Settings .................................................................................
Adding Fields to Custom Record Types ..........................................................................
Limiting Search Access to Custom Records ....................................................................
Applying Role-Based Restrictions to Custom Records ......................................................
Adding Subtabs to a Custom Record .............................................................................
Choosing an Icon for a Custom Record .........................................................................
Numbering Custom Record Types ................................................................................
Adding Custom Forms for a Record ..............................................................................
Online Custom Record Forms ......................................................................................
Setting Up a Permissions List for a Custom Record Type ..................................................
Creating Links to Custom Records ................................................................................
Adding Translations for Custom Records .......................................................................
Parent-Child Record Relationships ....................................................................................
Creating Built-in Child Records .....................................................................................
Using Child Records ...................................................................................................
Sourcing with Custom Records .........................................................................................
Updating Custom Record Types .......................................................................................
Viewing or Editing a Custom Record Type ......................................................................
Custom Record Types Associated with a Custom Segment ...............................................
Using Custom Record Entries ...........................................................................................
Searching Custom Record Entries .................................................................................
Custom Transactions ..........................................................................................................
Benefits of Custom Transaction Types ...............................................................................
Custom Transaction Type Setup .......................................................................................
Enabling the Custom Transactions Feature ....................................................................
Granting a Role Permission to Work With Custom Transaction Types .................................
Creating and Editing Custom Transaction Types .................................................................
Custom Transaction Type List Styles .............................................................................
Creating a Custom Transaction Type .............................................................................
Editing a Custom Transaction Type ...............................................................................
Locked Custom Transaction Types ................................................................................
Custom Transaction Type Classification Fields ................................................................
Setting the Account Field for a Basic Transaction Type .....................................................
Custom Fields in Custom Transaction Types ...................................................................
Numbering for a Custom Transaction Type ....................................................................
Statuses for a Custom Transaction Type ........................................................................
Creating Links for a Custom Transaction Type ................................................................
Adding Custom Forms for a Custom Transaction Type .....................................................
Permissions for a Custom Transaction Type ...................................................................
Adding Translations for a Custom Transaction Type ........................................................
Custom Transaction Type Association with a Plug-in Implementation .....................................
Deleting Custom Transaction Types ..................................................................................
Printing Custom Transaction Instances ..............................................................................
Custom Transaction Types in Workflows ............................................................................
Custom Transaction Types in Bundles ...............................................................................
Custom Segments ..............................................................................................................
201
203
204
205
205
206
207
207
209
210
215
216
216
217
218
223
223
224
230
231
232
234
235
236
237
240
241
242
245
246
248
248
251
251
251
252
252
254
256
258
258
259
260
261
265
270
272
274
275
276
277
278
279
281
284
Benefits of Custom Segments ..........................................................................................
Custom Segments Overview ............................................................................................
Enabling the Custom Segments Feature ........................................................................
Transaction Types Supported by Custom Segments ........................................................
Settings that Affect Where Custom Segments are Applied ................................................
Permissions for Managing Custom Segments and Values .....................................................
Granting a Role Permission to Manage Custom Segments ...............................................
Granting a Role Permission to Manage Custom Segment Values .......................................
Custom Segment Creation ...............................................................................................
Custom Segment Types ..............................................................................................
Creating a Custom Segment ........................................................................................
Configuring GL Impact for a Custom Segment ................................................................
Filtering for a Custom Segment ....................................................................................
Applying a Custom Segment to Record Types ................................................................
Dynamic Default Value Sourcing for Custom Segments ....................................................
Validation and Static Default Values for Custom Segments ...............................................
User Permissions for a Custom Segment .......................................................................
Dependent Segments .................................................................................................
Setting Display Order of All Custom Segments ...............................................................
Editing Custom Segments ................................................................................................
Required Permissions for Editing Custom Segments .......................................................
Inactivating a Custom Segment ....................................................................................
Deleting a Custom Segment Definition ..........................................................................
Custom Segment Values .................................................................................................
Value Creation for Custom Segments ............................................................................
Creating Hierarchies Among a Custom Segment’s Values .................................................
Edit a Custom Segment’s Values ...................................................................................
Changing the Order of a Custom Segment’s Values .........................................................
Making a Custom Segment’s Values Inactive ..................................................................
Deleting a Custom Segment’s Values ............................................................................
Custom Segments in Record Searches ..............................................................................
Customizing a Report by Using Custom Segments ..............................................................
Adding a Custom Segment to a Bundle .............................................................................
Using Custom Segments in Workflows ..............................................................................
SuiteScript and Custom Segments ....................................................................................
Web Services and Custom Segments ................................................................................
CSV Import and Custom Segments ...................................................................................
Custom Centers .................................................................................................................
Creating and Editing Custom Centers ................................................................................
Creating Center Tabs ......................................................................................................
Creating Center Categories ..............................................................................................
Creating Center Links .....................................................................................................
Translating Custom Centers, Tabs, Categories, and Links .....................................................
Assigning a Custom Center to a Custom Role ....................................................................
Deploying Upgraded Forms .................................................................................................
Form Layout Enhancements ............................................................................................
Custom Form Deployment Process (Summary) ...................................................................
Custom Form Deployment Process (In Detail) ................................................................
Deploying Upgraded Custom Forms .................................................................................
Previewing Undeployed Custom Forms .........................................................................
Editing the Layout of Custom Forms Prior to Deployment ................................................
Avoid Editing Custom Forms in Tandem ........................................................................
Testing Undeployed Custom Forms ..............................................................................
Deploying Custom Forms ............................................................................................
Deploying Skipped Custom Forms ................................................................................
284
289
289
289
291
293
293
295
297
298
299
301
303
308
309
313
314
317
317
318
319
320
321
321
322
326
327
329
330
331
332
332
333
335
338
338
339
341
341
342
344
345
347
350
352
352
359
359
362
362
363
365
365
366
366
Understanding Form Deployment Statuses ........................................................................
Understanding Form Layout Enhancement Upgrade Logic ...................................................
Upgrade Logic for Custom Forms .................................................................................
Upgrade Logic for Subtabs ..........................................................................................
Upgrade Logic for Fields (Diagram) ...............................................................................
Field Ordering ............................................................................................................
367
368
368
369
369
370
SuiteBuilder Overview
SuiteBuilder Overview
With the NetSuite SuiteBuilder customization tools you can tailor NetSuite to your individual business
needs.
These features allow you to adapt NetSuite to meet your company's business process. You can control
the information that is accessed and entered by each user of your NetSuite account. SuiteBuilder
provides a point and click interface for creating custom fields and forms, custom record types,
transaction form layouts, and custom centers.
Additionally, the SuiteBundler feature enables you to share customization objects with other NetSuite
users.
Who Uses SuiteBuilder?
There are three primary types of user of SuiteBuilder customization features:
■ Administrators - When a company first begins using NetSuite, administrators spend time
customizing transaction forms, adding custom record types, and setting up custom centers for roles
within the company to get the rest of the company using the application. Some of the customization
work is unique to a specific business. Some of the work can be accomplished by installing previously
created ‘bundles', or packaged customizations.
Bundles are created using SuiteBundler. Finding and installing bundles that have been created
by other similar businesses can greatly reduce the work required to get a company started using
NetSuite.
Administrators also assign roles to each NetSuite user. These roles determine which information
each user has access to in your NetSuite account.
■ IT Staff - For a company that uses NetSuite, the issues addressed by the IT department often
include requests for changes to the NetSuite account. These issues can range from small tasks such
as adding a field to a form to larger work items like creating custom record types.
IT staff members also may have access to the administrative tools that allow them to audit changes
to your NetSuite account, manage data in the system, and schedule batch processing jobs.
■ Developers – For developers of partner solutions and independent software vendors (ISVs), most
time with NetSuite is spent coding SuiteScript and SuiteTalk, but to work with these features,
developers need a solid understanding of how customization objects interact with their code.
NetSuite Anatomy
Making changes to NetSuite is a point-and-click process. Whether you have experience with other
software applications or not, you can get up and running with NetSuite in no time. First, however, it
helps to understand the custom elements you have to work with and how they work together.
NetSuite uses the following terminology:
■ Record – A single entry of information related to a single business concept.
■ Form – Page through which you enter records and transactions. Forms contain fields and usually
have subtabs.
■ Field – Place on a record or transaction where information is entered.
SuiteBuilder
1
SuiteBuilder Overview
■ Subtab – Section of a record or transaction that groups similar fields.
An example of a standard subtab is the Address subtab where the shipping and billing addresses
are entered on transactions and records.
■ Custom list – List of values that can be selected in a custom field.
■ Sublist – The results of a saved search displayed on a custom or standard record. Sublists can also
be generated through parent-child relationships.
■ Script – SuiteScript JavaScript file that runs against a specific form or record type or that creates a
custom portlet. Scripts can also be scheduled to execute periodically.
■ Role – Set of permissions that can be assigned to a NetSuite user.
■ Center – Configuration of NetSuite created for a specific group of roles with similar tasks.
■ Center tab – Section of NetSuite that groups similar links and other information. Standard tabs
include Home, Reports, Documents, Activities, and Setup. You can also create custom center tabs.
Understanding forms is key to understanding how to work in NetSuite. The following screenshot shows
a sales order form with the following elements highlighted:
1. fields
2. subtabs
In the previous example, notice that some of the fields allow the person filling out the form to choose
from a list of values, some allow the entry of text or numbers, and some are auto-populated and readonly.
Although some of the fields shown in the preceding example allow you to choose from lists defined in
your account – Customer, Location, and Department, for example – you can also create your own lists
of values to choose from. The example below shows a custom field that uses a custom list.
SuiteBuilder
2
SuiteBuilder Overview
For more information on fields, see Custom Fields.
You can create custom versions of most forms in NetSuite to include the fields – both standard and
custom – you want to show. Adding custom fields to forms lets you capture information that is not
included in NetSuite by default.
With custom sublists, you can add lists of information to a form. Sublists present saved search results
on form subtabs. In the following example, the Preferred Item sublist has been added to the Financial
subtab on vendor records. The sublist shows selected fields for the items most often sold by the
vendor.
Customizing forms also enables you to adapt the information captured to specific roles in your
company. When you create a form for a role, you choose which fields and subtabs appear on the form
and which are hidden. You also have the flexibility of setting a custom form as the preferred (default)
form or to restrict the role to only use a specific form.
The following Custom Sales Person role is restricted to use only the Custom Cash Refund form when
issuing refunds to customers. Note that the boxes in the Restricted and Preferred columns are
checked.
SuiteBuilder
3
SuiteBuilder Overview
For more information on forms, see Custom Forms.
NetSuite enables you to change the labels on standard records to use terminology that is familiar to
your users. For more information about changing the label of any standard record, see the help topic
Renaming Records and Transactions.
SuiteBuilder allows standard NetSuite records to be customized by adding custom fields, subtabs, or
sublists or through the removal of existing fields. Standard records can support many of your business
needs, but with SuiteBuilder you can create your own custom record types to fill in the gaps.
The following screenshot shows the Applies To subtab of a custom entity field. On the Applies To
subtab, you choose the standard records where your custom field appears.
In the same way as standard records, custom records can be designed to be associated with other
custom records or with standard records. You might need a lookup relationship where one type of
SuiteBuilder
4
Customize Your NetSuite Account
record refers to another as well as a situation where a tighter parent-child relationship is needed. If
the standard records do not suit your needs, you can use custom records instead. For example, if your
organization finds standard records too complicated, you can create and use a copy that reduces the
information required.
You can create custom forms for your record types to give you finer control on how different roles
within your company are able to interact with your custom records. You can copy and edit forms, and
create new versions to set as preferred. Custom records ensure that a particular segment or user has
a form that covers only the information they need, is named what they want, and uses field names
that are meaningful to them (in the language they prefer). For more information on record types, see
Custom Records.
If you need even more flexibility and automation, you can use SuiteScript, NetSuite’s JavaScript-based
API. You can use SuiteScript to perform validations and calculations on forms, to access and update
records when fields are changed or pages are submitted, or to automatically create or update records.
For more information on what you can do with SuiteScript, see the help topic SuiteScript 1.0 - The
Basics.
Now, that you have a general idea of how the customization objects work together, read Customize
Your NetSuite Account for an overview of what is possible with SuiteBuilder.
Customize Your NetSuite Account
Now that you understand what you can do with the customization features, you are ready to begin
setting up your account.
■ Building Custom Forms
■ Creating Custom Record Types
■ Custom Centers
■ SuiteBundler
Building Custom Forms
All information in NetSuite is entered through forms. There are forms for every record you can store
in your NetSuite account, including transactions, relationships like customers, contacts, and vendors,
as well as CRM records like events, tasks, and campaigns. NetSuite provides a full array of standard
forms, but with SuiteBuilder, you can make the changes you need to ensure that you are capturing the
information from forms that your business needs.
Forms are made up of fields in which you enter data. If a piece of information you need is not included
on a form, you can create your own custom fields and place them there. When the form is filled out
and submitted, the information in the custom field is stored in the same way as any standard field.
On the following custom sales order form, you can see that a custom field has been added to show the
approval status for the sales order.
SuiteBuilder
5
Customize Your NetSuite Account
Most forms are divided into subtabs. Subtabs group fields with similar information in one place. For
example, the Address subtab is where shipping and billing addresses are entered. You can create
subtabs for custom fields.
On the following sales order form, a custom Warranty subtab has been added to track warranty
information through the Warranty Number and Warranty Term custom fields.
SuiteBuilder
6
Customize Your NetSuite Account
You can also add custom sublists to your forms. Sublists display saved search results relating to the
record on which they are shown. For example, you might add a custom sublist to a custom vendor
form that shows all of the items that most often purchased from the vendor.
First, you create an item saved search. On the Results subtab of the search, you add the columns you
want to show on the sublist. On the Available Filters subtab, you select Vendor: Name/ID. The filter is
used by the sublist to show only the items purchased from a vendor. For more information on saved
search filters, see the help topic Selecting Available Filters for Saved Searches.
For more information, see Custom Fields, Custom Sublists, and Custom Forms.
Creating Custom Record Types
When you need to create records that are specific to the needs of your business but are not included in
NetSuite, you can create custom record types.
When you create a custom record type, you must also define the custom fields that make up the
record.
For example, your company might need to track information on computer and electronic equipment.
Since there is no such standard record type in NetSuite, you could create a custom record type called
Equipment and add custom fields in which you enter serial numbers, location, purchase date, and
service and warranty information.
Your custom records can be attached to standard records and other custom records. For example,
on the preceding equipment record type, you might want to track details each time you service your
equipment. You create a new custom record, Equipment Service, used to track these details.
SuiteBuilder
7
Customize Your NetSuite Account
To create the parent-child relationship, you add a field to the Equipment Service record in which you
can select the Equipment record it is associated with. The field type is List/Record, and Equipment is
chosen in the List/Record field. Checking the Record is Parent box creates the parent-child relationship.
When service is performed, the technician opens the Equipment record, clicks the Service subtab, and
clicks a button to create the Equipment Service record.
1. Click the New Equipment Service button to create a new service record.
2. Enter the service information in the new record. The Equipment field is filled in automatically.
3. The child service record shows on the parent Equipment record.
SuiteBuilder
8
Customize Your NetSuite Account
In the same way as with standard transactions and records, you can customize the forms used to enter
custom records and even set up forms for different roles. Customizing a form involves determining
which fields show, how these fields are arranged, and which roles use the form.
The equipment record in the preceding example is most useful to the IT staff who have to purchase,
maintain, and track the equipment, but there is some information that is generally useful to others in
the company. A custom form is created for the record.
1. On the Custom Record Type page on the Forms subtab, click Customize next to the standard
form.
2. On the Custom Entry Form page, clear the box in the Show column next to the Warranty and
Service subtabs.
3. Make sure that Use Permissions List is selected for Access Type, and on the Permissions
subtab, restrict your non-IT roles to use only the new custom equipment form.
4. When someone with a non-IT role views the equipment record, the hidden fields and subtabs
are not shown.
SuiteBuilder
9
Customize Your NetSuite Account
SuiteBuilder
10
Customize Your NetSuite Account
11
With the preceding custom record form, employees outside of your IT department can view basic
information about the equipment, like manufacturer and model. They cannot see information related
to service and warranty that is only relevant to your IT staff.
For more information, see Custom Records.
Custom Centers
When employees are assigned roles in NetSuite, they are granted access to the NetSuite pages
necessary to complete their work.
Each standard role has access to what is called a center. A center is a configuration of NetSuite created
for a group of roles with similar tasks. For example, all sales roles – sales reps, sales managers, and
SuiteBuilder
Customize Your NetSuite Account
12
sales administrators – use the Sales Center by default. Although the information available to each role
differs, the basic layout of the Sales Center is the same for each of the standard sales roles. Center tabs
are the headings at the top of the page.
With SuiteBuilder, you can create custom centers and assign them to custom roles, letting you
completely control a role's experience with NetSuite. You can create custom tabs, add portlets, and add
links to the tasks needed by the role.
You can only grant custom center access to new roles that you create. You cannot give custom center
access to standard roles or to customized version of standard roles.
For steps on creating custom centers, see Custom Centers.
SuiteBundler
The SuiteBundler feature enables you to share customization objects with other NetSuite accounts.
When SuiteBundler authors create a bundle, they select all of the objects they want to include.
You can install any bundle that is shared publicly, or you can install a bundle that has been shared with
your account specifically by an account administrator in another account.
You can also install bundles created in the accounts of other NetSuite customers. For example, when
attending an account administrators workshop, you meet the account administrator of a company
much like yours. During your conversation, your new acquaintance mentions her recent work on a
customer survey in NetSuite. The survey uses custom record types, custom fields and forms, as well as
some saved searches that compile the results into reports. She offers to bundle these objects and to
share them with you, saving you what could have been many days of work.
If your company uses the NetSuite Sandbox feature for development and testing, you can create a
bundle of all of the parts of your customization in a sandbox account and install that bundle in your
company's NetSuite production account. The bundle can be deployed from one sandbox account to
another as well. You can also choose to share your bundle with other NetSuite companies, maybe
saving someone else the time and energy required to build new customizations.
You can peruse the list of bundles that are available to you on the Search & Install Bundles page. Be
sure to carefully review the documentation for a bundle before installing it.
In the name column of the Search & Install Bundles page, click a bundle to go to the details page for
that bundle. On the details page, be sure to click the Documentation link to read about the bundle
before installing it.
SuiteBuilder
Customize Your NetSuite Account
For more information, see the help topic SuiteBundler Overview.
SuiteBuilder
13
Custom Fields
Custom Fields
Custom fields are fields that you can add to your records and transactions to record information
specific to your business needs. Record custom fields can be added to existing and custom subtabs
on the entry forms you use to enter records in your NetSuite account. Transaction custom fields can
be added to the top (body) or the line items (columns) of transactions. For more information, see the
following.
■ Table of Custom Field Type Descriptions
■ Available Standard Fields and Field Types
■ Kinds of Custom Fields
To create a custom field you need to do the following:
■ Set the basic properties for the field. For information, see Creating a Custom Field.
■ Assign the field to the desired forms. For information, see Assigning Custom Fields to Specific
Record Types.
■ Set the display properties for the field. For information, see Setting Display Options for Custom
Fields.
■ Set the desired validation and defaulting properties. If needed, create dynamic defaults and
hyperlinks. For information, see Setting Validation and Defaulting Properties and Dynamic Defaults
and Dynamic Hyperlinks.
■ Set any sourcing criteria for the field. For information, see Setting Sourcing Criteria.
■ Set any access restrictions to the field based on department, role, or subsidiary. For information,
see Restricting Access to Custom Fields.
■ Set any filtering criteria for the field. For information, see Setting Filtering Criteria.
You also have several optional setup tasks when creating a custom field:
■ Multiple Dependent Dropdown Lists
■ Creating Read-Only Custom Fields
■ Adding Translations for Custom Fields
■ Adding Custom Fields to Transaction Forms
■ Creating Formula Fields
■ Custom Lists
Warning: You should be aware of the consequences of deleting a custom field. Instances of
the deleted field will be removed from forms and lists and all associated data will be deleted.
Reports and searches containing the deleted field will either have the field removed or may
error out, depending on how the field is used. If you inactivate the field, the data is retained in
NetSuite. Also note that changing the data type or permissions associated with a custom field
can result in errors for reports and searches containing that field.
Table of Custom Field Type Descriptions
When creating a custom field, you select the type of field you want to create, depending on the kind of
information you want to store in the field.
The following table outlines all available custom field types. Any character limits mentioned apply to
English letters, which require one byte for each letter. If you are using another language, the limit is
SuiteBuilder
14
Table of Custom Field Type Descriptions
lower because one character could require up to four bytes. For non-English characters, the limits for
the fields vary depending on the characters entered, and the field maximum is lower than the number
indicated.
For information on creating a custom field, see Creating a Custom Field.
Field Type
Description
Example
Check box
Record a true or false answer by
placing a check mark in the custom
field.
For example, you want to track orders by
delivery. You create a check box custom
field called Delivery that appears on sales
transactions. If orders are for deliver, you
check the Delivery box.
Currency
Enter currency amounts in a custom
field.
A custom field of type currency
behaves differently from standard
NetSuite currency fields. That is, if
you are not using the Multi-currency
feature, the custom field will not
be hidden like standard NetSuite
currency fields.
For example, you want to track the spending
limit of each employee in your company.
You create a currency custom field that
appears on employee records and enter the
spending limit for each employee.
Date
Enter or choose dates.
Note that changing Date fields to
Date/Time fields will automatically
convert Dates in existing records
to Date/Times with the time value
defaulting to midnight of your
company's time zone. All existing
SuiteScript that referenced the
Date field will need to be manually
updated.
For example, you want to record projected
start dates on estimates. You create a date
custom field called Projected Start Date.
Dates entered must follow the date format
selected at Setup > Company > General
Preferences.
Combine date and time values in one
field.
After a user enters a date/time value,
the data is rendered in the user's
preferred date and time format, as
well as the user's time zone.
Also note that time values are stored
in NetSuite down to the second.
If you choose, you can also add Date/
Time custom fields in SuiteScript
using the nlobjForm. addField
(name, type, label, sourceOrRadio,
tab) method. Important: If you
use the addField method, for the
type parameter, you must specify
'datetimetz'.
For example, you may want a single field to
contain date and time timestamp data.
Enter a decimal number in a custom
field.
For example, you want to record the
distance your customers are from
your nearest retail outlet. You create a
decimal number custom field to store the
information on your employee records.
Date/Time
Decimal
Number
SuiteBuilder
Note: The date and time are
based on user's NetSuite Time
Zone preference, set at Home > Set
Preferences, not on the browser
client time zone.
Note: The date and time are
determined by the user's NetSuite
Time Zone preference, set at Home >
Set Preferences, not by the browser
client time zone.
15
Table of Custom Field Type Descriptions
Field Type
Description
Example
Document
Select a file cabinet document to
preview or download. The field is
searchable and can be added to
search results.
Note: The user of the document
custom field must have file cabinet
access to view, select or upload
documents.
For example, you want employees to be able
to search customer survey results.
Entity
You can create custom fields of type
Entity. To create a custom entity
field, set the field type to List/Record,
and set the List/Record type to
Entity. By doing so the new generic
custom entity field will automatically
include all records of type contact,
customer, employee, group, other
name, partner, and vendor.
If you choose, you can then use
sourcing and filtering capabilities to
limit the choices in the custom field's
list to a subset of the supported
entities.
For example, on the custom field's definition
page, on the Filtering and Sourcing subtab,
specify Type in the Filter Using column.
In the Value Is column, specify customer,
partner, and vendor.
When the custom field of type Entity
appears on your record, only entities of type
customer, partner, and vendor will appear
as available options in the field's list.
E-mail address
Enter an email address in a custom
field. The email address field creates
a link to open your default email
client.
For example, you create a custom record
type for intern records. You can include a
field for their email addresses. You can send
email to interns by clicking email addresses
on their records.
Free-Form Text
Enter up to 300 characters of text in
a custom field.
For example, you want to offer your
customers monogramming on certain items.
You can create a Free-Form Text field as an
item option to record the monogram they
want.
Note: Calculations within free-
form text fields display values in
scientific notation. To avoid scientific
notation, use the following syntax to
round digits in free-form text fields:
ROUND({cost}/0.65,3) .
Help
Place helpful text on record pages
where your users enter information.
The help that appears is for
informational purposes only. It is not
stored in your account.
When you create a Help custom field,
choose Help in the Type field and enter your
text in the Help field.
Hyperlink
Enter a URL in a custom field that
links to another web page.
For example, you want to link to a vendor's
website. You create a hyperlink custom
field called Website that appears on vendor
records. First, you enter the company's URL.
When you return to the vendor's record, you
■ Hyperlink fields should begin with
■ http://, https:// or ftp:// .
SuiteBuilder
16
Table of Custom Field Type Descriptions
Field Type
Description
Note: You are also
permitted to enter URLs
beginning with file:// or \\,
but it is not recommended,
because clicking on
these types of links is not
supported, due to security
concerns.
Example
can click the URL to open the vendor's site
in a new window. You can enter up to 999
characters in the field.
Image
Attach an image to a record. The
image is rendered with a maximum
width of 250 pixels in the form
layout, and the image is resized
proportionally.
For example, you can attach pictures of your
employees to their records.
Inline HTML
Use HTML to define a custom field
to be included on custom pages
generated by Suitelets.
For example, you could display to customers
how many reward points they have earned.
Integer Number
Enter integers in a custom field.
For example, you can record a special ID
number on your company records.
List/Record
Attach lists and records to custom
fields. In the List/Record field, select
the list or kind of record you want to
attach. You can also choose from a
list of public saved searches.
You can also use the list/record
option to script a custom printing
solution. For more information, see
Scripting a Custom Printing Solution.
For example, you want to track orders by the
employee who works on them. You create
a custom body field for sales transactions.
In the List/Record field, you attach your
employee list. On sales transactions, you can
then select the appropriate employee for
the order.
Long Text
A text area that can hold up to
1,000,000 characters. Use Long
Text Custom fields where you need
greater than 4,000 characters of text
for a text area, and where you do
not want the field to contain rich text
formatting.
When you create a long text field
type in the UI, the field character
limit is 1,000,000. When you create a
long text field type using SuiteScript,
the field character limit is 100,000.
For example, use a Long Text custom field in
a custom record to hold the text of an item
Warranty, or add to an Online Form to hold
the text of a End User License Agreement.
Note: A free form text
or text area field can be
converted to a long text field.
However, after the conversion
is complete, the field cannot
be converted back.
Multiple Select
SuiteBuilder
Lets you create a field where you can
make multiple selections from a list
or list of records.
For example, you want to track how
customers heard about your business.
You create a multiple select custom field
that appears on customer records and
contains a list of possible sources for how
17
Table of Custom Field Type Descriptions
Field Type
Description
Example
customers heard about your business. Sales
representatives use the field to select the
different places customers heard about your
business.
Password
Lets you create a field that is
encrypted in the database. When
you view the record it will always
show a fixed number of characters
regardless of how long the password
is. When validating, you pull the
encrypted password value into a
hidden field and use custom code to
encrypt the value the user typed and
compare it with the actual encrypted
value.
For example, you could add a password
custom field to a web page.
Percent
Lets you create a field to store a
percentage. The information entered
in the field can only be an integer
from 0.
100. The percent sign (%) is automatically
added to the information.
Phone Number
Lets you create a field for a
telephone number on records and
transactions.
For example, you can include a contact
number on an event record using a CRM
field.
Rich Text
Lets you enter and format up to
100,000 characters of text in a
custom field.
For example, you can include a small
biography of your employees with
information like marital status, family
members and other special information. You
can also format the text to create lists, make
text bold or italic, and change the font size
and color.
Text Area
Lets you enter up to 4,000 characters
of text in a custom field.
For example, you want to record special
information about how you closed a
customer. You could enter it into a text area
custom field that appears on customer
records.
Time of Day
Lets you enter the time of day in a
custom field.
For example, you create a Best Time To
Call custom field, and then your sales
representatives could enter the best time of
day to call a prospect.
Scripting a Custom Printing Solution
If you use the List/Record field type, Advanced PDF/HTML Templates is available in the list. The
Advanced PDF/HTML Templates option provides users with a list of all available advanced templates.
You can incorporate the option in a scripted custom printing solution that lets users select the form to
be used for printing.
SuiteBuilder
18
Table of Custom Field Type Descriptions
19
Note: The Advanced PDF/HTML Templates option lists all available templates and is not
filtered for users. Only use the Advanced PDF/HTML Templates option with a scripted custom
printing solution that specifies what action to perform when the user selects a form from the
list.
Viewing Custom Images and Custom Image Files
After you add a custom image to a form using a custom image field, it is shown on the form when you
view it. You can interact with the image in two ways:
1. When you click the image thumbnail, you are directed to its file in the File Cabinet.
2. When you hover over the image, the Open button appears. When you click the Open button, a
dialog appears showing a full-size preview of the image.
Changing Field Types
When you edit a custom field and change the field type, the data that you have previously entered in
that field is preserved whenever possible.
The retention of data follows the following rules:
■ Changing to a Different Field Type
If you change the field type to a fundamentally different field type, existing data you had entered in
that field is deleted. A warning message is displayed when you make a change.
For example, changing a phone number field to a rich text field would preserve your data, whereas
changing a rich text field to a percent field would not.
■ Changing the Source List
If you change the source list for a list/record field or a multiple select field, existing data in that field
is not preserved. A warning message is displayed when you make a change.
■ Switching Numeric Field Types
If you change a decimal, currency, or percent type field to an integer field, your data is rounded off
to the nearest whole number.
Warning: Custom field filters are type sensitive. If you change the type of a custom field, filters
defined for the field may become incompatible, resulting in unexpected errors when a form
containing the field is displayed. If you plan to change a custom field’s type, you need to review
any existing filters defined for the field, and remove or change these filters to avoid errors. For
information about field filtering, see Setting Filtering Criteria.
Available Standard Fields and Field Types
Each kind of custom field has standard fields that can be sourced from. Following are tables that list
available standard fields and the required field type for each kind of custom field.
SuiteBuilder
Available Standard Fields and Field Types
Transaction Body Fields
Source From Entity
The type of entity used to source from depends on the type of transactions you apply your field to.
A purchase transaction sources from vendor records. A sales transaction sources from customer
records, and an expense report sources from employee records.
Note: In the List/Record field, you must choose the Employee list for sourcing to work
properly.
Field
Type
Sales Transactions
Purchase
Transactions
Expense Reports
Name
Free-Form Text
×
×
×
Bill To
Text Area
×
×
×
Ship To
Text Area
×
×
Phone
Phone Number
×
×
×
Fax
Phone Number
×
×
E-mail
E-mail Address
×
×
×
City
Free-Form Text
×
×
×
State
Free-Form Text
×
×
×
Zip
Free-Form Text
×
×
×
Country
Free-Form Text
×
×
×
Sales Rep
List/Record
×
Expected Close
Date
Date
×
Renewal Date
Date
×
Contact
Free-Form Text
×
×
Alt. Contact
Free-Form Text
×
×
Alt. Phone
Phone Number
×
×
Balance
Currency
×
×
Credit Limit
Currency
×
×
Account
Free-Form Text
×
×
1099 Eligible
Check Box
×
Tax ID
Free-Form Text
×
Legal Name
Free-Form Text
×
Supervisor
List/Record
×
Soc. Sec. #
Free-Form Text
×
SuiteBuilder
20
Available Standard Fields and Field Types
21
Source From Ship To
When you choose Ship To in the Source From field, information is sourced from the customer record
chosen in the Ship To field of purchase transactions.
Note: In the List/Record field, you must choose the Employee list for sourcing to work
properly.
Field
Type
Name
Free-Form Text
Bill To
Text Area
Ship To
Text Area
Phone
Phone Number
Fax
Phone Number
E-mail
E-mail Address
City
Free-Form Text
State
Free-Form Text
Zip
Free-Form Text
Country
Free-Form Text
Sales Rep
List/Record
Expected Close Date
Date
Renewal Date
Date
Contact
Free-Form Text
Alt. Contact
Free-Form Text
Alt. Phone
Phone Number
Balance
Currency
Credit Limit
Currency
Source From Sales Rep
When you choose Sales Rep in the Source From field, information is sourced from the employee record
chosen in the Sales Rep field of customer records.
Note: In the List/Record field, you must choose the Employee list for sourcing to work
properly.
Field
Type
Name
Free-Form Text
Bill To
Text Area
Phone
Phone Number
E-mail
E-mail Address
SuiteBuilder
Available Standard Fields and Field Types
Field
Type
City
Free-Form Text
Country
Free-Form Text
Supervisor
List/Record
Soc. Sec. #
Free-Form Text
22
Transaction Column Fields
Source From Item
Note: In the List/Record field, you must choose the Vendor for sourcing to work properly.
Field
Type
Name
Free-Form Text
Display Name
Free-Form Text
Vendor Name
Free-Form Text
Online Name
Free-Form Text
Available Online
Check Box
Base Price
Currency
Cost
Currency
Preferred Vendor
List/Record
On Hand
Decimal Number
Source From Customer
When you choose Customer in the Source From field, information is sourced from the customer record
chosen in the Customer:Project field of purchase transactions.
Note: In the List/Record field, you must choose the Employee list for sourcing to work
properly.
Field
Type
Name
Free-Form Text
Bill To
Text Area
Ship To
Text Area
Phone
Phone Number
Fax
Phone Number
E-mail
E-mail Address
City
Free-Form Text
SuiteBuilder
Available Standard Fields and Field Types
Field
Type
State
Free-Form Text
Country
Free-Form Text
Sales Rep
List/Record
Expected Close Date
Date
Renewal Date
Date
Contact
Free-Form Text
Alt. Contact
Free-Form Text
Alt. Phone
Phone Number
Balance
Currency
Credit Limit
Currency
Account
Free-Form Text
23
Transaction Item Options
Source From Item
Note: In the List/Record field, you must choose the Vendor list for sourcing to work properly.
Field
Type
Name
Free-Form Text
Display Name
Free-Form Text
Vendor Name
Free-Form Text
Online Name
Free-Form Text
Available Online
Check Box
Base Price
Currency
Cost
Currency
Preferred Vendor
List/Record
On Hand
Decimal Number
CRM Fields
Source From Company or Contact
When you choose Company in the Source From field, information is sourced from the record chosen in
the Company field of case records.
When you choose Contact in the Source From field, information is sourced from the record chosen in
the Contact field of case records.
SuiteBuilder
Available Standard Fields and Field Types
Note: In the List/Record field, you must choose the Employee list for sourcing to work
properly.
Field
Type
Name
Free-Form Text
Bill To
Text Area
Ship To
Text Area
Phone
Phone Number
Fax
Phone Number
E-mail
E-mail Address
City
Free-Form Text
State
Free-Form Text
Country
Free-Form Text
Sales Rep
List/Record
Expected Close Date
Date
Renewal Date
Date
Contact
Free-Form Text
Alt. Contact
Free-Form Text
Alt. Phone
Phone Number
Balance
Currency
Credit Limit
Currency
Account
Free-Form Text
Source From Item
When you choose Item in the Source From field, information is sourced from the record chosen in the
Item field of case records.
Note: In the List/Record field, you must choose the Vendor list for sourcing to work properly.
Field
Type
Name
Free-Form Text
Display Name
Free-Form Text
Vendor Name
Free-Form Text
Online Name
Free-Form Text
Available Online
Check Box
Base Price
Currency
Cost
Currency
Preferred Vendor
List/Record
SuiteBuilder
24
Available Standard Fields and Field Types
Field
Type
On Hand
Decimal Number
25
Source From Assigned
When you choose Assigned in the Source From field, information is sourced from the record chosen in
the Assigned To field of case records.
Note: In the List/Record field, you must choose the Employee list for sourcing to work
properly.
Field
Type
Name
Free-Form Text
Bill To
Text Area
Phone
Phone Number
E-mail
E-mail Address
City
Free-Form Text
Country
Free-Form Text
Supervisor
List/Record
Soc. Sec. #
Free-Form Text
Entity Fields
Source From Sales Rep or Supervisor
When you choose Sales Rep in the Source From field, information is sourced from the record chosen in
the Sales Rep field of customer records.
When you choose Supervisor in the Source From field, information is sourced from the records chosen
in the Supervisor field of employee records.
Note: In the List/Record field, you must choose the Employee list for sourcing to work
properly.
Field
Type
Name
Free-Form Text
Bill To
Text Area
Phone
Phone Number
E-mail
E-mail Address
City
Free-Form Text
State
Free-Form Text
Zip
Free-Form Text
SuiteBuilder
Available Standard Fields and Field Types
Field
Type
Country
Free-Form Text
Supervisor
List/Record
Soc. Sec. #
Free-Form Text
Item Fields
Source From Preferred Vendor
When you choose Preferred Vendor in the Source From field, information is sourced from the record
chosen in the Preferred Vendor field of item records.
Field
Type
Name
Free-Form Text
Bill To
Text Area
Ship To
Text Area
Phone
Phone Number
Fax
Phone Number
E-mail
E-mail Address
City
Free-Form Text
State
Free-Form Text
Zip
Free-Form Text
Country
Free-Form Text
Contact
Free-Form Text
Alt. Contact
Free-Form Text
Alt. Phone
Phone Number
Balance
Currency
Credit Limit
Currency
Account
Free-Form Text
1099 Eligible
Check Box
Tax ID
Free-Form Text
Legal Name
Free-Form Text
Kinds of Custom Fields
Following are the different types of custom record and transaction fields you can create:
■ Custom CRM Fields – Used to add fields to CRM records. These records include Activity, Marketing
and Support records — such as tasks, events, campaigns or cases.
SuiteBuilder
26
Kinds of Custom Fields
27
■ Custom Entity Fields – Used to add fields to entity records. These records include Relationship and
Employee records — such as customers, vendors, employees, contacts, partners or groups.
■ Custom Item Fields – Used to add fields to item records. These records include Accounting and
website item records — such as inventory, non-inventory, service, other charge, group, kit/package
and assembly/bill of materials item records.
■ Custom Transaction Body Fields – Used to add fields to the body of transaction records. These
records include purchase, sale, journal entry and expense report records — such as sales orders,
invoices, purchase orders, opportunities, Web store transactions or item receipts.
■ Custom Transaction Column Fields – Used to add fields to the columns of transaction records. These
fields display in the line-item columns of transaction records and include fields such as expense
items, purchase items, sales items, store items or opportunity items.
■ Custom Transaction Item Options – Used to add fields to the line items of your transaction records
such as purchase items, sales items and Web store items. When adding a custom field to the line
items of a transaction, you apply the field to the type of line item.
■ Custom Item Number Fields – Used to add fields to serial and lot numbered inventory records to
track information specific to each item or workflow unique to your business. For example, quality
control procedures or recall information could be tracked.
■ Other Custom Fields – Use to add fields to custom records not defined by the above categories,
including campaign events, classes, competitors, departments, and locations.
You can differentiate between custom fields and standard fields on pages in NetSuite if you enable
the Show Internal IDs preference at Home > Set Preferences under the Defaults section of the General
subtab. With the preference enabled, when you click on a field, the field level help popup shows a field
ID in the bottom right corner. If the field you clicked on is a custom field, the ID from the custom field
record is shown.
Custom CRM Fields
Custom CRM fields are fields that you can add to your CRM records to gather information specific to
your business needs.
These records include:
■ task records
■ phone call records
■ campaign records
■ case records
■ solution records
■ event records
To create or modify custom CRM fields:
1. Go to Customization > Lists, Records, & Fields > CRM Fields.
2. On the Custom CRM Fields page, each custom field is listed, with columns providing detailed
information about the field and which records the field has been applied to.
3. To edit an existing custom CRM field, click the field name in the Description column and then
modify the field definition as desired.
4. To add a new custom CRM field, click New.
SuiteBuilder
Kinds of Custom Fields
Note: Custom CRM fields can be indexed for global search. To include a custom field in global
searches, check the Global Search box on its record. You cannot index a custom field for global
search if None is selected for any Level for Search/Reporting option on the Access subtab of the
custom field record. For more information, see Creating a Custom Field and Including Custom
Fields in Global Search.
Here is an example of a custom CRM field.
When the custom CRM field is included on a form, it might look like the following example.
Custom Entity Fields
Custom entity fields are fields that you can add to your entity records to gather information specific to
your business needs. Entity custom fields can be added to existing and custom subtabs on the entry
forms you use to enter entity records in your NetSuite account.
SuiteBuilder
28
Kinds of Custom Fields
These records include the following relationship and employee records:
■ customer records
■ project records
■ vendor records
■ other name records
■ contact records
■ partner records
■ entity group records
■ employee records
■ website registration
To create or modify custom entity fields:
1. Go to Customization > Lists, Records, & Fields > Entity Fields.
2. On the Custom Entity Fields page, each custom field is listed, with columns providing detailed
information about the field and which records the field has been applied to.
3. To edit an existing custom entity field, click the field name in the Description column and then
modify the field definition as desired.
4. To add a new custom entity field, click New.
Note: Custom entity fields can be indexed for global search. To include a custom field in global
searches, check the Global Search box on its record. You cannot index a custom field for global
search if None is selected for any Level for Search/Reporting option on the Access subtab of the
custom field record. For more information, see Creating a Custom Field and Including Custom
Fields in Global Search.
Here is an example of a custom entity field.
When the custom Entity field is included on a form, it might look like the following example.
SuiteBuilder
29
Kinds of Custom Fields
Custom Item Fields
Custom item fields are fields that you can add to your item records to gather information specific to
your business needs.
These records include the following Accounting and website item records:
■ inventory item
■ non-inventory items
■ service items
■ other charges
■ item groups
■ kit/packages
■ assembly/bill of materials
To create or modify custom item fields:
1. Go to Customization > Lists, Records, & Fields > Item Fields.
2. On the Custom Item Fields page, each custom field is listed, with columns providing detailed
information about the field and which records the field has been applied to.
3. To edit an existing custom item field, click the field name in the Description column and then
modify the field definition as desired.
4. To add a new custom Item field, click New.
Note: Custom item fields can be indexed for global search. To include a custom field in global
searches, check the Global Search box on its record. You cannot index a custom field for global
search if None is selected for any Level for Search/Reporting option on the Access subtab of the
custom field record. For more information, see Creating a Custom Field and Including Custom
Fields in Global Search.
Here is an example of a custom item field.
SuiteBuilder
30
Kinds of Custom Fields
31
When the custom item field is included on a form, it might look like the following example.
Custom Transaction Body Fields
Custom transaction body fields are fields that you can add to the body of transaction records to gather
information specific to your business needs.
These records include:
■ purchase transactions
SuiteBuilder
Kinds of Custom Fields
32
■ sales transactions
■ revenue arrangements
■ opportunities
■ journal entries
■ expense reports
■ Web store checkout
■ item receipts
■ item fulfillments
To create or modify custom transaction body fields:
1. Go to Customization > Lists, Records, & Fields > Transaction Body Fields.
2. On the Custom Transaction Body Fields page, each custom field is listed, with columns providing
detailed information about the field and which records the field has been applied to.
3. To edit an existing custom transaction body field, click the field name in the Description column
and then modify the field definition as desired.
4. To add a new custom transaction body field, click New.
Note: Custom transaction body fields can be indexed for global search. To include a custom
field in global searches, check the Global Search box on its record. You cannot index a custom
field for global search if None is selected for any Level for Search/Reporting option on the
Access subtab of the custom field record. For more information, see Creating a Custom Field
and Including Custom Fields in Global Search.
Here is an example of a custom transaction body field.
When the custom transaction body field is included in a form, it might look like the following example.
SuiteBuilder
Kinds of Custom Fields
33
If the Display Type for the custom transaction body field is set to Hidden, the field is still included on all
forms, even if it is not displayed. The system ignores any changes you make to show or hide the field
on all forms that apply to the custom transaction body field.
Custom Transaction Column Fields
Custom transaction column fields are fields that you can add to the line items of your transaction
records to gather information specific to your business needs.
These records include:
■ expense items
■ purchase items
■ sale items
■ store items
■ revenue arrangements
■ journal entries
■ expense reports
■ item receipts or fulfillments
■ opportunity items
■ time cards
■ inventory adjustment
■ inventory transfer
To create or modify custom transaction column fields:
1. Go to Customization > Lists, Records, & Fields > Transaction Column Fields.
SuiteBuilder
Kinds of Custom Fields
34
2. On the Custom Transaction Column Fields page, each custom field is listed, with columns
providing detailed information about the field and which records the field has been applied to.
3. To edit an existing custom Transaction Column field, click the field name in the Description
column and then modify the field definition as desired.
4. To add a new custom Transaction Column field, click New.
For more information, see Creating a Custom Field.
Here is an example of a custom transaction column field.
When the custom transaction column field is included in a form, it might look like the following
example.
If the Display Type for the custom transaction column field is set to Hidden, the field is still included on
all forms, even if it is not displayed. The system ignores any changes you make to show or hide the field
on all forms that apply to the custom transaction column field.
Check Box Type Limitation
On custom transaction column fields, a limitation exists when all of the following conditions are met:
1. Type = Check Box
2. Store Value = checked
SuiteBuilder
Kinds of Custom Fields
35
3. Applies To = only Item Fulfillment is checked
4. On the Validation & Defaulting subtab, Default Checked is checked
5. Create a sales order and add at least one item
6. Click Save & Fulfill
On the item fulfillment transaction, the transaction column field is not checked, in spite of the above
settings. The inconsistency occurs because the custom field information is taken from the sales order,
and if the check box is not applied there, NetSuite uses the default system value. As a workaround, you
can apply the field to sales orders and hide it on the sales order forms, if required.
Custom Transaction Item Options
Transaction item options are fields that you can add to the line items of your transaction records to
gather information specific to your business needs.
Item options can refer to characteristics of an item. For example, you might record different colors of
an item as item options.
You can create item options for:
■ purchase items
■ sales items
■ opportunities
■ web store items
■ kits and assemblies
To create or modify custom transaction item option fields:
1. Go to Customization > Lists, Records, & Fields > Transaction Item Option.
2. On the Custom Transaction Item Option Fields page, each custom field is listed, with columns
providing detailed information about the field and which records the field has been applied to.
3. To edit an existing custom Transaction Item Option field, click the field name in the description
column and then modify the field definition as desired.
4. To add a new custom Transaction Item Option field, click New.
For more information, see Creating a Custom Field.
5. Complete fields on the Item Option page and click Save.
Note: You can define a formula for an item option's default value (by checking the Formula
box on the Setting Validation and Defaulting Properties), but formula references to non-item
option fields are not supported. You may be able to save an item option successfully with a
reference to a non-item option field, but users will encounter errors when they try to save a line
item with the item option selected.
Offer your customers free promotional gift wrapping
After you have enabled the Item Options feature, you can offer your customers complementary gift
wrapping on select items as a promotion. With item options, create a Gift Wrapping check box on items
so customers can indicate if they would like gift wrapping.
SuiteBuilder
Kinds of Custom Fields
36
To create an item option for gift wrapping:
1. Go to Customization > Lists, Records, & Fields > Transaction Item Options > New > New.
2. In the Label field, enter the name of your option, Gift Wrapping.
3. In the Type field, choose Check Box to create a check box field.
4. On the Applies To subtab, check the Sale and Web Store boxes for the option to appear on sales
transactions and in your website.
5. In the Items field, select the individual items you want to offer gift wrapping for.
You can choose multiple items by holding down the Ctrl key as you select the items with the
mouse.
6. On the Display subtab, in the Label for Input field, enter the name for the option as you want it
to appear to customers on your website.
7. When you have finished, click Save.
Now, you can offer customers complementary gift wrapping for items. The choice your customers
make appears in the Options column of each sales transaction.
Here is an example of a custom transaction item option field.
When the custom transaction item option field is included on a form, it might look like the following
example.
SuiteBuilder
Kinds of Custom Fields
Custom Item Number Fields
Custom item number fields are fields that you can add inventory records to track information specific
to each item or workflow unique to your business. For example, you can track the status and results
of quality control procedures specific to each serialized item, or you can track recall information on lot
records.
These records include:
■ serial numbered items
■ lot numbered items
To create or modify custom item number fields:
1. Go to Customization > Lists, Records, & Fields > Item Number Fields.
2. On the Custom Item Number Field page, each custom field is listed, with columns providing
detailed information about the field and which records the field has been applied to.
3. To edit an existing custom item number field, click the field name in the description column and
then modify the field definition as desired.
4. To add a new custom item number field, click New.
For more information, see Creating a Custom Field.
When you create a lot numbered or serialized inventory item or edit an existing record, you can apply
the field to the item as long as you have not set the field to apply to all items. On the item record,
click the Custom subtab. In the Inventory Number Options field, press Ctrl and select all of the item
number fields you want to apply to the item, and click Save.
Here is an example of a custom item number field.
SuiteBuilder
37
Kinds of Custom Fields
38
When the custom item number field is included on a form, it might look like the following example.
Other Custom Fields
Other custom fields are used for records that do not have custom forms associated with them. You can
add other custom fields to these record types to gather information specific to your business needs.
Other custom fields can be added to the following record types:
■ Account
■ Address (See Creating Custom Address Fields)
■ Bin
■ Campaign Event
■ Charge
■ Charge Rule
■ Class
■ Company
■ Competitor
■ Department
SuiteBuilder
Kinds of Custom Fields
■ Expense Category
■ Inventory Cost Template
■ Item Demand Plan
■ Item Supply Plan
■ Location
■ Manufacturing Cost Template
■ Manufacturing Routing
■ Note
■ Payroll Item
■ Planned Standard Cost
■ Product
■ Product Version
■ Promotion Code
■ Role
■ Standard Cost Version
■ Tax Code
■ Workflow
■ Workplace
To create or modify other custom fields:
1. Go to Customization > Lists, Records, & Fields > Other Custom Fields.
2. On the Other Custom Fields page, each custom field is listed, with columns providing detailed
information about the field and which records the field has been applied to.
3. To edit an existing custom field, click the field name in the Description column and then modify
the field definition as desired.
4. To add a new custom field, click New.
For more information, see Creating a Custom Field.
Here is an example of an other custom field.
SuiteBuilder
39
Kinds of Custom Fields
40
When the other custom field is included in a form, it might look like the following example.
Creating a Custom Field
To record information specific to your business needs, you can create different types of custom record
and transaction fields.
See Kinds of Custom Fields for an overview of the different types of custom fields.
To create a custom field:
1. Go to Customization > Lists, Records, & Fields > [Custom Field] > New, where [Custom Field] is
the desired field type. The Custom Field page is displayed for the selected type. For example, the
Custom Entity Field page looks like the following.
SuiteBuilder
Creating a Custom Field
41
To display all settings for a custom field, click the Expand Tabs icon.
2. In the Label field, enter a name or description for the field that is meaningful to your users. You
can enter up to 200 characters for the label. However, you should consider how a long label will
appear on pages and printed forms.
The label is displayed by the field on the transactions you select. If you change the name of a
custom field later, the name is not automatically updated on custom forms that contain the field.
For information, see Renaming Custom Fields.
3. Enter a unique ID for the field. To identify the location and purpose of the custom field, establish
a naming convention such as using an underscore followed by the field name. For example, all
custom CRM fields would result in a name custevent_fieldname.
The field can be set to an alphanumeric string up to 30 characters long. NetSuite automatically
modifies the ID entered into the field with a prefix that corresponds to the type of field being
created as listed below.
■ CRM: custevent
■ Entities: custentity
■ Items: custitem
■ Transaction Column: custcol
■ Transaction Body: custbody
Note: Entering your own IDs enables you to maintain them in SuiteScript. Custom field
IDs are displayed for each field in the Custom Field lists and on the Record Type page
when creating a new record. If you do not enter an ID, NetSuite automatically assigns one
when you save the new custom field. After a field ID has been assigned, it can be changed
by clicking the Change ID button at the top of the page.
4. Select the owner of the custom field.
Only the owner can modify the record. Your name is selected by default.
5. Enter a description of the field.
6. In the Type field, select the kind of custom field you want to create.
For more information on custom field types, see Table of Custom Field Type Descriptions.
The type of field you select determines the other options you can set on the page.
Note: If you later edit the field and change the type, any data stored for the field is
deleted.
If you change the field type or the list/record for a field that is used for sourcing or
filtering on other custom fields, all sourcing and filtering based on the field is removed.
7. If you have chosen List/Record or Multiple Select in the Type field, select the list or record in the
List/Record field that contains the items for the list field.
Important: The displayed value set for the type of field is not strictly filtered by
standard restrictions. Be aware that users may select values from records for which they
do not have permission. However, they cannot edit the records represented by these
values.
8. By default, the Store Value option is enabled so that custom field values are stored in your
NetSuite account. Clear the box to indicate that any changes entered not be stored in the
custom field. Not storing the value enables you to look at data that is stored elsewhere. If you do
not store the value, changes will be discarded, so you may want to make the field read-only.
SuiteBuilder
Creating a Custom Field
42
9. Some custom field data types provide a Use Encrypted Format option you can enable to encrypt
the field values stored in the database.
Warning: After a custom field has been saved, the Use Encrypted Format setting
cannot be changed. Before you set the option, review Encrypted Custom Field Stored
Values and be sure that you fully understand the consequences of your selected setting.
When you specify that a field be encrypted, any value in the encrypted field displays
as ENCRYPTED in all environments except the environment where the value was first
created.
10. Check the Show In List box to have the field automatically show in the list of records the field is
applied to.
11. You can index the field for global searches if Store Value is checked, and if you have chosen any
of the following in the Type field: Currency, Decimal Number, Email Address, Free-Form Text,
Help, Hyperlink, Inline HTML, Integer Number, Percent, Phone Number, Text Area.
You cannot index a custom field for global search if None is selected for any Level for Search/
Reporting option on the Access subtab of the custom field record.
After you check the Global Search box for a custom field, each global search compares keywords
to that custom field's values, in addition to comparing with record name and ID field values. For
more information, see the help topic Global Search.
12. If you are creating a List/Record custom field, check the Record is Parent box to indicate that the
record type selected is a parent record.
The field is used to create a parent-child relationship between two record types.
For more information about parent-child relationships, see Parent-Child Record Relationships.
13. If you later want to inactivate the field, check the Inactive box. For more information, see
Inactivating a Custom Field.
14. After you have created a custom field, you should define which record types the field can be
used in. See Assigning Custom Fields to Specific Record Types.
Note: If you are creating an Other custom field, you do not assign the field to a specific record
type. Continue with Setting Display Options for Custom Fields.
See the following topics.
■ Setting Validation and Defaulting Properties
■ Setting Sourcing Criteria
■ Sourcing and Filtering Examples
■ Setting Filtering Criteria
■ Multiple Dependent Dropdown Lists
■ Restricting Access to Custom Fields
■ Creating Read-Only Custom Fields
■ Adding Translations for Custom Fields
■ Adding Custom Fields to Transaction Forms
■ Tracking Changes to Custom Fields
Assigning Custom Fields to Specific Record Types
Custom fields can be assigned to display on specific record types. When the field is assigned to a record
type, it is automatically available as a possible field when creating a custom form for that record type.
SuiteBuilder
Creating a Custom Field
43
Important: You must select the record types the field is available on. If no record types
are selected, the field cannot be used. If a record type is selected, the field is automatically
displayed on all forms of that record type including any custom forms of that type. Custom
forms can then be edited to not show the new custom field.
To apply a custom field to a record type:
1. Click the Applies To subtab.
2. Check the boxes to indicate the records you want the field to display on.
Note the following:
■ Record custom fields can be added to existing and custom subtabs on the entry forms you
use to enter records in your NetSuite account.
■ Transaction custom fields can be added to the top (body) or the line items (columns) of
transactions. When adding a custom field to the body of a transaction, you apply the field to
the type of transaction.
■ When adding a custom field to the line items of a transaction, you apply the field to the type
of line item.
■ To apply a custom item field to a portion of the item, check the Select Individual Items box.
Then in the Items field, hold down the Ctrl key and click each item to which the custom field
applies.
■ To specify that the settings for a custom item field or custom transaction item option field
also apply to its child items, check the Include Child Items box. Any child item fields added
later will also have the parent settings applied.
3. After you have defined a custom field to display on specific record types, you should define the
display properties for that field. See Setting Display Options for Custom Fields.
Warning: If you assign a custom field to a record type that is a child of another record, that
custom field may not always show on the parent record forms. A child record may not be
available on a form for a parent record that was created through transformation from another
record type. For example, if you define a custom record as a child record of sales order, the
custom child record is not available on forms for sales orders transformed from quotes.
Setting Display Options for Custom Fields
For each custom field, you can specify the exact location within the form that the field is to be
displayed relative to other fields and subtabs on the page.
To set the display properties of a custom field:
1. Click the Display subtab.
The fields available on the subtab depend on the kind of field you are modifying.
2. In the Insert Before field, select where to place your new field on records.
The field lists custom fields of the same type that have already been created.
Note: The Insert Before field affects the placement of fields on standard forms and on
the placement of newly created fields. To change the arrangement of fields on a custom
form, you must edit the custom form.
You can also choose to have the custom field span the column at the top or bottom respectively.
Spanning the column is especially useful to add a text area field at the top or bottom of a tab or
section which provides explanatory information.
SuiteBuilder
Creating a Custom Field
44
Note: Fields can span the width of the page, above or below the other fields of that tab
or section but they do not have to span the page. The width is determined by the size of
the field.
3. In the Subtab field, select the subtab you want the field to display on.
For example, select Main if you want the field to display in the top portion of the record.
Important: If a subtab is not selected, the field is automatically displayed on a custom
subtab for the record. Select a subtab that makes sense for the type of information the
custom field stores.
4. Select the Display Type.
Display types let you to specify how your custom fields behave in NetSuite. You can use display
types to make fields for informational purposes only that are not stored in your account. You
can also create fields that are not editable or that have default information or custom code
calculations.
Following are the available display types.
■ Normal: A normal field can be edited. You can use the field with custom code calculations,
defaulting and sourcing information.
For example, you create a custom field on employee records for a spending limit. The
Spending Limit field has a display type of normal because you want to edit and store the
information entered in the field.
Custom transaction fields are available in the custom form setup for all record types. The
custom transaction fields are available in the Screen Fields > Custom subtab.
If you specify normal display for a transaction field, and then hide it on the custom form, it
still appears in the custom form setup.
■ Disabled: A disabled field cannot be edited. You can use the field with custom code
calculations, defaulting and sourcing information only. Any field with a display type of
disabled that does not have default, sourced or custom code information will not display on
forms.
For example, you create a custom field on expense reports for a spending limit. The Spending
Limit field on expense reports is sourced from the Spending Limit custom field on employee
records. When an employee enters an expense report, they automatically see their spending
limit on the expense report. The field has a display type of disabled because you want the
information in the field to be updated but not edited.
Note: You cannot disable a mandatory field unless the field has a default value.
■ Inline Text: An inline text field is for informational purposes only. The information in the field
is the result of custom code calculation, defaulting or sourcing information only. Note that a
value for a field with an Inline Text display type will be interpreted as HTML markup source
and will be evaluated by the browser when a record containing the field is displayed. Inline
text fields of the List/Record or Check Box type are not available for use with custom code.
These fields are also not available for transaction column fields.
For example, you create a Tax ID custom field for your purchase orders. When creating
the custom field, you can enter your tax ID in the Default Value field. Your Tax ID then
appears on purchase orders. The field has a display type of inline text because your tax ID
is for informational purposes only, and you do not want the information stored with each
transaction.
SuiteBuilder
Creating a Custom Field
45
■ Hidden: A hidden field cannot be seen on the record or transaction you apply it to. You can
perform a search to display the value of the field. The information in the field is the result
of custom code calculations and defaulting information. You must use custom code or set
a default for the field. Note that you can also define a field as shown in its custom field
definition, and then selectively hide it on a form-by-form basis.
If a custom field is marked as hidden, it is not available to add to custom forms, and is not
available in the Fields list when customizing the form.
For example, you can use a hidden field to store your support representatives case quota.
The support representatives do not see the field but the information can still be searched and
reported on. For more information on custom code, read the help topic Working with Online
Forms.
Be aware that in SuiteScript, only user event, scheduled, and Suitelet scripts can set the value
of a custom field that has a display type of hidden.
Note for custom transaction body and custom transaction column fields: If the Display Type
field is set to Hidden, the field is still included on all forms, even if it is not displayed. The
system ignores any changes you make to show or hide the field on all forms that apply to that
custom transaction body or custom transaction column field.
Warning: Hiding a custom field is a display convenience only and is not field level
security. Hidden custom fields are embedded in the page output and can be viewed in the
page source.
5. Enter field height and width properties.
The values entered for height and width affect the display size of the field only. The permitted
size of the custom field (number of pixels or lines permitted) is controlled by default options. For
more information on defaulting options, see Setting Validation and Defaulting Properties.
■ Height: Enter a height for the custom field in number of lines. The default is three lines.
■ Width: Enter a width for your custom field in pixels.
Important: Be aware that field configurations on each custom form interact with the
values you set here. Actions such as setting up field groups, adding column breaks, and
setting fields to be Same Row as Previous on custom forms can cause custom field
text to be displayed differently than you might expect based on the custom field width.
For details about configuring fields on custom forms, see Configuring Field Groups,
Configuring Fields or Screens, and Associating Related Fields on Custom Forms.
6. If desired, in the Link Text field, enter text to display instead of a URL for hyperlink fields.
Users see the text instead of the URL on records and transactions. Clicking the text links to the
URL.
7. (Decimal Number, Integer Number, and Percent fields only) Review the Apply Formatting setting
and change if desired.
■ When the preference is enabled, the custom field's values use the formatting set in the
Number Format and Negative Number Format preferences at Company, Subsidiary, or User
level. For details about these preferences, see the help topic Number Formats.
■ When the preference is disabled, the custom field's values are not formatted, meaning they
have no commas or decimal points. (The setting is appropriate for Integer Number type fields
used as unique identifiers.)
SuiteBuilder
Creating a Custom Field
46
Note: Default settings are as follows: disabled for custom fields created prior to Version
2012 Release 1 upgrade, to preserve pre-upgrade behavior, and enabled for custom fields
created after Version 2012 Release 1 upgrade.
8. In the Help field, enter a brief description of the kind of information you want entered in the
field.
The help is available when the name of the field is clicked.
You can enter HTML in the field. Be sure to begin your markup source with <html> and end with
</html>.
Note: You should always enter information in the Help field to increase the usability of
customized forms or records.
9. In the Label for Input field, enter the label for the item option as you want it to appear to
customers on your website.
10. If the custom field is of type list/record or multi-select, and the selection in the List/Record list is
hierarchical, a Show Hierarchy box is available.
To show the record hierarchy, or the full name, check the Show Hierarchy box. To show the field
name without the hierarchy, or the short name, clear the Show Hierarchy box. In the case of accounts, when the Use Account Numbers preference is enabled, custom account
fields display the account numbers together with account names.
11. After you have set the display properties, you should define any validation and defaulting
properties. See Setting Validation and Defaulting Properties.
Setting Validation and Defaulting Properties
Validation options are constraints that can be placed on your custom fields to help control the
information that is entered in the field. Defaults are values you specify for your custom fields that
display populate automatically when a record or transaction is first created.
To set validation and defaulting properties:
1. Click the Validation & Defaulting subtab.
2. Set the validation options. (These options may vary according to the kind of custom field
selected and its data type.)
Possible options include the following:
■ Mandatory: Enable to require information to be entered in the custom fields before a record
or transaction can be saved.
For example, you can create a mandatory contact number field for your sales transactions.
When sales representatives enter transactions, a contact number for the customer must be
entered before the transaction can be saved.
SuiteBuilder
Creating a Custom Field
47
Note: You can also set fields to mandatory when customizing a form. When using
the same custom field on different forms, consider applying required field settings
in your custom form rather than on the field itself. Applying the setting at the form
level is useful in cases where the field information is required on one form but not on
another form.
■ Minimum Value: Set the minimum number that can be entered in the custom field. A record
or transaction cannot be saved with a value below the minimum set here.
For example, you can create a sales quota field for your employee records. If you set a limit of
$500.00 when creating the custom field, any amount less than 500 cannot be entered in the
field.
You can set a minimum value for a percent field that is less than 0. If you do not enter a
minimum amount for a percent field, the minimum is 0.
■ Maximum Value: Set the maximum number that can be entered in the custom field. A record
or transaction cannot be saved with a value above the maximum set here.
For example, you can create a spending limit custom field for your employee records. Set
a limit of $700.00 when creating the custom field to ensure that no employee can receive a
spending limit of more than $700.00.
You can set a maximum value for a percent field that exceeds 100. If you do not enter a
maximum value for a percent field, the maximum is 100.
■ Maximum Length: Set the maximum number of characters that can be entered in the
custom field. A record or transaction cannot be saved if the information entered in the field
exceeds the number of characters permitted.
For example, you can create a gift message field for your sales transactions to record a
special message from your customers. You can limit the number of characters to prevent
messages from becoming too long.
■ Allow Delete of List/Record Values: Indicates how the system handles deletions of records
referenced by the custom field. This field is available for custom field definitions that have a
type of List/Record or Multiple Select and have the Store Value box checked.
□ Select Prevent and Return Error to prevent deletions and return an error message
stating that the record could not be deleted due to dependencies and providing a link to
dependent records.
□ Select Allow and Set Dependent Field Values to Null to permit deletions, null out field
values that use the deleted record, and log system notes for deletions.
For more information, see Customizing Delete Behavior for Records Referenced by Custom
Fields.
■ Formula: Enable to validate SQL formula expressions when the field is defined as a formula
field. For more information on defining a custom formula field, see Creating Formula Fields.
■ Search: Select a search with summary results to be used to calculate a value for the custom
field. Search fields display a rollup value for a selected search results field. The value is
dynamically calculated each time a form containing the summary search field is displayed.
For example, you can display the total quantity of all line items on a transaction.
The Search option is only available for kinds of custom fields and data types that support
summary search derived values. For details, see Creating Custom Fields with Values Derived
from Summary Search Results.
■ Field: If you want values for the custom field to be based on summary search results, you can
optionally select a comparison field to join related records in cases where you want to put
the custom field on a form for a record type that is different from the summary search record
SuiteBuilder
Creating a Custom Field
48
type. For example, if you want to put a custom entity field showing the result of a customer
record summary search on an employee custom form, you could select an employee record
field whose values could be matched to the values for the search’s Available Filter field.
Search results field values for all records with matching values for the Compare To field and
Available Filter field would be used to calculate the value of the summary search custom field.
The Field option is only available for kinds of custom fields and data types that support
summary search derived values. For details, see Creating Custom Fields with Values Derived
from Summary Search Results.
3. If desired, enter default parameters for the field.
To set values into an Inline Text or Disabled field, you must specify a default value or source the
information for the field from another field.
Depending on the field type, various default values can be specified. Possible options include:
■ Default Checked: Check the box to indicate that the check box custom field should display
checked by default. The custom fields can still be cleared on individual transactions and
records.
For example, you can add a Subscribe to Newsletter check box to your customer records.
When you set the field to default checked, new customers are automatically subscribed to
your newsletter.
Custom transaction column fields have a limitation that occurs when several conditions are
met. For more information, see Custom Transaction Column Fields.
■ Default Value: If desired, enter a value to display in the field by default. The value can still be
changed on individual records and transactions if the field is not locked.
When working with Free-form text, Text area, Rich Text or Hypertext fields, you can include
NetSuite tags in the default definition. These tags are populated with field values when
the page is loaded or saved. For more information, see Dynamic Defaults and Dynamic
Hyperlinks.
For example, you can add a spending limit field to your employee records with a default
value of $150.00. When you enter new employee records, the field automatically fills with the
amount.
Default values defined here are only applied at creation time for any specified record. After
a record has been created, subsequent edits to that record store the previously stored value
unless it also has been edited.
■ Dynamic Default: Dynamic default enables you to select from preset defaulting options
specific to the kind of field you are creating. There are three types of dynamic defaults:
□ Current Date/Time: For Date fields, your custom field is automatically filled with the
current date or time.
For example, you can add an information only date field to your sales orders. Setting the
field to current date and time lets you track when your sales representatives are most
productive.
Important: The date and time for the field are based on the user's NetSuite
Time Zone preference, set at Home > Set Preferences, not on the browser client
time zone.
□ Current User: For Employee List/Record fields, have the name of the employee entering
the record or transaction automatically filled in the field. For example, if you have data
entry employees as well as sales representatives, you can add a field to your transactions
to record who enters the transaction as well as the sales representative who made the
sale.
SuiteBuilder
Creating a Custom Field
49
□ Current User's Supervisor: For Employee List/Record fields, have the name of the
supervisor selected on the employee record automatically filled in the field. For example,
you can create a field for your task records that lists the Assignee's supervisor, helping
your management team stay informed of team projects.
■ Default Selection: Set a selection list to display in the custom field by default. The choices are
limited to the list selected in the List/Record field when creating the custom field.
For example, you can create a custom field to record advertising preferences for your
customers. You can set a default of Email if you know that the majority of your customers
prefer to receive ads by email. When a customer loads the page, Email is displayed in the
selection list by default but they can choose Fax or Mail if desired.
4. After you have entered validation and defaulting properties, you should set any sourcing criteria.
See Setting Sourcing Criteria.
Customizing Delete Behavior for Records Referenced by Custom
Fields
List/record and multiple select type custom fields provide a list for users to select values. The list of
values is populated by records of the list/record type set in the custom field definition. Because list/
record and multiple select custom fields are dependent on these referenced records, deletion of these
records can be problematic. For example, a custom field called Color can be dependent on a custom
record type called Color List. If a value is deleted from Color List, for example Purple, any records with a
Color custom field value of Purple are impacted.
For custom field definitions that have a type of List/Record or Multiple Select and have the Store Value
option enabled, the Allow Delete of List/Record Values option is provided. The Allow Delete option
permits overrides of the default system behavior when a delete is attempted of a record referenced by
values in the custom field.
Default settings for the option are based on the record type selected in the List/Record field:
■ For entity, item, event, and transaction type records: default is Allow and Set Dependent Field
Values to Null.
SuiteBuilder
Creating a Custom Field
50
When a delete of a referenced record sets a dependent custom field value to null, a system note is
logged on the record containing the dependent custom field value. The note specifies the user who
deleted the referenced record as the Set by value, and Unset as the Type.
■ For other record types (including custom records): default is Prevent and Return Error.
When a delete of a referenced record is prevented due to dependent custom field values, the error
message includes a link to a page listing the dependent records. The Dependent Records page
includes the name of the referenced record at the top of the page. The list on the page includes
a line for each dependent custom field, with the following details: kind of custom field, name of
custom field, and name of record containing the custom field with a clickable link to the record.
Note the following:
■ The Allow Delete of List/Record Values setting is not available for Workflow or Workflow Action
custom fields.
■ The Allow Delete of List/Record Values setting for a custom field takes precedence over whether
the field is mandatory, so a setting of Allow and Set Dependent Field Values to Null can produce
nulled values even for mandatory fields. To avoid nulled values, choose a setting of Prevent and
Return Error for mandatory fields.
■ SuiteBundler does not respect the Allow Delete of List/Record Values setting. If a referenced record
is deleted as part of a bundle operation, such as uninstall, the treatment of dependent custom field
values conforms to SuiteBundler rules.
Setting Sourcing Criteria
A custom field can source information from another record in your account. The information populated
into the custom field is then dependent on fields associated with a record selected on another field
within that form. Sourcing enhances your NetSuite forms by reducing data-entry errors and ensuring
that your customers and employees always have the most current information.
You can source from both standard and custom fields.
For example, two custom fields — Sales Rep and Sales Rep Email — are placed on a custom case
form. When a company record is selected in the Company field, the sales representative already
defined in the selected company record is sourced to the Sales Rep field on the case form and the
Sales Rep Email field defaults to the email address defined for the sourced Sales Rep.
Note: The information is sourced into the custom field only when the record is created or if
the specific fields involved are altered when editing the record. In the example above, if you
change the sales representative selected on the customer, the sourced field would change to
show the email address of the new sales representative.
When setting up sourcing, you have the option to store the value. When the field is not stored, the
information is not saved in the custom field. A custom field that does not store the value enables you
to look at data that is stored elsewhere when you are setting up searches and reports.
By storing a sourced field, the sourcing will automatically fill the field with a value when the master
field is changed. You can then change the value of the custom field. The value is stored independently
and has no impact on the source field, so any changes made in the custom field are not updated in the
source.
To set sourcing and filtering criteria:
1. Edit the custom field you want to add sourcing and filtering criteria to.
SuiteBuilder
Creating a Custom Field
51
2. If you do not want to store the value, clear the Store Value box. In most cases you do not want to
store the value.
3. On the Display subtab, check the Display Type field. If the Display Type field is set to Hidden,
sourcing does not occur.
4. Click the Sourcing & Filtering subtab.
5. From the Source List list, select the field that references the record you would like to source
information from.
For example, you are creating a custom field to appear on the customer record to show the
email address of the sales representative assigned to the customer. In the Source List field,
select Sales Rep.
When working with entity fields, you can also define the field to source from a field on the parent
record by selecting Parent from the Source List list.
Note: You cannot source information for a Multiple Select field type.
6. From the Source From list, select the field you want to source from. The source from field is
found on the record you selected from the Source List list.
Any fields available on the record you select in the Source List field can be selected from the
Source From list.
In the example above, select Email from the Source From list.
The value stored in the field selected here populates the field when the record is selected. The
field selected here must be consistent with the type selected for the custom field. For example, if
you select E-mail as the field type and then select an address field from the Source From list, you
receive an error.
Note: If your field is a List/Record field, the field selected for the Source From field must
be in the record type selected as the List/Record.
7. If your field is a List/Record field, you can filter the choices that can be selected.
When a List/Record Type field is being defined, you can choose to populate the custom field
with values that meet specific parameters in the sourced list or record. First, select the desired
item to filter by from the Source Filter by list. Then select an item from the Source List and,
optionally from the Source From lists. When you select an element from the source list, it will fill
the option-sourced custom field with all elements where the source filter by field matches the
source list (or the source from field of the source list).
The record you are sourcing from must be associated with the type of record you want to appear
in your custom field.
Note: The field selected from the Source Filter by list must be in the record type
selected as the List/Record.
For more information, see Sourcing and Filtering Examples.
SuiteBuilder
Creating a Custom Field
8. After you have set the sourcing criteria, you should set any filtering criteria. See Setting Filtering
Criteria.
Note: A custom field with a sourcing relationship is not available for mass updates or inline
editing. See the help topic Mass Changes or Updates.
Note about Custom Transaction Column Field Sourcing
Before Version 2012 Release 2, you could source a custom transaction column field's values from a
body field by selecting <Record_Name> (Line) in the Source List list on the Sourcing & Filtering subtab
of the Transaction Column Field page. Now, to source a field's values from a body field, you need to
select <Record_Name> in the list. If you select <Record_Name> (Line), sourcing is from a field in the
sublist and if there is no such field, values for the sourced custom transaction column field are blank.
The following example shows a custom field applied to the Items sublist on Sales Order records.
Because the sublist does not include a Customer field, if Customer (Line) is selected, the values for
the new custom field will be blank. Selecting Customer sources the new custom field's values from the
Customer body field on Sales Orders.
Sourcing and Filtering Examples
Following are some examples of how you can use the Source Filter by field to create dynamic custom
fields.
Example 1: Linking Two Transactions
Suppose that you want to link two transactions, such as an invoice and a subsequent credit.
SuiteBuilder
52
Creating a Custom Field
53
First, add a transaction custom field to customer credits (using a custom form to limit it only to the
credit form). The field should be a List/Record Transaction and source Entity in the Source List and
Source Filter by fields. When you select a customer on the credit memo, it populates the new list field
with only invoices from that customer.
Example 2: Combining Static and Dynamic Filtering
Suppose that you want to create a Linked Order field on a Sales Order that lets you choose another
Sales Order from that customer.
First, add a transaction custom field to sales order forms. The field should be a List/Record Transaction
and source Entity in the Source List and Source Filter by fields. Add a static Filter to filter the list to only
transactions of a particular type (Sales Orders). When you create a new sales order, select a customer,
and the Linked Order list populates with sales orders from that customer.
SuiteBuilder
Creating a Custom Field
Example 3: Filtering Against the Source From Value
Suppose that you want to have a field on a task record that lists all of the subordinates of a sales
representative associated with a selected opportunity.
First, add a custom field to a Task record. The field should be a List/Record Entity (for example
Employee). Since you want only the Sales Reps associated with the selected opportunity, define the
field Source List as Opportunity. Then filter the Source From by Sales Rep and the Source Filter by as
Supervisor. The resultant List filters to cases where the Source Filter By value (Supervisor) equals the
Sourced From value (Sales Rep).
SuiteBuilder
54
Creating a Custom Field
55
Note: The field selected for the Source Filter by field must be in the record type selected as the
List/Record.
Setting Filtering Criteria
When creating a list/record or multiple select custom field, you can filter the choices available in that
field on records and transactions based on selections made in other fields. Filtering enables you to
tailor the exact choices offered to users entering records and transactions.
You can filter based on the selections in multiple list fields. For more information, see Multiple
Dependent Dropdown Lists.
Note: Filtering only applies to lists of records. It does not apply to custom lists.
To filter a list/record or multiple select custom field:
1. Click the Sourcing & Filtering subtab.
2. In the Filter Using field, choose a field to filter on.
The field you choose here is a field on the record you selected in the List/Record field.
The field selected limits the results according to the filter criteria you define. For example, to
limit an employee list field to only show sales representatives, you select the [Is] Sales Rep field
in the Filter Using column, since that is the name of the field on the employee record.
Note: If you specify two or more filters, the custom field uses a popup list, not a
dropdown list.
3. If the field chosen in the Filter Using column is a check box, check the Is Checked box to show
only records with that box checked.
SuiteBuilder
Creating a Custom Field
56
In the sales representative example, check the box in the Is Checked column.
4. In the Compare Type column, select how you want the information compared to the criteria you
set.
For example, select equals to ensure that the information you set as criteria matches the
selections available in the list exactly.
5. In the Compare Value to column, enter the value you want to filter the list by.
For example, if you select State in the Filter Using field, enter GA to filter the list to only records
with the state listed as Georgia.
6. If the field chosen in the Filter Using field is a list, choose the value you want to show in the
Value Is column.
7. Check the Is Not Empty box to include all records with a value entered in your filter field.
The Is Not Empty option is not available for check box fields.
8. Check the Is Empty box to include all records with no value entered in your filter field.
9. In the Compare To Field column, choose which field on the record selected in the List/Record
field you want to compare to the field in the Filter Using column.
10. Click Add/Edit.
11. Add all required filters to the custom field.
The more filters you add, the fewer choices are offered in the field. Each selection must match
each filter to be included.
12. Click Save.
Next, you can define who has access to your custom field. For more information, see Restricting Access
to Custom Fields.
Warning: Custom field filters are type sensitive. If you change the type of a custom field, filters
defined for the field may become incompatible, resulting in unexpected errors when a form
containing the field is displayed. If you plan to change a custom field’s type, you need to review
any existing filters defined for the field, and remove or change these filters to avoid errors. For
information about different custom field types, see Table of Custom Field Type Descriptions.
Multiple Dependent Dropdown Lists
You can filter the choices in a dropdown list based on the selections in one or more other fields.
See the following example.
■ You add two custom transaction column fields to a transaction form and add an additional field that
is filtered based on the selections in the other two.
Setting up these field dependencies is accomplished through the use of the Compare To Field column
on the Sourcing & Filtering subtab on the custom field page. With the Compare To Field column, you
can compare values entered in multiple fields on a transaction or record with the values defined on a
custom record.
SuiteBuilder
Creating a Custom Field
57
The following example illustrates the use of multiple dependent dropdown lists.
A company sells t-shirts of multiple sizes (small and large), colors (black and white), and styles (v-neck
and crew). The company sells any combination of size and color, but the selection of styles is limited to
a set of color-size combinations. For example, the company does not sell large, black, v-neck shirts, but
it does sell large, black, crew neck shirts.
Color and Size are list/record transaction column fields that refer to custom lists. Shirt Style is a custom
record type that has the Color and Size fields. There is also a Shirt Style transaction column field that
refers to the list of Shirt Style custom records.
To understand how the feature works, it helps to think in terms of controlling versus dependent
fields. Controlling fields are the fields that are used to determine the selections that are available in
dependent fields.
The Style transaction column field is filtered according to what is selected in the Color and Size
transaction column fields. Color and Size are the controlling fields; Style is the dependent field.
First create custom lists for color and size.
Next, you create a custom record type with two fields – Size and Color – that refer to the corresponding
custom lists.
Next, you create a custom record for each Style combination you sell. These custom records are
named:
■ large, black, crew
■ small, black, v-neck
■ large, white, crew
■ small, white, crew
■ large, white, v-neck
■ small, white, v-neck
SuiteBuilder
Creating a Custom Field
58
Finally, you create three custom transaction column fields:
■ Color – Of type List/Record with your color list selected in the List/Record field
■ Size – Of type List/Record with your size list selected in the List/Record field
■ Style – Of type List/Record with your style custom record selected in the List/Record field
For the Style field, on the Sourcing & Filtering subtab, in the Filter Using column, select Color – the field
on your custom record that references the Color custom field. Set the Compare Type to equal, and
select Color in the Compare To Field column. Repeat for the Size field.
Now, the Style field is filtered by the selections in the Size and Color fields.
To create a field that is filtered by multiple other List/Record fields, complete the following steps:
First, create the custom lists and record type:
1. Create custom lists for each of the controlling fields.
2. Create a custom record type for the options you want to be available in the dependent field.
The custom record must contain List/Record fields that reference the custom lists you created a
moment ago for the controlling fields.
3. Create a custom record for each option you want to be available in the dependent field.
SuiteBuilder
Creating a Custom Field
59
Next, add custom fields to the transaction or record:
1. Create custom fields for each of the controlling fields.
2. Create the same kind of custom field of type List/Record with the custom record type from step 2
selected in the List/Record field.
On the dependent field record:
a.
On the Sourcing & Filtering subtab, in the Filter Using column, select one of the
controlling fields.
b.
In the Compare Type field, select the qualifier you want to use to determine the filtering.
For example, if you want the selections in the fields to match, select equal.
c.
In the Compare To column, select the field on your custom record that refers to the field
you selected in the Filter Using column.
d.
Repeat for each controlling field.
e.
Click Save.
You can create multiple layers of dependencies. In the previous example, you might have an another
field that is filtered based on your selection in the Style field. You will need a custom record type for
each dependent field as you created for the Style.
Restricting Access to Custom Fields
You can control who can access the information in custom fields, enabling you to maintain the security
of your business information. The access you define determines how it can be accessed both on the
record as well as through search results and reports.
Access to a field can be based on role, department, or subsidiary. The following custom access levels
can be assigned to each department and subsidiary.
■ Edit – The field and its contents can be viewed and changed.
■ View – The field can be seen, but its contents cannot be changed. (The permission level affects how
the form is accessed on records.)
■ Run – The field can be seen through reports and search results, but its contents cannot be changed.
(The permission is only applicable to reports and search.)
■ None – The field cannot be seen, and its contents cannot be changed.
For cases when different access levels are defined for a user's role, department, or subsidiary, the
highest level of access is granted. For example, an employee is assigned to a department that has Edit
access to a custom field, and the employee's role has been granted View access. The employee has the
higher level of access – in the preceding example, Edit access.
In addition to search and reporting, the access level granted to a custom field includes instances where
it is referenced by online forms, mail merge operations, and when it is sourced by other custom fields,
or referred to by formula fields.
Note: If you take away the administrator role's access to a custom field, the field will not be
accessible to scripts that are run by an administrator. To access the field via scripting, you must
edit and restore administrator access to the field.
You can set the level of access you want to grant by default to custom fields. The default access level
applies to the roles, departments, and subsidiaries, that you do not define on the Role, Department,
and Subsidiary subtabs.
SuiteBuilder
Creating a Custom Field
60
To set default access, edit the custom field record, and click the Access subtab. In the Default Access
Level, set the level of access you want to give by default. In the Default Level for Search/Reporting field,
select the level of access you want to give through search and reporting.
The access you define on the Role, Department, and Subsidiary subtabs overrides the default access
levels.
To set role, department, or subsidiary access restrictions:
1. Edit the custom field record.
2. Click the Access subtab.
3. In the Default Access Level field, set the access level you want to grant to roles, departments,
and subsidiaries that you do not specifically define below.
4. In the Default Level for Search/Reporting field, set the level of access you want to grant through
search and reports to roles, departments, and subsidiaries that you do not specifically define
below.
5. Click the Role, Department, or Subsidiary subtab.
6. In the first column, select the role, department, or subsidiary you want to define access for.
7. In the Access Level column, select the level of access you want to grant.
8. In the Level for Search/Reporting column, select the level of access you want to give the role,
department, or subsidiary via search and reporting.
9. Click Add.
10. Repeat these steps for each role, department or subsidiary.
11. Click Save.
Important: The above procedure describes how to limit access to a custom field. You also
can check the Apply Role Restrictions box to limit access to an entire custom record, according
to a custom field's values. Applying role restrictions extends access restrictions based on class,
department, location, or subsidiary, that are set on role definition pages. For example, if you
have set restrictions for roles based on locations, and you want to apply these same restrictions
to Subscription custom records, you can check Use Role Restrictions for the Subscription
record type's custom field that stores location values. See Applying Role-Based Restrictions to
Custom Records.
Access Level History
For auditing purposes, you can view any changes that have been made to custom field access levels.
To view custom field access changes, open the custom field record. Click the Access subtab, and click
the History subtab.
You can view the date and time a change was made, the user who made the change, and the changes
that were made.
Bundling Fields With Access Restrictions
If you include a custom field in a bundle that has access restrictions, custom roles that have access
are not automatically included in the bundle. If, however, you include those custom roles in the same
bundle, the access restrictions are preserved.
SuiteBuilder
Creating a Custom Field
61
The access level assigned to standard roles is preserved when you bundle a custom field that has
access restrictions.
Custom field restrictions based on subsidiary or departments are not carried over into the target
account since departments and subsidiaries cannot be included in a bundle.
Creating Read-Only Custom Fields
You can create custom fields that display information but do not store that information with any record
or transaction. You can create a read-only field of any type with any display, default, validation or
sourcing options.
A read-only field is especially useful when used with information sourcing. Fields that use sourcing
show information that is stored elsewhere in NetSuite. That information is retrieved from the source
every time the page is loaded. Since any changes users make to the field are not saved, setting the field
to read-only prevents user from attempting to edit it.
To create a read-only custom field:
1. Either edit a custom field, or create a new custom field.
If you want to create a new field, see Kinds of Custom Fields to determine the type of field you
want to create and find step-by-step instructions for each type of custom field.
2. Clear the Store Value box.
3. Click the Display subtab.
4. Set the Display Type field to Disabled.
5. Click Save.
For more information on using display types, see Setting Display Options for Custom Fields.
Adding Translations for Custom Fields
If the Multi-Language feature is enabled on your account, you can translate the label and field level
help for a custom field so that they match the language of the NetSuite user interface. For details, see
the following:
■ Translating a Custom Field Label
■ Translating Custom Field Help
Important: Before you can add these translations, you need to select translation languages
at Setup > Company > General Preferences, on the Languages subtab. The Languages subtab
lists both system-supported languages that can be used for the NetSuite user interface (and
are available at Home > Set Preferences), and additional languages that can used for website
translations only (and are not available at Home > Set Preferences). You should only enter
translations for system-supported languages, because these are the only languages that can be
displayed in the user interface. For details, see Configuring Multiple Languages.
Translating a Custom Field Label
You can define translations for a custom field label on the Translation subtab of the custom field page.
SuiteBuilder
Creating a Custom Field
Translating Custom Field Help
You can define translations for the Field Level Help of a custom field on the Translation tab of the
custom field page. Field level help is available when the name of the field is clicked. You can enter
HTML in the field by beginning the markup with <html> and ending it with </html>.
SuiteBuilder
62
Creating a Custom Field
Adding Custom Fields to Transaction Forms
After you create a custom transaction field, it automatically appears on standard forms. However, it
does not automatically appear on custom forms.
To add a custom transaction field to a custom form:
1. Go to Customization > Forms > Transaction Forms.
2. Click Edit next to your custom form.
3. On the Custom Transaction Form page, click the Screen Fields subtab.
4. Click the subtab you specified on the custom field record and locate your custom field name in
the Description column.
5. Check the box in the Show column next to your custom field if you want the field to show when
the transaction is being entered.
6. Click Printing Fields.
7. Click the subtab for the area of the printed form your field appears in.
For body fields, click Body.
For column fields and item options, click Columns.
8. Check the box in the Print/Email column next to your custom field if you want the field to show
up when you print or email the form.
9. Enter a label for each field as you want them to print.
10. When you have finished, click Save.
Your custom transaction field now shows up on your custom transaction form.
To use a custom transaction form, go to the Transactions page and click the link for the type of
transaction you want to enter. When the page appears, select the appropriate form in the Custom
Form field.
For more information, see the following topics.
■ Adding Subtabs to a Custom Record
■ Customizing Transaction Form PDF Layouts
■ Transaction Form HTML Layouts
Tracking Changes to Custom Fields
In the History subtab for each custom field, information on every saved change is displayed with the
following summary information:
■ Date/Time
■ User
■ Label
■ Field Type
■ Record Type (if Type is List/Record)
SuiteBuilder
63
Creating a Custom Field
64
■ Store Value
Inactivating a Custom Field
If required, you can remove a custom field from a specific record type or delete the field completely.
Another alternative is to make a custom field inactive instead of deleting it. Data and associated forms
for an inactive custom field are maintained in NetSuite, which is useful in cases where you may need to
use a custom field again, or you simply want to preserve custom field data in the system.
When a custom field is inactive, it no longer appears on any forms, it is not available in searches, and it
is not available to SuiteScript or SuiteAnalytics Connect, the same as a deleted field.
You can make a custom field inactive on the record page for the custom field or in a list of custom
fields:
■ On a Custom Field record, check the Inactive box to make a custom field inactive.
■ A Show Inactives box is available on all custom field list pages, including the list of custom fields on
each custom record type’s Fields subtab. By default, the Show Inactives box is unchecked, so that
inactive custom fields are filtered out of lists. When Show Inactives is checked, the list displays both
inactive and active custom fields, and each custom field in the list has an Inactive check box next to
it. You can check the box to make a custom field inactive, and clear the box to reactivate an inactive
custom field.
When a custom field is made inactive, it no longer appears on any forms or reports and it is not
returned by global search – it is not available anywhere, the same as a deleted field. However, data
and associated forms for an inactive custom field are maintained in NetSuite, whereas a deleted field
is completely removed from the system. If an inactive field is later made active again, all of its data is
restored, and the field appears on all of the same forms as before it was made inactive.
Note: Some settings are not maintained for inactive fields, including display formatting. Also,
NetSuite does not check to see if custom fields are referenced in SuiteScripts. If you inactivate a
custom field, update any SuiteScripts that reference the field, otherwise they will not work.
A custom field cannot be made inactive if other NetSuite records depend on it. For example, a custom
field cannot be made inactive if any of the following conditions apply:
■ It is sourced by another custom field.
■ It is used in lead conversion mapping.
■ It is used in the Parameter, Values section for a workflow action.
■ It is used in a workflow definition condition.
■ It is used in a filter or a condition for a saved search.
In addition to the above examples, there are other dependencies that may prevent you from making a
custom field inactive.
When you try to inactivate a custom field that has dependencies, an error message is returned, with a
link to a Dependent Records page, where you can review details about these dependencies.
You can use the Check Inactivate Dependencies option under the Actions menu on each custom field
record to check for dependencies before you try to make the custom field inactive. Another option is
available to check dependencies that may prevent you from deleting a field. When you do one of these
checks, a Dependent Records page appears. If the list has no records, you can make the custom field
inactive or delete it without errors.
SuiteBuilder
Inactivating a Custom Field
Note: Script custom fields cannot be made inactive.
Note: If a bundle contains an inactive custom field and in the target account that field is active,
and you update the bundle, the custom field remains active in the target account after the
bundle update. If the bundle contains an active custom field and in the target account that field
is inactive, the field is changed to be active in the target account. For more information, see the
help topic Bundle Update Reference.
Editing a Custom Field
You can modify custom fields.
If you are viewing a form and want to know if a field is custom, open the field level help and find the
field ID.
If the field ID is not visible in the help, you need to show the field IDs in your account.
For more information, see the following topics.
■ Getting Field-Level Help
■ How do I find a field's internal ID??
Showing Record and Field IDs in Your Account
If the field ID begins with one of the following, the field is a custom field.
■ custevent (CRM)
■ custentity (entities)
■ custitem (items)
■ custcol (transaction column)
■ custbody (transaction body)
To edit a custom field:
1. Go to Customization > Lists, Records, & Fields > [Custom Fields], where [Custom Fields] is the
type of custom field you want to modify. The Custom Fields page appears, listing all custom
fields configured for that field type.
2. Click the name of the custom field you want to modify. The Custom Field page is displayed for
the selected field. You can modify the following:
■ Label
■ Field ID
■ Field Owner
■ Description
■ Type
■ Whether to store values for the field
■ Whether to use an encrypted format
■ Whether to have the field automatically shown in the list of records the field is applied to
■ Whether to index the field for global searches
SuiteBuilder
65
Editing a Custom Field
66
3. To make other changes to the custom field, select the appropriate subtab:
■ Display — Specify the size of the field and its exact location on the form relative to other
fields and subtabs on the page.
■ Validation & Defaulting — Restrict the information that is entered in the field, and specify
values that display automatically when a record or transaction is first created.
■ Sourcing & Filtering — Source information for the field from another record in your account,
or tailor the choices available when entering records and transactions.
■ Access — Specify who can access the information in the field.
■ Translation — Translate the label and field level help for the field.
For more information about the Custom Field page and subtabs, see Creating a Custom Field.
4. When you are finished editing the field, click Save.
When making changes to the settings for custom fields, the following options are available:
■ Renaming Custom Fields
■ Mass Updating Custom Fields
Renaming Custom Fields
When you change the name of a custom field, the name is not automatically updated on custom forms
that contain the field.
To apply the new name to custom forms:
1. After making changes to your custom field, click Apply to Forms.
2. On the Apply Custom Field to Forms page, change the field label for each form where you want
to reflect the change.
If no forms are listed, you might have the Display Type field set to Hidden, which means that the
field will not be shown on any form.
SuiteBuilder
Editing a Custom Field
67
Note: Custom transaction body and custom transaction column fields are included on
all forms, even if they are not displayed. If the Display Type field is set to Hidden, the field
is still included on all forms for those two field types. The system ignores any changes you
make to show or hide the field on all forms that apply to that custom transaction body or
custom transaction column field.
3. Click Save.
Mass Updating Custom Fields
To be available for mass update, a custom field must meet the following criteria:
■ It must support inline editing. For more information, see the help topic Using Inline Editing.
■ It must be displayed on your preferred form for the record type being updated.
■ It must be stored.
■ It must not have a sourcing relationship.
■ It must not be encrypted.
■ It must not be an Email custom field.
■ If it is an Item custom field, the field script ID must not end with ‘description’.
For more information about performing mass updates, see the help topic Mass Changes or Updates.
Advanced Features for Custom Fields
You can tailor custom fields for your organization by using the advanced features available.
■ Encrypted Custom Field Stored Values
■ Creating Custom Fields with Values Derived from Summary Search Results
■ Dynamic Defaults and Dynamic Hyperlinks
■ Creating Formula Fields
■ SQL Expressions
Encrypted Custom Field Stored Values
As of Version 2014 Release 1, a Use Encrypted Format option is available for new custom field
definitions with specific text types. When Use Encrypted Format is enabled, field values are encrypted
in the database. (Values are still displayed in the user interface.)
Warning: After you save a custom field definition, the Use Encrypted Format setting cannot be
changed.
When you specify that a field be encrypted, any value in the encrypted field displays as
ENCRYPTED in all environments except the environment where the value was first created.
The encrypted format option is not supported for Transaction Item Option, Suitelet, Workflow, or
Workflow State custom field definitions. For custom field definitions where it is supported, the option is
always disabled by default.
You can encrypt the following text types:
■ Email Address
SuiteBuilder
Advanced Features for Custom Fields
68
■ Free-Form Text
■ Long Text
■ Phone Number
■ Rich Text
■ Text Area
For all other text types, the Use Encrypted Format box is unavailable.
Be aware of the following precautions for fields with encrypted stored values:
■ Fields with encrypted stored values are not available to reporting, SuiteAnalytics Connect, or for
sourcing or filtering. However, they can be returned in the results of searches and saved searches.
■ The nlapiLookupField SuiteScript function is not supported for fields with encrypted stored values.
Other SuiteScript API functions that rely on search may not be supported.
■ Encryption of stored field values increases their size and may have performance implications.
■ The data type of a field with encrypted stored values cannot be changed to a type that does not
support encrypted stored values.
System notes for fields with encrypted stored values mask old and new field values, displaying
asterisks only, for security reasons.
Creating Custom Fields with Values Derived from
Summary Search Results
You can create a custom field that can display values derived from summary saved search results. Each
summary search field displays a rollup value for a selected search results field; the value is dynamically
calculated each time a form containing the summary search field is displayed. For example, you can
use a summary search field to display the total quantity of all line items on a transaction. The summary
search field provides an alternative to using SuiteScript to calculate a custom field’s values. Note that
the rollup functionality is very similar to that of custom sublists, except the search results are displayed
in a field rather than a sublist.
For details about custom fields with summary search derived values, see the following:
■ Steps for Creating a Summary Search Custom Field
■ Kinds of Custom Fields
■ Custom Field Data Types that Support Summary Search Derived Values
■ Example Summary Search Custom Field
■ Current Limitations for Summary Search Custom Fields
Steps for Creating a Summary Search Custom Field
To create a custom field with a value derived from a summary search:
1. Create or edit a summary saved search that rolls up to the result you want to display in the
custom field. (For instructions, see the help topic Defining a Saved Search.)
■ Add search criteria to filter out any records/lines you do not want included in the rollup value.
(For instructions, see the help topic Advanced Search Criteria Filters.)
■ Define a search results field for which values will be rolled up, and select a summary type.
(Count, Sum, Minimum, Maximum, and Average are supported; Group summary type is
not supported.) For example, you could set Quantity as the results field and set a summary
SuiteBuilder
Advanced Features for Custom Fields
69
type of Sum. (For information about summary types, see the help topic Summary Type
Descriptions.)
■ Define an available filter field. The field is used to filter search results to include only those
records with available filter field values that match the available filter field value of the
current record. The value displayed for the summary search custom field is a rollup of search
results field values for the records that have matching available filter field values. (For more
information, see the help topic Selecting Available Filters for Saved Searches.)
2. Create or edit the custom field. (For general instructions, see Creating a Custom Field.)
■ Select the search on the custom field’s Validation & Defaulting subtab.
■ Optionally, you can select a Compare To field. You can use the Compare To field in cases
where you want to put the custom field on a form for a record type that is different from the
summary search record type. For example, if you want to put a custom entity field showing
the result of a customer record summary search on an employee custom form, you could
select an employee record field whose values could be matched to the values for the search’s
Available Filter field. Search results field values for all records with matching values for
the Compare To field and Available Filter field would be used to calculate the value of the
summary search custom field.
■ Do not enable the Store Value option, as values for rollup custom fields are not stored.
Kinds of Custom Fields that Support Summary Search Derived
Values
You can select a summary search to provide rollup values for the following kinds of custom fields:
■ Entity Fields
■ CRM Fields
■ Transaction Body Fields
■ Other Custom Fields
■ Custom Record Custom Fields
Custom Field Data Types that Support Summary Search Derived
Values
You can select a summary search to provide rollup values for custom fields of the following types:
■ Currency
■ Date
■ Date/Time
■ Decimal Number
■ Email Address
■ Free-Form Text
■ Hyperlink
■ Integer Number
■ Long Text
■ Percent
■ Phone Number
■ Rich Text
SuiteBuilder
Advanced Features for Custom Fields
70
■ Text Area
■ Time of Day
Example Summary Search Custom Field
The following example shows the creation of a custom field to be displayed on custom purchase order
forms, with the value of the field calculated by a purchase order summary search that sums the values
for the purchase order line items’ Amount field. No Compare To field is needed, because the Internal ID
field set as the Available Filter for the search can be matched to the Internal ID of the purchase order
record displayed on the form.
Current Limitations for Summary Search Custom Fields
■ Custom field values from summary search results are never stored. Field values are always
calculated dynamically at runtime. A user may be able to edit values, depending on the display
options set for the custom field, but the edited values are not stored. Also, because its values are
not stored, the field is not available in search results, including lists based on saved searches.
■ Calculated values for summary search custom fields may be different for users with different
permissions. Summary search results are rolled up for the records to which the current user has
access. Because users with different permissions may have access to different sets of records, the
calculated value of the field may vary per user.
Dynamic Defaults and Dynamic Hyperlinks
When working with free-form text, text area, rich text or hypertext fields, in the Default Value field on
the Validation & Defaulting subtab, you can include NetSuite tags in the default definition. NetSuite
tags are populated with field values when the page is loaded or saved.
Dynamic defaults can be used in the hyperlink fields to include information from the record or the
current session in the URL for the website.
To include NetSuite tags in the default definition of a field, enclose each tag within curly braces,
defining field tags in a dynamic default as {tag}, where tag is the ID of the field. Each field in NetSuite
has a unique ID and therefore a unique tag definition.
SuiteBuilder
Advanced Features for Custom Fields
71
Note: Because field IDs are incorporated into tag definitions for fields, when creating custom
fields, enter meaningful IDs for each custom field and use consistent naming conventions that
meet your business needs. The default NetSuite IDs are meaningless, and in your dynamic
defaults it will be difficult to know exactly what the field references.
Dynamic defaults are evaluated and each NetSuite tag is substituted on page load and page save.
However, if you check the Store Value box, the tag substitution values are saved when the page is
created as a true default. The default value is saved and is not dynamically changed when fields on the
page change, letting you create a dynamic default that retains its initial value. The field must be edited
manually, or updated with custom code to change its initial value.
Important: If you need to ensure that NetSuite tags defined in a dynamic default are
substituted on each page load and save, clear the Store Value box.
NetSuite Tags
Currently any field on the page that has a custom code ID can be used in a NetSuite tag. You can find
the code ID for standard NetSuite fields in the SuiteScript Records Browser.
To determine the code ID of custom fields on your forms, go to the Custom Field list page for the field
type, for example, Customization > Lists, Records, & Fields > CRM Fields. The code ID is displayed in the
ID column.
There are also some special tags that you can use:
■ {useremail} — Email of the user currently logged in
■ {today} — Current date
■ {nlversion} — The full internal NetSuite release number
■ {nlsessionid} — The browser's session ID, which could be used when creating a hyperlink for
passing a session to a web service
■ {nluser} — ID of the user currently logged in
■ {nlrole} — Role ID of the user currently logged in
Dynamic Hyperlinks
For hyperlink fields, you can also create a link to a website by defining dynamic defaults. Dynamic
defaults are especially useful when the exact URL is unknown until information is collected for the
record. You may also want to use information specific to the current logged in session as part of a URL
parameter. When creating a dynamic hyperlink, enter the http address as usual followed by ?= and the
desired NetSuite tags embedded in curly braces.
For example, suppose that you want to include an address lookup feature on a customer form. Create
a custom Entity field with the following parameters specified:
■ Label: Map
■ ID: _map
■ Type: Hyperlink
■ Store Value: Not checked
■ Applies To: Customer
■ Display / Subtab: Main
■ Display / Link Text: Click Here for Google Map
SuiteBuilder
Advanced Features for Custom Fields
72
■ Validation & Defaulting / Default Value:
http://maps.google.com/maps?q={billaddr1}%20{billcity}%20{billstate}%20{billzip}
■ Validation & Defaulting / Formula: Not checked (after you save the field, return to the custom field
configuration page and ensure that Formula is cleared)
The default value includes NetSuite tags that identify the specific address of the current customer.
These tags are resolved when the page is loaded so that the URL will direct the user to the customer's
address as defined in the current customer record.
Note: When creating dynamic hyperlinks, ensure that NetSuite tags embedded in the default
value definition represent required fields. If the fields are not required, and the associated form
does not include a value for the tag, then the resulting URL will be invalid.
Setting the Store Value Field
On page load and page save, dynamic defaults are evaluated and each NetSuite tag is substituted. For
these substitutions to be made each time, the Store Value box for the custom field must be cleared.
If you check the Store Value box, the tag substitution is performed one time, when the custom field is
created. The value is saved and does not change dynamically when the fields on the page are updated.
To ensure that NetSuite tags defined in a dynamic default are substituted every time a page is loaded
and saved, clear the Store Value box.
Setting the Formula Field
When entering a default value for a field, you can enter a formula. When you check the Formula box,
the contents of the Default Value field are treated as an SQL expression, executing SELECT <formula
text> FROM dual in the database to obtain the results. Formulas that contain tags will have the values
substituted before the formula is executed.
However, if a value contains tags, it is not necessarily a formula. Ensure that you are entering a formula
before checking the Formula box. For example, if you enter Welcome, {firstname} as the default for a
text area field, the content is substituted correctly only if the Formula box is cleared.
If you are entering a dynamic default for a hyperlink and you clear the Formula box,
the following default value results in a valid URL: http://maps.google.com/maps?
q={billaddr1}%20{billcity}%20{billstate}%20{billzip}
However, if the Formula box is checked, the preceding URL results in an Error: Invalid Expression
message. To use a formula for the example above, enter the formula like this: 'http://maps.google.com/
maps?q=’ || {billaddr1} || '%20' || {billcity} || '%20' || {billstate} || '%20' || {billzip}
When you are entering information in the Default Value field, the Formula box may be checked
automatically. If you see an Error: Invalid Expression error or a default is not appearing as you
intended, verify the Formula setting.
Creating Formula Fields
In addition to defining a custom field that is populated with dynamic data as described in Dynamic
Defaults and Dynamic Hyperlinks, you can define fields to be dynamically calculated based on the
values returned in the dynamic fields.
To define formula fields, click the Validation & Defaulting subtab of the custom field. Check the Formula
box. In the Formula field, use NetSuite Tags to define the dynamically defaulted fields to be used in the
calculation and use SQL Expressions to define the formula.
SuiteBuilder
Advanced Features for Custom Fields
73
To dynamically recalculate a formula, clear the Store Value box, and if needed, use the NULLIF function
in your formula to prevent division by zero.
Important: The Formula box must be checked in order for the field to be processed as a
formula and, as with any defaulted field, the Store Value box must be cleared to dynamically
recalculate the value each time the field is viewed. Also, when a record is loaded, custom
formula fields are calculated, but if changes to fields used in the formula definition are made
during the time that the record is still loaded, the formula field is not recalculated to reflect
these changes until the next time the record is loaded.
During validation, the following inline errors can be returned:
■ ERROR: Field Not Found - returned when either a custom field or search formula is not recognized
by the system.
■ ERROR: Invalid Formula - returned when there is a syntax or data type error in the custom formula
field.
When custom formula fields are returned in search results, the displayed value is the result of the
dynamically calculated value at the time the search is performed. You can also define search criteria as
formula fields without using a custom formula field. For more information, see the help topic Formulas
in Search.
Warning: If a field on a record is referred to by a formula custom field, you cannot edit the
referenced field with inline editing.
Note: Knowledge of SQL will help you to fully leverage the flexibility and power of SQL
functions to define complex formulas, but the Formula popup window can help you to correctly
define formula expressions. The popup includes a Function list that lets you select SQL functions
to be included in expressions, and Filter or Field lists that let you to select field names and have
their IDs included in expressions. For more details, refer to SQL Expressions. Also, you can refer
to the SuiteScript Reference Guide for tables of NetSuite field IDs.
Referencing Related Records in Formula Fields
When creating a formula field, you can reference data contained in fields on related records.
For example, if you created a custom entity field to apply to customer records, you could add a formula
field that referenced a field on the employee record of the sales rep assigned to the customer.
Note: When referencing fields on other records, you are restricted to the records with search
joins.
The format for formula field references is:
SuiteBuilder
Advanced Features for Custom Fields
{fieldOnAppliedRecord.fieldOnJoinedRecord}
For example, if you wanted to display the partner email address on customer records, the format for
the formula would be:
partner is the field ID for the Partner field on the customer record. email is the field ID for the email
field on the partner record.
The preceding example displays the email address on the record for the partner assigned to each
customer.
SuiteBuilder
74
Advanced Features for Custom Fields
75
Note: Knowledge of SQL will help you to fully leverage the flexibility and power of SQL
functions to define complex formulas, but you can click Set Formula next to the Formula box to
add SQL functions or field IDs to your formula.
Note: For more details, refer to SQL Expressions. Also, you can refer to the Working with the
SuiteScript Records Browser for tables of NetSuite field IDs.
Using List/Record Field IDs in Formula Fields
You can reference the ID value for any List/Record type field in a formula field. Use the format
{field_name.ID}.
Using Transaction Memo Fields in Formulas
Transactions that have line items, such as sales orders, may have values for both a memo body
field and memo line item fields. The memo field returns the body field and line item field from the
transaction, unless the memo body field is blank. If the memo body field is blank, the memo field
returns the first non-empty line item memo field’s value.
Note: The memobody field can be used to return the memo body field value, even
if it is blank. However, memobody can only be used in a related record, for example,
{salesorder.memobody}.
Formula Field Example
For example, suppose you want to display the remaining credit available to a customer on the
customer record. Create a custom entity field of the type Currency called Remaining Credit. Apply
the field to the Customer record and set it to display on the Financial subtab. Define the field with the
following formula in the Validation & Defaulting subtab:
{creditlimit}-nvl({balance},0)
(where creditlimit and balance are standard customer fields and the nvl NULL handling function
forces the value to be set to the second parameter when the field is NULL)
SuiteBuilder
Advanced Features for Custom Fields
76
Make sure that you enable the Formula field and clear the Store Value box to ensure that the value is
always dynamically recalculated as a formula.
When a customer record is viewed, the Remaining Credit field returns a calculated value based on the
credit limit and customer balance fields.
Creating a Formula Field to Display Transaction Line Numbers
You can display line numbers on the Items subtab of transactions when they are viewed online, and in
printed transactions, by creating a custom field that uses the {linenumber} formula, and applying the
field to transaction forms.
1. To create a custom line number field, go to Customization > Lists, Records, & Fields >
Transaction Column Fields > New.
2. Enter a label for the field, select a Type of Integer Number, and clear the Store Value box.
3. On the Applies to subtab, check boxes for the transactions that should display line numbers,
and check the Print on Standard Forms box.
4. On the Display subtab, select a Display Type of Disabled.
5. On the Validation & Defaulting subtab, check the Formula box, and enter {linenumber} as
the Default Value.
6. Save the new field.
7. To enable the line number field to be printed on a custom transaction form, edit the form, and
on the Printing Fields, Columns subtab, check the Print/Email box for the new field.
Note the following:
■ Line numbers display when a transaction record is in View mode. In Edit mode, line number value is
shown as 1.
■ Line numbers correspond to the printed or viewed results, meaning they are contiguous even when
transaction lines are omitted.
■ If you are using a line number formula field for viewed and printed transactions, and you also want
to include the line number in search results, set up the search as follows to ensure that search
results match viewed and printed transaction items:
□ Set a criteria of Main Line = No (false).
□ Filter out transaction line items related to taxes.
□ Add the Item field as a results field.
□ Add the Amount (Gross) field as a results field; do not use the Amount field.
□ Add a Formula(Numeric) field as a results field, with the following formula expression: RANK()
OVER (PARTITION by {internalid} ORDER BY {linesequencenumber}).
Using a Field Formula to Remove Extra Spaces After Date/Time
Field Values
You can remove the extra spaces that appear after a Date/Time custom field value by using the
{TO_CHAR(SYSDATE, 'FMMonth DD, YYYY')} formula.
SQL Expressions
The SQL expressions that you enter in field formulas call the Oracle database to evaluate the function,
and those functions are maintained by Oracle. For more information about these functions, see the
Oracle Database SQL Reference.
SuiteBuilder
Advanced Features for Custom Fields
77
If you are familiar with Microsoft SQL Server functions but are new to Oracle databases, see Character
Functions to compare SQL functions support in Microsoft SQL Server and Oracle databases. If you are
used to Microsoft Excel functions, please note that not all Excel functions are supported by Oracle, and
those that are supported often use a different syntax.
The following tables outline the SQL functions that can be used in NetSuite search formulas and
custom formula fields:
■ Numeric Functions
■ Character Functions Returning Character Values
■ Character Functions Returning Number Values
■ Datetime Functions
■ NULL-Related Functions
■ Decode
■ Sysdate
■ Case
■ Analytic and Aggregate Functions
Important: The following material is provided for convenience only. It is assumed that
you are familiar with the implementation of SQL expressions. For a complete reference to
SQL expressions, go to the Oracle website (requires Oracle account activation). Not all of the
expressions described at the URL are supported in NetSuite.
Conventions in SQL Syntax Examples
The syntax examples use Oracle's typographic conventions for SQL code examples. The following table
shows the conventions used in SQL syntax examples.
Convention
Meaning
Example
[]
Anything enclosed in brackets is optional.
LTRIM(char [ , set ])
{}
Braces are used for grouping items.
TO_CHAR({ datetime
| interval } [, fmt [,
'nlsparam' ] ])
|
A vertical bar represents a choice of two
options.
ATAN2(n1 { , | / } n2)
...
An ellipsis mean repetition in syntax
descriptions or an omission in code examples
or text.
DECODE(expr, search,
result [, search, result ]...[,
default ])
UPPERCASE
Indicates an element supplied by the system.
These terms are shown in uppercase to
distinguish them from terms you define. Unless
terms appear in brackets, enter them in the
order and with the spelling shown. Because
these terms are not case sensitive, you can use
them in either UPPERCASE or lowercase.
TRIM([ { { LEADING |
TRAILING | BOTH }
[ trim_character ] |
trim_character } FROM ]
trim_source)
lowercase
Indicates user-defined programmatic elements,
such as field names.
Note that some programmatic elements use
a mixture of UPPERCASE and lowercase. Enter
these elements as shown.
NULLIF(expr1, expr2)
SuiteBuilder
Advanced Features for Custom Fields
The examples are provided for illustrative purposes only. They may or may not work for you,
depending on your NetSuite account settings and data.
Numeric Functions
Function
Syntax
Description
Example
ABS
ABS(n)
returns the absolute
value of n
ABS({amount})
ACOS
ACOS(n)
returns the arc cosine
of n
ACOS(0.35)
ASIN
ASIN(n)
returns the arc sine of
n
ASIN(1)
ATAN
ATAN(n)
returns the arc tangent
of n
ATAN(0.2)
ATAN2
ATAN2(n1 { , | / } n2)
returns the arc tangent
of n1 and n2
ATAN2(0.2, 0.3)
BITAND
BITAND(expr1, expr2)
computes an AND
operation on the bits
of expr1 and expr2
BITAND(5, 3)
CEIL
CEIL(n)
returns smallest
integer greater than or
equal to n
CEIL({today}-{createddate})
COS
COS(n)
returns the cosine of n
COS(0.35)
COSH
COSH(n)
returns the hyperbolic
cosine of n
COSH(-3.15)
EXP
EXP(n)
returns e raised to the
nth power, where e =
2.71828183
EXP({rate})
FLOOR
FLOOR(n)
returns largest integer
equal to or less than n
FLOOR({today}-{createddate})
LN
LN(n)
returns the natural
logarithm of n
LN(20)
LOG
LOG(n2, n1)
returns the logarithm,
base n2, of n1
LOG(10, 20)
MOD
MOD(n2, n1)
returns the remainder
of n2 divided by n1
MOD(3:56 pm{lastmessagedate},7)
NANVL
NANVL(n2, n1)
returns an alternative
value n1 if the input
value n2 is not a
number
NANVL({itemisbn13}, '')
POWER
POWER(n2, n1)
returns n2 raised to
the n1 power
POWER({custcoldaystoship},-.196)
REMAINDER
REMAINDER(n2, n1)
returns the remainder
of n2 divided by n1
REMAINDER({transaction.
totalamount},
{transaction.amountpaid})
ROUND
(number)
ROUND(n [, integer ])
returns n rounded to
integer places to the
ROUND(({today}-{startdate}), 0)
SuiteBuilder
78
Advanced Features for Custom Fields
Function
Syntax
Description
Example
right of the decimal
point
SIGN
SIGN(n)
returns the sign of n
SIGN({quantity})
SIN
SIN(n)
returns the sine of n
SIN(5.2)
SINH
SINH(n)
returns the hyperbolic
sine of n
SINH(3)
SQRT
SQRT(n)
returns the square root
of n
SQRT(POWER({taxamount}, 2))
TAN
TAN(n)
returns the tangent of
n
TAN(-5.2)
TANH
TANH(n)
returns the hyperbolic
tangent of n
TANH(3)
TRUNC (number)
TRUNC(n1 [, n2 ])
returns n1 truncated to
n2 decimal places
TRUNC({amount}, 1)
Character Functions Returning Character Values
Function
Syntax
Description
Example
CHR
CHR(n [ USING NCHAR_CS ])
returns the character
having the binary
equivalent to n as a
VARCHAR2 value
CHR(13)
CONCAT
CONCAT(char1, char2)
concatenates char1
and char2 into one
string
CONCAT({number},CONCAT('
_',{line}))
INITCAP
INITCAP(char)
returns char, with the
first letter of each word
in uppercase, all other
letters in lowercase
INITCAP({customer.
companyname})
LOWER
LOWER(char)
returns char, with all
letters lowercase
LOWER({customer.
companyname})
LPAD
LPAD(expr1, n [, expr2 ])
returns expr1, leftpadded to length n
characters with the
sequence of characters
in expr2
LPAD({line},3,'0')
LTRIM
LTRIM(char [, set ])
removes from the left
end of char all of the
characters contained in
set
LTRIM({companyname},'-')
REGEXP_REPLACE
REGEXP_REPLACE(source_
char, pattern
[, replace_string
[, position
[, occurrence
[, match_parameter ]
]
]
]
)
lets you replace a
sequence of characters
(source_char) that
matches a regular
expression pattern
with another set
of characters
(replace_string)
REGEXP_REPLACE({name},
'^.*:', '')
REGEXP_SUBSTR
REGEXP_SUBSTR(source_
char, pattern
lets you extract a
sequence of characters
REGEXP_SUBSTR({item},'[^:]+
$')
SuiteBuilder
79
Advanced Features for Custom Fields
Function
Syntax
Description
[, position
[, occurrence
[, match_parameter ]
]
]
)
that matches a regular
expression pattern
from the source string
(source_char)
Example
REPLACE
REPLACE(char, search_string
[, replacement_string ]
)
returns char with
every occurrence of
search_string replaced
with replacement_stri
ng
REPLACE({serialnumber}, '&',
',')
RPAD
RPAD(expr1 , n [, expr2 ])
returns expr1, rightpadded to length n
characters with expr2,
replicated as many
times as necessary
RPAD({firstname},20)
RTRIM
RTRIM(char [, set ])
removes from the right
end of char all of the
characters that appear
in set
RTRIM({paidtransaction.
externalid},'-Invoice')
SOUNDEX
SOUNDEX(char)
returns a character
string containing
the phonetic
representation of char
SOUNDEX({companyname})
SUBSTR
SUBSTR(char, position [,
substring_length ])
returns a portion of
char, beginning at
character position,
substring_length
characters long
SUBSTR({transaction.
salesrep},1,3)
TRANSLATE
TRANSLATE(expr,
from_string, to_string)
returns expr with
all occurrences of
each character in
from_string replaced
by its corresponding
character in to_string
TRANSLATE({
expensecategory}, ' ', '+')
TRIM
TRIM([ { { LEADING |
TRAILING | BOTH }
[ trim_character ]
| trim_character
}
FROM
]
trim_source
)
lets you trim leading or
trailing characters (or
both) from a character
string
TRIM (BOTH ',' FROM
{custrecord_assetcost})
UPPER
UPPER(char)
returns char, with all
letters uppercase
UPPER({unit})
Character Functions Returning Number Values
Function
Syntax
Short Description
Example
ASCII
ASCII(char)
returns the decimal
representation
in the database
character set of the
first character of char
ASCII({taxitem})
INSTR
INSTR(string , substring
[, position
searches string for
substring
INSTR({messages.message},
'cspdr3')
SuiteBuilder
80
Advanced Features for Custom Fields
Function
Syntax
Short Description
Example
[, occurrence ]
])
LENGTH
LENGTH(char)
returns the length of
char
LENGTH({name})
REGEXP_INSTR
REGEXP_INSTR
(source_char, pattern
[, position
[, occurrence
[, return_option
[, match_parameter ]
]
]
]
)
lets you search a
string for a regular
expression pattern
REGEXP_INSTR
({item.unitstype}, '\d')
TO_NUMBER()
TO_NUMBER(expr [, fmt
[, 'nlsparam' ] ])
converts a formatted
TEXT or NTEXT
expression to a
number
TO_NUMBER({quantity})
Datetime Functions
Function
Syntax
Short Description
Example
ADD_MONTHS
ADD_MONTHS(date, integer)
returns the date
plus integer
months
ADD_MONTHS({today},-1)
LAST_DAY
LAST_DAY(date)
returns the date
of the last day of
the month that
contains date
LAST_DAY({today})
MONTHS_BETWEEN
MONTHS_BETWEEN(date1,
date2)
returns the
number of months
between date1 and
date2
MONTHS_BETWEEN(
SYSDATE,{createddate})
See also Sysdate.
NEXT_DAY
NEXT_DAY(date, char)
returns the date of
the first weekday
named by char
that is later than
the date
NEXT_DAY({today},'
SATURDAY')
ROUND (DATE)
ROUND(date [, fmt ])
returns date
rounded to the
unit specified by
the format model
fmt
ROUND(TO_DATE('12/31/
2014', 'mm/dd/yyyy')-{datecr
eated})
TO_CHAR()
TO_CHAR({ datetime
| interval } [, fmt [,
'nlsparam' ] ])
converts a
datetime or
interval value to a
value of VARCHAR2
datatype in the
format specified
by the date format
fmt
TO_CHAR({date}, 'hh24')
TO_DATE()
TO_DATE(char [, fmt [,
'nlsparam' ] ])
converts a
formatted TEXT or
NTEXT expression
to a DATETIME
value
TO_DATE('31.12.2011',
'DD.MM.YYYY')
SuiteBuilder
81
Advanced Features for Custom Fields
Function
Syntax
Short Description
Example
TRUNC (DATE)
TRUNC(date [, fmt ])
returns date
with the time
portion of the day
truncated to the
unit specified by
the format model
fmt
TRUNC({today},'YYYY')
NULL-Related Functions
Function
Syntax
Short Description
Example
COALESCE
COALESCE(expr [,
expr ]...)
returns the first non-null
expr in the expression list.
COALESCE({
quantitycommitted}, 0)
NULLIF
NULLIF(expr1, expr2)
compares expr1 and expr2.
If they are equal, then the
function returns null. If
they are not equal, then the
function returns expr1.
NULLIF({price}, 0)
NVL
NVL(expr1, expr2)
lets you replace null with the
second parameter.
NVL({quantity},'0')
NVL2
NVL2(expr1, expr2,
expr3)
If expr1 is not null, then
NVL2 returns expr2. If expr1
is null, then NVL2 returns
expr3.
NVL2({location}, 1, 2)
Decode
Function
Syntax
Short Descriptions
Example
DECODE
DECODE(expr,
search, result
[, search, result ]...
[, default ]
)
Compares expr to each
search value one by one. If
expr is equal to a search,
the corresponding result
is returned. If no match is
found, default is returned.
DECODE({systemnotes.name},
{assigned},'T','F')
Sysdate
Function
Syntax
Short Description
Example
SYSDATE
SYSDATE
returns the current date
and time set
TO_DATE(SYSDATE, 'DD.MM.YYYY')
or
TO_CHAR(SYSDATE, 'mm/dd/yyyy')
See also TO_DATE and TO_CHAR in
the Datetime Functions.
SuiteBuilder
82
Advanced Features for Custom Fields
Case
Function
Syntax
Short Description
Example
CASE
CASE { expr WHEN
comparison_expr THEN
return_expr [ WHEN
comparison_expr THEN
return_expr ]... | WHEN
condition THEN return_expr
[ WHEN condition THEN
return_expr ]... } [ ELSE
else_expr ] END
returns value
based on different
conditions
CASE {state}
WHEN 'NY' THEN 'New
York'
WHEN 'CA' THEN
'California'
ELSE {state}
END
or
CASE
WHEN {quantityavailable} >
19 THEN 'In Stock'
WHEN {quantityavailable}
> 1 THEN 'Limited
Availability'
WHEN {quantityavailable} =
1 THEN 'The Last Piece'
WHEN {quantityavailable}
IS NULL THEN
'Discontinued'
ELSE 'Out of Stock'
END
Analytic and Aggregate Functions
Function
Syntax
Short Description
Example
DENSE_RANK
DENSE_RANK(expr [,
expr ]...) WITHIN GROUP
(ORDER BY expr [ DESC |
ASC ]
[ NULLS { FIRST | LAST } ]
[,expr [ DESC | ASC ]
[ NULLS { FIRST | LAST } ]
]...
)
Computes the rank of
a value with respect
to other values and
returns the rank as a
NUMBER. Always results
in consecutive rankings.
DENSE_RANK ({amount})
WITHIN GROUP (ORDER
BY {AMOUNT})
or
DENSE_RANK() OVER
(PARTITION BY {name}
ORDER BY {trandate}
DESC)
Qualifies an aggregate
function indicating that
only the FIRST or LAST
values of the function
are returned.
KEEP(DENSE_RANK LAST
ORDER BY {internalid})
or
DENSE_RANK() OVER
(PARTITION by expr
[,expr...] ORDER BY expr
[ DESC | ASC ] [ NULLS {
FIRST | LAST } ] [,expr [
DESC | ASC ] [ NULLS {
FIRST | LAST } ] ]... )
KEEP()
SuiteBuilder
KEEP(DENSE_RANK { FIRST
| LAST } ORDER BY expr
[ NULLS { FIRST | LAST } ])
83
Advanced Features for Custom Fields
Function
Syntax
Short Description
Example
RANK
RANK(expr [, expr ]...)
WITHIN GROUP
(ORDER BY expr [ DESC |
ASC ]
[ NULLS { FIRST | LAST } ]
[, expr [ DESC | ASC ]
[ NULLS { FIRST | LAST } ]
]...
)
Computes the rank of
a value in a group of
values. Can result in nonconsecutive rankings if
values are the same.
RANK() OVER (PARTITION
by {tranid} ORDER BY
{line} DESC)
or
RANK ({amount}) WITHIN
GROUP (ORDER BY
{amount})
84
or
RANK() OVER
(PARTITION by expr
[,expr...] ORDER BY expr
[ DESC | ASC ] [ NULLS {
FIRST | LAST } ] [,expr [
DESC | ASC ] [ NULLS {
FIRST | LAST } ] ]... )
Custom Lists
A custom list is a list of values that you can use in custom fields on your forms and records. Custom
lists enable you to set up predefined choices for your employees and customers to select when
entering transactions and records.
Important: Custom lists are intended for use with small, fixed, related sets of data. Each
custom list should include no more than 1000 values. CSV import is not supported for custom
lists with more than 25,000 values.
To see a list page for custom lists, go to Customization > Lists, Records, & Fields > Lists. Choose an
option:
■ To edit the settings of an existing custom list, click the list name. For lists under 1000 values, edit the
list as desired. For lists over 1000 values, click Manage Values to edit the list values.
■ To edit the list values, click List. A list page appears where you can view, edit, add, or delete any
values as required.
■ To create a new custom list, click New
■ To show all lists, check the Inactive box
To save time, you should create any custom lists or subtabs that may be needed when implementing
the more advanced customizations for your account.
For help on defining a custom list, see Creating a Custom List, Adding Translations for Custom Lists,
and Managing Large Custom Lists.
Creating a Custom List
A custom list is a list of values that you can use in custom fields on your forms and records. Custom
lists enable you to set up predefined choices for your employees and customers to select when
SuiteBuilder
Custom Lists
85
entering transactions and records. You can create an unlimited number of custom lists and an
unlimited number of values for each list.
You can use CSV import to import large custom lists. For information, see the help topic Custom List
Import.
Important: Custom lists can be used to set up options for matrix items. For details, see the
help topic Setting Up an Item Matrix.
To create a custom list:
1. Go to Customization > Lists, Records, & Fields > Lists > New. The Custom List page appears.
2. In the Name field, enter a name for the list.
3. Enter a unique ID for the custom list. As a best practice, enter a name that begins with an
underscore. The text you enter is prepended with the string customlist. If you do not enter a
value, the system generates one. You use the ID value when scripting to instances of the list.
If you are editing an existing custom list, note that you can change the ID value using the Change
ID button at the top of the page.
4. Select the owner of the custom list. By default, you are selected as the owner.
Only the owner and users with edit or full permission levels may modify the custom list.
5. Enter a description of the custom list.
6. By default, values are listed in the order in which they are entered. To list values in alphabetical
order, click that radio button.
7. Check the Matrix Options List box if the list is for matrix items.
If you check the box, an Abbreviation column is added to the Values list.
Note: The Accounting Matrix Items feature must be enabled to use the matrix lists
option. If it is not enabled, the Matrix Options List box is not displayed.
8. In the Value field, enter a value for the list.
9. Click Add.
10. Repeat steps 8 and 9 to add values to the list.
11. Click Save.
The custom list can now be used in your custom fields. For details, see Creating a Custom Field and
Adding Translations for Custom Lists.
Important: Custom lists are intended for use with small, fixed, related sets of data. Custom
lists that include no more than 1000 values are recommended.
Adding Translations for Custom Lists
If the Multi-Language feature is enabled in your account, you can translate the name of a custom list,
and its available values, so that they match the language of the NetSuite user interface. For details, see
the following:
■ Translating a Custom List Name
■ Translating Custom List Values
SuiteBuilder
Custom Lists
Important: Before you can add these translations, you need to select translation languages
at Setup > Company > General Preferences, on the Languages subtab. The Languages subtab
lists both system-supported languages that can be used for the NetSuite user interface (and
are available at Home > Set Preferences), and additional languages that can used for website
translations only (and are not available at Home > Set Preferences). You should only enter
translations for system-supported languages, because these are the only languages that can be
displayed in the user interface. For details, see the help topic Configuring Multiple Languages.
Translating a Custom List Name
You can define translations for a custom list name on the Translation subtab of the custom list page.
Note: The maximum length for a custom list name's translation is 30 characters.
Translating Custom List Values
You can define translations for a custom list's values, on the Values subtab of the custom list page:
SuiteBuilder
86
Custom Lists
Note: The maximum length for a custom list value's translation is 60 characters.
Managing Large Custom Lists
Custom lists larger than 1000 values are displayed on a list page, enabling you to page through and
manage the values of large lists. If you have a large custom list of more than 1000 values that was
imported into NetSuite, the Values subtab on the Custom List page contains a Manage Values button.
To manage the list values, click Manage Values.
SuiteBuilder
87
Custom Lists
88
On the Custom List page, the values can only be viewed in alphabetical order. Use the page controls to
view, edit, add, or delete any values as required. If your organization allows inline editing, you cannot
add or edit the abbreviation or translation from this list page. Edit the individual values to change the
value, abbreviation, or translation.
SuiteBuilder
Custom Forms
89
Custom Forms
Forms are the pages used to enter information into the NetSuite database. The standard set of
forms provided with your NetSuite account can be customized to better suit your business needs.
For example, you may want to reorganize subtabs or rename fields to better match your business
workflow and terminology. After you have created a custom form, it can be set as the preferred or
default form for a page, or selected as needed from a custom form list.
Note: Form preferences are controlled by settings on the custom forms page as well as
settings defined for each role. Any settings defined for a specified role override the preferred
form settings on the forms page. Note that Employee Center roles have limited access to forms
such that only one form is ever made available to this type of role.
Custom Entry Forms
An entry form is a form you use to enter information and create entity records in NetSuite. You can
create your own custom entry forms by starting with an existing form and then rearranging and
renaming fields and subtabs, hiding or disabling certain fields, hiding or renaming buttons, making
specific fields mandatory, adding custom fields or applying custom code.
For detailed information on how to customize an entry form, see Creating Custom Entry and
Transaction Forms and Customizing Address Forms.
After you have created a custom entry form, you can set it as the default form for your users' roles. For
more information, see Defining Preferred Forms.
Custom Transaction Forms
A transaction form is the form you use to enter and print transactions in NetSuite. You can create your
own custom transaction forms by starting with an existing form and then rearranging and renaming
fields and subtabs, hiding or disabling certain fields, hiding or renaming buttons, making specific fields
mandatory, adding custom fields or applying custom code.
For detailed information on how to customize a transaction form, see Creating Custom Entry and
Transaction Forms.
After you have created a custom transaction form, you can set it as the default form for your users'
roles.
You can also link transaction forms together to create transaction workflows. For more information,
see Linking Transaction Forms.
Transaction Form Layouts
You can create custom layouts for your custom transaction forms. With custom layouts, you can
customize the look and feel of the transaction forms you print or email to those with whom you do
business.
You can define different custom transaction layouts for printing forms as PDF and for printing forms as
HTML. To define whether to print using PDF or HTML, go to Home > Set Preferences > Transactions tab,
check or clear the Print Using HTML box, and click Save.
SuiteBuilder
Custom Forms
90
Using custom layouts, you can hide and show fields, move and resize fields and change the font and
colors on your forms.
You can choose from standard or classic layouts to use for your custom layouts. Standard layouts
offer a more streamlined, updated look with labels appearing next to the information and without a
background color. Classic layouts include labels above information and a black background color.
You can create custom layouts for the following types of printed forms:
■ Bill of Materials
■ Check
■ Item Label
■ Mailing Label
■ Packing Slip
■ Payment Receipt
■ Payment Voucher
■ Picking Ticket
■ Price List
■ Remittance Slip
■ Return Form
■ Shipping Label
■ Statement
■ Transaction
To create a custom layout, go to Customization > Forms > Transaction Form PDF Layouts or
Customization > Forms > Transaction Form HTML Layouts, and click the Customize link next to a layout.
Make your changes and click Save. You can choose default layouts to apply to one or more types of
forms by checking box(es) in the Preferred column at Customization > Forms > Transaction Form PDF
Layouts or Customization > Forms > Transaction Form HTML Layouts, and clicking Submit, and clicking
Submit.
For more details, see Customizing Transaction Form PDF Layouts and Transaction Form HTML Layouts.
Advanced PDF/HTML Templates
Advanced PDF/HTML templates provide an alternate model for customizing printed and emailed
records. These templates support more customization capabilities than transaction form layouts,
also known as basic layouts. You can use these templates to produce either PDF or HTML output,
depending upon the settings of your print and email preferences.
Important: To use Advanced PDF/HTML Templates, you must enable the related feature.
You can set custom forms for supported transaction types to use standard advanced PDF/HTML
templates provided by NetSuite or custom templates that you have created in a template editor
available in the NetSuite user interface. This editor supports both rich text editing and HTML source
editing, and uses industry-standard tools and syntax.
For more details, see Advanced PDF/HTML Templates.
SuiteBuilder
Creating Custom Entry and Transaction Forms
91
Important Note about New Fields and Custom Forms
Be aware that as part of a new release, new fields are sometimes added to NetSuite standard record
types. Newly added fields for a record type are automatically added to any forms that you have
customized for this record type, and these fields are set to show on customized forms. If you do not
want new fields to show on any of your customized forms, after your upgrade you need to modify
these forms to remove or hide these fields. Keep in mind that newly created fields are typically coupled
with forms and may be needed for some forms to function properly. You should test any customized
forms where you remove or hide fields, to ensure that the forms still function properly.
Creating Custom Entry and Transaction Forms
To create a custom entry or transaction form:
1. Do one of the following to select the desired form to customize.
■ Go to the type of form you want to customize, and click Customize.
■ Click Customize or Edit next to the form name at Customization > Forms > Transaction
Forms.
■ Click Customize or Edit next to the form name at Customization > Forms > Transaction
Forms.
Note: Forms labeled as (External) are used in the Customer Center and My Account
section of your website.
2. In the Name field, enter a name for your custom form.
3. Set the custom form properties.
Options vary depending on the type of form being customized but may include the following.
4. To see what the form looks like, create a transaction that uses the form and then use the list to
select the custom form that you created.
For both Entry and Transaction Forms:
■ Form is Preferred – Check to make this form your preferred form. Only one form can be defined as
the preferred form per transaction type. Checking this box clears any previously defined preferred
forms. The preferred form is automatically used when entering transactions of this type. For details
on how preferred forms are defined, see Defining Preferred Forms.
Note the following about marking an entry or transaction form Preferred for the Customer Center
role:
□ External forms, meaning forms with names appended with (External), can be marked preferred
for Customer Center roles, but not for other roles.
□ Forms that are not external cannot be marked preferred for Customer Center roles.
□ When a non-online order form is marked preferred for Customer Center, it is saved as the
form for the order. However, an online form is not saved as the form for an order, even if it is
preferred; instead the preferred non-online order form is used.
Note that Employee Center roles have limited access to forms such that only one form is ever
made available to this type of role, and the form set on the Role record takes precedence over the
preferred form set here.
SuiteBuilder
Creating Custom Entry and Transaction Forms
92
■ Store Form with Record – Check to store a reference to this form with each record created by it.
When viewed or edited, any record that was originally created with this form is displayed using this
form rather than the user's preferred form.
□ For custom entry forms, the Store Form with Record option is disabled by default.
□ The Store Form with Record option is only available for a subset of transaction forms. For this
subset, this option is enabled by default. For other transaction forms, this option is not available
and custom forms are always stored with records. For more information, see Storing Custom
Forms with Transactions.
Important: If a custom form is stored with a record, a user who accesses that record gets
that form even if that form is not enabled for their role.
For Entry Forms Only:
■ Enable Field Editing on Lists – Check to allow inline editing of this form. Inline editing allows users
to edit fields on this form from within the record view. When enabled, fields that can be edited from
within the record view display the inline editing icon. It also provides a New menu that lists options
to create new related records.
■ Use for Pop-ups – Check to use this form in popup windows when you add a record of this type
from another record. This capability is available only for entity forms, item forms, and custom
record forms. For each type of form, only one form can be set as the popup form. When set for a
new form, the form previously defined as the popup form is unset.
This form is also available on the standard record page in the Custom Form list.
■ Popup Only – When Use for Pop-ups is checked, check Popup Only to use this form only when
adding a record of this type from another record. If the form is a standard popup form, you cannot
change the form in the popup window.
For standard forms, the Custom Form list is available in the popup window, and the options
available include this form and the standard forms.
For Transaction Forms Only:
■ Allow Add Multiple – Clear to hide the Add Multiple button on transaction item lists. You should
turn off this option on any forms that rely on custom code line item validation scripts. This is
because the Add Multiple button is displayed on item machines and let you add multiple items at a
time to the item list. However, when items are added in this manner, any Validate Line custom code
events defined for the form will not fire.
■ Printing Type – (Available only when the Advanced PDF/HTML Templates feature is enabled.) The
Basic option that is selected by default enables you to set the custom form to use transaction form
PDF layouts and HTML layouts. Choose the Advanced option to set the custom form to use an
advanced PDF/HTML template instead. For more details, see Advanced PDF/HTML Templates.
Note: Forms that will be used by a Customer Center role must have printing type set to
Basic.
■ Print Template – (Available only when the Advanced PDF/HTML Templates feature is enabled, and
the Printing Type is set to Advanced.) Select a template to be used when transactions associated
with this form are printed.
■ Email Template – (Available only when the Advanced PDF/HTML Templates feature is enabled, and
the Printing Type is set to Advanced.) Select a template to be used when transactions associated
with this form are emailed.
SuiteBuilder
Creating Custom Entry and Transaction Forms
93
■ Transaction Form PDF Layouts – Select a layout for your form. To customize layouts, click the
Custom Layouts link in the upper-right corner of the page. For more details, see Customizing
Transaction Form PDF Layouts.
■ Transaction Form HTML Layouts – Select a layout for your form. Standard and Classic layouts exist
for all the standard form types other than shipping label. These are assumed to be printed using
PDF. To customize layouts, click Customize. For more details, see Transaction Form HTML Layouts.
■ Remittance Slip – Specify which remittance slip is used on invoices, statements, return
authorizations and packing slips. To prevent the current transaction from printing with a remittance
slip, select None.
Note: To use this feature, the Print Remittance Form with Invoices & Statements preference
must be turned on.
■ Disclaimer – Enter a policy statement or message. You can enter up to 4,000 characters, including
spaces, for this message.
■ Address – Enter an address to be used only on this form. If you do not enter an address, the default
address entered at Setup > Company > Company Information is used.
■ Logo – Select a logo to be used only on this form. You must first upload the image to your File
Cabinet at Documents > Files > Images. If you do not select a logo, the default logo selected at
Setup > Company > Company Information is used.
Logos are not displayed on the following transaction forms when basic printing is used: picking
ticket, bill of materials, shipping label, opportunity, item fulfillment, item receipt, store pickup
fulfillment, and custom transactions.
■ Columns Space – This number is the maximum number of inches of printable space allowed on
your form. The measurement is determined by the Page Width of the layout you choose. You can
change the page width by creating a custom layout. To do this, click the Custom Layouts link in the
upper right-hand corner of the page.
■ Columns Width – This is the total of all the columns on your form. This measurement is determined
by the values that you enter on the column tab for your custom form. If your columns' width totals
more than your columns' space, NetSuite adjusts the widths proportionally to fit on the page.
For more information, see the following topics.
■ Moving Fields and Lists Between Subtabs
■ Configuring Field Groups
■ Configuring Fields or Screens
■ Configuring Buttons and Actions
■ Configuring Printing Fields
■ Configuring Lists
■ Configuring QuickViews
■ Associating Custom Code (Client SuiteScript) Files With Custom Forms
■ Defining Preferred Forms
■ Adding Disclaimers to Transaction Form Footers
■ Customizing Multiple Page Transaction Forms
■ Linking Transaction Forms
After you have created a custom form, you should configure the subtabs. See Configuring Subtabs for
Custom Entry and Transaction Forms.
SuiteBuilder
Creating Custom Entry and Transaction Forms
94
Important: As you are configuring your custom form, be sure to consider whether tax data
is required for transactions for which you want to use the form. Only a form that includes
required tax-related fields can be used for a transaction with tax consequences. Note that
you cannot control naming for tax fields through form customization; you must go to Setup >
Accounting > Set Up Taxes. See the help topic Customizing Tax Fields on Transaction Forms.
Note: If you create or edit custom project forms when the Project Management feature is
enabled, be aware that these forms may be altered if you later disable this feature. Immediately
after you disable Project Management, you need to review custom project forms to see if they
have been changed, and if necessary, edit them to fit your requirements. For information
about working with this feature, see the help topics Enabling Project Features and Using Project
Management.
Storing Custom Forms with Transactions
The Store Form with Record option, available for custom entry and some custom transaction forms,
indicates whether a reference to the form should be stored with each record created by it. When this
reference is stored, whenever a record is viewed or edited, that form is used, rather than the user's
preferred form. This option is enabled by default for custom transaction forms.
For some transaction types, the custom form is always stored with each transaction where it was used.
For these transaction types, the Store Form with Record option is not available on custom forms, so
users cannot change it.
The following table lists custom transaction form types and whether users have the choice of changing
the Store Form with Record option from the default of True.
Custom Transaction Form Type
Can Choose Not to Store
Form with Record?
Assembly Build
Yes
Assembly Unbuild
Yes
Bill of Materials
No, form always stored with record
Bill Payment
No, form always stored with record
Cash Refund
No, form always stored with record
Cash Sale
No, form always stored with record
Check
Yes
Credit Card Charge
Yes
Credit Memo
No, form always stored with record
Customer Deposit
No, form always stored with record
Customer Refund
Yes
Deposit
Yes
Estimate (Quote)
No, form always stored with record
Expense Report
Yes
Inventory Adjustment
Yes
Inventory Cost Revaluation
Yes
SuiteBuilder
Creating Custom Entry and Transaction Forms
Custom Transaction Form Type
Can Choose Not to Store
Form with Record?
Inventory Worksheet
Yes
Invoice
No, form always stored with record
Item Fulfillment
No, form always stored with record
Item Receipt
No, form always stored with record
Journal Entry
Yes
Opportunity
Yes
Packing Slip
No, form always stored with record
Payment
No, form always stored with record
Picking Ticket
No, form always stored with record
Price List
No, form always stored with record
Purchase Order
No, form always stored with record
Remittance Slip
No, form always stored with record
Return Authorization
No, form always stored with record
Return Form
No, form always stored with record
Sales Order
No, form always stored with record
Shipping Label
No, form always stored with record
Statement
No, form always stored with record
Transfer Order
Yes
Vendor Bill
Yes
Vendor Credit
Yes
Vendor Return Authorization
Yes
Work Order
Yes
Important: If a custom form is stored with a record, a user who accesses that record gets
that form even if that form is not enabled for their role.
Configuring Subtabs for Custom Entry and Transaction
Forms
On the Subtab subtab, you can select which subtabs to display on your form and provide a custom
heading for each subtab. For example, you have a OneWorld account and you do not want to allow
users to associate vendors with multiple subsidiaries. Create a custom vendor entry form, and specify
that the Subsidiaries subtab not be shown.
To modify the available subtabs:
1. In the Show column, check the boxes for the subtabs you want to display on the form. Clear the
boxes for the subtabs you do not want to display.
2. In the Label column, edit the headings for the subtabs as desired.
SuiteBuilder
95
Creating Custom Entry and Transaction Forms
96
3. To rearrange the subtabs, click the desired line to drag and drop it to the desired position or click
Move to Top / Move to Bottom.
4. After you have configured the subtabs, you should configure the fields or screens. See
Configuring Fields or Screens.
To add a subtab that does not yet exist to a form, you need to first create the subtab at Customization
> Forms > >Subtabs. You can also rename custom subtabs there. See Creating Custom Subtabs.
Moving Fields and Lists Between Subtabs
You can move fields and lists (the Contacts list on entry forms, for example) between subtabs on entry
forms.
After you have made changes on the Custom Form page, click Save & Move Elements to move fields
and lists on the form to other subtabs.
To move fields and lists between subtabs:
1. Click Save & Move Elements.
Your form is saved, and the Move Form Elements page opens.
On the Fields subtab are lists of fields that appear on each subtab on the form you are
customizing that include fields.
Subtabs with lists (for example, the Contacts subtab on entry forms or the Items subtab on
transactions) are shown on the Lists subtab of the Move Form Elements page.
2. For each field on each subtab, select the subtab you want that field to show on. Note that you
can also select multiple fields and move them to a subtab to set the dropdown list on those
fields. At any time you can click Save and Move More, which saves your field changes, and
reloads the page with the fields now moved to the specified subtab.
3. Click the Lists subtab.
4. Select the subtab you want each list to appear on.
It is possible to move a field or list to a subtab that is not displayed since it does not contain
items of that type (fields or lists respectively). When a field or list is moved to a previously empty,
undisplayed subtab, you cannot move the field back until the Move Form Items page is saved. If
you need to move a field again, you can return to the Move Form Items page and move it after
you have saved.
5. Click Save to return to the custom form page.
Fields and lists are now shown on the subtabs you selected. If a field or list has been moved to a subtab
that is not shown on the form, those items are no longer available on the form.
Configuring Field Groups
Click the Field Groups subtab to customize the field groups that appear on your forms. Note that the
Field Groups subtab appears on custom form pages only after you have upgraded and deployed the
standard forms in your account.
Note: If you are not familiar with the term field groups, see Field Groups in the NetSuite Help
Center.
You can use the Field Groups subtab to change the UI label of a field group, the fields within the field
group, and the placement of a field group on the page. You can also use the Field Groups subtab to
create new field groups and organize all fields into specific field groups.
SuiteBuilder
Creating Custom Entry and Transaction Forms
97
Be aware that the order of field groups on the Field Groups subtab determines the order of field
groups on your form. For example, in the following screenshot, the Primary Information field group
appears on top of the Sales Information and Classification field groups.
Any fields that are not assigned to a field group are listed together below all other fields that are
assigned to field groups. These unassigned fields are always displayed last and can be reordered
among all other fields that are not assigned to a group. If you want to move a field up higher on a
subtab, assign it to a field group.
Be aware that adding custom fields to field groups can cause field text to be displayed differently than
you might expect based on the display size attributes set for custom fields, as described in Configuring
Field Groups.
To work with field groups:
1. On the Field Groups subtab, click the Main subtab to customize field groups that appear in
the main body area of a page. Click any of the other field group subtabs to customize the field
groups that appear on a form's subtabs.
2. In the Label column, edit field group headings.
3. In the Show column, clear a field group to hide it on the form.
4. In the Single Column column, check a field group if you want it to display vertically rather than
horizontally, which is the default display. The following figure provides an example of the Primary
Information field group vertically displayed.
SuiteBuilder
Creating Custom Entry and Transaction Forms
Note that if you select Single Column for three field groups together, the field groups appear
side by side in the UI, as three single (field group) columns make a row.
5. Click the X icon in the last column to delete the field group. Clicking the X does not remove the
fields from your form. The fields continue to display at the bottom of the page. However, the
fields arel not be assigned to any field group because that field group no longer exists.
6. After you have configured your field groups, you can click the Fields subtab (for Entry forms) or
the Screen Fields subtab (for Transaction forms) to configure the fields that appear in each field
group. See Configuring Fields or Screens.
Field Groups on Custom Forms of Custom Records
You can add field groups to both new and existing custom record custom forms. Note that the
following steps are for adding field groups to an existing custom record.
To add field groups to the custom form of a custom record:
1. Go to Customization > Lists, Records, & Fields > Record Types.
SuiteBuilder
98
Creating Custom Entry and Transaction Forms
99
2. On the Record Types list page, select your record type.
3. Click the Forms subtab.
4. On the Forms subtab, click Edit next to the custom record's custom form. (Note that if you do
not yet have a custom form, click Customize next to the record type to create a new custom
form.)
5. Next, click the Field Groups subtab.
6. Provide a UI label for the first field group, set all other field group attributes, and click Add to add
the new field group.
7. After adding all field groups, click Save.
8. After you have configured your field groups, you can click the Fields subtab (for Entry forms) or
the Screen Fields subtab (for Transaction forms) to configure the fields that appear in each field
group. See Configuring Fields or Screens.
Configuring Fields or Screens
In the Fields subtab of entry forms or Screen Fields subtab of transaction forms, fields available on
each subtab for the current form can be configured. These fields can also be moved to display on a
different subtab or in different field groups.
Note: Even if you have disabled a subtab as described in Configuring Subtabs, you can still
configure fields for that subtab. This is useful should you later decide to include the subtab on
the form.
To configure fields for each available tab:
1. In the Show column, check the boxes next to the fields you want to display. Clear the boxes for
the fields you do not want to display.
Warning: Hiding fields on a form can hide other related fields. For example, hiding the
Credit Card Approved box on the sales order form also hides fields related to Address
Verification System (AVS). Also, if you use multiple locations, you must show the Location
field on the sales order form you use for your website to calculate shipping correctly.
2. In the Quick Add column (entry forms only), check the boxes next to the fields you want to
define as inline editable and available in Quick Add portlets.
If a field is checked here, and the Enable Field Editing on Lists box is also checked, then that
field can be edited directly and the record is saved when the user clicks off of the field. Inline
editable fields are also available when attaching contacts or scheduling activities to records. For
more information, see the help topic Using Inline Editing.
Quick Add portlets can be made available on users' dashboards to allow the quick addition of a
selected record type without shifting to the record type page. For more information, see the help
topic Quick Add Portlet.
3. In the Mandatory column, check the boxes next to the fields you want to require on your entry
form.
Note: You cannot clear mandatory boxes for fields that NetSuite requires or fields
defined as mandatory in the custom field definition.
4. In the Display Type column, select the display type for each field.
For more information about display types, see Setting Display Options for Custom Fields.
SuiteBuilder
Creating Custom Entry and Transaction Forms
100
5. In the Check Box Default column, choose one of the following options for each check box field
on the form:
■ Use Field Default, to use the default value set in the field definition.
■ Checked, to set the default to checked, possibly overriding the default set in the field
definition.
■ Unchecked, to set the default to checked, possibly overriding the default set in the field
definition.
6. In the Label field, edit the name of any of the field as desired. You can enter up to 200 characters
for the label. However, you should consider how the length of a label on printed forms.
■ If you change the label of a field on the Screen Fields subtab, the new label is also applied to
the field on the Printing Fields subtab.
■ In accounts where the Multi-Language feature is enabled, the label you edit here applies
only to your current language, as set at Home > Set Preferences. To modify the label in other
languages, you need to reset your language preference and reedit the label for each one.
Note that two different settings are available for languages such as English, French, and
Spanish, for example English (U.S.) and English (International).
7. In the Field Groups list, select the field you want the field to appear in.
Note: After you assign a field to a field group, the field can only be moved within the
group. If you want to move the field elsewhere on a form, change its field group.
8. Check any box in the Column Break column to insert a column break after that field.
Be aware that adding a custom field to a field group or inserting a column break after a field
can cause field text to be displayed differently than you might expect based on the display size
attributes set for custom fields, as described in Configuring Field Groups.
9. If you want to include a blank line before a field, enter the number of blank lines in the Space
Before column.
10. On entity entry forms only, you can check the Never Empty box to specify that an address must
be entered
11. If you want to associate a field with the field immediately above it, check the Same Row as
Previous box. An associated field shares the same Show/Hide setting as the previous field,
belongs to the same field group as the previous field, and is displayed together on the form with
the previous field. See Associating Related Fields on Custom Forms.
12. Rearrange the fields as desired.
■ Move each field to the desired subtab. Click Move Elements Between Subtabs. For details,
refer to Moving Fields and Lists Between Subtabs.
■ Rearrange the order of the fields on each subtab. Click the desired line and then drag and
drop it to the desired position or click Move to Top / Move to Bottom.
Note: Fields that belong to a field group can only be moved within the group. If you
want to move the field elsewhere on a form, either change the field group for the field
or rearrange the field groups.
Any fields that are not assigned to a field group are listed together below all other fields
that are assigned to field groups. These unassigned fields are always displayed last and can
be reordered among all other unassigned fields. If you want to move a field up higher on a
subtab, assign it to a field group.
13. For transaction forms only, set the following options:
■ In the Default Checked column, set the default value for check box fields. This option is only
available for toggle fields where the item is either checked or unchecked. If you enable the
SuiteBuilder
Creating Custom Entry and Transaction Forms
101
Default Checked box, the field is automatically checked unless the user specifically clears the
box.
■ Click the Columns subtab, and arrange the line-item columns for your transaction entry form
by dragging and dropping lines as desired. The order of the columns on the screen does not
have to match the order of the printed columns of your form.
14. On the Columns subtab in the Items Filter field, select a saved search you want to use to filter
the items that appear in the Items list on this form.
For information on creating a saved search, see the help topic Defining a Saved Search.
15. On the Total Box subtab, specify which fields you want to show in the form totals.
If you use SuiteTax, additional tax fields are available on the Total Box subtab. For more
information, see the help topic Tax Details on Transactions in SuiteTax.
16. Click Save.
17. If desired, click New Field to create any new custom fields.
Ensure that you save any changes before creating new fields from within the form. Selecting
New Field causes you to leave the custom form to go to the custom field page. For detailed
information on creating custom fields for your forms, see Custom Fields.
18. After you have configured the fields or screens, you should configure the printing fields (for
transaction forms only). See Configuring Printing Fields for details.
Important: As you are configuring your custom form, be sure to consider whether tax data
is required for transactions for which you want to use the form. Only a form that includes
required tax-related fields can be used for a transaction with tax consequences. Note that
you cannot control naming for tax fields through form customization; you must go to Setup >
Accounting > Set Up Taxes. See the help topic Customizing Tax Fields on Transaction Forms.
Filtering the Items Dropdown List on Transactions
You can use a saved item search to limit the items that appear in the item list on transactions. For more
information, see the help topic Defining a Saved Search.
To customize that item list:
1. Create the saved item search to filter the items in the item list.
The items in the Items dropdown list will meet the criteria of the saved search.
2. Customize the transaction form on which you want the filtered item list to appear.
3. On the Custom Transaction Form page, click the Screen Fields subtab.
4. Click the Columns subtab.
5. In the Item Filter list, select the saved item search.
6. Click Save.
When this custom transaction form is used, the item field is filtered to display only the items that
meet your search criteria. For more information on customizing forms, see Creating Custom Entry and
Transaction Forms.
Associating Related Fields on Custom Forms
You can define an association among closely related fields on custom entry and transaction forms.
Your definition of one or more fields as associated with a previous field on the form causes the
associated fields to:
SuiteBuilder
Creating Custom Entry and Transaction Forms
102
■ Share the same Show/Hide setting as the previous field
■ Belong to the same Field Group as the previous field
■ Be displayed together on the form with the previous field
You define associated fields on the Fields subtab of a custom form, by checking the Same Row as
Previous box. You also can remove a field's association with another field by clearing this box.
Be aware that setting custom fields to be Same Row as Previous on custom forms can cause field text
to be displayed differently than you might expect based on the display size attributes set for custom
fields, as described in Configuring Field Groups.
Important: In a previous release a change was made so that all fields previously defined as
child fields are defined as associated fields of former parent fields. This change provides greater
flexibility because you can remove the association if desired.
Configuring Buttons and Actions
On the Actions subtab you can configure standard NetSuite buttons and custom buttons. Use the
Standard Actions subtab to customize built-in, standard NetSuite buttons. (See Working with Standard
Buttons for details.) Use the Custom Actions subtab to create or modify custom buttons you have
associated with client SuiteScripts. (See Working with Custom Buttons for details.)
Also note that you can use point-and-click customization to translate the button labels for both
standard and custom buttons. For details, see Translating Buttons to Other Languages.
SuiteBuilder
Creating Custom Entry and Transaction Forms
103
Note: You can also use SuiteScript to hide and rename buttons. See the help topic Button IDs
for a list of standard buttons that are supported in SuiteScript. Additionally, you can use the
Remove Button Action action in SuiteFlow to conditionally hide buttons from specific users or
when a record is in a certain state.
Important: Customizing the Save, Edit, Cancel, Back, and Reset buttons is not supported in
SuiteScript or in point-and-click customization.
After you have configured your buttons, you should configure the printing fields. See Configuring
Printing Fields.
Working with Standard Buttons
Use the following steps to configure standard buttons through point-and-click customization.
To customize standard buttons:
1. On the Custom Form page, go to Actions > Standard Actions.
2. In the Label field, enter a UI label for the button.
3. In the Show column, select whether you want the button to appear or to be hidden on the form.
Note that buttons are shown by default. To hide a button, clear the box next to the button.
4. In the Display As column, choose Button to display the button as an inline button. Choose Menu
if you want the button to appear as an action in the More Actions menu or as a menu item in a
button group. See Understanding Button and Action Layout for more details.
5. Click Save.
Working with Custom Buttons
You can add custom buttons to forms to execute client SuiteScript. Note that for the Custom Actions
subtab to appear, you must have the Client SuiteScript feature enabled in your account.
Also note that you must have already added the client SuiteScript file to the Custom Code subtab on
the form. See Associating Custom Code (Client SuiteScript) Files With Custom Forms for details.
The primary object used to encapsulate custom buttons is nlobjButton. For more information, see the
help topic nlobjButton.
Important: Custom buttons do not appear when a record is in View mode. Custom buttons
appear only when a record is in Edit mode.
To add a custom button to associate with client SuiteScript:
1. On the Custom Form page, choose Actions > Custom Actions.
2. In the Label field, enter the UI label for the button.
Although you can enter up to 99 characters, you should keep button names brief to save space.
3. In the Function field, enter the name of the function you want executed when the button is
clicked. The function can exist in your client SuiteScript file or any library file you have attached
to the Custom Code subtab.
4. In the Display As column, choose Button to display the button as an inline button. Choose Menu
if you want the button to appear as an action in the More Actions menu. Custom buttons, when
changed to Menu, are grouped in the More Actions menu.
SuiteBuilder
Creating Custom Entry and Transaction Forms
104
5. Click Save.
Understanding Button and Action Layout
On the Action subtab, use the Display As list to customize the layout of a button or action. (See the first
figure below.)
When you first click the Actions subtab, the display type for each action defaults to either Button or
Menu. Button means that the action displays as a button that can be clicked on the top and bottom of
a form. Menu means that the action displays as an action in the More Actions menu, or as a menu item
in a button group (See the second screenshow.)
In the case of certain buttons such as the Save & buttons (Save & New and Save & Print, and so on), the
display type of Menu means that they display as an item in a button group. (See the following figure.)
Menu does not mean the button displays as an item in the More Actions menu.
Actions are grouped in sub-groups represented from left to right. Core actions such as Save appear
as buttons and appear in the left-most group. Functional buttons (actions specific to a record) are in a
middle group, and More Action actions are in the right-most group.
SuiteBuilder
Creating Custom Entry and Transaction Forms
105
Also note, if you choose to display a custom button as Button, it appears inline in front of the Create
New button (see figure). If you choose to display both standard and custom buttons as an action in the
Actions menu, the action appears at the top of the Actions list.
Translating Buttons to Other Languages
If you have the Multi-Language feature enabled, you can provide custom translations of standard and
custom buttons on your forms. Note, however, you must have the Multi-Language feature enabled in
your account to translate your buttons into multiple languages.
Note: To enable the Multi-Language feature, go to Setup > Company > Enable Features. On the
Company subtab, check the Multi-Language box, and then click Save.
To provide a custom translation for a button, be sure you have logged into NetSuite in the language
you want to translate to, navigate to the custom form page, click the Actions subtab, and then perform
the translation in place using the Label field.
Configuring Printing Fields
(Transaction Forms Only)
On the Printing Fields subtab, you can customize the way your form appears when printed. The
Printing Fields subtabs displayed represent the different areas of a printed form.
To configure how each section of your printed form displays:
1. For all subtabs:
■ In the Print/Email column, check the boxes next to fields you want to appear on printed and
emailed forms. Clear the boxes for fields you do not want to appear on printed and emailed
forms.
■ In the Label column, edit the labels of the fields as desired.
Note: If you change the label for a field on the Printing Fields subtab, the label is also
automatically applied to the field on the Screen Fields subtab.
2. For the Body and Columns subtabs:
■ In the Width column, enter the width for transaction column fields appearing on your printed
and emailed forms.
Note: To change the width of custom body fields, you must make the change on
the Custom Form page. The width you set on the custom field does not affect printed
transaction body fields.
■ Rearrange the fields as desired. Drag and drop each line item to the desired position.
3. Click Save.
SuiteBuilder
Creating Custom Entry and Transaction Forms
106
Important: If the Advanced Taxes feature is enabled in your account, or if you are using
NetSuite OneWorld, which requires Advanced Taxes, you cannot directly rename tax fields on a
custom transaction form. To change names of tax fields that display on the custom form, you
must rename them in the appropriate languages on the Field Naming subtab of the Set Up
Taxes page, at Setup > Accounting > Taxes > Set Up Taxes (Administrator). See the help topic
Customizing Tax Fields on Transaction Forms.
Of the fields on the header subtab, some represent actual values that are inserted and some represent
labels of field data that is inserted. For the fields that are values, the defaults from the company setup
page are used unless overridden on the printing fields subtab.
Following are the available fields listed by type:
Values:
■ Company Name
■ Company Phone
■ Company URL
■ Form Title
■ Page Number
Labels:
■ Business Number
■ Acct. No.
■ Date
■ Doc. No.
■ Bill To
■ Ship To
After you have configured the fields or screens, you should configure the printing fields. See
Configuring Lists.
Configuring Lists
Note: This task applies to entry forms only.
On the Printing Fields subtab, you can customize the way your form appears when printed. The
Printing Fields subtabs displayed represent the different areas of a printed form.
On the Lists subtab, you can customize which lists are available on each subtab of the form.
To configure lists for each available tab:
1. In the Show column, check the boxes for the lists you want to display on the form. Clear the
boxes for the lists you do not want to display.
2. In the Label column, edit the headings for the lists as desired.
3. Rearrange the lists as desired.
■ Move each list to the desired subtab. Click Move Elements Between Subtabs > Lists. For
details, refer to Moving Fields and Lists Between Subtabs.
■ Rearrange the order of the lists on each subtab. Click the desired line and drag and drop it to
the desired position or click Move to Top / Move to Bottom.
SuiteBuilder
Creating Custom Entry and Transaction Forms
107
4. Click Save.
After you have configured the lists, you should configure the borders and placement. See Configuring
Borders and Placement.
Configuring QuickViews
For both entry and transaction forms you use the QuickViews tab to customize which fields appear in
your QuickViews. The following screenshot shows an example of a QuickView for a Phone Call record.
Body fields and custom fields are supported in QuickViews. However, you cannot add sublist fields.
Also, the maximum number of fields you can add to a QuickView is 20.
Note that you can also configure QuickViews on forms associated with custom records. See Configuring
QuickViews for Custom Records for information.
Important: Configuring QuickViews on entry and transaction forms is easy if you have
deployed any upgraded forms in your account. See Configuring QuickViews for Upgraded
Forms for information.
Important: If you have not upgraded and deployed the forms in your account, you can
still indirectly affect which fields appear in a QuickView, however, the process is not as
straightforward. The benefits of QuickView customization are meant to come with upgraded
forms. If you have not upgraded the forms in your account, yet you would like to update your
QuickViews, see Configuring QuickViews for Non-Upgraded Forms.
Configuring QuickViews for Upgraded Forms
QuickView customization is easy if you have upgraded the custom forms in your account to include
field groups and all other look-and-feel enhancements introduced in NetSuite in a previous release.
After a form has been upgraded, a QuickView configuration tab appears on the form customization
page. You use this tab to add, remove, and rearrange the fields in a QuickView.
To configure QuickViews for upgraded entry and transaction forms:
1. Go to Customization > Forms > Entry Form [or Transaction Form].
2. Click the Customize link next to the Standard version of the form.
If you already have an existing custom form, click Edit next to this form.
Important: If you are not sure if the form you want to work with has been upgraded,
see How do I tell if the custom forms in my account are upgraded?
3. On the Edit Custom Entry [or Transaction] Form page that appears, click the QuickView tab.
SuiteBuilder
Creating Custom Entry and Transaction Forms
108
If the page does not have a QuickView tab, this means that the form you want to work with has
not yet been upgraded/deployed.
4. In the Field Description column, add the fields you want to appear in the QuickView for records
that use this form. After adding each new field, be sure to click the Add button (see figure below).
If you want to remove a field, click the X icon that appears to the far right side of the field.
5. Check the Form is Preferred box.
6. Click Save when you are finished configuring your QuickView fields.
Please be aware of these additional guidelines when customizing your QuickViews:
■ If you customize a form's QuickView and select Store Form with Record, these customizations
supersede any customization made to a form set to Form is Preferred.
■ During form customization, if you make field updates on the Fields tab, you must save the form
customization page before those updates appear on the QuickView tab.
■ On the Fields tab, if a field is not set to Show (see the following screenshot), the field does not
appear in the QuickView, even if you add the field on the QuickView tab. For example, in the
following screenshot, the Priority field is not set to Show. This means that even if Priority is added
on the QuickView tab, the Priority field does not appear in the QuickView of a Phone Call record.
■ The fields appearing on the QuickView tab match the fields listed in the Description column on the
Fields tab. However, in the QuickView it is a field's custom label that appears.
■ Fields that appear on a record only when the record is in Edit mode do not appear in QuickViews.
Fields that appear on a record when it is in View mode do appear in QuickViews.
The QuickView list (on the QuickView configuration tab) includes all of the fields that are on a
record. The list includes fields that appear on a record when it is in View mode and Edit mode. If
you add a field to your customized QuickView that appears only when the record is in Edit mode,
the field does not appear in the QuickView when you hover over links to this record. Although there
are not many fields in NetSuite that appear on records only when they are in Edit mode, this is
one thing to be aware of. If you add a field to a QuickView, yet the field does not appear when the
QuickView displays, it may be that you have added a field that is visible only when the record is in
Edit mode.
Configuring QuickViews for Non-Upgraded Forms
If you have not upgraded the custom forms in your account to include the look-and-feel changes
introduced in a previous version, you cannot directly edit or customize the default QuickView fields
assigned by NetSuite. Non-upgraded forms do not include the QuickViews configuration tab on entry
and transaction form customization pages.
You can, however, indirectly affect which fields appear in a QuickView by creating an equivalent
upgraded form. You can then use the QuickViews tab on the newly upgraded form to make QuickView
customizations. You must then set this form to Form is Preferred. By doing do, even the records in
your account that use the non-upgraded version of the form show the QuickView customizations of the
upgraded form.
Also note the following when attempting to customize QuickViews for non-upgraded forms:
■ A non-upgraded stored form shows the customizations of an upgraded preferred form or standard
form if there is no preferred form.
■ Even if you click Store Form with Record on a non-upgraded form, the QuickViews that appear for
records using this form show the QuickView customizations (if any) on the upgraded form.
■ If a standard form is marked as preferred, then all Quickviews for both non-upgraded and upgraded
forms show the NetSuite default QuickView fields for that record type.
SuiteBuilder
Creating Custom Entry and Transaction Forms
109
Configuring QuickViews for Custom Records
Unlike built-in standard records, there is no default QuickView for custom records. Because the fields
on every custom record are unique, there is no way for the system to set default QuickView fields for all
custom records. Therefore, you must create custom record QuickViews yourself by following the steps
below.
To configure QuickViews for custom records:
1. Go to Customization > Lists, Records, & Fields > Record Types.
2. Select the custom record type you want to display QuickViews.
3. On the Edit Custom Record Type page, click the Forms tab.
4. Click the Customize link next to the standard version of the custom record form.
If you already have an existing custom form, click Edit next to this form.
5. On the page that appears, click the QuickViews tab.
6. In the Field Description column, add the fields you want to appear in the QuickView for this
custom record type. After adding each new field, be sure to click the Add button.
If you want to remove a field, click the X icon that appears to the far right side of the field.
7. Click Save when you are finished configuring your QuickView fields.
If you go to the list view of this custom record type, you can hover over a record to see the newly
configured QuickView. The figure below shows the QuickView for the fixed assets custom record.
How do I tell if the custom forms in my account are upgraded?
Records that use upgraded forms have all fields organized into field groups. (If you are not sure what
field groups look like, see Configuring Field Groups.)
If you have noticed any records in your account with a field group layout, then at least one form in your
account (the form associated with that record type) has been upgraded.
If you are still not sure if any of the forms in your account have been upgraded, Go to Customization >
Forms > Entry Forms [or Transaction Forms]. If any of the forms in your account have been upgraded,
you see the Upgrade Status message at the top of your entry or transaction form page (see figure
below). If no forms have been upgraded, the message title says Information and provide details on the
form layout enhancements introduced in NetSuite Version 2010 Release 2.
If forms in your account have been upgraded and you want to see specifically which forms, click the
Return to Upgrade Checklist link.
The page shows specifically which forms have been upgraded and that their upgrades have been
Deployed into NetSuite. Forms that have not been upgraded/deployed have Skip Upgrade | Deploy
Form links.
To customize a QuickView for any form, the form must be Deployed.
Associating Custom Code (Client SuiteScript) Files With
Custom Forms
In the Custom Code subtab, define any existing client SuiteScript files to use with this form. When the
script's executing function is called, the actions defined within the script (as well as any built-in NetSuite
SuiteBuilder
Creating Custom Entry and Transaction Forms
110
actions for that form type) are performed. For example, if your form calls a Page Init function, the
actions defined by that script, as well as any predefined NetSuite actions, are performed prior to the
page loading.
Important: Before associating client SuiteScript files with a form, you must first create the
script. For information on creating client SuiteScripts, see the help topic Client Scripts in the
NetSuite Help Center.
Note that, if you choose, you can add a custom button to the form to trigger the client script. See
Working with Custom Buttons for steps on adding custom buttons to forms.
Change to Required Permission for Attaching Scripts to Custom
Entry and Transaction Forms
As of Version 2016 Release 1, users who have the Custom Entry Forms or Custom Transaction Forms
permission, but who do not have the SuiteScript permission, can no longer access the Custom Code
tab of custom forms. Previously, these users could edit the Custom Code tab of a form record to attach
a script to the form.
Now users must have at least the Edit level of the SuiteScript permission to attach a script to a custom
form by editing the Custom Code tab of the form record. For users with the Edit or Full level of the
SuiteScript permission, the Custom Code tab is displayed and is fully editable. Users with the View or
Create level of the SuiteScript permission can see the Custom Code tab, but cannot edit it. For users
who do not have SuiteScript permission, the Custom Code tab is not visible.
To associate client SuiteScript files with a form:
1. In the Script File field, select the client SuiteScript file that contains the desired scripts for this
form.
Note that you must upload your file to the file cabinet before you can select it.
2. In one or more of the client event type fields, enter the names of the functions you want to
execute. When entering function names, do not include parentheses or arguments. For example,
type sampleFunction for a function that appears as sampleFunction(param1, param2) in your
SuiteScript file.
■ In the Page Init Function field, enter the name of the executing function to be called when
this form is first loaded.
■ In the Save Record Function field, enter the name of the executing function to be called
when this record is saved.
■ In the Validate Field Function field, enter the name of the executing function to be called
when a field on this entry form is changed.
■ In the Field Changed Function field, enter the name of the executing function to be called
when a change made to a field is accepted.
■ In the Post Sourcing Function field, enter the name of the function that runs on Post
Sourcing events. These events occur following a field change after all the field's child field
values are sourced from the server. This enables fieldChange style functionality to occur after
all dependent field values have been set.
■ In the Line Init Function field, enter the name of the function that runs on Line Init events.
These events occur when an existing line is selected.
■ In the Validate Line Function field, enter the name of the function that runs on Validate Line
events. These events occurs prior to a line being added to a sublist (inlineeditor or editor
sublists only). It can be thought of as the saveRecord equivalent for sublist line items.
SuiteBuilder
Creating Custom Entry and Transaction Forms
111
■ In the Validate Insert Function field, enter the name of the function that runs on Validate
Insert events. These events occur when you insert a line into an edit sublist. The UI equivalent
of this event is when a user selects an existing line in a sublist and then clicks the Insert
button. Note that returning false on a validateInsert blocks the insert.
■ In the Validate Delete Function field, enter the name of the function that runs on Validate
Delete events. These events occur when you try to remove an existing line from an edit
sublist. Returning false blocks the removal.
■ In the Recalc Function field, enter the script name to be called from the attached script file.
This script is called when a line item is added. For example, after entering the information
you add an item to a transaction.
3. If your client SuiteScript file references any functions in a library file, add the library files in the
Library Script File list. (You must click the Add button to add your file.)
4. Click Save.
Defining Preferred Forms
Setting preferred forms for your employees lets you control the entry and transaction forms employees
use to enter data. This maintains consistency in your company and enables you to capture the
information that is most important to your business.
In NetSuite, there are three places where form preferences can be defined.
■ On the Form: When you create or edit a custom form, you can check the Form is Preferred box to
set the current form as the default form for all users where role form preferences are not defined.
In the Roles tab, you can also define the form as preferred for specific roles.
■ On the Custom Forms page: On the custom forms page at Customization > Forms > [Forms], you
can check the Preferred box for any form you want to set as the default form for all users where
role form preferences are not defined.
■ On the Manage Roles page: Administrators can define form preferences for specific roles at Setup
> Users/Roles > Manage Roles > Edit [Role]. In addition to setting preferred forms for a role, you can
also restrict access to the preferred form.
For custom records, you can choose a preferred form on the Forms subtab or set preferred forms for
specific roles on the Permissions subtab. The preferred form you set on the Permissions subtab takes
precedence over the preferred form set on the Forms subtab.
For example, you set Custom Form A as the preferred form on the Forms subtab. On the
Permissions subtab, you set the default form for the Sales Rep role to Custom Form B. When a sales
rep creates a new record, Custom Form B is selected by default.
Note: In some cases with transactions, the form that the users choose is selected
automatically the next time they create a transaction of that type for their current NetSuite
session. For example, users who go to the Invoice Customers page see the Form list set to the
form they used the last time they invoiced customers. When users begin a NetSuite session,
the preferred form is selected by default on the transaction.
To set the preferred form for a specific role:
1. Go to Setup > Users/Roles > Manage Roles.
SuiteBuilder
Creating Custom Entry and Transaction Forms
112
2. Click Edit next to the role for which you want to set form preferences.
Important: Standard roles cannot be edited. If you want to define new settings for
one of these roles, click Customize next to the role, enter a name for your custom role
and then set the desired custom settings. You must then assign this custom role to the
appropriate users.
3. Click the Forms subtab.
4. Click the subtab for the section you want to set preferences for.
■ Transaction : set defaults for cash refund, cash sale, credit memo, invoice, estimate,
opportunity, purchase order, return authorization and sales order transaction forms.
■ Entity : set defaults for contact, customer, lead, prospect, employee, project, partner and
vendor entry forms. When you define preferences for Entities, you can set a separate
preferred form for each Customer subtype in the corresponding fields at the top of the Entity
subtab — Lead, Prospect and Subcustomer.
■ CRM : set defaults for phone call, campaign, case, event, solution and task entry forms.
■ Item : set defaults for inventory part, non-inventory part, service, other charge, description,
subtotal, discount, markup, group, kit, assembly and payment item entry forms.
5. Set the form defaults. Note that for some roles, you cannot modify all of these settings.
■ In the Enable column, clear any boxes for forms you do not want this role to have access to
(not available for Customer Center roles).
■ Check the box in the Preferred column next to any form you want to be set as the preferred
form for this role.
■ If you want this form to be the only form available to this role, check the box in the Restricted
column (not available for Customer Center roles).
The preferred form settings here override any settings on the Custom Forms page.
Note the following about marking a transaction or CRM form Preferred for the Customer Center
role:
■ External forms, meaning forms with names appended with (External), can be marked
preferred for the Customer Center roles, but not for other roles.
■ Forms that are not external cannot be marked as preferred for Customer Center roles, so
they are not listed on the Forms tab of Customer Center role records.
Warning: If you set preferred forms and do not restrict the forms, your employees can
still change the form they use when entering transactions or records.
6. Click Save.
Defining Preferred Entry and Transaction Forms
To specify which roles should have this form set as preferred, on the Roles subtab for the form, check
the Preferred box for roles that should have this form set as preferred. Preferred forms are selected by
default in the Custom Form field when a transaction or record is created.
Note the following about marking an entry or transaction form Preferred for the Customer Center role:
■ External forms, meaning forms with names appended with (External), can be marked Preferred for
Customer Center roles, but not for other roles. The Customer Center role is available on the Roles
subtab only for external forms.
■ Forms that are not external cannot be marked Preferred for Customer Center roles.
SuiteBuilder
Creating Custom Entry and Transaction Forms
113
■ When a non-online order form is marked Preferred for Customer Center, it is saved as the form
for the order. However, an online form is not saved as the form for an order, even if it is preferred.
Instead, the preferred non-online order form is used.
Note: You can also define preferred forms from the Manage Roles page. Restrictions to a
form must be defined from the Manage Roles page. For more information, see the help topic
Setting Default Forms for Roles.
Adding Disclaimers to Transaction Form Footers
You can add a footer to the bottom of your standard transaction forms. Footers can be used to add
text and space for a variety of reasons such as:
■ Add a salutation or company slogan
■ Familiarize customers with a disclaimer, company policy, or procedure
■ Allow space for an approval signature
Footers print at the bottom of your transaction forms.
You can add a disclaimer to your standard forms on the Printing & Fax Preferences page.
With a disclaimer added to the bottom of your forms, you can familiarize customers with your
company's policies and procedures.
To add a disclaimer to standard transaction forms:
1. Go to Setup > Company > Preferences > Printing & Fax.
2. Click the Printing subtab.
3. Enter a disclaimer or other message in one or more of the disclaimer fields. Disclaimers can
have up to 4000 characters and appear at the bottom of the form indicated.
■ Sales Form Disclaimer – Standard sales forms.
■ Purchase Form Disclaimer – Standard purchase forms.
■ Statement Disclaimer – Standard statements.
■ Payment Receipt Disclaimer – Standard payment receipts.
■ Packing Slip Message – Standard packing slips.
■ Return Policy – Return forms.
■ Remittance Slip Message – Remittance slips.
4. When you have finished, click Save.
For the disclaimers to appear, you must print your forms using HTML. To set this preference, go to
Home > Set Preferences > Transactions tab. Check the Print Using HTML box and click Save.
Disclaimers defined here are not used in printed forms based on advanced PDF/HTML templates. To
include disclaimers on this kind of printed form, you can add disclaimer text to the template on which
the printed from is based.
You can also add disclaimers to specific forms using transaction form customization. For more
information on customizing transaction forms, read Custom Forms.
Customizing Multiple Page Transaction Forms
You can create a custom layout to customize how your multiple-page transaction forms look.
SuiteBuilder
Creating Custom Entry and Transaction Forms
114
You can add page numbers and header information to subsequent pages of your PDF transaction
forms.
To add page numbers to your PDF transaction forms:
1. Go to Customization > Forms > Transaction Forms.
2. Click Customize next to the kind of form you want to change.
3. Click Printing Fields.
4. Click Header.
5. Check the box in the Print/Email column next to Page Number.
Page number appear beginning on the second page of your transaction.
6. In the Label column you can change the way the numbers appear on your transactions.
For example, if you wanted the numbers to appear 2/3, you would replace Page {1} of {2} in
the label field with {1}/{2}. The entries {1} and {2} act as placeholders for your page number
formatting.
7. When you have finished, click Save.
Your printed PDF transaction forms now include page numbers for multiple pages.
To add more header information to multiple page transaction forms:
1. Go to Customization > Forms > Transaction Form PDF Layouts (or Transaction Form HTML
Layouts).
2. Click Customize next to the kind of layout you want to change.
3. On the Border & Placement subtab, check the boxes in the Show on Addl. Pages column for
each field you want to appear on subsequent transaction pages.
4. When you have finished, click Save.
Your printed PDF transaction forms now include additional header information for multiple pages.
Linking Transaction Forms
On the Linked Forms subtab, you can control which transaction form is used when you convert one
transaction into another. You can create a chain of transaction forms that mirror your business
workflow.
For example, a company has three custom sales order forms that are each used for a certain set of
items they sell. When one of these sales orders is used to create a picking ticket, the specific picking
ticket form created for each type of sales order is used. The employee creating the picking ticket
does not have to search the custom form list to find the proper picking ticket form.
To set up this form workflow, the company administrator edits the custom sales order form, and
selects the picking ticket form on the Linked Forms subtab.
When you convert a transaction you created with a custom transaction form, the custom form set on
the Linked Forms subtab is selected by default. In the example above, when one of the sales orders is
used to print a picking ticket, the custom picking ticket form selected on the sales order form is used by
default.
To set up linked forms:
1. Open the list of forms that contains the form you want to create a linkage from.
2. Click Customize or Edit next to the form you want to link from.
SuiteBuilder
Creating Custom Entry and Transaction Forms
115
3. Enter a name for your custom form.
4. Click the Linked Forms subtab.
A list of the transactions that you can convert to from the type of transaction form you are
customizing is shown. For example, if you are customizing an estimate form, you can set linkages
for cash sales, invoices, and sales orders.
5. In the Custom Form column, select the standard or custom form for each transaction.
If you want to link to the preferred form, do not select a linked form for that transaction type.
6. Click Save.
When the transaction is converted, the correct transaction form is used automatically.
Note: In the event that the person is assigned a role that is restricted to use only specific
transaction forms, the forms set for that role take precedence over the forms you have set on
the Linked Forms subtab.
Transaction Form Printing Preferences
NetSuite includes company-level and user-level preferences that impact how transaction forms are
printed.
Transaction Forms and Company Printing Preferences
Company printing preferences are defined at Setup > Company > Printing & Fax. The company
preferences that impact printed transactions are on the Printing subtab of this page, in the following
sections:
■ Transactions – includes some specialized printing preferences for specific transaction types, as well
as general printing preferences for all transaction types.
□ For more information about the general printing preference Print Transactions Form Landscape,
see Setting Transaction Forms to Print in Landscape.
□ For information about which of these preferences are supported for transactions associated
with custom forms that use advanced templates, see Advanced Templates Support for Company
Printing Preferences.
■ Advanced PDF/HTML Printing – includes preferences that can be enabled to use advanced
templates to format printed Item Detail Statements, Item Labels, and Mailing Labels.
■ Check Printing – includes preferences for printed checks using basic layouts.
■ PDFs – includes general preferences that apply to all printed records that use basic layouts except
reports.
For more details about the preferences available in these sections, see the help topic Setting Printing
and Fax Preferences.
Setting Transaction Forms to Print in Landscape
You can set your transaction forms to print in landscape format on the Printing and Fax Preferences
page. When you print in landscape format, the long edge of the page is on top and the short edge is on
the side.
By printing in landscape format, you can have wider columns on your transaction forms to include
more detailed information for your customers.
SuiteBuilder
Transaction Form Printing Preferences
116
To set transaction forms to print in landscape format:
1. Go to Setup > Company > Preferences > Printing & Fax.
2. On the Printing subtab, check the Print Transaction Forms Landscape box.
3. Click Save.
Note: To utilize this preference, you must use a standard transaction PDF layout. Use either a
standard transaction form with a standard transaction PDF layout or use a custom transaction
form associated with a standard PDF layout.
To print transaction forms, go to Transactions > Other > Print Checks and Forms. Alternatively, click
Print on any transaction page as you save the transaction.
If you print using HTML, you can override the landscape format by changing your printer settings when
you print the form.
Transaction Forms and User Printing Preferences
You can set a variety of preferences at Home > Set Preferences to apply to your own instance of
NetSuite only. The user preferences that impact printed transactions are on the Transactions subtab of
this page.
■ Print Using HTML – Check this box if you prefer to print transaction forms in HTML rather than the
default of PDF.
■ Transaction Email Attachment Form – Choose PDF if you prefer to send email attachments of
transactions in PDF rather than HTML.
■ Horizontal Print Offset – Enter a positive number in inches to move text in the printed transaction
form to the right. Enter a negative number to move text to the left. This setting applies only to basic
layouts.
■ Vertical Print Offset – Enter a positive number in inches to move text in the printed transaction form
lower. Enter a negative number to move text higher. This setting applies only to basic layouts.
The PDF preferences on the SuiteAnalytics subtab only apply to printed reports and searches.
Creating Custom Subtabs
Custom subtabs are used to organize custom fields on your transaction, entity, CRM, and item records.
You should first create custom subtabs and then assign any custom fields to the custom subtabs.
For each custom subtab, you can define an existing subtab as the parent subtab. This parent-child
definition enables you to include an additional layer of information for your subtab categories.
Important: Be aware that for custom subtabs to appear on a record, you must assign a field
to the subtab.
To create a custom subtab:
1. Go to Customization > Forms > Subtabs.
2. Click the tab for the type of record for which you want to create a new subtab.
The following options are available:
■ Transaction — subtabs for cash refund, cash sale, credit memo, estimate, invoice,
opportunity, purchase order, return authorization, sales order, and other transaction records.
■ Entity — subtabs for customer, project, vendor, employee, other name, contact, partner, and
group records.
SuiteBuilder
Creating Custom Subtabs
117
■ Item — subtabs for inventory, non-inventory, group, other charge, assembly/bill of materials,
kit/package, service item and other item records.
■ CRM — subtabs for task, phone call, event, case, campaign, solution, and other CRM records.
3. Enter the name for the subtab in the Title field.
4. If desired, enter translations for this name in the Translation field.
■ Before you can add translations, you need to select translation languages at Setup >
Company > General Preferences, on the Languages subtab. This subtab lists both systemsupported languages that can be used for the NetSuite user interface (and are available at
Home > Set Preferences), and additional languages that can used for website translations
only (and are not available at Home > Set Preferences). You should only enter translations for
system-supported languages, because these are the only languages that can be displayed in
the user interface. For details, see the help topic Configuring Multiple Languages.
■ The maximum length for a custom subtab's translation is 50 characters.
5. If desired, designate this subtab as a child of an existing subtab in the Parent field, by selecting
an existing subtab from the list.
■ This list consists of any standard subtabs associated to the selected record type as well as any
custom subtabs that you have defined for that record type.
■ After you have defined it as a child subtab, a custom subtab is not available to be selected
as a parent for another custom subtab. In other words, you cannot create a child-grandchild
relationship.
6. Click Add.
7. Repeat these steps for each subtab you want to create.
8. Click Save.
Rearrange your custom subtabs by using the Move Up, Move Down, Move To Top, and Move To
Bottom buttons. Insert new subtabs using the Insert button.
Now, when you create a custom field, you can select your new subtab in the Subtab field. After
assigning the custom field to the subtab, the subtab then displays on the record.
Note: You can rename a custom subtab at any time by going to the appropriate tab on the
Custom Subtabs page (Transaction, Entity, Item, CRM), selecting the subtab name and editing it,
clicking Done, and saving the Custom Subtabs page.
Creating Custom Note Forms
The note form displays as a popup window when a user adds a note to a record. You can vary note
form fields, by hiding standard fields, adding custom fields, and changing field order. You can configure
note form actions by setting actions to display as buttons or menus, changing labels, hiding standard
actions, and adding custom actions. You also can attach form-level script to custom note forms.
To add a custom note form, go to Customization > Forms > Entry Forms, click the Customize link for the
standard note form, and make changes on the Edit Custom Entry Form page.
The note record has a type of Other Record, so its custom fields must be of the type Other Custom
Field.
To create a custom field that can be displayed on custom note forms, go to Customization > Lists,
Records, & Fields > Other Custom Fields> New. On the New Other Custom Field page, select a Record
Type of Note. After you save this type of custom field, the field is displayed by default on all custom
note forms. You can clear the Show box for the custom field on any custom note form where you do
not want it displayed.
SuiteBuilder
Creating Custom Note Forms
118
Using Custom Note Forms
The standard note form is used by default for all note dialogs. If at least one custom note form has
been created in an account, this standard note form includes a Custom Form list where the user can
choose to use a custom form for a note dialog. You cannot remove this list from the standard note
form as long as any custom note form exists.
You can set a custom note form to be used by default for the note dialog. You can either check the
Preferred box for the custom note form in the Entry Forms list, or edit the custom note form and check
the Form is Preferred box. If you want to allow users to choose among the standard note form and
custom note forms each time they enter a note, you should leave the Custom Form field displayed on
custom note forms. To ensure users do not change the note form to anything other than the preferred
custom form, on that form you can clear the Show box for the Custom Form field.
Customizing Address Forms
Custom address forms can be used to support address format localization for international customers,
and unique business requirements for all customers. A standard address form is provided for all
accounts and assigned by default to all countries. Account administrators and other users with the
Custom Address Form permission can create as many customized versions of the address form as
needed, and assign each custom address form to one or more countries.
When users view or edit addresses on entity, transaction, subsidiary, company information, location,
and workplace records, the custom address form assigned to the selected country is the one that
displays in the popup address window.
Custom address forms support the following capabilities:
■ Multiple custom address forms supported per account
■ Assignment of custom address forms to countries
■ Addition of custom fields to custom address forms (For details, see Creating Custom Address
Fields.)
■ Rearrangement of standard and custom address fields on forms
■ Hiding non-required address fields
■ Setting address fields to be mandatory
■ Setting address fields display type to be normal, inline text, or disabled
SuiteBuilder
Customizing Address Forms
119
■ Customized labels for address fields
■ Customized formatting for addresses displayed in UI and printed on shipping labels
■ Form-level client scripting
To create a custom address form:
1. Go to Customization > Forms > Address Forms, and click the Customize link for the standard
address form.
2. In the body area of a custom address form record, you can define a name for the form, and
modify the template representing how addresses are rendered in the user interface and on
printed shipping labels.
In the Address Template field, address fields are represented by the template field IDs listed on
the Fields subtab.
3. On the Fields subtab, you can:
■ Rearrange fields on the form, using the Move to Top and Move to Bottom buttons, and the
Column Break, Space Before, and Same Row as Previous fields.
■ Hide fields by clearing the Show box.
The Show box cannot be cleared for fields that are required.
■ Make fields required by checking the Mandatory box.
Warning: The Country field is always mandatory, because the value for this field
determines the address form to be displayed.
■ Set fields’ display type to inline text or disabled.
■ Modify field labels.
■ Click the New Field button to add a custom field to the address form. For details, see Creating
Custom Address Fields.
4. On the Custom Code subtab, you can attach a script file containing functions for any of the
supported SuiteScript client events.
For information about creating scripts to be attached to custom forms, see the help topics Client
Scripts and Client Event Types.
5. On the Country subtab, you can assign the custom address form to one or more countries.
A multi-select list of countries is available when you click the icon to the right of the Country field
on this subtab. For more information, see Country-Specific Address Forms.
6. Click Save.
Change to Required Permission for Attaching Scripts to Custom
Address Forms
As of Version 2016 Release 1, users who have the Custom Address Form permission, but who do
not have the SuiteScript permission, can no longer access the Custom Code tab of custom forms.
Previously, these users could edit the Custom Code tab of an address form record to attach a script to
the form.
Now users must have at least the Edit level of the SuiteScript permission to attach a script to a custom
form by editing the Custom Code tab of the form record. For users with the Edit or Full level of the
SuiteScript permission, the Custom Code tab is displayed and is fully editable. Users with the View or
Create level of the SuiteScript permission can see the Custom Code tab, but cannot edit it. For users
who do not have SuiteScript permission, the Custom Code tab is not visible.
SuiteBuilder
Customizing Address Forms
120
Scripting Billing and Shipping Addresses
You can use SuiteScript to create a new address subrecord for an entity and then use that address for
custom billing and shipping addresses on transactions. For more information, see the following.
■ Creating a New Address
■ Creating a New Custom Shipping Address
■ Defining Address by Item Line
Creating Custom Address Fields
If you are an account administrator or have another role with the Custom Fields permission, you can
create a custom field to be included in one or more custom address forms.
To create a custom address field:
1. Click the New Field button on the Fields subtab of a custom address form record, or go to
Cusotmization > Lists, Records, & Fields > Other Custom Fields > New.
2. In the Record Type field, select Address.
3. Enter a label for the field and complete other body fields as desired.
4. On the Applies To subtab, choose whether to apply the address field to all custom address
forms or to selected custom address forms.
■ The default is to apply the field to all custom address forms.
■ If you choose the Apply to Selected Custom Address Forms option, select a custom form in
the Address Form list. Click Add to select multiple forms.
5. Complete fields on other subtabs as desired. For details, see the following:
■ Setting Display Options for Custom Fields
■ Setting Validation and Defaulting Properties
■ Setting Sourcing Criteria
■ Setting Filtering Criteria
■ Restricting Access to Custom Fields
6. Click Save.
Country-Specific Address Forms
Address forms formatted for certain countries are provided by the Country-Specific Address Forms
SuiteApp. When you use a country-specific address form, the system applies the address template to
both the user interface and printed forms.
Currently, custom address forms are available for the following countries:
■ Australia
■ Canada
■ New Zealand
■ United Kingdom
■ USA
When you view or edit addresses on records, the custom address form assigned to the selected
country is displayed in the popup address window. The country-specific address forms apply to the
following records:
SuiteBuilder
Customizing Address Forms
121
■ Entity (company, subsidiary, contact, vendor, employee. etc.)
■ Transaction
■ Location
■ Workplace
To use country-specific address forms, read the following topics:
■ Installing Country-Specific Address Forms
■ Setting Up Country-Specific Address Forms
Installing Country-Specific Address Forms
The Country-Specific Address Forms SuiteApp provides custom address forms for Australia, Canada,
New Zealand, United Kingdom, and USA.
To install the Country-Specific Address Forms SuiteApp:
1. Go to Customization > SuiteBundler > Search & Install Bundles.
2. In the Keywords field, enter Country-Specific Address Forms, or the bundle ID, 64313.
3. Click Search.
4. Click the Country-Specific Address Forms link in the Name column.
5. On the Bundle Details page, click Install.
For more information about installing SuiteApps, see the help topic Installing a Bundle.
The Country-Specific Address Forms SuiteApp is a managed bundle. After you install the SuiteApp, your
accounts are automatically upgraded when an update to the SuiteApp is available.
Important: When you first install the Country-Specific Address Forms SuiteApp, you must
assign each form to the appropriate country so that the system can get the correct address
template. Whenever the SuiteApp is updated, all country-specific custom address forms revert
to the default address template. You must reassign your custom forms to their respective
countries when an update occurs. This applies to all forms that use this feature. See Setting Up
Country-Specific Address Forms.
Setting Up Country-Specific Address Forms
Important: When you first install the Country-Specific Address Forms SuiteApp, you must
assign each form to the appropriate country so that the system can get the correct address
template. Whenever the SuiteApp is updated, all country-specific custom address forms revert
to the default address template. You must reassign your custom forms to their respective
countries when an update occurs. This applies to all forms that use this feature. Complete the
following procedure to set up the country-specific address forms after installation and after an
update of the SuiteApp.
To assign a country-specific address form to the appropriate country:
1. Go to Customization > Forms > Address Forms.
2. For each custom address form, do the following:
a.
Click the Edit link next to the appropriate custom form:
■ SuiteL10n Australia
SuiteBuilder
Customizing Address Forms
122
■ SuiteL10n Canada
■ SuiteL10n New Zealand
■ SuiteL10n United Kingdom
■ SuiteL10n USA
b.
On the Custom Address Entry Form page, click the Country subtab.
c.
Enter the appropriate country in the Country field.
d.
Click Save.
Custom Sublists
You can add a custom sublist to any transaction or entry form, including forms for custom record
types. Custom sublists use results from a selected saved search of the form record type or a related
record type. The custom sublists use the saved search results to present information related to the
record you are viewing. The following are examples:
■ You could attach a customers sublist on customer records listing other customers with the same
sales representative. The sublist is based on a customers search with a filter of Sales Rep.
■ You could attach an employees sublist on employee records listing other employees with the same
supervisor. The sublist is based on an employees search with a filter of Supervisor.
■ You could attach a transactions sublist on customer records listing transactions for that customer,
based on a transactions search with a filter of customer name.
The creation of custom sublists is controlled by the Custom Sublists permission. You can assign this
permission to a custom role on the Setup subtab of the role record.
For details about creating saved searches to be used as custom sublists and applying custom sublists
to records, see:
■ Saved Searches for Custom Sublists
■ Applying Custom Sublists to Standard Records
■ Applying Custom Sublists in SDF-Enabled Accounts
■ Applying Custom Sublists to Custom Record Types
■ Custom Child Record Sublist Creation with SuiteScript
Saved Searches for Custom Sublists
To be used for a custom sublist, a saved search must have at least one list/record type field defined as
an available filter. Custom sublist results are joined to the form record based on this field's values. That
is, the first item listed on the Available Filters subtab of the saved search must be a list/record type. The
custom sublist results that are displayed on each form have the same value for the available filter field
as the record currently displayed on the form.
For example, in a saved search for a transactions sublist on a customer record, you could set an
available filter of Name (the customer name) so that all transactions for the customer show in the
sublist.
For details about available filters, see the help topic Selecting Available Filters for Saved Searches.
Be aware of the following when you choose a field to be the available filter for a custom sublist search:
■ If the saved search has more than one available filter, only the first one listed on the Available Filters
subtab is used to filter the custom sublist.
SuiteBuilder
Custom Sublists
123
■ The available filter field must be of the List/Record type, meaning it is displayed in the user interface
as a list. Constant value fields and numeric fields do not work.
Note that the searches you can select for custom sublists do not include searches where the type of
the first available filter is check box or date, because these types of fields do not work.
■ If the sublist represents a different record than the form record, the available filter field should
be a logical choice to produce joins with the form record. Many fields that are listed on a search's
Available Filters subtab are not logical choices for this type of join.
For example, in a saved search for a transactions sublist on customer record, it would not work
to set an available filter of Type. This choice would most likely result in no joins with the customer
record, and a blank sublist would display.
To be a good choice as an available filter, a field should identify a record type.
□ The filter field can be the same as the form record. For example, use the Name field for a
transactions sublist on a customer record that displays all of that customer's transactions.
□ Or, the filter field can be a field on the form record that is a list of records. For example, use
the Location field for a transactions sublist on a customer record that displays the customer's
transactions for a particular location only.
To create a saved search:
1. Go to Reports > Saved Searches > New Saved Search. Click the record type you want to display in
the custom sublist.
The results of this search should include the information you want to show on your sublist.
For information about creating saved searches, see the help topic Defining a Saved Search.
2. Enter a name for the search.
3. Set criteria for the search.
4. On the Available Filters subtab, add at least one available filter to the search, and ensure that
the first filter listed is a List/Record type. Otherwise, the saved search is not available to assign as
a sublist.
You can only attach a saved search as a sublist if the search has at least one available filter. The
sublist shown is filtered by the first filter listed on the saved search. Be sure that the search and
the filter both apply to the record you are attaching the sublist to.
For information about setting available filters, see the help topic Selecting Available Filters for
Saved Searches.
5. Click Save.
Applying Custom Sublists to Standard Records
You can add a custom sublist to any standard entity or transaction record, including custom transaction
and entry forms.
For example, you might want to show a list of customers on the sales order form that are assigned to
the sales representative on the order.
Note: If SDF is enabled in your account, you use a different page for adding custom sublists.
For more information, see Applying Custom Sublists in SDF-Enabled Accounts.
To add a custom sublist to a standard record:
1. First, create a saved search for the information you want to show. The results of this search
should include the information you want to show on your sublist. See Saved Searches for
Custom Sublists.
SuiteBuilder
Custom Sublists
124
2. Go to Customization > Forms > Sublists.
3. Click the subtab that corresponds with the kind of record to which you want to add the sublist.
4. In the Search column, select the saved search that returns the results you want to appear on the
record.
If the saved search does not appear in the list, check the saved search settings. The first item
listed on the Available Filters subtab must be a List/Record type, otherwise the saved search is
not available to assign as a sublist.
5. Enter a label for this sublist.
6. In the Tab column, select the subtab where you want the sublist to appear.
7. Check the box for each record where you want this sublist to appear.
This sublist shows on the standard and custom forms of the types you select.
8. In the Field column, select the field by which you are filtering the sublisty.
9. Click Add.
10. Click Save.
Now, these search results show on the records you selected. For an example of applying custom
sublists to standard records, see Example of Adding Custom Sublist to Standard Record.
Example of Adding Custom Sublist to Standard Record
You want to add a custom sublist to the employee record to display customers who have not had any
activity in the last month.
First, create a saved search that shows the information that you want to see in the sublist. On the
Criteria > Summary subtab, enter the following:
■ Summary Type — Maximum
■ Field — Activity : Date
■ Description — is not after 1 month ago
On the Results subtab, set the summary type for Name to Group, and set Activity : Date to Maximum.
SuiteBuilder
Custom Sublists
125
On the Available Filters subtab, the first filter listed must be of type List/Record for this saved search
to be available as a custom sublist. The ID of a record is used as the parameter for this filter. When a
sublist has the Field column defined, the value from the selected field is used instead of the record ID. Set up the custom sublist by selecting the saved search and applying it to the required records.
In this example, the Field column in the Custom Sublists page was left blank because the filtering done
on the Available Filters subtab in the saved search is sufficient.
The sublist appears as a subtab on the employee record.
SuiteBuilder
Custom Sublists
126
Applying Custom Sublists in SDF-Enabled Accounts
If SDF is enabled in your account, you use a different page for viewing and adding custom sublists in
the UI. For more information about custom sublists in SDF, see the help topic Custom Sublists as an
XML Definition.
To view available custom sublists, go to Customization > Forms > Sublists > List.
To add a custom sublist in an SDF-enabled account:
1. Create a saved search for the information you want to show. The results of this search should
include the information you want to show on your sublist.
2. Go to Customization > Forms > Sublists > New. The Custom Sublist page appears.
3. In the Script ID field, enter an ID for the custom sublist, starting with an underscore.
4. In the Tab field, select the subtab where you want this sublist to appear.
5. In the Type field, select the sublist type.
6. In the Search field, select the saved search that returns the results you want to appear on the
record. If the saved search does not appear in the list, check the saved search settings. The first
item listed on the Available Filters subtab must be a List/Record type, otherwise the saved search
is not available to assign as a sublist.
7. In the Label field, enter a label for this sublist.
8. In the Field field, select the field by which you are filtering the sublist.
9. Check the box for each record where you want this sublist to appear. This sublist shows on the
standard and custom forms of the types you select.
10. Click Save.
Now, these search results appear on the subtab of the records you selected. To view an example of
applying a custom sublist to a standard record, see Example of Adding Custom Sublist to Standard
Record.
SuiteBuilder
Custom Sublists
127
Applying Custom Sublists to Custom Record Types
You can add custom sublists to custom record types.
First, you create a saved search that obtains the results that you want to show on your custom records.
See Saved Searches for Custom Sublists. Then you add the search as a custom sublist to your custom
record type.
Note: If the saved search is not available in the sublist setup, check the saved search settings.
The first item listed on the Available Filters subtab must be a List/Record type, otherwise the
saved search is not available to assign as a sublist.
To add the search as a custom sublist to a custom record type:
1. Go to Customization > Lists, Records, & Fields > Record Types. Click the name of the record type
to which you want to add the sublist.
2. Click the Sublists subtab.
3. In the Search column, select the saved search.
4. In the Label column, enter a label for the subtab where you want the search results to display.
5. (When the Multi-Language feature is enabled) In the Translation column, enter one or more
translations of the label.
6. In the Tab column, choose the custom subtab where you want this sublist to display.
7. In the Field column, select the field by which you are filtering this sublist.
8. Click Add.
9. Click Save.
Now, these search results shown on the custom record. For an example of applying a custom sublist to
a custom record type, see Example of Adding Custom Sublists to Custom Record Types.
Example of Adding Custom Sublists to Custom Record Types
You have a custom record called Warranty Claim, and when a new record is created, you want to show
information about previous claims.
First you create the saved search. From the custom record list page, click Search beside the record for
which you want to create the custom sublist.
SuiteBuilder
Custom Sublists
128
You want to filter the search to show only the warranty claims that were worked by the same
technician.
On the Available Filters subtab, the first filter listed must be of type List/Record for this saved search to
be available as a custom sublist. In the custom record definition, click the Sublists subtab and select the search that you created.
The sublist appears as a subtab on the custom record.
SuiteBuilder
Custom Sublists
129
Custom Child Record Sublist Creation with SuiteScript
■ Custom Child Record Sublists
■ Creating Custom Child Record Sublists
■ Custom Child Record Sublist IDs Overview
■ Scripting with Custom Child Record Sublists
Custom Child Record Sublists
Note: The content in this help topic pertains to all versions of SuiteScript. Be aware that
currently it may only include links or examples for SuiteScript 1.0.
When working with custom child record sublists you can use all the standard Sublist APIs provided in
SuiteScript. If you are not familiar with custom child record sublists, it is recommended that you read
these topics in order:
■ Custom Child Record Sublists Overview
■ Creating Custom Child Record Sublists
■ Custom Child Record Sublist IDs Overview
■ Scripting with Custom Child Record Sublists
Custom Child Record Sublists Overview
Custom child record sublists are Inline Editor Sublists that contain a list of custom records.
The following screenshot shows a custom child record sublist of fixed assets records. These records
appear as line items on a custom Fixed Assets subtab. The parent record that contains the sublist of
custom fixed assets records is the customer record.
In the UI, click New Fixed Assets to create a new fixed assets child record. The new record is added to
the Fixed Assets sublist and is scriptable. In SuiteScript, add a new fixed assets child record by adding a
new line to the sublist.
When the New Fixed Assets button is clicked, a new fixed assets record opens (see the following
screenshot). Note that the fixed assets record contains a New Customer field. This field is a List/Record
field that references the parent record – in the case, the Abe Simpson customer record.
Note: The parent–child relationship between the fixed assets record type and the customer
record type was defined on the Custom Record Type definition page for the fixed assets record.
(For general information on creating parent–child relationships between records, see ParentChild Record Relationships.)
The Fixed Assets fields that appears in the sublist are the mandatory fields (those body fields that
appear with the asterisk on the fixed assets record) and those fields that have been set to Show in List
SuiteBuilder
Custom Sublists
in the Custom Field definition page for the fixed assets record type. You can use Sublist APIs to set or
get values for all fixed assets fields in a Fixed Assets sublist.
The New Customer field is a List/Record field that references the parent record of the fixed assets
(child) record.
If you know the internal ID of a fixed assets field, you can update the field through sublist scripting.
(See Custom Child Record Sublist IDs Overview to learn how to get field IDs for all fields on a custom
child record sublist.)
SuiteBuilder
130
Custom Sublists
131
Fields set to Show in List on the fixed assets record type appear in the sublist. However, you can
update any fixed assets field via scripting.
Creating Custom Child Record Sublists
The following high-level steps are provided for users who are already familiar with NetSuite
customization. This procedure provides a general frame of reference for building a custom child record
sublist. For more information, see the following.
■ Custom Records
■ Custom Fields
■ Creating Custom Subtabs
To create a custom child record sublist:
1. Define a custom record type (such as the fixed assets record mentioned earlier).
Important: On the Custom Record Type page, check the Allow Child Record Editing
box. If this preference is not enabled, your records are not scriptable when they appear
as sublist line items on the parent record.
2. Establish the parent–child relationship between your new custom record type (fixed assets) and
another record type. Parent–child relationships are established through custom fields.
a.
Add a custom field to your new custom record type.
b.
On the field definition page for the new field, set the field Type to List/Record (see the
following screenshot).
c.
Specify the record type that is the parent of your custom record type. In the following
screenshot, the customer record type is the parent.
d.
Check the Record is Parent box to attach your custom record type (fixed assets) to a
parent record type (customer).
In this case, the New Customer field ties the fixed assets record type to the customer
record type.
SuiteBuilder
Custom Sublists
132
Your custom child record sublist can appear on a standard or custom subtab of the parent
record.
3. If you want the custom child record sublist to appear on its own subtab on the parent record,
create a subtab with a name that reflects the sublist type. The preceding screenshot shows that
a sublist of child fixed assets records appears on a custom Fixed Assets subtab. This subtab
appears on all customer (parent) records.
Note: See Adding Subtabs to a Custom Record for steps on creating custom subtabs
and adding subtabs to specific record types.
4. After defining the customer–fixed assets (parent–child) relationship (via the New Customer
field), go to a customer record in NetSuite and notice the Fixed Assets sublist (see the following
screenshot).
SuiteBuilder
Custom Sublists
133
Note: If you have not specified a parent subtab for this sublist, the custom record child
sublist appears on a system-generated subtab called Custom.
The preceding screenshot shows the fixed assets sublist. When the New Fixed Assets button is clicked,
a custom (child) fixed assets record opens. After adding data to the fixed assets record and saving it,
the record appears as a sublist line item.
The following screenshot shows that three fixed assets (child) records have been added as sublist line
items to the (parent) customer record for Abe Simpson.
SuiteBuilder
Custom Sublists
134
Custom Child Record Sublist IDs Overview
Unlike other sublists, there are no standard IDs that can be documented for custom child record
sublists. The internal ID for the sublist itself, and all of its associated fields, is unique to each custom
child record sublist.
See these topics for guidelines on determining which IDs to reference in Sublist APIs:
■ Determining the Sublist ID
■ Determining Field IDs
Determining the Sublist ID
The internal ID for a custom child record sublist is recmach + field_id_for_the_parent_field (for
example: recmachcustrecord111).
When using Sublist APIs the value of the type parameter in nlapi functions (or the group parameter in
nlobjRecord sublist-related methods) resembles the following:
nlapiGetLineItemValue('recmachcustrecord111', fldnam, linenum )
The following steps describe where to look in NetSuite to get the internal ID of a custom child record
sublist.
To get the internal ID of a custom child record sublist (the field ID for the parent
record):
1. Go to the record definition for the custom record type (see the following screenshot).
SuiteBuilder
Custom Sublists
135
2. On the Fields subtab, notice that the ID column lists a List/Record field type.
The New Customer field (internal ID: custrecord111) is the parent field for the fixed assets
records that appear as children on customer records. Hence, the internal ID for the custom child
Fixed Assets sublist on customer records is recmachcustrecord111.
The following is an alternative approach for obtaining the internal ID of the parent field.
1. On the custom child record sublist, click the New child record button (see the following
screenshot for a general example).
SuiteBuilder
Custom Sublists
2. When the new child record opens (see the following screenshot), notice the field that ties the
child record to the parent record.
In this case, the New Customer field shows that the customer record for Abe Simpson is the
parent of the fixed assets record. The field level help popup window for New Customer lists
the field's internal ID as custrecord111. Therefore, the internal ID for the Fixed Assets sublist
appearing on the (parent) customer record is recmachcustrecord111.
SuiteBuilder
136
Custom Sublists
137
Note: Internal IDs for custom child record sublists also appear in the SuiteScript Debugger
when you load the record that includes the sublist.
Determining Field IDs
Use these steps to get internal field IDs on a custom child record sublist:
1. Go to the custom record definition page (for example, go to and select your custom record in
the Record Types list).
2. On the Fields subtab of the Custom Record Type page (see the following screenshot), all field
internal IDs appear in the ID column. These are the IDs you reference as the fldnam value in all
Sublist APIs.
Example:
//Get the value of the Cost field on the first line (see the following figure)
nlapiGetLineItemValue('recmachcustrecord111', 'custrecord1', 1)
You can get or set values for fields that appear in the Fixed Assets sublist. You can also set or
get values that exist on the record, but do not appear in the sublist UI.
For example, the following line sets the value of the Salvage Value field in the fixed assets
record 3 (see the following screenshot). The internal ID for Salvage Value is custrecord2. See this
value on the Custom Record Type definition page for the fixed assets record type.
nlapiSetCurrentLineItemValue('recmachcustrecord111', 'custrecord2’, 700);
SuiteBuilder
Custom Sublists
138
Scripting with Custom Child Record Sublists
Custom child record sublists are inline editor sublists. Consequently, they support all standard Sublist
APIs that run on other inline editor sublists. A custom child record sublist is unique only because
it is not identified by a standard sublist internal ID, nor does it contain a standard set of field IDs.
Otherwise, like all other inline editor sublists, you can add and remove line items. You can get and set
values on existing line items, and the first line number (linenum) for all sublists is 1, not 0.
Important: Be aware that you cannot execute validate line functions on custom child record
sublists. Validate line functions are executed when a client event occurs prior to a line being
added to a sublist.
Adding a record to a custom child record sublist
The following snippet shows how to add a new fixed assets record to the Fixed Assets sublist. This is a
server-side script in which the customer record object is loaded into the system, and the Fixed Assets
sublist (recmachcustrecord111) is being accessed through methods on the nlobjRecord object.
var rec = nlapiLoadRecord('customer', 142);
//Call the nlobjRecord selectNewLineItem method to add a new line.
//Note: Call selectLineItem(...) if the line already exists and you are just updating it.
rec.selectNewLineItem('recmachcustrecord111');
//Set the value for the record name
rec.setCurrentLineItemValue('recmachcustrecord111', 'name', 'Printer');
//Set the value for the Cost field
SuiteBuilder
Custom Sublists
139
rec.setCurrentLineItemValue('recmachcustrecord111', 'custrecord1', 1000);
//Set the value for the Useful Life in Years field
rec.setCurrentLineItemValue('recmachcustrecord111', 'custrecord4', '3');
//Commit your sublist changes
rec.commitLineItem('recmachcustrecord111');
//Submit the updated Customer record
var id = nlapiSubmitRecord(rec, true);
Customizing a Transaction Sublist
On most pages where you run bulk operations on a list of transactions, you can customize the list
displayed. For example, on the Approve Sales Orders page, you can change the default column, filter,
and sorting options. If a transaction list is customizable, a Customize button is availble in the upper left
corner of the sublist. For more information, see the help topic Customizing Sublist Views.
Note: The Customize button is useful for displaying information that is captured by a custom
field defined in your account. Custom fields are not included in the transaction sublist by
default.
To customize a transaction sublist:
1. On the transaction page, click Customize.
For example, go to Transactions > Sales > Mark Orders Shipped. Click Customize.
SuiteBuilder
Customizing a Transaction Sublist
140
2. On the Additional Columns subtab, check any fields that you want to display as columns in the
sublist.
You can add columns to the list, but you cannot remove any of the default columns.
3. On the Additional Filters subtab check any fields that you want to add as filters for the sublist.
Important: In the Adjust Inventory Worksheet and Print Item Labels pages, the available
column and filter fields are taken from the item record rather than from transactions.
Example: Sorting by Bill Type
You might want to delay paying bills until certain criteria are met. To identify these bills on the Bill
Payments page, you can add a custom On Hold field to the bill record. Add this as filter criteria to the
Bill Payments page and then sort by the desired setting to view bills that you must pay versus bills that
should wait.
To set up this scenario, create a custom Transaction Body field of the Type Check Box and apply it to
purchase records.
After bills are entered, go to the Bill Payments page, click Customize View and then select On Hold on
the Additional Filters subtab.
Add the On Hold field to the Results subtab and save.
SuiteBuilder
Customizing a Transaction Sublist
You can now filter results to display only records that are not On Hold.
SuiteBuilder
141
Advanced PDF/HTML Templates
142
Advanced PDF/HTML Templates
The Advanced PDF/HTML Templates feature supports an alternate model for customizing printed and
emailed transactions. This model supports more customization capabilities than transaction form
layouts, also known as basic layouts. (Basic layouts were previously known as legacy layouts.) To use
advanced templates in your account, see Enabling the Advanced PDF/HTML Templates Feature.
When this feature is enabled, you can associate advanced templates with custom transaction forms,
so that these templates are used to format printed and emailed versions of transactions. See Setting
Custom Forms to Use Advanced Templates.
You can use advanced PDF/HTML templates to produce either PDF or HTML output, depending upon
the settings of your print and email preferences. See Advanced Templates Support for Company
Printing Preferences.
Advanced PDF/HTML templates support all transaction and print types supported by basic layouts,
including internationalized versions. For a list, see Reviewing Available Advanced Templates.
Standard templates are provided for each supported print type. You can create your own customized
templates in a Template Editor that supports current industry standards for HTML-based editing,
including rich text editing and HTML markup source editing. You can preview your template as
you make changes, and detailed error messages are shown if the template cannot be saved. See
Customizing Advanced Templates in the Template Editor, Previewing Advanced PDF/HTML Templates,
and Error Messages in Advanced Templates.
You also can use SuiteScript to produce HTML and PDF printed forms that take advantage of advanced
template customization capabilities. See Using Advanced Template Formatting Programmatically.
Each printed form that uses an advanced template automatically includes a company logo, based on
the image file defined as the Company Logo (Forms) field at Setup > Company > Company Information.
For instructions for defining this image file, see the help topic Configuring Company Information.
You can include advanced templates in bundles. See the help topic Objects Available in Customization
Bundles.
Important: You can choose whether or not to enable the Advanced PDF/HTML Templates
feature. Even when this feature is enabled, no changes are made to basic layouts that are
currently in use. Transaction Form PDF Layouts and Transaction Form HTML Layouts continue
to be supported, and you can continue to associate them with custom forms as desired. The
Advanced PDF/HTML Templates feature provides an additional option to associate advanced
templates with custom forms.
Using Advanced Template Formatting Programmatically
SuiteScript supports a template engine object and related methods so you can apply
advanced template format capabilities programmatically. For SuiteScript 2.0, see the help topic
render.TemplateRenderer. For SuiteScript 1.0, see the help topics nlapiCreateTemplateRenderer() and
nlobjTemplateRenderer.
In addition, the SuiteScript function nlapiPrintRecord(type, id, mode, properties) supports the use
of advanced templates. If you associate an advanced template with the custom form saved for a
transaction and use this API to print the transaction, the advanced template is used to format the
printed transaction.
SuiteBuilder
Enabling the Advanced PDF/HTML Templates Feature
143
You can use SuiteScript to apply advanced templates to printed records that are not transactions. See
Using SuiteScript to Apply Advanced Templates to Non-Transaction Records.
Enabling the Advanced PDF/HTML Templates
Feature
The Advanced PDF/HTML Templates feature must be enabled for access to advanced templates and
the template editor, and is enabled by default in most customer accounts.
To ensure that the Advanced PF/HTML Templates feature is enabled, go to Setup > Company > Enable
Features. On the SuiteCloud tab, under SuiteBuilder, ensure that the Advanced PDF/HTML Templates
box is checked.
Users can enter transaction print settings on the Transactions subtab of the Set Preferences page. For
more information, see the help topic Setting Preferences for Transactions.
Reviewing Available Advanced Templates
When the Advanced PDF/HTML Templates feature is enabled, an Advanced PDF/HTML Templates
option is available in the Customization > Forms menu. You can click this option to view a list of the
advanced templates in your account.
Note: The Advanced PDF/HTML Templates menu option is only available to account
administrators and other users who have the Advanced PDF/HTML Templates permission. This
is a Setup type permission with only one level: Full. For details about permissions, see the help
topic NetSuite Permissions Overview.
Advanced templates are available for all printed transactions that support transaction form PDF and
HTML layouts, and for expense report transactions. The Advanced PDF/HTML Templates list page
SuiteBuilder
Reviewing Available Advanced Templates
144
includes standard advanced templates and any customized advanced templates that have been
created in the account. If a customized template has been installed from a bundle, the list also shows
the ID of the bundle.
Advanced templates also support the following additional print types, when their related preferences
are enabled:
■ If the Print Return Form with Packing Slip preference is enabled, a return form is appended
whenever a packing slip is printed. The return form is part of the packing slip advanced template.
You can use custom packing slip advanced templates to modify default formatting for printed
return forms.
■ If the Print Remittance Form with Invoices & Statements preference is enabled, a remittance form is
appended whenever an invoice or statement is printed. The remittance form is part of the invoice
advanced template and statement advanced template. You can use custom invoice or statement
advanced templates to modify default formatting for printed remittance forms.
By default, the standard advanced template is the preferred advanced template for a print type. When
you choose the Advanced printing type for a custom form, the preferred advanced template is selected
by default as the template for that form. See Setting Custom Forms to Use Advanced Templates.
Advanced PDF/HTML Template for Multiple
Currencies Customers
If the Advanced PDF/HTML Templates feature is enabled in your account, a specialized template is
available for printing statements for customers that have multiple associated currencies. You can
use this Standard Multi-currency Statement Template, or a customized version of it, to ensure that a
customer’s multiple currencies are accurately represented in printed statements.
SuiteBuilder
Advanced PDF/HTML Template for Multiple Currencies Customers
145
To use this type of template to format a printed statement, on the record for the custom form
associated with the statement transaction, select Advanced for Printing Type and select the multicurrency template in the Print Template dropdown list. See Setting Custom Forms to Use Advanced
Templates.
For customers using NetSuite prior to Version 2014 Release 2, the Standard Multi-currency Statement
Template should be used if both the Multi-Currency Customers and Multiple Currencies features are
enabled. Otherwise, you should use the Standard Statement PDF/HTML Template, or a customized
version of it, for your printed statements.
For customers who began using NetSuite after Version 2014 Release 2, if the Multiple Currencies
feature is enabled, the Standard Multi-currency Statement Template should be used. For multiple
currencies to be used in a customer’s transactions, these currencies must be associated with the
customer on the customer record. For more information, see the help topics Setting Up Multiple
Currencies and Multiple Currencies and Customers.
For customers that do not use multiple currencies, use the Standard Statement PDF/HTML Template,
or a customized version of it, for your printed statements. For more information, see the help topic
Printing a Statement.
Setting Custom Forms to Use Advanced
Templates
When the Advanced PDF/HTML Templates feature is enabled, you can set custom forms for supported
transaction types to use advanced templates. When you set a custom form to use an advanced
template, that template defines the print and email formatting and contents for transactions that use
that custom form.
Note: If your organization uses the multiple currency feature and advanced printing
statements, the template needs allow for multiple currencies by using list record instead of
record root. The Standard Multiple Currency Statement provides an example of how to set up
the template.
For an example of a printed from that uses an advanced template, see Printed Sales Order Using
Advanced Template.
To define an advanced template for a custom form:
1. Go to Customization > Forms > Transaction Forms.
2. On the Custom Transaction Forms page, click the Edit link for a custom form, or click the
Customize link for a standard form.
3. On the Edit page for the custom form, review the Printing Type options.
■ Basic to associate basic PDF layouts and HTML layouts with the custom form.
■ Advanced to associate advanced templates with the custom form.
4. Select a print template and an email template from the dropdown lists.
■ The Print Template and Email Template dropdown lists contain the standard advanced
template and any custom advanced templates for the transaction type.
■ You can select one advanced template for printed transactions and a different template for
emailed transactions. These templates are used for both PDF and HTML formatting.
■ The preferred advanced template is selected by default in the dropdown lists.
SuiteBuilder
Setting Custom Forms to Use Advanced Templates
146
For example, the previous screenshot indicates that any purchase order transaction that has the
Custom Purchase Order form selected for Custom Form will use the advanced template Custom
Purchase PDF/HTML Template for printing and the standard advanced template for emailing.
Thus, formatting and contents for printed and emailed versions of the purchase order shown in
the following screenshot would be defined by these templates.
Important: At any time after you have set a custom form to use an advanced template, you
can switch the form back to using basic layouts. Edit the custom form and choose Basic for
Printing Type, and select from the PDF Layout and HTML Layout dropdown lists. All previously
available basic layouts are still available.
When creating a transaction, users can save the transaction and email it as a PDF attachment by
clicking Save & Email. The PDF attachment uses the customer’s preferred language.
Printed Sales Order Using Advanced Template
The following sales order uses the Standard Sales Order PDF/HTML Template:
SuiteBuilder
Setting Custom Forms to Use Advanced Templates
147
Customizing Advanced Templates in the Template
Editor
View a Related Video
To customize your advanced template, you can use the WYSIWYG template editor provided, or you can
enter source code markup. For more information about editing, see WYSIWYG Editing in the Template
Editor and HTML Markup Source Editing in the Template Editor.
NetSuite provides a WYSIWYG template editor where you can review the formatting and contents of
standard advanced templates, and edit them to create custom advanced templates. You drag and drop
to move items around on the template.
The template editor supports current industry standards for HTML-based editing, including rich text
editing and HTML markup source editing. For more details, see:
■ Viewing an Advanced Template in the Template Editor
■ Using the Template Setup Window
SuiteBuilder
Customizing Advanced Templates in the Template Editor
■ Creating a Copy of an Advanced Template
Note: The template editor uses FreeMarker-based syntax. For more information, see the
FreeMarker documentation.
Viewing an Advanced Template in the Template Editor
To see an advanced template in the template editor, go to Customization > Forms > Advanced PDF/
HTML Templates and:
■ Click the Customize link for a standard advanced template to review it in the template editor and
create a customized version of it, or
■ Click the Edit link for a custom advanced template to review it in the template editor and make
further changes as desired.
SuiteBuilder
148
Customizing Advanced Templates in the Template Editor
SuiteBuilder
149
Customizing Advanced Templates in the Template Editor
150
Note: The default naming convention is Custom <Print Type> PDF/HTML Template for the
first custom template created for a print type. For each subsequent template of that type,
the default is to add a sequence number to the name. For example, the standard advanced
template for purchase orders is named Standard Purchase PDF/HTML Template, the first
custom advanced template for purchase orders has a default name of Custom Purchase PDF/
HTML Template, and the next custom advanced templates for purchase orders have default
names of Custom Purchase PDF/HTML Template 2 and Custom Purchase PDF/HTML Template 3.
Important: Records are used to populate some values in the template. To open an advanced
template for editing, NetSuite runs all before load scripts to get updates on the records and it
triggers all Before Record Load Actions in workflows before it loads the template in the editor. If
any before load scripts or workflow actions fail, an error message appears and you cannot edit
the template until the script or workflow issues are resolved.
The following table shows the records that are accessed by each template type.
Advanced Template Type
Records Accessed
Bill of Materials
Work order
Bill Payment
Vendor payment
Cash Refund
Cash refund
Cash Sale
Cash sale
Check
Various payment types. For the template preview, the Check
record is used.
Credit Memo
Credit memo
Custom Transaction
Custom transaction
Customer Deposit
Customer deposit
Expense Report
Expense report
Invoice
Invoice
Item Label
No record is loaded in a way that triggers scripts
Journal
Journal entry
Mailing Label
Address (on all entity records)
Packing Slip
Item fulfillment, and based on the original transaction, one of
transfer order or sales order
Payment
Customer payment
Picking Ticket
Sales order, transfer order
Price List
Item search per customer
Purchase Order
Purchase order
Quote
Estimate
Return Authorization
Return authorization
Sales Order
Sales order
Saved Search
Saved search
Shipping Label
No record is loaded in way that triggers scripts
SuiteBuilder
Customizing Advanced Templates in the Template Editor
Advanced Template Type
Records Accessed
Statement and Multi-Currency
Statement
Customer
Work Order
Work order
151
Using the Template Setup Window
In the advanced template editor, you can click the Template Setup button to display a Template Setup
window where you can modify:
■ Basic template properties, including:
□ Title (name)
□ Description
□ Whether the template is preferred for the transaction type
□ Script ID, which is assigned automatically if you leave this field blank
□ Template inactivation, if required
■ Template layout settings, including:
□ Page orientation
□ Page size
□ Margins
Creating a Copy of an Advanced Template
If you want to use an existing customized advanced template as the basis for a new template, you can
use the Save As button to save a template under another name.
SuiteBuilder
Customizing Advanced Templates in the Template Editor
152
1. From the Advanced PDF/HTML Template List page, click Edit beside the template that you want
to copy.
2. The Template editor appears. Click Template Setup and name the new template. For more
information, see Using the Template Setup Window.
3. Click Save As. The template is saved.
Training Videos for Advanced PDF/HTML Templates
This page includes links to training videos that show how to set up your advanced PDF/HTML
templates. Check back to this page because more videos will be coming.
Using the Advanced Template Editor
To customize an advanced PDF/HTML template for your organization, you can use the design view of
the Template Editor.
View the video.
Adding Fields and Sublists to Advanced PDF/HTML Templates
Advanced PDF/HTML templates use FreeMarker to include NetSuite data, such as fields on transaction
records, in the output.
You can include field IDs and sublists from NetSuite transaction records in advanced PDF/HTML
templates using FreeMarker expressions.
View the video.
WYSIWYG Editing in the Template Editor
View a Related Video
In WYSIWYG mode, you can click a button on the New Element toolbar to add HTML-based elements
such as fields, images, and tables, or printing elements such as text, page numbers, page breaks,
horizontal lines, headers, and footers. If you are not sure what element a button represents, you can
point to the button to display a tooltip. When you click the Image or Table button, a popup displays
where you can set properties for the new element.
SuiteBuilder
WYSIWYG Editing in the Template Editor
153
For printing elements, formatting options are available on the Styles toolbar. You can use these options
to control the styling, alignment, and position of elements.
Warning: Advanced PDF/HTML templates do not support absolute positioning of elements. If
you require exact positioning, you can use Transaction Layouts instead.
Advanced templates use FreeMarker, a Java library used to generate text outputs based on templates
and dynamic data. You use FreeMarker interpolations to include NetSuite data in your template.
An interpolation is an expression, such as ${record.entity} which is replaced in the output with the
actual value of the expression. For complete information about FreeMarker, see the FreeMarker
documentation.
SuiteBuilder
WYSIWYG Editing in the Template Editor
154
For details about customizing templates in the WYSIWYG view:
■ Template Editor Toolbar
■ Adding and Removing Fields in Advanced Templates
■ Adding and Formatting Text in Advanced Templates
■ Including Images in Advanced Templates
■ Adding Tables to Advanced Templates
Template Editor Toolbar
The buttons on the New Element tab let you add fields, images, and tables, or printing elements such
as text, page numbers, page breaks, horizontal lines, headers, and footers. If you are not sure what
element a button represents, you can point to the button to display a tooltip. The following table
describes each toolbar button in detail.
Button
Description
Add a field to the template. For more information, see Adding and Removing Fields
in Advanced Templates.
Add text to the template. For more information, see Adding and Formatting Text in
Advanced Templates.
Add an image to the template. For more information, see Including Images in
Advanced Templates.
Add a table to the template. For more information, see Adding Tables to Advanced
Templates.
Add the page number to the template.
Add the total number of pages to the template.
Add a page break to the template. If you want to remove the page breaks, you
must switch to Source Code view.
Add a horizontal line to the template.
Toggle button to remove or add the template header.
Note: If you remove the header from the template and then add it again,
the header content is erased.
Toggle button to remove or add the template footer.
SuiteBuilder
WYSIWYG Editing in the Template Editor
Button
155
Description
Note: If you remove the footer from the template and then add it again,
the footer content is erased.
Adding and Removing Fields in Advanced Templates
View a Related Video
You can see the fields included on an advanced template by reviewing the template in the template
editor. You can add and remove fields as desired, and also add currency symbols in front of fields, by
following the steps in the following procedures:
■ Adding a Field to an Advanced Template
■ Adding a Currency Symbol to an Advanced Template Field
■ Removing a Field from an Advanced Template
Adding a Field to an Advanced Template
You use the Fields selector to add a field to an advanced template.
To add a field to an advanced template:
1. Go to Customization > Forms > Advanced PDF/HTML Templates and click the Customize or Edit
link for the advanced template.
2. Position the cursor in the location of the template editor where you want to add a field.
3. On the New Element toolbar, click the Fields button to display a Fields selector, which lists all
fields available to be added to the template.
■ The Fields selector includes two groups of fields: company information fields that are
available for all templates, and fields in the record type associated with the template,
including both standard and custom fields. Within each group, fields are listed alphabetically
by label, with the internal ID for each field in parentheses.
■ The selector has a search capability so you can quickly find the field you need. Enter part of
the field label in the selector’s Search field to narrow the list of displayed fields.
4. If you want the field label to be displayed in the template along with the field value, check
Include Label in the Fields selector.
5. Select the field to be added and then click Close.
The field is shown on the template. If you point to the label, the FreeMarker identifier for the
field displays:
SuiteBuilder
WYSIWYG Editing in the Template Editor
156
Important: You can enter FreeMarker syntax to add a field rather than using the selector,
if you prefer. The Fields selector currently does not include subrecord fields. You have to
use FreeMarker syntax to add these fields. For information about this syntax, see Syntax for
Advanced Template Fields
Adding a Currency Symbol to an Advanced Template Field
You can use a FreeMarker expression to add a currency symbol on an advanced template.
To add a currency symbol to an advanced template:
1. In the template editor, position the cursor in front of the field that represents a currency
amount.
2. Enter ${record.currencysymbol} in front of the field label shown on the template:
Removing a Field from an Advanced Template
There may be some fields on a template that are not required by your organization.
To remove a field from an advanced template:
1. To remove a field, select it and press the Delete key on the keyboard.
For example, if you do not want sales orders to include the company name and address, you could
delete ${companyInformation.companyname} and ${companyInformation.addressText}. Note
that this example also results in the deletion of the company logo.
Adding and Formatting Text in Advanced Templates
The New Element toolbar of the template editor includes a button that you can click to insert text
on advanced PDF/HTML templates. To add text, first place the cursor in the location on the template
where the text should be added, and then click the Text button.
If the Styles toolbar does not appear, select the text that you want to format, and then click Styles.
The Styles toolbar of the template editor includes rich text editing buttons that you can use for the
following text formatting functions:
■ Formatting Styles
■ Paragraph Formats
■ Font Name
■ Font Size
SuiteBuilder
WYSIWYG Editing in the Template Editor
157
■ Text Color
■ Background Color
The editor also includes buttons for font styles and effects. You can point to each button on the Styles
toolbar to display a tooltip.
The template editor includes text editing buttons that you can use for the following text alignment
functions on advanced templates:
■ Decrease Indent
■ Increase Indent
■ Align Left
■ Center
■ Align Right
■ Justify
Note: Custom column fields of type free-form text or text area are always left-aligned, no
matter what alignment setting you specify here. To change the alignment of a text or text area
column field, add td p { align:left; } to the template stylesheet.
Adding Tables to Advanced Templates
The New Element toolbar of the template editor includes a button that you can click to insert tables on
advanced PDF/HTML templates.
Note: Nested tables, that is, tables within tables, are not recommended for performance
reasons.
To insert a table on an advanced template:
1. Open the advanced template in the template editor.
2. Place the cursor in the spot where you want to insert the table.
3. Click the Table button:
4. Complete the Table Properties dialog and click OK.
SuiteBuilder
WYSIWYG Editing in the Template Editor
158
The table is added to the template in the template editor.
Note: You can also use HTML markup source editing to add a table to an advanced template,
but it would be more time-consuming and require knowledge of HTML.
Important: If you have text overlapping a footer or missing from a printout, ensure that any
long content is enclosed in an HTML tag that will split across pages.
The Report Generator has specific rules for where page breaks can occur. A <table> tag nested inside
a <td> tag is cut off at the bottom if it spreads across multiple pages. Only the following tags split
correctly if they are spread across multiple pages:
<table>
<ul>
<p>
<pre>
<ol>
<h1>
<h2>
<h3>
<h4>
<blockquote>
Including Images in Advanced Templates
Advanced templates support the inclusion of images in printed and emailed forms. The New Element
toolbar of the template editor includes a button that you can click to insert an image.
To insert an image on an advanced template:
1. Open the advanced template in the Template Editor.
SuiteBuilder
WYSIWYG Editing in the Template Editor
159
2. Place the cursor in the location where you want to insert the image.
3. Click the button to insert an image.
4. Enter the required information in the Image Properties dialog. Use &amp; for ampersand
symbols. Then click OK.
The image is added to the template in the template editor.
Note: You do not need to add a company logo to a template. Each printed form that uses an
advanced template automatically includes a company logo, based on the image file defined as
the Company Logo (Forms) field at Setup > Company > Company Information. For instructions
for defining this image file, see the help topic Configuring Company Information.
Warning: If you reference images online, ensure that the URLs are correct. If any images
referenced in a template cannot be found, an error message is displayed and you cannot save
the template until the errors are resolved.
Including Bar Codes in Advanced Templates
Printed transactions based on advanced templates automatically include bar codes, in the same
manner as printed transactions based on basic layouts. You do not have to manually edit the HTML
markup source of the associated advanced template.
The following types automatically include a bar code in printed transactions, when the Bar Coding and
Item Labels feature is enabled:
■ Bill of Materials
SuiteBuilder
WYSIWYG Editing in the Template Editor
160
■ Cash Refund
■ Cash Sale
■ Credit Memo
■ Invoice
■ Item Label
■ Packing Slip
■ Picking Ticket
■ Purchase Order
■ Quote
■ Remittance Form
■ Return Form
■ Return Authorization
■ Sales Order
Most transaction types print the transaction ID along with the bar code. The following example shows a
bar code from a printed sales order:
Item label is an exception. Printed transactions of this type include the UPC code, serial number of the
item with the bar code, or both.
FreeMarker supports 128 ASCII characters for serial number and bar codes. If your serial numbers
contain special characters, an error may occur during template merging.
HTML Markup Source Editing in the Template
Editor
You can use the Source Code toggle to manually edit markup source for a template. You can make
template edits directly in this markup source if you have sufficient knowledge of HTML.
SuiteBuilder
HTML Markup Source Editing in the Template Editor
161
Warning: Do not modify markup source directly unless you have sufficient CSS and HTML
knowledge. NetSuite does not provide support or training in CSS or HTML.
Be aware that the template editor may not function properly if you switch back to WYSIWYG
mode after you have made edits in markup source mode. Some template content may not be
represented correctly, may not be accessible for editing, or may not be displayed at all.
If these issues occur, you can preserve template content by not saving the template in WYSIWYG
mode and switching back to markup source mode.
The template editor supports syntax highlighting of markup source, for improved readability.
You can edit the HTML markup source to customize your advanced PDF/HTML template as follows:
■ HTML Markup Source Editing to Customize Advanced Templates
■ Syntax for Advanced Template Fields
■ Setting a Template to Use a Font Unavailable in NetSuite
■ Languages for Printed Forms that Use Advanced Templates
■ Adding Striping to Line Items in Advanced Templates
■ Adding Page Breaks to Tables
■ Printing Subsidiary Logo on Advanced Templates
■ Adding Apply Sublist to Check Templates
SuiteBuilder
HTML Markup Source Editing in the Template Editor
162
Use FreeMarker directives to customize date formatting in the template. For example, using a date
format containing MONTH does not return the name of the month in uppercase. To display the
month in uppercase, use the FreeMarker upper_case directive, for example: {$record.duedate?
upper_case}.
In advanced template, some of the markup source syntax relies on BFO (Big Faceless Organization),
a set of third party libraries used by NetSuite for generating PDF documents. BFO documentation is
available at http://bfo.com/products/report/docs/userguide.pdf
Note: If you are having issues with your advanced template, do not contact BFO directly.
Always contact NetSuite Technical Support.
Empty BFO tags that are closed are subject to HTML formatting, for example, </totalpages>
processes as <totalpages> </totalpages>.
Some HTML tags may be displayed as literals in printed text. For example, if a field contains the
character for a line break, then the line break literal value of “<br />” is displayed.
Important: The following are not supported in advanced templates because of BFO
processing.
Do not use the <tbody> tag, otherwise you may not be able to save the template.
Do not use the cellspacing attribute. Instead, use the cellmargin attribute.
Do not use the text-align attribute. Instead, use the align attribute.
Do not specify a body width in percentage or you will receive a no size specified error. An
absolute value must be set, for example, <body width="595">.
HTML Markup Source Editing to Customize Advanced
Templates
View a Related Video
An advanced template that is used to print a PDF file is an XML document that uses syntax very similar
to HTML with FreeMarker and BFO (Big Faceless Organization) report generator elements included. For
example:
1 <?xml version="1.0"?>
2 <!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
3 <pdf>
4
<head>
5
</head>
6
<body>
Hello, World!
7
</body>
8 </pdf>
Line 1 of the template must declare the XML version, and Line 2 must specify the DOCTYPE. Line 3
includes the BFO <pdf> wrapping element, not the <html> declaration you would see at the top of an
HTML document.
Inside the <pdf> element, the head and body elements contain standard HTML, and you can embed
CSS2 elements. HTML5 declarations are not allowed. The example displays the text "Hello, World!" The
full capabilities of the BFO printing engine are described in the BFO User Guide.
SuiteBuilder
HTML Markup Source Editing in the Template Editor
163
In XML, elements must always be closed. As shown in Line 8, <pdf> must always be matched by </
pdf>, <b> by </b> and so on. For elements that have no content, like <br>, the closing element is
included in the element: <br />. Any attributes must have quotes around them, for example, <table
width=”100%”>.
If a PDF template is used to print in HTML, the <pdf> tags are automatically converted to <html> when
the document is printed.
BFO Elements
BFO (Big Faceless Organization) is a Java application that converts documents written in XML to PDF.
BFO version 1.1.52 is supported in NetSuite. Some commonly-used BFO elements are described in the
following sections.
Page Numbers
The most-commonly used BFO elements in PDF templates are page number and total pages. The
<pagenumber /> and <totalpages /> elements insert the current page number and total number
of pages. Because these values are known at the last part of rendering the page, they cannot be used in
FreeMarker declarations as values.
Headers, Footers and Background Macros
You can use BFO functionality to define macros to repeat pieces of HTML code on every page. Each
macro is defined in the head part of the template inside the <macrolist> element. To apply the
macro, you reference it in the <body> element definition. It is not possible to create multiple headers
for a template. Also, header and footer macros must have a height declared or they will not be applied.
See the following example.
<?xml version="1.0"?>
<!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf>
<head>
...
<macrolist> <!-- Definition of macros -->
<macro id="nlHeader"> <!-- Regular macros -->
... Header Content ...
</macro>
<macro id="nlFooter">
... Footer Content ...
</macro>
<macro id="nlWatermark">
... Footer Content ...
</macro>
<macro id="nlAltHeader"> <!-- Alternative macros -->
... Header Content ...
</macro>
<macro id="nlAltFooter">
... Footer Content ...
</macro>
<macro id="nlAltWatermark">
... Footer Content ...
</macro>
</macrolist>
...
</head>
SuiteBuilder
HTML Markup Source Editing in the Template Editor
164
<body header="nlHeader" header-height="2.5in" footer="nlFooter" footer-height="0.5in" backg
round-macro="nlWatermark">
... Body Content each page with regular header, footer and watermark ...
<pbr header="nlAltHeader" header-height="2.2in" footer="nlAltFooter" footer-height="0.3
in" background-macro="nlAltWatermark" />
... New page with alternative header, footer and watermark ...
... After that each page with regular header, footer and watermark ...
</body>
</pdf>
Note: If you are having issues with your advanced template, do not contact BFO directly.
Always contact NetSuite Technical Support.
Bar Codes
When using an advanced printing template, you can add any type of bar code or QR code listed in the
Barcodes section of the BFO User Guide. In the template, create a field with a value that can be passed
in as the value of that bar code type.
The bar code syntax is shown in the following example.
<barcode codetype="qrcode" showtext="false"
value="https://system.netsuite.com/pages/customerlogin.jsp" />
Using FreeMarker to Include NetSuite Data
FreeMarker is a Java library used to generate text outputs based on templates and dynamic data.
FreeMarker version 2.3.19 is supported in NetSuite. You use FreeMarker interpolations to include
NetSuite data in your template. An interpolation is an expression, such as ${record.entity} that
FreeMarker replaces in the output with the actual value of the expression. A few common uses for
FreeMarker declarations are provided in the following sections. For complete information about
FreeMarker, see the FreeMarker documentation.
Referencing Fields
FreeMarker is commonly used to reference fields on transaction records. The syntax to reference a
field is ${record.fieldId}. In the output, this interpolation is replaced with a text representation of
the field’s value.
If you want to print the field’s label, the syntax is ${record.fieldId@label}. For example,
${record.entity@label}: ${record.entity} might produce something on the Sales Order
record that looks like Customer: Fabre Art Gallery.
Sublists and Other Lists
There are some components in NetSuite that can be referenced as a list of objects. The most common
example is an item sublist on a transaction, which is represented as a list of lines. You can access
values of these lists directly using the index number ${record.list[index]}. For example, adding
${record.item[1].itemName} to a sales order returns Green T-Shirt.
The more common way of accessing a list is by using the FreeMarker #list declaration, similar to the
following.
<#list record.item as item>
${item_index} ${item.itemName@label} ${item.itemName} --- ${item.amount}
</#list>
SuiteBuilder
HTML Markup Source Editing in the Template Editor
165
If the item sublist on the sales order had three lines, the output would look like the following.
0 Name: Blue T-Shirt --- 10.00$
1 Name: Green T-Shirt --- 12.25$
2 Name: Yellow T-Shirt --- 11.00$
To view the sublists that are supported for a record, see the SuiteScript Records Browser.
For more information about using FreeMarker expressions in advanced PDF/HTML templates, see .
The training video describes how to include field IDs and sublists from NetSuite transaction records in
advanced templates.
Additional Information to Include on Templates
There are additional models that can be accessed on each template. These include
companyInformation (Company configuration information), preferences (user preference settings
usually stored as boolean values) and user (user information).
Some templates may have additional models attached, enabling you to access additional data.
For example, you can access the customer record on each statement, such as the customer email,
${customer.email}.
You can also use ${record@title} to print out the record title.
Syntax for Advanced Template Fields
View a Related Video
You can include the following field types for a record in an advanced template:
■ body fields
■ sublist fields
■ fields from related records
■ record search results fields
The template editor creates an XML document that uses syntax very similar to HTML. Note that
although this syntax may appear similar to SuiteScript, the template editor does not support the
execution of SuiteScript APIs.
The fastest way to add a field to an advanced template is to choose the field in the template editor’s
Fields selector. (See Adding and Removing Fields in Advanced Templates.) If preferred, you can use
FreeMarker syntax to add a field manually instead of using the Fields selector.
Subrecords are not supported in advanced templates, except for the list of inventory details values.
See the following:
■ Entering a Field Manually to an Advanced Template
■ Syntax for Body Fields
■ Syntax for Sublist Fields
■ Syntax for Fields from Joined Records and Searches
■ Updating a Statement Template to Support Multiple Currencies
Entering a Field Manually to an Advanced Template
Some fields can be added to advanced templates but are not available in the Fields selector, for
example, ${record.entity.email} refers to the Customer record through the entity field so that all
body fields in the customer record can be accessed.
SuiteBuilder
HTML Markup Source Editing in the Template Editor
166
The following procedure describes how to add fields to the template manually.
To manually add a field to an advanced template:
1. Obtain the field ID for the field you want to add.
■ To make field IDs available, go to Home > Set Preferences and ensure that the Show Internal
IDs box is checked on the General subtab, Defaults area.
■ Find the field in the NetSuite user interface and click the field label to display the field level
help text.
The field ID is displayed in the popup.
Note: Field ID information is also available in the SuiteScript Records Browser. See the
help topic Using the SuiteScript Records Browser.
2. Go to Customization > Forms > Advanced PDF/HTML Templates and click the Customize or Edit
link for the advanced template.
3. Place the cursor in the location on the template where you want to add the field.
4. Add a text field, and enter the appropriate syntax for the field that you want to add.
The template editor supports a simplified syntax to get values for the fields to be printed. A field
must be exposed to SuiteScript to be used in advanced templates. See the SuiteScript Records
Browser to see if the field you want is available.
For information about entering the syntax, read Syntax for Body Fields, Syntax for Sublist Fields,
and Syntax for Fields from Joined Records and Searches.
Syntax for Body Fields
For most template body fields, the syntax is ${object.fieldId}, for example, ${record.entity}.
■ The following objects are currently supported:
□ companyInformation - company information for the current NetSuite account
For example, ${companyInformation.companyname} is the name associated with the
NetSuite account.
Enter ${subsidiary.mainaddress_text} to include the subsidiary address on a template.
□ record - current transaction record
For example ${record.trandate} is the date of the transaction.
□ records - reference multiple data sources, which you typically need to do in label, check and
statements templates, for example, ${statement.amountDue}.
□ customer - only available on Statement records, this includes customer-related
information on the template. For example, you could include ${customer.subsidiary},
${customer.subsidiary.legalname}, or ${customer.entityId}.
□ salesorder - available on packing slips
SuiteBuilder
HTML Markup Source Editing in the Template Editor
167
□ preferences - include settings entered on the Setup > Company > Printing & Fax page.
□ user - include settings entered on the user’s Set Preferences page. These fields are typically
used for emails.
■ You can include fields that dynamically return a URL link to NetSuite pages, or to parts of a URL,
such as the account ID:
□ ${companyInformation.companyId} — Account ID, for example, 55555.
□ ${companyInformation.appDomain} — Application domain, for example,
system.netsuite.com.
□ ${companyInformation.customerCenterDomain} — Customer center domain, for example,
system.netsuite.com.
□ ${companyInformation.customerLoginUrl} — Customer login URL, for example, https://
system.netsuite.com/app/login/secure/privatelogin.nl?c=555555.
■ You can include fields from records related to the current transaction record if they are of type
select (not sublists).
□ Syntax is ${record.related_record.fieldId}
For example, to include customer field values from related item records in a sales order
template, use the syntax: ${record.entity.email}
■ The syntax for body fields can include an additional component, such as the following:
□ ${object.fieldId@label} - indicates the label of a field should be printed.
For example, ${record.entity@label}: ${record.entity} indicates the label for the
entity should be printed with the entity, that is, Customer: City Art Gallery. The label is the text
that displays next to the field on the transaction form.
□ ${record@title} - indicates that the name of the transaction record type should be printed,
for example, Sales Order for sales order.
This can be used for record objects only; for other objects it will return a blank string.
■ Fields that include a link, such as images or URLs, are enclosed in an HTML tag, for example, <img>
or <a>. You have two options for link fields:
□ Use the field to include the HTML markup source. For example, ${record.hyperlink} returns
the following:
<a href src="http://www.netsuite.com">http://www.netsuite.com</a>
□ Add @url to the field to return the link without the HTML. For example,
${record.hyperlink@url} returns the following:
http://www.netsuite.com
Syntax for Sublist Fields
Sublists are NetSuite components that are referenced as lists of objects. The most common example of
a sublist is an item sublist on a transaction, which displays a list of lines. Sublists are not available in the
Fields selector.
The most common way to access a sublist is by using the FreeMarker #list declaration. The following
example shows an item sublist on the sales order.
<#list record.item as item>
${item_index} ${item.itemName@label} ${item.itemName} --- ${item.amount}
</#list>
This declaration prints out a block of HTML code to display the whole list.
SuiteBuilder
HTML Markup Source Editing in the Template Editor
168
0 Name: Blue T-Shirt --- 10.00$
1 Name: Green T-Shirt --- 12.25$
2 Name: Yellow T-Shirt --- 11.00$
To reference one item in the list, you can use ${record.item[index].itemName} to obtain only that
line in the sublist. Using the example above, ${record.item[1].itemName} returns the line 1 item
Green T-Shirt.
The syntax for sublist (line item) fields is similar to body field syntax. Sublist fields are denoted with
syntax like:
■ ${item.item@label}
■ ${item.id}
■ ${item.item}
■ ${item.quantity}
You can only reference fields on a sublist at the first level. Referencing sublists at the second level is not
supported.
For example, only the following is supported.
<#list record.item as item>
${item.field_first_level}
</#list>
If you use item.inventorydetail, you will get a listing of all bin/serial numbers.
To sort line items in advanced templates, add the sort_by() function to the #list declaration, for
example:
<#list record.item?sort_by("quantity") as item>
Syntax for Fields from Joined Records and Searches
You can modify advanced templates in the template editor to include fields from records directly joined
to the current transaction.
■ Syntax is ${record.related_record.fieldId}
■ To include sales description field values from related item records in a sales order template, use the
syntax: ${record.item.salesdescription}
You also can include search results fields from searches joined directly to the current transaction.
■ You can use the index number to indicate the search result row to be referenced to obtain a field
value. For example, [0] would indicate that the field value from the first row returned in search
results should be used.
■ Syntax is ${results[search_result_line].related_record.fieldId}.
For example, to include the first customer phone number from a sales order search, type:
${results[0].customer.phone}
■ To include a list of search results, use a list directive as shown in the following example.
<#list results as salesOrder>
<p>${salesOrder.customer.phone}</p>
</#list>
SuiteBuilder
HTML Markup Source Editing in the Template Editor
169
Updating a Statement Template to Support Multiple Currencies
If you have an advanced statement template that must be updated to support multiple currencies, edit
your template as follows.
Wrap the existing template in the following tags:
<pdfset>
<#list statements as record>
...original template...
</#list>
</pdfset>
Change any record.items references to record.lines.
Setting a Template to Use a Font Unavailable in NetSuite
If you want to print using a font or language that is not available in NetSuite, you can edit the template
to do this.
1. Load the .TTF font file into NetSuite.
2. In the template, declare the font as opentype, not truetype.
3. Refer to the font in the file cabinet.
<?xml version="1.0"?><!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf>
<head>
<link name="thai-font" type="font" subtype="opentype" src="https://system.netsuite.com/core
/media/media.nl?id=5967216&amp;c=3809789&amp;h=8609ede0aef4cbfad71d&amp;_xt=.ttf" src-bold="htt
ps://system.netsuite.com/core/media/media.nl?id=5967216&amp;c=3809789&amp;h=8609ede0aef4cbfad71
d&amp;_xt=.ttf" bytes="2" />
<style type="text/css">
* {
font-family: thai-font, sans-serif;
font-size: 9pt;
table-layout: fixed;
}
th {
font-weight: bold;
font-size: 8pt;
vertical-align: middle;
padding: 5px 6px 3px;
background-color: #e3e3e3;
color: #333333;
}
td {
padding: 4px 6px;
}
</style>
</head>
<body>
This&#3585;example&#3586;has&#3587;words&#3588;separated&#3589;by&#3590;Thai&#3591;characte
rs.
SuiteBuilder
HTML Markup Source Editing in the Template Editor
170
</body>
</pdf>
Languages for Printed Forms that Use Advanced
Templates
Custom forms that use advanced templates are printed in the locale of the current user, set in the
Language field at Home > Set Preferences. Based on the locale, the font family is set.
You also can print these forms in the locale of the customer associated with a transaction, for
transaction types that support this option at Transactions > Management > Print Checks and Forms.
To print transactions in Chinese, Japanese, or Korean, a user must have the CJK font pack installed.
As of March 13, 2014, all standard advanced templates were updated to support printing in Russian.
If you want to use any custom advanced templates created before that date to print forms in Russian,
you must manually update them to include the following as the first line after the opening <head> tag:
<link name=”verdana” type=”font” subtype=”opentype” src=”${nsfont.verdana}” src-bold=”${nsfont.
verdana_bold}” bytes=”2”></link>
Also, you should use Verdana as the font-family in the CSS in places where the Russian alphabet is
used.
You can also use a link name declaration to specify the font to be used for the template. The link name
statement can specify any font that is available in external sources, for example, the File Cabinet.
If your organization supports more than one language, you could adapt the language to the customer’s
locale by using code similar to the following:
<#if .locale == "zh_CN">
font-family: stsong, sans-serif;
<#elseif .locale == "zh_TW">
font-family: msung, sans-serif;
<#elseif .locale == "ja_JP">
font-family: heiseimin, sans-serif;
<#elseif .locale == "ko_KR">
font-family: hygothic, sans-serif;
<#elseif .locale == "ru_RU">
font-family: verdana;
<#else>
font-family: sans-serif;
</#if>
ISO standards are followed for the country and culture code for each language (ISO 639 and ISO 3166
respectively).
If you want to use English in the template and print Chinese characters, update the last section of the
template as follows.
<#else>
font-family: msung, sans-serif;
</#if>
Bilingual advanced PDF templates are not supported.
SuiteBuilder
HTML Markup Source Editing in the Template Editor
171
Adding Striping to Line Items in Advanced Templates
You can edit HTML markup source in the template editor to add striping to the line items table in an
advanced template.
The syntax for adding striping to the line items tables relies on BFO (Big Faceless Organization), a set of
third party libraries used by NetSuite for generating PDF documents. BFO documentation is available at
http://bfo.com/products/report/docs/userguide.pdf.
Note: If you are having issues with your advanced template, do not contact BFO directly.
Always contact NetSuite Technical Support.
Warning: Do not modify markup source directly unless you have sufficient CSS and HTML
knowledge. NetSuite does not provide support or training in CSS or HTML.
Be aware that the template editor may not function properly if you switch back to WYSIWYG
mode after edits have occurred in markup source mode. Some template content may not be
represented correctly, may not be accessible for editing, or may not be displayed at all.
If these issues occur, you can preserve template content by not saving the template in WYSIWYG
mode and switching back to markup source mode.
To add striping to a line items table:
1. Open the advanced template in the template editor, and click the Source Code toggle.
2. Scroll down to the portion of the HTML markup source relating to the rows in the line items
table:
Note: It is recommended that you avoid using the <tbody> tag. BFO processing issues
may result in an inability to save a template that includes this tag.
3. Edit the <tr> tag relating to rows in the line items table, to specify alternating colors for these
rows, like the following example:
SuiteBuilder
HTML Markup Source Editing in the Template Editor
<tr style="background-color: ${((item_index % 2)==0)?string('#ffffff',
'#ccffcc')};">
172
In this example, even rows use the color represented in hexadecimal by #ffffff and odd rows
use the color represented by #ccffcc.
To get hexadecimal codes for striping colors:
You can look up hex codes in the HTML color picker provided in the template editor:
1. In rich text editing mode, click the text color or background color button.
2. Click More Colors.
3. In the Select Color dialog, click a color to see the hex code.
For example, you want your printed purchase orders to include borders and striping.
SuiteBuilder
HTML Markup Source Editing in the Template Editor
Edit the template markup source to add the table styles.
A purchase order that uses the table styles shown will display striping and dotted borders.
SuiteBuilder
173
HTML Markup Source Editing in the Template Editor
174
Adding Page Breaks to Tables
If you have text overlapping a footer or missing from a printout, ensure that any long content is
enclosed in a tag that will split across pages.
The Report Generator has specific rules for where page breaks can occur. A <table> tag nested inside
a <td> tag is cut off at the bottom if it spreads across multiple pages. Only the following tags split
correctly if they are spread across multiple pages:
<table>
<ul>
<p>
<pre>
<ol>
<h1>
<h2>
<h3>
<h4>
<blockquote>
For more information about the tags that support table pagination, see Page 17 of the BFO (Big
Faceless Organization) Guide.
The following example shows a typical table layout.
<!-- start of item table in transaction -->
<#list record.item as item>
<#if item_index==0> <!-- Header Definition -->
<tr>
<th>${item.field1@label}</th>
<th>${item.long_text_field@label}</th>
<th>${item.field2@label}</th>
<!-- ... -->
</tr>
</#if>
<tr>
<td>${item.field1}</td>
<td>${item.long_text_field}</td>
<td>${item.field2}</td>
<!-- ... -->
</tr>
</#list>
<!-- end of item table in transaction -->
If item.long_text_field contains more than 2000 text characters, one table line might span the
whole page and overflow, and the data might be truncated. If it is necessary to print a long table over
more than one page, use code similar to the following.
<!-- start of item table in transaction -->
<#list record.item as item>
<#if item_index==0> <!-- Header Definition -->
<tr>
<th>${item.field1@label}</th>
<th>${item.long_text_field@label}</th>
<th>${item.field2@label}</th>
<!-- ... -->
SuiteBuilder
HTML Markup Source Editing in the Template Editor
</tr>
</#if>
<#list item.long_text_field?split("<br />") as paragraph>
<#if desc_index==0>
<tr>
<td>${item.field1}</td>
<td>${paragraph}</td>
<td>${item.field2}</td>
<!-- ... -->
</tr>
<#else>
<tr>
<td></td>
<td>${paragraph}</td>
<td></td>
<!-- ... -->
</tr>
</#if>
</#list>
</#list>
<!-- end of item table in transaction -->
You can enter any delimiter that you want. The previous example uses a delimiter of "<br />".
With the #list statement shown in the example, instead of printing out one table row containing
all of the paragraphs, more rows are printed. A split function is applied on long_text_field,
so "paragraph1<br />paragraph2<br />paragraph3" becomes a list of values
"paragraph1","paragraph2","paragraph3". To print the list of paragraphs, in the first row, all
of the fields and the first paragraph of long_text_field are printed. In each subsequent row, one
paragraph of long_text_field is printed and all other cells are left blank.
A table that looked like this before:
Field 1
Long Text Field
Field 2
Value 1
Paragraph 1
Paragraph 2
Paragraph 3
Value 4
Paragraph 1
Paragraph 2
Paragraph 3
Paragraph 4
Value 5
Value 3
Paragraph 1
Value 6
Now looks like this:
Field 1
Long Text Field
Field 2
Value 1
Paragraph 1
Value 4
Paragraph 2
Paragraph 3
Value 2
Paragraph 1
Value 5
Paragraph 2
SuiteBuilder
175
HTML Markup Source Editing in the Template Editor
Field 1
Long Text Field
Field 2
Paragraph 3
Paragraph 4
Value 3
Paragraph 1
Value 6
176
With each paragraph in a separate row, as many rows as possible are fit onto the page, and any rows
that do not fit are moved to the next page.
Printing Subsidiary Logo on Advanced Templates
For OneWorld organizations, instead of having the main company logo print on invoices, you might
want the relevant subsidiary logo to be printed. You can do this by creating one advanced template for
each subsidiary.
Note: This topic applies only to customers that use subsidiaries.
1. Create one advanced template for each subsidiary. Use the <img src="" /> tag in the
template to specify the location of the image. The URL in the src parameter can reference an
image in the File Cabinet.
2. Create a form for each subsidiary to apply the template created in Step 1.
3. Add the following code to the template:
<#if subsidiary.logo?length != 0>
<img src="${subsidiary.logo@url}" style="float: left; margin: 7px"/>
<#else>
<#if companyInformation.logoUrl?length != 0>
<img src="${companyInformation.logoUrl}" style="float: left; margin: 7px" />
</#if>
</#if>
Adding Apply Sublist to Check Templates
By default, Apply sublist items are not printed on check templates. However, you can customize the
check template as follows to include the Apply sublist.
<#if check.item?has_content || check.expense?has_content || check.apply?has_content>
<table style="position: absolute;overflow: hidden;left: 36pt;top: 90pt;width: 436pt;">
<#list check.expense as expense>
<tr>
<td>${expense.account}</td>
<td>${expense.date}</td>
<td>${expense.description}</td>
<td align="right">${expense.amount}</td>
</tr>
</#list>
<#list check.item as item>
<tr>
<td>&nbsp;</td>
<td>${item.date}</td>
<td>${item.item}, ${item.description}</td>
SuiteBuilder
HTML Markup Source Editing in the Template Editor
177
<td align="right">${item.amount}</td>
</tr>
</#list>
<#if check.apply?has_content>
<#list check.apply as apply>
<tr>
<td>&nbsp;</td>
<td>${apply.applydate}</td>
<td>${apply.type} ${apply.refnum}</td>
<td align="right">${apply.amount}</td>
</tr>
</#list>
</#if>
</table>
</#if>
Using Custom Data Sources for Advanced Printing
You can combine custom data stored outside of NetSuite with data stored in NetSuite to be displayed
together in printed forms for NetSuite transactions. This capability is supported by the SuiteScript 2.0
render module, which includes a method to support XML and JSON data sources in advanced PDF/
HTML templates. For more information about the added method, see the help topic N/render Module.
Data from JSON and XML is handled as a string, because there is no information about the data type.
You can use JavaScript or FreeMarker functions for formatting, if required. For example, you might
want to ensure that dates all use the same format.
To include a custom data source, you customize a standard template and use the source code view to
add the new fields. The sections with fields from the custom data source have to be surrounded by
the FreeMarker tag <#if ALIAS?has_content> </#if>. The tag is required because custom data
sources cannot be displayed in the template editor. If you view a preview of the template, the external
data source is not shown.
Because FreeMarker supports only XML, JSON data sources have the same restrictions as XML, for
example, a property cannot start with a digit. The JSON data source is converted to XML for printing.
You must know what information is included in the external data source and use syntax like the
following:
<?xml version="1.0"?>
<!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf>
<body>
Custom Data Sources:
<#if XML?has_content>
${XML.book.title}<br />
${XML.book.chapter[1].title}
</#if>
<br />
<#if JSON?has_content>
${JSON.book.title}<br />
${JSON.book.chapter[1].title}
</#if>
<br />
<#if JSON_STR?has_content>
${JSON_STR.book.title}
SuiteBuilder
Using Custom Data Sources for Advanced Printing
178
</#if>
<br />
<#if XML_STR?has_content>
${XML_STR.book.title}
</#if>
</body>
</pdf>
Next, you create a SuiteScript 2.0 file that uses the addCustomDataSource method in the renderer
object. Use code like the following:
renderer.addCustomDataSource({format: render.DataSource.XML_DOC, alias: "XML", data: xmlObj});
renderer.addCustomDataSource({format: render.DataSource.XML_STRING, alias: "XML_STR", data: xml
String});
renderer.addCustomDataSource({format: render.DataSource.OBJECT, alias: "JSON", data: jsonObj});
renderer.addCustomDataSource({format: render.DataSource.JSON, alias: "JSON_STR", data: jsonStri
ng});
The form is processed as follows:.
1. The customized template is loaded into the renderer.
2. Data from the NetSuite record is loaded.
3. Data from the custom data source is added (XML, JSON, XML_STR, and JSON_STR) in the
previous example).
4. The form is printed using the renderer.
For example, you want to print gift certificates for employees that combine name and address
information stored in NetSuite with data from an external survey. You customize an advanced template
using the source code view of the Template Editor. You also add fields from the XML file that contains
exported results from the survey. Then you create a SuiteScript file that uses the render module to
do the following: load the customized template, add data from the NetSuite record, add custom data
from the XML file, and print the gift certificate forms. Data from the two sources are combined to print
personalized certificates for employees.
Important: SuiteScript 1.0 does not support the use of data from sources other than
NetSuite records.
Example of Using Custom Data Sources for Advanced
Printing
When setting up an advanced template, you can use multiple data sources. This example shows how to
use a JSON object and an XML file together with NetSuite data from a saved search to create a packing
slip for a customer.
The JSON object provides customer names and language preferences.
{"customers":[
{"firstName":"John", "lastName":"Doe", "language":"English"},
{"firstName":"Anna", "lastName":"Smith", "language":"Spanish"},
{"firstName":"Peter", "lastName":"Jones", "language": "English"}
]}
The XML file provides a holiday greeting in the customer’s preferred language.
SuiteBuilder
Using Custom Data Sources for Advanced Printing
<?xml version="1.0" encoding="UTF-8"?>
<message>
<engbody>Happy holidays! We are closed from Dec 22 - Jan 3. Take advantage of our great pri
ces before Christmas!</engbody>
<spbody>¡Feliz Navidad! Estamos cerrados del 22 de diciembre al 3 de enero. Aproveche nuest
ros excelentes precios antes de Navidad!</spbody>
</message>
The advanced PDF/HTML template is edited in markup source view to incorporate the XML file and
JSON object.
<?xml version="1.0"?>
<!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf>
<head>
<macrolist>
<macro id="nlheader">
<!-- XML Part -->
<#if XML?has_content>
<p style="color: blue">
<#if .locale?starts_with("es_")>
${XML.message.spbody}
<#else>
${XML.message.engbody}
</#if>
</p>
</#if>
<!-- End XML Part -->
<table class="header">
<tr>
<td rowspan="3">
<span class="addressheader">${companyInformation.companyName}</span><br />
<span class="addressheader">${companyInformation.addressText}</span></td>
<td align="right"><span class="title">${record@title}</span></td>
</tr>
<tr>
<td align="right"><span class="number">#${record.tranid}</span></td>
</tr>
<tr>
<td align="right">${record.trandate}</td>
</tr>
</table>
</macro>
</macrolist>
<style type="text/css">
table {
font-family: sans-serif;
font-size: 9pt;
table-layout: fixed;
}
th {
font-weight: bold;
SuiteBuilder
179
Using Custom Data Sources for Advanced Printing
font-size: 8pt;
vertical-align: middle;
padding: 5px 6px 3px;
background-color: #e3e3e3;
}
td {
padding: 4px 6px;
}
td.addressheader {
font-size: 8pt;
padding-top: 6px;
padding-bottom: 2px;
}
span.number {
font-size: 16pt;
}</style>
</head>
<body header="nlheader" header-height="20%" padding="0.5in 0.5in 0.5in 0.5in" size="Letter">
<table style="width: 100%; margin-top: 10px;">
<tr>
<td colspan="3" style="font-size: 8pt; font-weight: bold;">${record.billaddress@lab
el}</td>
<td colspan="3" style="font-size: 8pt; font-weight: bold;">${record.shipaddress@lab
el}</td>
<td colspan="5" style="font-size: 12pt; background-color: #e3e3e3; font-weight: bol
d;">${record.total@label?upper_case}</td>
</tr>
<tr>
<td colspan="3" style="padding: 0;">${record.billaddress}</td>
<td colspan="3" style="padding: 0;">${record.shipaddress}</td>
<td align="right" colspan="5">${record.total}</td>
</tr>
</table>
<table style="width: 100%; margin-top: 10px;">
<tr>
<th>${record.paymentmethod@label}</th>
<th>${record.otherrefnum@label}</th>
<th>${record.shipmethod@label}</th>
<th>${record.shipdate@label}</th>
</tr>
<tr>
<td style="padding-top: 2px;">${record.paymentmethod}</td>
<td style="padding-top: 2px;">${record.otherrefnum}</td>
<td style="padding-top: 2px;">${record.shipmethod}</td>
<td style="padding-top: 2px;">${record.shipdate}</td>
</tr>
</table>
<#if record.item?has_content>
<table style="width: 100%; margin-top: 10px;">
<!-- Start Items -->
<#list record.item as item>
SuiteBuilder
180
Using Custom Data Sources for Advanced Printing
<#if item_index==0>
<thead>
<tr>
<th align="center" colspan="3">${item.quantity@label}</th>
<th colspan="12">${item.item@label}</th>
<th align="right" colspan="4">${item.rate@label}</th>
<th align="right" colspan="4">${item.amount@label}</th>
</tr>
</thead>
</#if>
<tr>
<td align="center" colspan="3" line-height="150%">${item.quantity}</td>
<td colspan="12">
<span style="font-weight: bold; line-height: 150%;">${item.item}</span>
<br />
${item.description}
</td>
<td align="right" colspan="4">${item.rate}</td>
<td align="right" colspan="4">${item.amount}</td>
</tr>
</#list>
<!-- End Items -->
</table>
<hr style="width: 100%; color: #d3d3d3; background-color: #d3d3d3; height: 1px;" />
</#if>
<table style="page-break-inside: avoid; width: 100%; margin-top: 10px;">
<tr>
<td colspan="4">&nbsp;</td>
<td align="right" style="font-weight: bold;">${record.subtotal@label}</td>
<td align="right">${record.subtotal}</td>
</tr>
<tr>
<td colspan="4">&nbsp;</td>
<td align="right" style="font-weight: bold;">
${record.taxtotal@label}
${record.taxrate}%)
</td>
<td align="right">${record.taxtotal}</td>
</tr>
<tr style="background-color: #e3e3e3; line-height: 200%;">
<td background-color="#ffffff" colspan="4">&nbsp;</td>
<td align="right" style="font-weight: bold;">${record.total@label}</td>
<td align="right">${record.total}</td>
</tr>
</table>
<!-- JSON Part -->
<#if JSON?has_content>
<p style="color: red">
JSON data:
</p>
<table style="width: 100%; margin-top: 10px;">
SuiteBuilder
181
Using Custom Data Sources for Advanced Printing
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Language</th>
</tr>
</thead>
<#list JSON.customers as item>
<tr>
<td>${item.firstName}</td>
<td>${item.lastName}</td>
<td>${item.language}</td>
</tr>
</#list>
</table>
</#if>
<!-- End JSON Part -->
<!-- Saved Search Part -->
<#if SEARCH?has_content>
<p style="color: green">
Saved Search results:
</p>
<table style="width: 100%; margin-top: 10px;">
<thead>
<tr>
<th>trandate</th>
<th>amount</th>
<th>entity</th>
</tr>
</thead>
<#list SEARCH as item>
<tr>
<td>${item.trandate}</td>
<td>${item.amount}</td>
<td>${item.entity}</td>
</tr>
</#list>
</table>
</#if>
<!-- End Saved Search Part -->
</body>
</pdf>
The SuiteScript file incorporates the JSON object and XML file with NetSuite data and the advanced
template.
/** *
@NApiVersion 2.x
*/
require(['N/render',
function(render,
// load JSON
var jsonFile
SuiteBuilder
'N/file', 'N/record', 'N/search'],
file, record, search) {
file from file cabinet
= file.load({
182
Using Custom Data Sources for Advanced Printing
id: #json_content_file_cabinet_id#
});
// load XML file from file cabinet
var xmlFile = file.load({
id: #xml_content_file_cabinet_id#
});
// load printing template file from cabinet
var templateFile = file.load({
id: #template_content_file_cabinet_id#
});
var renderer = render.create();
renderer.templateContent = templateFile.getContents();
// add JSON custom data source
renderer.addCustomDataSource({
alias: "JSON",
format: render.DataSource.JSON,
data: jsonFile.getContents()
});
// add XML custom data source
renderer.addCustomDataSource({
alias: "XML",
format: render.DataSource.XML_STRING,
data: xmlFile.getContents()
});
// add search data source
var rs = search.create({
type: search.Type.TRANSACTION,
columns: ['trandate', 'amount', 'entity'],
filters: []
}).run();
var results = rs.getRange(0, 1000);
renderer.addSearchResults({
templateName: 'SEARCH',
searchResult: results
});
// add record data source
var objRecord = record.create({
type: record.Type.SALES_ORDER
});
renderer.addRecord({
templateName: 'record',
record: objRecord
});
// render PDF file and save
var invoicePdf = renderer.renderAsPdf();
invoicePdf.folder = #file_cabinet_folder_id#;
var id = invoicePdf.save();
});
SuiteBuilder
183
Using Custom Data Sources for Advanced Printing
184
The output of this example resembles the following.
Previewing Advanced PDF/HTML Templates
The editor for advanced PDF/HTML templates supports previewing of templates. This feature enables
you to see how template changes affect PDF output during the time that are editing a template. You
can preview the template from both WYSIWYG and markup source editing modes.
SuiteBuilder
Previewing Advanced PDF/HTML Templates
185
Click the Preview button to generate and display a PDF based on the current template definition. The
PDF that appears uses artificial data that simulates the real values as follows:
■ $9,999.99 represents dollar values.
■ 6/22/2015 represents a date value in U.S. date format.
■ Lorem ipsum represents text values.
If a preview of the template cannot be shown, an error message appears.
SuiteBuilder
Error Messages in Advanced Templates
186
Error Messages in Advanced Templates
Virtual Record when Saving Template
When a template is saved, the printing engine generates a virtual record to make sure that the
template can be printed. If your template uses a substring function, a temporary string may be used
that does not contain enough characters to let the function to go through correctly. If this occurs you
might see an error message similar to the following.
The template cannot be saved due to the following errors: Exception during template
merging. java.lang.StringIndexOutOfBoundsException: String index out of range: 9
For example, the following line in a template will work when you are printing the record but not when
the template is saved because the temporary string will not be long enough:
${item.taxcode?substring(4,9)}
To ensure that the template saves correctly, add an if statement to verify the length of the string.
<#if (item.taxcode?length > 9)>
${item.taxcode?substring(4,9)}
</#if>
Errors when Previewing or Saving Templates
When you preview or save an advanced template, if the preview cannot be shown, or if the template
cannot be saved, an error message appears. The message displays the line and the column where the
error occurred.
Also, when a PDF document does not print and fails with an error, the error message includes the
template name, line, and column where the error occurred. Click Detail… to see more information
about the error encountered. Administrators can use this information to address the issue with the
template.
Advanced Templates for Printing Saved Search
Results
Advanced PDF/HTML Templates support printing saved search results for any record type. You can
define multiple print templates for a single saved search using the same Template Editor that you use
to edit transaction templates.
To create a template for printing saved search results:
1. Choose an option:
■ On the Saved Search edit page (), click New Template. The Template Setup window appears.
SuiteBuilder
Advanced Templates for Printing Saved Search Results
187
■ On the Advanced PDF/HTML Templates list page (), click the New Saved Search Template
button at the top of the page. The Template Setup window appears. Choose the saved search
to which the template applies.
2. Set up the template to display the required information. Only fields that were specified in the
Results subtab of the saved search are available.
If there is more than one Formula(Currency) field in the saved search, reference the fields by
using ${result.formulacurrency} for the first field, {result.formulacurrency_1} for
the second field, ${result.formulacurrency_2} for the third field, and so on.
InternalId is not available for any field unless it is specified as a separate output field on the
Results subtab of the saved search.
For more information about formatting the template, see Customizing Advanced Templates in the
Template Editor.
Sample Templates
When printing saved search results, you may want to print a list, or print one record per page.
To print a list of records, modify your template to resemble the following.
SuiteBuilder
Advanced Templates for Printing Saved Search Results
Printing from this templates shows a list of results.
To create a template that prints one record per page, the template code resembles the following.
The location of the <#list…> statement results in one page per record.
SuiteBuilder
188
Advanced Templates for Printing Saved Search Results
189
Printing Saved Search Results
Clicking the Print button on a saved search results page displays a popup window where you can
choose from a list of available templates. This functionality is only available when the Advanced PDF/
HTML Templates feature is enabled and a template is available for printing the saved search results.
Only templates that are available for the saved search are available. To use browser printing, select
Default from the Template dropdown list. Then click Print.
Advanced Templates Support for Company
Printing Preferences
Advanced templates support company printing preferences, as defined at Setup > Company > Printing
& Faxing Preferences, on the Printing subtab. The following company printing preferences are applied
to printed transactions that use advanced templates:
■ Customers Default to Print Transactions
■ Vendors Default to Print Transactions
■ Print Return Form with Packing Slip
■ Print Remittance Form with Invoices and Statements
■ Print Transaction Forms Landscape
SuiteBuilder
Advanced Templates Support for Company Printing Preferences
190
■ Print Separate Voucher for Bill Payments
■ Print Accounts on Vouchers
■ Print Discount and Shipping Lines on Columns
■ Use Location Address on Forms
■ Check Printing — Default Check Type (Standard or Voucher)
Note that preferences listed in the Messages section of the Printing & Fax Preferences page, such
as disclaimers and other message text, are not applied to printed transactions that use advanced
templates. You can define specialized message text on any custom advanced template. This alternative
enables you to vary message text instead of having one standard message defined on the preferences
page.
Using SuiteScript for Transaction Records
How SuiteScript APIs Work
The SuiteScript API lets you programmatically extend NetSuite beyond the capabilities offered through
SuiteBuilder customization. Most SuiteScript APIs pass record, field, sublist, tab, search filter, and
search column IDs as arguments.
To determine which script you need, refer to the documentation, where the SuiteScript API is organized
by the types of tasks most developers want to perform. See SuiteScript 2.0 API for SuiteScript 2.0 or
SuiteScript API Overview for SuiteScript 1.0 to get started with the SuiteScript API.
After you have determined which script you need, perform the following steps to get a script to run in
NetSuite.
1. Create your script.
2. Create a NetSuite Script record for your script. You will be prompted to load the script file.
3. Create a NetSuite Script Deployment record and specify script runtime options.
For complete details on each step in the process, start with the Running Scripts in NetSuite Overview
topic in the NetSuite Help Center.
SuiteScript 2.0 Module and Members for Printing Transaction
Records
SuiteScript 2.0 supports a render module that you can use you to programmatically print, create PDFs,
create forms from templates, and create email messages from templates.
The render.TemplateRenderer object member provides a template engine object and related
methods so you can use advanced PDF/HTML templates to produce HTML and PDF printed forms. For
details, see the help topic render.TemplateRenderer. If you associate an advanced template with the
custom form saved for a transaction and use this API to print the transaction, the advanced template is
used to format the printed transaction.
In SuiteScript 2.0, it is possible to reference a template by ID. The SuiteScript 2.0
render module includes a method that supports referencing a template by its script ID,
TemplateRenderer.setTemplateByScriptId. Each template's script ID can be set and reviewed in
the Template Setup popup window of the Template Editor.
SuiteBuilder
Using SuiteScript for Transaction Records
191
In addition to the method for referencing templates by script ID, the
TemplateRenderer.setTemplateById method supports referencing a template by its systemgenerated internal ID. This method would only be required for specific custom printing solution use
cases.
For information about the NetSuite records that support SuiteScript, see SuiteScript Supported
Records.
Advanced Template List for Custom Printing Solutions
When your create a custom field of type List/Record, Advanced PDF/HTML Templates is available as an
option in the List/Records dropdown list on the custom field setup page available at Customization >
Lists, Records & Fields > [Custom Field]. This option provides users with a list of all available advanced
templates, for use in a case where you create a script that enables users to specify a form to be used
for printing, as part of a custom printing solution.
For example, to provide a custom printing solution for your users you could create a purchase order
form and add a custom field of type List/Record with Advanced PDF/HTML Templates specified. Then
you use the SuiteScript 2.0 render module method to refer to each user’s selected advanced template
by NetSuite internal ID. A Suitelet can then be used to take the user's selection and pass in the internal
ID of the template to print the purchase order.
Notes about Advanced Template List
■ This option should be used only with a scripted custom printing solution.
■ The list of available templates is not filtered. All advanced PDF/HTML templates are available,
including those that are not for the correct transaction type.
■ This field alone does not allow users to specify the template to be used for printing a form. By
default, printing preferences for advanced forms are specified by Setting Custom Forms to Use
Advanced Templates.
Printing the Correct Currency Symbol
If you are using SuiteScript to render saved search results, verify the following to ensure that the
correct currency symbol is used in the advanced PDF/HTML template.
1. Add Currency to the saved search columns.
2. Use code something similar to the following in the JavaScript file.
<#if result.currency == 'Euro'>${result.fxamountremaining?string('#,##0.00')} #
<#elseif result.currency == 'USA'>${result.fxamountremaining}
</#if>
SuiteScript 1.0 Functions and Objects for Transaction Records
SuiteScript 1.0 supports a template engine object and related methods so you can apply
advanced template format capabilities programmatically. For details, see the help topics
nlapiCreateTemplateRenderer() and nlobjTemplateRenderer. For information about the NetSuite
records that support SuiteScript, see the help topic SuiteScript Supported Records.
In addition to this function and object, the SuiteScript function nlapiPrintRecord(type, id, mode,
properties) supports the use of advanced templates. If you associate an advanced template with the
SuiteBuilder
Using SuiteScript for Transaction Records
192
custom form saved for a transaction and use this API to print the transaction, the advanced template is
used to format the printed transaction.
You can also use SuiteScript to apply advanced templates to printed records that are not transactions.
For information, see Using SuiteScript to Apply Advanced Templates to Non-Transaction Records.
Printing a Large Volume of Documents
To print hundreds or thousands of documents, you must use the SuiteScript API and follow these steps.
1. Create a Saved Search of the documents that you want to print, or, if you need to print out
more than 1000 documents, create multiple searches where you batch results of 1000 rows or
less.
2. Create the Template using the <pdfset> tag. The <pdfset> tag specifies that everything
between the <pdf> tags will be processed separately, which improves the efficiency of the
printing algorithm.
<?xml version="1.0"?>
<!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdfset>
<#list results as result>
<pdf>
<head>
</head>
<body>
<h1 align="right">Invoice</h1>
<p align="right">#${result.tranid}</p>
<p align="right">${result.trandate}</p>
<p>Total: ${result.amount}</p>
</body>
</pdf>
</#list>
</pdfset>
3. Write the script file, including nlapiSearchRecord to call the saved search and
nlapiCreateTemplateRenderer to generate the documents.
4. Create a Suitelet and attach the SuiteScript to it, selecting the appropriate function to execute.
Using SuiteScript to Apply Advanced Templates to
Non-Transaction Records
Currently, you must use SuiteScript to apply advanced print templates to non-transaction record types.
This topic provides an example of how to use an advanced template with the Employee record type.
For general information about the SuiteScript 1.0 object that can be used for advanced printing, see
the help topics nlapiCreateTemplateRenderer() and nlobjTemplateRenderer. For SuiteScript 2.0, see the
help topic render.TemplateRenderer.
In this example, the goal is to print employee access cards that include name, hire date, and a photo.
Before you create a script for this purpose, you need to:
■ Use HTML to create a basic print template. This template code should:
□ Conform to FreeMarker syntax. For more information, see the FreeMarker documentation at
http://freemarker.sourceforge.net/docs/index.html.
SuiteBuilder
Using SuiteScript to Apply Advanced Templates to Non-Transaction Records
193
□ Reference BFO (Big Faceless Organization), a set of third party libraries used by NetSuite for
generating PDF documents. BFO documentation is available at http://bfo.com/products/report/
docs/userguide.pdf.
■ Understand the data model for the record to determine the fields that will need to be included in
your template. You can get the IDs of these fields in the NetSuite UI.
□ To make field IDs available, go to Home > Set Preferences and ensure that the Show Internal IDs
option is enabled on the General subtab, Defaults area.
□ Select an Employee record and for each field that you want to include in the template, click the
field label to display the field level help text. The field ID is in the bottom right corner.
Sample Template for Employee Access Card
The following sample template code provides some basic formatting and references 3 field IDs from
the employee record: entityId, hiredate, and image.
<$xml version="1.0"?>
<!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf>
<head>
</head>
<body width="2.35in" height="3.75in">
<img align="center" "width="100px" height="125px" src="${employee.image?html}"></img>
<p align="center" style="font-size:24px;font-weight:bold;">${employee.entityId}</p>
<p align="center">${employee.hiredate@label}<br />${employee.hiredate}</p>
</body>
</pdf>
Sample SuiteScript for Printing Employee Access Card
When you have your template code, you need to write the actual script. For SuiteScript 1.0, use the
nlapiCreateTemplateRenderer() function and methods from the nlobjTemplateRenderer object. For
SuiteScript 2.0, use render.TemplateRenderer. For SuiteScript 1.0, the script needs to include the raw
string of the template. The following sample SuiteScript 1.0 code provides a model.
function generate(request, response)
{
var employee = nlapiLoadRecord('employee', 1074); // Load employee record by ID
var renderer = nlapiCreateTemplateRenderer();
var template = '<?xml version="1.0"?><!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "re
port-1.1.dtd">
<pdf>
<head>
</head>
<body width="2.35in" height="3.75in">
<img align="center" width="100px" height="125px" src="${employee.image?html}">
</img>
<p align="center" style="font-size:24px;font-weight:bold;">${employee.entityId}</p>
<p align="center">${employee.hiredate@label}<br />${employee.hiredate}</p>
</body>
</pdf>'
SuiteBuilder
Using SuiteScript to Apply Advanced Templates to Non-Transaction Records
194
renderer.setTemplate(template); // Passes in raw string of template to be transformed by Fr
eeMarker
renderer.addRecord('employee', employee); // Binds the employee record object to the variab
le used in the template
var xml = renderer.renderToString(); // Returns template content interpreted by FreeMarker
as XML string that can be passed to the nlapiXMLToPDF function.
var file = nlapiXMLToPDF(xml); // Produces PDF output.
response.setContentType('PDF', 'sample.pdf', 'inline');
response.write(file.getValue());
}
When you have your script code, you need to save it in a .JS file which you load to the NetSuite file
cabinet when you create a script record. Create a script record of the type Suitelet and deploy the script
in NetSuite. For instructions for these tasks, see the help topics Suitelets, Steps for Creating a Script
Record, and Steps for Defining a Script Deployment. The saved script deployment record provides a
URL that you can click to see the PDF after the script is run.
Sample Employee Access Card PDF
The following screenshot shows a printed employee access card based on the sample script code in
this example:
SuiteBuilder
Basic Printing Layouts
195
Basic Printing Layouts
Basic printing layouts include Transaction Form HTML Layouts and Transaction Form PDF Layouts. You
can use these layouts to define the arrangement of fields on printed transactions in NetSuite. Basic
printing layouts show the labels above the data and use a black background color.
You can customize the layouts for transaction form PDF layouts and transaction form HTML layouts. A
custom layout can be used for a custom form, so that any transactions associated with that form use
the formatting provided by the custom layout.
For more extensive customization of your printed transactions, use Advanced PDF/HTML Templates to
produce either PDF or HTML output. Advanced templates provide more customization capabilities than
basic layouts, and the built-in template editor can be used in either WYSIWYG or source code mode.
Advanced templates support all transaction and print types supported by basic layouts.
In OneWorld accounts, if you print transactions using basic layouts, the logo and address are sourced
from the vendor’s primary subsidiary. To use the subsidiary logo and address from the transaction
record when printing, use advanced templates. For more information, see Advanced PDF/HTML
Templates.
You are encouraged to use the advanced PDF/HTML templates to create templates that support
current industry standards for HTML-based editing as well as take advantage of advanced template
customization capabilities.
See the following topics:
■ Customizing Transaction Form PDF Layouts
■ Transaction Form HTML Layouts
■ Totals Transaction Form Layouts
Customizing Transaction Form PDF Layouts
A transaction form PDF layout defines the arrangement of fields on printed standard and classic (or
legacy) PDF transaction documents in NetSuite. You can customize transaction form PDF layouts by
customizing borders and content position, repositioning and resizing fields, or by changing the fonts
and colors used.
Custom transaction form PDF layouts are only available when you print your forms in PDF. If you print
using HTML, a custom layout does not affect the look of your form. To print using PDF, go to Home >
Set Preferences> Transactions tab. Clear the Print Using HTML box, and click Save.
To customize a PDF layout, you first set up the color of text and backgrounds on the form and set
the page height and width of printed forms. Then you use the Form Editor to change the size and
orientation of elements of the form.
You can choose to enter your measurements in inches or in centimeters by setting the Form Size
Measurements preference at Setup > Company > Preferences > Printing & Fax Preferences on the
Printing subtab.
Note: Advanced PDF/HTML templates provide an alternate model for customizing printed
and emailed records. They support more customization capabilities than transaction form
layouts. Also, transaction form layouts allow a maximum of 100 custom elements, whereas
the Advanced PDF/HTML Templates feature allows more customization capabilities. For more
information, see Advanced PDF/HTML Templates.
To customize a transaction form PDF layout:
1. Go to Customization > Forms > Transaction Form PDF Layouts.
SuiteBuilder
Customizing Transaction Form PDF Layouts
196
2. Click Customize next to the layout you want to customize.
Note: A transaction form PDF layout cannot be customized for check vouchers.
To create a new custom layout based on an existing custom layout, click Edit next the layout.
Then enter a name for the new layout, and click Save As.
3. On the Custom PDF Layout page, enter a name for your custom layout.
4. If desired, edit the width and height properties for your page.
5. Check the Layout is Preferred box to make this layout your preferred layout for this type of
transaction.
6. Set the following colors for your form layout:
■ Text Color – Controls the color of the text in the form.
■ Fill Color – Sets the background color in the sections of the form.
■ Label Text Color – Controls the color of the text at the top of the main section of the form.
■ Label Fill Color – Determines the background color of the label for the main section of the
form.
■ Border Color – Sets the border color for each section of the form.
You can click the color palette to choose a color or enter the hexadecimal code for the color you
want to set.
As you make changes to the colors, the changes are shown in the preview at the bottom of the
page.
7. Click an element of the form that you want to customize. You can also select an element using
the Selected Element list. If you want to add a custom element to the form, click Add Custom
Element.
You can do any of the following to each form element:
■ Resize a section by clicking and dragging the handle in the lower right corner. Note that the
cursor does not change to indicate that you can resize the item.
You cannot remove an element, but you can hide it by clicking the handle in the lower right
corner and dragging it to the top left corner.
■ Click and drag an element to change the orientation of the PDF layout.
■ Under the Selected Element heading, select the element, and if desired, determine the
element’s width and height.
SuiteBuilder
Customizing Transaction Form PDF Layouts
197
■ Under the Element Position heading, determine the element’s position on the form. You can
anchor/align the element to the top or bottom edge of the page with a fixed size (the size
you specify under the Selected Element heading), or align the element to the specified top
position and stretch it to fit the height of the page (within the margins).
Note: You can place one element on top of another, but those elements will be
stacked when the form is printed and results may not appear as expected.
■ Under the Element Label Style heading, determine the font and style of the element's label.
Check the Use Label Coloring box if you want the color set in the Label Text Color field to be
used for the label of a form section.
Check the Split Horizontally box if you want the text beside the label. Keep this box clear if
you want the text beneath the label.
■ Under the Element Data Style heading, choose the font and style of the text in the form
section.
■ Check the Show Border box if you want the section to have a border.
SuiteBuilder
Customizing Transaction Form PDF Layouts
198
Note: To change the size of the area where the columns appear, choose Columns as
the Selected Element in the editor and modify the width and height values as desired.
To change the width of the individual columns, use the Printing Fields subtab on the
transaction form. For more information, see Configuring Printing Fields.
8. Click Preview to see how this PDF layout will look when printed.
For any element that continues on an additional page, the bottom of the element must be high
enough on the page to allow line items to print below it. For example, a logo element on a PDF
layout cannot be set to be the whole page.
9. Click Save.
Note: When the PDF opens and you click the Print button, the Print window opens. In the
Page Handling section of the Print window, verify that Page Scaling is set to None, and the
boxes beneath it are not checked. Automatic scaling can cause difficulties with printing checks.
Note: If you have text overlapping a footer or missing from a printout, ensure that any long
content is enclosed in an element that will split across pages.
See the following topics.
SuiteBuilder
Customizing Transaction Form PDF Layouts
199
■ Formatting Label Text
■ Formatting Data Text
■ Defining Custom Elements
Defining Custom Elements
Custom elements are blocks of static or dynamic text that you can add to and position on PDF
transaction layouts. You can define up to ten custom elements per layout.
Custom elements can only be defined for the following types of transaction form PDF layouts:
■ packing slip
■ picking ticket
■ transaction
For example, you can follow these steps to add the Bill To element to a packing slip:
1. Go to Customization > Forms > Transaction Form PDF Layouts.
2. Click Customize next to your picking ticket form.
3. Click Add Custom Element.
The Add Element window opens.
4. In the Element Name field, enter a name for the element, such as Bill To.
5. In the Choose Element(s) list on the left side of the window, scroll down and click Bill To.
6. Click OK.
7. The Bill To box appears in the top left corner of the layout.
8. Click the Bill To element to drag it to the appropriate place on the form.
9. Complete additional changes to the element as necessary.
10.
Click Save.
Now when you use this custom form, the form shows the Bill To address.
For each custom element, define the properties as described in the following table. After an element is
added, click Save & Edit. The custom element is then added to the other tabs and can be modified like
any other element on the form.
Property
Description
Element Name
This identifies the custom element on the Border & Placement, Label Text, and
Data Text tabs, and may be printed in the label for the element field. This field is
mandatory for each custom element where Enable is checked.
SuiteBuilder
Customizing Transaction Form PDF Layouts
Property
Description
Important: When a Label is created and the Custom Element is saved,
the element is automatically available in the Borders and Placement tab
with the coordinates defaulted to 0,0,0,0. To view the Label, you must edit
these coordinates to display the label in the desired position.
Show Label
If checked, the Label for this custom element is printed on transaction forms using
this layout, using the same formatting as other element labels as defined on the
Label Text tab (see Formatting Label Text). The element does not appear on the
Label Text tab if Show Label is not checked.
Element Text
Text entered here is displayed in the element field when printed. The text is
formatted the same as other element text as defined on the Data Text tab (see
Formatting Data Text. You can use NetSuite tags to dynamically retrieve and display
text associated with a specific instance of a form field. To construct a tag enter the
field name and enclose it in braces — {entity}. The fields available are the same
body fields as those available in custom code. Refer to Custom Code Names for a
complete list of available fields.
Note: These tags are similar to those used on HTML Transaction Layouts,
using {} instead of <> and dropping NL from the beginning of the tag. For
Example: <NLENTITY> in HTML Layouts would be {entity} in PDF Custom
Elements.
Wrap Text
If checked, the text in the element field wraps.
If you want to add personalized text, click Add Custom Element and instead of selecting an element,
enter your text in the Element Text field and click OK.
Configuring Borders and Placement
You can add borders and alter the orientation of elements of your PDF forms.
To add a border to a form:
1. Go to Customization > Forms > Transaction Form PDF Layouts.
2. Click Customize or Edit next to the form you want to change.
3. In the Form Editor click the element you want to add a border to.
4. Under the Additional Options heading, check the Show Border box.
5. Click Preview to see how this PDF layout will look when printed.
6. Click Save.
To change an element's orientation in the PDF layout, click and drag it to where you want it on the
form or use the fields under the Element Position heading. For more information, see Customizing
Transaction Form PDF Layouts.
SuiteBuilder
200
Customizing Transaction Form PDF Layouts
201
Formatting Label Text
You can change the style and alignment of labels for PDF form elements.
Note: In transaction form PDF layouts, you cannot change the line spacing, nor can you
change the space between label text and data text. For information about using advanced
templates to change the spacing between label text and data text, see Advanced PDF/HTML
Templates.
To format element labels:
1. Go to Customization > Forms > Transaction Form PDF Layouts.
2. Click Customize or Edit next to the form you want to change.
3. In the Form Editor, click the element with the label you want to change.
4. Under the Element Label Style heading to the right of the preview, set the font style and
alignment options for this label.
5. Check the Use Label Coloring box if you want the color set in the Label Text Color field to be
used for the label of a form section.
6. Check the Split Horizontally box if you want the text beside the label. Keep this box clear if you
want the text beneath the label.
7. Click Preview to see how this PDF layout will look when printed.
8. Click Save.
Formatting Data Text
You can change the style and alignment of the text in the sections of PDF forms.
Note: In transaction form PDF layouts, you cannot change the line spacing, nor can you
change the space between label text and data text. For information about using advanced
templates to change the spacing between label text and data text, see Advanced PDF/HTML
Templates.
To format element text:
1. Go to Customization > Forms > Transaction Form PDF Layouts.
2. Click Customize or Edit next to the form you want to change.
3. In the Form Editor, click the element with the label you want to change.
4. Under the Element Data Style heading to the right of the preview, set the font style and
alignment options for this label.
5. Click Preview to see how this PDF layout will look when printed.
6. Click Save.
Using a Standard #10 Window Envelope With
Transactions
If you use window envelopes, you may need to adjust the printing position of your PDF transaction
forms to show the correct address through the window.
SuiteBuilder
Customizing Transaction Form PDF Layouts
202
To adjust your standard layouts to fit in a standard #10 window envelope:
1. Go to Customization > Forms > Transaction Form PDF Layouts (or Transaction Form HTML
Layouts).
2. Click Customize next to the kind of layout you want to change.
3. In the Name field, enter a name for your custom layout.
4. Click the Elements subtab.
5. Click Border & Placement.
6. In the Border & Placement section, locate the Bill To row.
7. In the Left column, enter 1.
This moves the left edge of the field 1 inch from the left margin of the page.
8. In the Top column, enter 2.25.
This moves the top edge of the field 2.25 inches from the top margin of the page.
9. In the Right column, enter 4.2.
This moves the right edge of the field 4.2 inches from the left margin.
10. In the Bottom column, enter 3.5.
This moves the bottom edge of the field 3.5 inches from the top of the page.
11. Locate the Ship To row.
12. In the Left field, enter 4.55.
This moves the left edge of the field 4.55 inches from the left margin of the page.
13. In the Top column, enter 2.25.
This moves the top edge of the field 2.25 inches from the top margin of the page.
14. In the Right column, enter 8.
This moves the right edge of the field 8 inches from the left margin.
15. In the Bottom column, enter 3.5.
This moves the bottom edge of the field 3.5 inches from the top of the page.
16. When you have finished, click Submit.
You are returned to the Custom Layouts list.
17. Check the box in the Preferred column next to your custom layout.
This ensures that your layout is applied to all forms of that type.
18. Click Save.
Repeat the steps above to adjust any transaction form layouts that you want to mail in standard #10
window envelopes. You can adjust any of your transaction form layouts for any size window envelope.
Measure your envelope and the placement of the window to determine where to place the address.
When you have the measurements for your envelope and determined where to place the address
field, you need to convert the fraction measurements into decimal measurements to adjust the layout.
The following table is a quick reference guide to converting fraction measurements into decimal
measurements.
Fraction
Decimal
Fraction
Decimal
1/2
0.5
1/16
0.0625
1/4
0.25
3/16
0.1875
SuiteBuilder
Customizing Transaction Form PDF Layouts
Fraction
Decimal
Fraction
Decimal
1/3
0.33
5/16
0.3125
3/4
0.75
7/16
0.4375
2/3
0.67
9/16
0.5625
1/8
0.125
11/16
0.6875
3/8
0.375
13/16
0.8125
5/8
0.625
15/16
0.9375
7/8
0.875
203
Transaction Form HTML Layouts
Transaction form HTML layouts define the arrangement of fields on HTML transaction documents in
NetSuite. Standard and Classic HTML layouts exist for all the standard form types other than shipping
label and item label - these are assumed to be printed using PDF (see Customizing Transaction Form
PDF Layouts).
You can customize transaction form HTML layouts by editing the templates on which they are based.
The templates for each layout consist of two blocks of HTML:
■ Style Block : this block begins with <STYLE> and ends with </STYLE>. The style block defines the
styles used by the layout.
■ Body Block : this block begins with <TABLE> and ends with </TABLE>. The body block defines the
actual content of the HTML page.
When you print using the Classic HTML Transaction Layout template, the header information, including
the logo, is printed on every page of the HTML printout. To print the logo and other header information
on the first page only, use the Standard HTML Transaction Layout template. You can also customize the
classic template and remove the <thead class=”headrepeat”> and </thead> tags.
Totalling is handled in the same way as for Transaction Form PDF Layouts (see Totals Transaction Form
Layouts).
Note: Advanced PDF/HTML templates provide an alternate model for customizing printed and
emailed records. They support more customization capabilities than transaction form layouts.
For details, see Advanced PDF/HTML Templates.
Creating Custom Transaction Form HTML Layouts
To customize a transaction form HTML layout:
1. Go to Customization > Forms > Transaction Form HTML Layouts.
2. Click Customize next to the layout you want to customize.
3. In the Label field, enter the name of your customized layout.
4. Check the Layout is Inactive box to remove this layout as an option in dropdown lists. You can
always clear this box later and the layout is available again.
5. Check the Layout is Preferred box to make this layout your preferred layout for this type of
transaction.
SuiteBuilder
Transaction Form HTML Layouts
204
6. On the Templates subtab, edit the Style and Body blocks as desired.
Embedded in the body block are NetSuite tags that correspond to individual content elements.
The content elements correspond very closely to the layout elements in the existing PDF layouts.
Basic customization consists of editing the body or style templates but leaving all of the NetSuite
tags in the body block.
For example, to create a collection layout you could add a block of text at the top of the body
layout.
7. If desired, click Elements and customize the HTML that corresponds to each element.
On the Elements subtab, each element is listed with the corresponding element ID, the HTML
code that will be used to display the label that corresponds to the element, and the HTML code
that will be used to display the data that corresponds to the element.
When editing the HTML for elements, follow these guidelines:
■ Ensure that the HTML used correlates to any formats as defined in the body block. For
example, if the element is included in a <TABLE> tag in the body block, the element itself
should begin with a <TR>.
■ Elements always have data and may or may not have a label.
■ The actual label is represented by the tag <NLLABEL> tag which should be included in any
customization of the label field.
■ The actual data is represented by the <NLDATA> tag which should be included in any
customization of the data field.
■ There is also a <NLATTRIBUTES> tag which is used in the COLUMNS element to indicate
where text formatting elements (such as alignment) are inserted.
■ The BODY, COLUMNS, and AGING elements are repeated to produce the HTML of the form.
Totals Transaction Form Layouts
Totalling fields on transaction forms display as follows:
■ Discount, shipping, and tax totals are displayed on separate lines of the total.
■ Each field is only included if it has a value.
■ The discount, shipping item, and tax names are used.
■ There are multiple tax lines in CA and VAT-enabled accounts.
■ The total area is automatically expanded to fit the necessary information.
Amount Paid and Amount Remaining on Invoices
Amount paid and amount remaining are optionally included on transaction forms. They display as
follows:
■ The Amount Remaining field is a footer field instead of a body field for purposes of printing.
■ There is an additional Amount Paid footer field. This field is omitted if none of the invoice has been
paid.
■ If these fields are shown in a customized form, they are displayed in the total section underneath
the invoice total.
SuiteBuilder
Custom Records
205
Custom Records
A custom record type is an entry form you create to collect information specific to the needs of your
business. You can attach information from custom records to entities, items or transactions using
custom fields.
For example, you may want to keep track of your company's computer and electronic equipment.
Since a record specific for this purpose does not exist in NetSuite, create a custom record type titled
Equipment. In the custom record, create custom fields to store information such as serial number,
location, purchase date, date of last service and warranty information. After the record type is created,
data can be entered into individual record instances.
To enable the Custom Records feature, an account administrator can go to Setup > Company > Enable
Features > SuiteCloud.
To modify Custom Records, go to Customization > Lists, Records, & Fields > Record Types. You can do
the following:
■ Create a new custom record type
■ Edit an existing custom record type
■ View a list of record instances that have been created using each custom record type
■ Create a new record instance for a selected custom record type
■ Create a new search record for a selected custom record type
For more information, see the following:
■ Creating Custom Record Types
■ Online Custom Record Forms
■ Parent-Child Record Relationships
■ Sourcing with Custom Records
■ Using Custom Record Entries
Creating Custom Record Types
To create a custom record type, you perform the following steps.
1. Creating a New Custom Record Type.
2. Entering Name and Display Settings.
3. Specifying Permission and UI Settings.
4. Configuring File and Child Record Settings.
5. Defining Search and Edit Settings.
6. Click Save to create the new custom record type.
Note: To enable QuickViews for your custom record, use form customization for the custom
record. For details, see Configuring QuickViews for Custom Records.
Before you save the custom record type, the following subtabs are displayed for you to further define
your custom records:
■ Subtabs – Create and arrange subtabs on your custom record type. For information, see Adding
Subtabs to a Custom Record.
SuiteBuilder
Creating Custom Record Types
206
Note: To save time, create and arrange subtabs for your custom records before defining your
custom fields.
■ Sublists – Add search results as sublists on your custom record type.
For more information, see Applying Custom Sublists to Custom Record Types.
■ Icons – Select the .png sprite you want to use to represent this record type in the New Bar, Create
New menu, Recent Records menu, Recent Records portlet, and QuickViews. You can choose from
built-in icons or create your own custom icon.
For more information, see Choosing an Icon for a Custom Record.
■ Numbering – Specify the numbering format for the custom record types. For information, see
Numbering Custom Record Types.
■ Permissions – Choose the roles you want to access custom record entry forms, choose a default
form and restrict the forms available here. For information, see Setting Permissions for a Custom
Record Type and Applying Role-Based Restrictions to Custom Records.
Important: You must choose Use Permission List from the Access Type list for these
permissions to apply.
■ Links – Create links that take you to the list of record entries for this custom record type and choose
where to place the links. For information, see Creating Links to Custom Records.
■ Managers – Define specific employees as managers of the current record type. This allows them to
modify the custom record type. When defined as a manager, employees are automatically granted
custom record view permission. This allows them to see the list of custom record types but not drill
down on them.
Note: If an employee has a role that includes the Custom Record Type permission, they have
edit access to all custom record types. The Managers subtab enables you to grant permission
for an employee to the current record type only.
■ Translation – (when Multi-Language feature is enabled) Define translations for the custom record
type name to be used when users change the language preference. See Adding Translations for
Custom Records.
After you save a custom record type, the following subtabs are added:
■ Fields – Create and arrange the fields for your custom record type. For information, see Adding
Fields to Custom Record Types.
■ Forms – Customize and select a preferred entry form for your custom record type. For information,
see Adding Custom Forms for a Record.
■ Online Forms – Create and manage online forms for your custom record types.
For more information on custom record online forms, see Adding Custom Online Forms for a
Record.
■ Child Records – If this record type is a parent record, its child records are listed here.
■ Parent Records – If this record type is a child record, its parent records are listed here.
For information on parent and child records, see Creating Built-in Child Records and Using Child
Records.
Creating a New Custom Record Type
To create a new custom record type
1. Go to Customization > Lists, Records, & Fields > Record Types > New.
SuiteBuilder
Creating Custom Record Types
207
Note: The custom record type is created after you enter information in all mandatory
fields, and then click Save.
2. See Entering Name and Display Settings.
Entering Name and Display Settings
After you create a new custom record, you enter a name and description for the custom record type as
well as display settings for custom record entries.
To enter a name and display settings for the custom record type:
1. In the Name field, enter a name for the record type.
The limit on the number of allowed characters in the Name field corresponds to the database
limit, which is large.
2. If you use custom code, enter a unique ID for this custom record in the ID field.
3. In the Owner field, select the owner of this custom record type.
Only the owner can modify this record type.
4. In the Description field, enter a description of this record type.
5. Check the Include Name Field box to include a required Name field on each record entry.
If you check this box, the Name field appears as the first field on the record and in the record
list. If you do not check this box, your records are automatically assigned a number based on the
order in which they are entered.
6. Check Show ID to display the record entry ID that is automatically assigned by NetSuite to each
new record entry.
7. In the Show Creation Date field, check the On Record box to display the creation date and
time on each record entry. Check the On List box to display the creation date and time for each
record entry in your list for this record type
8. In the Show Last Modified field, check the On Record box to display the last modified date and
time on each record entry. Check the On List box to display the last modified date and time for
each record entry in your list for this record type.
9. In the Show Owner field, check the On Record box to display the record owner on each record
entry. The record owner is the person who creates the record entry. Check the On List box
to display the record owner for each record entry in your list for this record type. Check the
Allow Change box to allow the record entry owner to be changed. If you allow the owner to be
changed, you must also show the owner on the record entry. An Owner field is displayed on
your record entries as a dropdown list of people with login access to your NetSuite account. The
Owner field on each record entry defaults to the current person entering the record.
10. Enter permission and UI settings. See Entering Permission and UI Settings.
Specifying Permission and UI Settings
After you have entered name and display settings for the custom record type, you enter permission
and UI settings.
To enter permission and UI settings:
1. On the Custom Record Types page, choose a permissions mode from the Access Type list:
SuiteBuilder
Creating Custom Record Types
208
■ Require Custom Record Entries Permission indicates that only users logging in with a role
with permission granted to the custom record type can access it.
■ Use Permission List grants access to the custom record type according to the permissions set
up on the Permissions subtab of this page.
■ No Permission Required makes the custom record type publicly available.
■ For more information, see Setting Permissions for a Custom Record Type.
2. To indicate that this record can only be accessed through SuiteScript, clear the Allow UI Access
box. By default, this box is checked.
When this box is not checked, users cannot access the custom record type from the NetSuite
user interface. Also, the following custom record options are disabled: Allow Mobile Access, Allow
Quick Search, Allow Quick Add, and Include in Search Menu.
3. Check the Allow Mobile Access box to indicate that this record should be accessible on mobile
devices through the NetSuite iPhone app.
This box, which is disabled by default, is not available if the Allow UI Access box is cleared.
4. Enter file and child record settings. See Configuring File and Child Record Settings.
Setting Permissions for a Custom Record Type
To manage access to custom record type data, you can:
■ Define the Permissions Model to use permissions on role records, use permissions defined on the
custom record itself, or provide public access to the custom record type.
■ Prevent Access through the User Interface so that users cannot access custom record type data
through the NetSuite user interface.
Define the Permissions Model
You can use the Access Type list on a custom record type page to define a permissions model for a
custom record type. This model can be based on: custom record entries permissions defined on role
records, permissions defined on the Permissions subtab of a custom record type, or no permissions
(meaning access to the custom record type is public).
Note: As of 2012.1, the Access Type list replaces the Use Permissions check box that was
available in prior releases.
The Access Type list includes the following options:
■ Require Custom Record Entries Permission
□ This option is the default.
□ Custom record types created prior to 2012.1 that did not have the Use Permissions box checked
have this option set.
□ This option indicates that only users logging in with a role with permission granted to the custom
record type can access it. This permission can be set on the Lists subtab of the Permissions
subtab on each Role page. See the help topic Customizing or Creating NetSuite Roles.
Note that this limitation does not apply to the owner of the custom record type; the owner
always has full access in any role.
■ Use Permission List
□ Custom record types created prior to 2012.1 that had the Use Permissions box checked have
this option set.
SuiteBuilder
Creating Custom Record Types
209
□ This option indicates the users logging in with a role with permissions defined on the
Permissions subtab of the custom record type can access it.
Note that this limitation does not apply to the owner of the custom record type; the owner
always has full access in any role.
□ For details about creating a permission list, see Setting Up a Permissions List for a Custom
Record Type.
■ No Permission Required
□ This option indicates that all users can access this custom record type; it is considered public.
□ With this option, any user can modify the record if they get access to its entry form, which they
could do through a URL, even if they do not have a link to the form.
□ You can use this option for records that must be accessible to scripts, but that you do not want
users to access. After testing, clear the Allow UI Access box for the record. With this combination
of settings, there are no restrictions on programmatic access to the record type, but no access
through the user interface. See Prevent Access through the User Interface.
□ Prior to Version 2012 Release 1, this option was not available for custom record types.
Prevent Access through the User Interface
You can clear the Allow UI Access box for a custom record type, to indicate that it can only be accessed
programmatically, for example, through SuiteScript or web services. By default, the Allow UI Access box
is checked.
When this box is cleared:
■ Users cannot access the custom record type from the NetSuite user interface.
■ The following error is returned when a user attempts to list, search, view, edit, or create a record of
this type in the user interface:
■ The following custom record options are locked as disabled: Allow Quick Search, Allow Quick Add,
and Include in Search Menu.
Important: You need to take additional steps to control access to custom record data
through searches. See Limiting Search Access to Custom Records.
Configuring File and Child Record Settings
After you have specified permission and UI settings, you enter file and child record settings.
To enter file and child record settings:
1. On the Custom Record Type page, to use a File Cabinet subtab to attach documents and images
to your record entries, check the Allow Attachments box.
2. To add a Notes subtab to your child record entries, check the Show Notes box.
Notes are added to this subtab automatically when any change is made to individual records.
SuiteBuilder
Creating Custom Record Types
210
3. To enable mail merge capabilities for records of this type, check the Enable Mail Merge box.
For information about using mail merge, see the help topic Working with Mail Merge.
4. To be able to edit the order your child records appear on each parent record, check the Records
are Ordered box.
■ If you do not check this box, child records display in alphabetical order in both View and Edit
modes.
■ If you check this box, in View mode, child records still display in alphabetical order. In Edit
mode, child records initially display in the order in which they were entered and later, in the
order in which you have set them through editing.
5. To hide child record sublist Remove links and prevent users from detaching child records from
the parent record, clear the Show Remove Link box.
By default, each child record in a sublist on a parent custom record includes a Remove link for
users with Edit permission. Clicking this link results in the removal of the child record from the
sublist but not from the system. This removal detaches the child record from the parent record,
in effect deleting the relationship between records, but this removal does not delete the child
record from the system.
If Remove links are available, users can detach child records even if child record editing is not
allowed.
6. To allow records of this type to be edited directly when they display as child records in a sublist
on a parent record, check the Allow Child Record Editing box . Note the following:
■ The box is not available when the Show Remove Link option is disabled.
■ Checking the box does not supersede users' role-based permissions. Only users who have
permission to edit the record type can edit child records when this option is enabled.
■ The box was formerly labeled Allow Inline Editing. Its label was changed because it is not
related to the Inline Editing feature or to the Inline Editing toggle that displays on list pages
when that feature is enabled. The name change also was intended to avoid confusion with
the Enable Inline Editing option.
Warning: Child records are never editable in parent records that have more than 10,000
child record lines, even when the Allow Child Record Editing box is checked for the record
type.
7. To allow users to delete records of this type when they are child records in a sublist on a parent
record, check the Allow Delete box. The box is only available if you have checked the Allow Child
Record Editing box. When the box is checked, the following occurs:
■ When the parent record is in Edit mode and users click the Remove button on the child
record in the sublist, the entire child record type is deleted from NetSuite.
■ When the parent record is in View mode and users click the Remove button on the child
record in the sublist, the child record is removed from the sublist and the child record type
still remains in the system.
Warning: Child records cannot be deleted in parent records that have more than 10,000
child record lines, even when the Allow Delete box is checked for the record type.
8. Enter search and edit settings for the custom record type. See Defining Search and Edit Settings.
Defining Search and Edit Settings
After you have specified child and record settings, you enter search and edit settings.
SuiteBuilder
Creating Custom Record Types
211
To enter search and edit settings:
1. On the Custom Record Type page, if you want to allow this record type to be searched using the
Quick Search portlet on dashboards, check the Allow Quick Search box
This option is not available if the Allow UI Access box is cleared.
2. If you want to allow this record type to be added using the Quick Add portlet on dashboards,
check the Allow Quick Add box . For information, see the help topic Quick Add Portlet.
This option is not available if the Allow UI Access box is cleared.
3. If you do not want system notes to be created for changes to this record type, clear the Enable
System Notes box. By default, system notes are enabled.
4. If you do not want keywords entered in the global search box in the upper right corner of the
page to apply to this record type, clear the Include in Global Search box.
5. If you do not want this record type to be available for searches in the UI, clear the Include in
Search Menu box.
If the Allow UI Access box is cleared, this option is disabled and cannot be changed.
6. Review the setting for the Enable Optimistic Locking option.
Enabling this option causes the system to check for conflicting updates whenever a user or script
attempts to save updates to a custom record entry. If another user or script has saved updates
to the same custom record entry during the time that the first user or script was entering
updates, an error is returned. For more information, see Enabling Optimistic Locking for Custom
Records.
Note: By default, this option is enabled for custom record types created in 2012.2 and
later, and disabled for custom record types created prior to that release. You should
enable this option.
7. If available, review the setting for the Enable Inline Editing option.
■ This option is only available if the Inline Editing feature has been enabled at Setup > Company
> Setup Tasks > Enable Features, on the Company subtab, Data Management area.
■ This option is enabled by default.
■ When this option is enabled, an Inline Editing switch on list pages for this custom record type
is set to on, and users can update record instances quickly by changing data directly in each
record row. For more information, see the help topic Using Inline Editing.
■ When this option is disabled, the Inline Editing switch is not available on list pages for this
custom record type, and users must drill down from the list to each record entry to edit it.
8. To allow the definition of hierarchical relationships between records of this type, check
Hierarchy. This hierarchy can be defined either on the parent record entry or on the child record
entry. For more information, see Defining Hierarchies among Custom Record Values.
9. Note that if you check the Inactive box, this record type no longer appears on the Record Types
list unless you check the Show Inactives box at the top of the page. Also, you can no longer
select this kind of record from any lists on entities, items or transactions.
Before you save the custom record type, the following subtabs are displayed for you to further define
your custom records:
■ Subtabs – Create and arrange subtabs on your custom record type. For information, see Adding
Subtabs to a Custom Record.
Note: To save time, create and arrange subtabs for your custom records before defining your
custom fields.
■ Sublists – Add search results as sublists on your custom record type.
SuiteBuilder
Creating Custom Record Types
212
For more information, see Applying Custom Sublists to Custom Record Types.
■ Icons – Select the .png sprite you want to use to represent this record type in the New Bar, Create
New menu, Recent Records menu, Recent Records portlet, and QuickViews. You can choose from
built-in icons or create your own custom icon.
For more information, see Choosing an Icon for a Custom Record.
■ Numbering – Specify the numbering format for the custom record types. For information, see
Numbering Custom Record Types.
■ Permissions – Choose the roles you want to access custom record entry forms, choose a default
form and restrict the forms available here. For information, see Setting Permissions for a Custom
Record Type and Applying Role-Based Restrictions to Custom Records.
Important: You must choose Use Permission List from the Access Type list for these
permissions to apply.
■ Links – Create links that take you to the list of record entries for this custom record type and choose
where to place the links. For information, see Creating Links to Custom Records.
■ Managers – Define specific employees as managers of the current record type. This allows them to
modify the custom record type. When defined as a manager, employees are automatically granted
custom record view permission. This allows them to see the list of custom record types but not drill
down on them.
Note: If an employee has a role that includes the Custom Record Type permission, they have
edit access to all custom record types. The Managers subtab enables you to grant permission
for an employee to the current record type only.
■ Translation – (when Multi-Language feature is enabled) Define translations for the custom record
type name to be used when users change the language preference. See Adding Translations for
Custom Records.
After you save a custom record type, the following subtabs are added:
■ Fields – Create and arrange the fields for your custom record type. For information, see Adding
Fields to Custom Record Types.
■ Forms – Customize and select a preferred entry form for your custom record type. For information,
see Adding Custom Forms for a Record.
■ Online Forms – Create and manage online forms for your custom record types.
For more information on custom record online forms, see Adding Custom Online Forms for a
Record.
■ Child Records – If this record type is a parent record, its child records are listed here.
■ Parent Records – If this record type is a child record, its parent records are listed here.
For information on parent and child records, see Parent-Child Record Relationships , Creating Builtin Child Records, and Using Child Records.
Defining Hierarchies among Custom Record Values
A custom record type can be set up to allow users to define hierarchies among values for that custom
record type. Note that this hierarchy is not for the relationships between different custom record types,
but rather for the relationships between instances of the same custom record type.
SuiteBuilder
Creating Custom Record Types
213
For example, a custom record type has been created to store employee information. You can set up
hierarchies between instances of this record type to indicate supervisory relationships.
First the custom record type must be set up with the Hierarchy option enabled.
When the hierarchy functionality is enabled on the custom record type definition page, you can define
a parent-child hierarchy between two record instances of the same type. This hierarchy can be defined
either on the parent record or on the child records.
On a parent record instance, you can click the New Custom Employee button on the Child Records
subtab to create a child record.
On a child record instance, you can select the parent record from the list, or create a new record
instance to be the parent.
SuiteBuilder
Creating Custom Record Types
214
The Custom Record List page shows the hierarchy for the records in the format <parent record>:<child
record>.
Important: Although this example illustrates only two levels of hierarchy, this feature
supports multiple levels of hierarchy among custom record instances.
Enabling Optimistic Locking for Custom Records
Each custom record type has a Enable Optimistic Locking option that can be enabled to protect custom
record data integrity.
SuiteBuilder
Creating Custom Record Types
215
Enabling this option causes the system to check for conflicting updates whenever a user or script
attempts to save updates to an instance of this custom record type. If another user or script has saved
updates to the same custom record instance during the time that the first user or script was entering
updates, the following message is returned:
“Unable to save record. Record was changed by a different user. Please reload and try again.”
The Enable Optimistic Locking option is enabled by default for all custom record types created as of
Version 2012 Release 2 and later. For backwards compatibility, this option is disabled by default for
custom record types created prior to Version 2012 Release 2. You should enable this option, but first
review any scripts that may be affected by this change and edit them as needed.
This support for optimistic locking makes custom records' concurrency control consistent with the
optimistic locking used generally for NetSuite standard records. Optimistic locking assumes that
multiple concurrent transactions can usually complete without affecting each other, so data resources
do not have to be locked during the time that transactions are in process. Instead, a check for conflicts
occurs before each transaction is committed. For more information about optimistic locking, you can
review a related article at http://en.wikipedia.org/wiki/Optimistic_concurrency_control.
Adding Fields to Custom Record Types
The Fields subtab lets you add fields to your record. You can add as many fields as necessary to your
custom record.
Important: This tab is not available until the record type has been saved.
To add fields to your custom record:
1. Click New Field to create a new field for this record type.
For step-by-step instructions for creating a new field, refer to Creating a Custom Field.
2. Rearrange the fields as desired.
Select a line and drag and drop it to the desired position, or click Move To Top or Move To
Bottom. If you have placed the fields on subtabs, moving a field here changes its position in
relation only to the other fields on the same subtab.
SuiteBuilder
Creating Custom Record Types
216
3. To edit a field, click the name of the field in the Description column.
4. Click Save.
Before saving, NetSuite validates any parent-child combinations to ensure that the values are
unique. If the same parent-child combination already exists, an error message appears showing
the existing entry, and you cannot save the duplicate.
Note: If you want this field to be available for data entry in the Quick Add portlet, check
the Allow Quick Add box. By default, this option is not enabled. See the help topic Quick Add
Portlet.
Limiting Search Access to Custom Records
The restrictions to custom record type access set up on the Permissions subtab do not apply to custom
record data access by searches. If you want to prevent searches from returning custom record type
data, you have the option of restricting search access to specific custom record type fields on a field by
field basis, and restricting the audience for custom record type saved searches on a search by search
basis.
To limit search and reporting access to a custom field:
1. Go to Customization > Lists, Records, & Fields > Record Types.
2. Click a custom record type.
3. On the Fields subtab for the custom record, click a field.
4. On the Access subtab for the field, set the Default Level for Search/Reporting option to None to
prevent any searches or reports from returning data for this field.
You also can prevent searches or reports run by users with specific roles from returning data for
this field by setting the Default Level for Search/Reporting option to None for specific roles on
the Role subtab.
For more information, see Restricting Access to Custom Fields.
To limit access for a custom record saved search:
1. Go to Lists > Search > Saved Searches.
2. Click the saved search that you want to restrict.
3. On the search page, click the Audience subtab and make changes to the users who have access
as desired.
For example, you can clear the Public box or the Select All box for roles, and instead select only
the specific roles that you want to have access to the custom record.
For more information, see the help topic Defining Audiences for Saved Searches.
Applying Role-Based Restrictions to Custom Records
On a role record, you can restrict the access of users with that role to standard records, based on
these records' values for department, class, location, employee, and subsidiary (OneWorld) fields. For
example, you could set an employee-based restriction for the Sales Manager role so that those users
only see records where they or their subordinates are the sales rep.
SuiteBuilder
Creating Custom Record Types
217
For details about setting these restrictions, see the following topics.
■ Set Employee Restrictions
■ Set Department, Class, and Location Restrictions
■ (OneWorld Only) Restrict Access to Subsidiaries
■ Customizing or Creating NetSuite Roles
You can apply the restrictions set on role records for a particular category (department, class, location,
employee, or subsidiary) to a custom record, by checking the Apply Role Restrictions box for a list/
record custom field that stores values in one of these categories. For example, if you check this box for
an Employee list/record custom field, the employee-based restriction set on the Sales Manager role
record is applied to this custom record, so that those users only see custom records where they or their
subordinates are the value for the custom field.
To apply role-based access restrictions to a custom record:
If the class, department, location, or subsidiary field does not yet exist:
1. On the Fields subtab of a custom record definition page, click New Field.
2. On the new field definition page:
a.
Enter a name for the field.
b.
From the Type list, select List/Record.
c.
From the List/Record list, select Class, Department, Location, Employee, or Subsidiary.
d.
Check the Apply Role Restrictions box.
e.
Complete other settings for the custom field as desired, and click Save. For more
information, see Adding Fields to Custom Record Types.
If the field already exists:
1. On the Fields subtab of a custom record definition page, click the field name.
2. On the field definition page, check the Apply Role Restrictions box and click Save.
Adding Subtabs to a Custom Record
The Subtabs subtab of a custom record form lets you add custom subtabs to your record to better
organize fields. To save time when creating custom fields, create any desired custom subtabs first.
To add subtabs:
1. In the Title column of the Subtabs subtab, enter the name of your new subtab for this record
type.
SuiteBuilder
Creating Custom Record Types
218
2. If desired, designate this subtab as a child of an existing subtab.
In the Parent column, select an existing subtab from the list. This list consists of any custom
subtabs already saved for the current custom record type as well as any custom subtabs that
you have defined for that record type.
Note: Since the parent field is populated with subtabs created for the current custom
record type, you can only define the subtab as a child if the custom record has already
been saved with predefined subtabs.
3. Click Add.
4. Repeat these steps for each subtab you want to add.
5. Click Save.
Important: You must save the record after you have created subtabs in order for the
subtabs to be available to place fields on. You can place fields on your new subtabs by
editing the field record from the Fields subtab.
6. Rearrange the fields as desired (if you have not yet created fields for your custom record, go on
to defining fields. You can assign a subtab when you create custom fields.
Select a line and drag and drop it to the desired position, or use the Move buttons.
7. To edit the name of a subtab, click the line for that subtab.
8. Click Save.
Choosing an Icon for a Custom Record
You can choose an icon to represent a custom record in the NetSuite user interface. Users can quickly
identify the record type through this visual cue. These icons are used in the following places:
SuiteBuilder
Creating Custom Record Types
219
■ Create New menu on records and New column on list pages and list portlets
■ Recent Records menu
■ Recent Records portlet
■ QuickViews
You can choose from 70 prebuilt icons or create your own custom icon.
To associate an icon with a custom record:
1. On the Icon subtab of the custom record, choose the Use Built-In Icon or the Use Custom Icon
option.
2. If you choose Use Built-In Icon, you can select an icon from the list.
You can click the picker to view available icons and click the one you want to use.
3. If you choose Use Custom Icon, select its file. For requirements for custom icons and
instructions for creating them, see Creating Icons for Custom Records.
4. Click Save.
Creating Icons for Custom Records
You can create custom icons to represent custom records in the NetSuite user interface.
To use a custom record icon:
1. Create an image file for your icon.
2. Open the custom record for which you want to add the icon.
3. On the Icons subtab, choose the Use Custom Icon option.
4. Click New next to the File field.
SuiteBuilder
Creating Custom Record Types
220
5. In the File dialog, choose your icon image.
6. Click Save in the File dialog, then save the custom record.
Important: Custom icons must meet the specific requirements detailed below. You
should read these requirements thoroughly and give yourself enough time to test your
icon. You will need at least a basic understanding of an image-editing application like
Adobe Photoshop or another application that enables you to edit artwork and save the
icons as transparent .png files.
The Four Icon Versions
A custom record icon is made up of a set of four slightly different versions of your icon, ranging
from grayscale to full-color. These four versions are required so that the icon can be displayed
with maximum clarity and contrast on a variety of different backgrounds.
Image 1: Grayscale icon for dark backgrounds. This icon is an “ outline ” version of the full-color
icon. It is used in the dashboard's New Bar when a dark color theme is used. Since the default
color theme is dark-colored, this is the version that is most often seen.
Image 2: Grayscale icon for light backgrounds. This is another outline version of the icon, used
in the dashboard's New Bar when a light color theme is used. This version is not used as often
since few color themes have a light background color for the New Bar.
Image 3: Color icon for dark backgrounds. This is a full-color version of the icon, optimized for
use on dark backgrounds. It is used in the New Bar as the color icon that replaces the grayscale
version when a cursor is nearby.
Image 4: Color icon for light backgrounds. This is another full-color version of the icon, optimized
for use on light backgrounds. It is used in menus, which always have a light background — such
as the Create New menu and the Recent Records menu.
The Icon Sprite Image File
The four icon versions reside, side-by-side, in a single image file known as a sprite. Using coordinates
and other data stored in CSS, NetSuite displays the proper icon version needed and crops out and
hides the rest of the sprite image. Therefore, in order for your icons to display properly, they must be
an exact size and at an exact location within the image file.
Each icon must be no larger than 16 pixels by 16 pixels. Any artwork that goes beyond the 16x16
boundary will not be displayed.
SuiteBuilder
Creating Custom Record Types
221
Each icon version must be located at the following locations within the image file, as measured from
the upper-left corner of the image:
Icon Version
x Coordinate
y Coordinate
Grayscale icon for dark backgrounds
25
25
Grayscale icon for light backgrounds
50
25
Color icon for dark backgrounds
75
25
Color icon for light backgrounds
100
25
Most image-editing applications have guides that you can set up to help you keep track of these
spacing requirements. You can also download the sample icon file pack at the bottom of this topic,
which contains different template files that will help keep your icons in order.
File Format
Save the icon image file as a 24-bit .png file with an 8-bit alpha channel for the transparent background.
Your image editing application may refer to this file format as PNG-24. NetSuite strongly recommends
that you always use the PNG-24 format when saving your icon image file. Using .gif or .jpeg formats is
discouraged due to their limited (or lack of) transparent backgrounds. Other image file formats are not
accepted.
SuiteBuilder
Creating Custom Record Types
222
Constructing Your Icon File, Step-by-Step
1. When you have your icon, whether you created it yourself or obtained it from a royalty-free
source, the first step in creating your final icon image file is to create an outline of it. This outline
drawing will be used to construct the two grayscale icon versions.
The outline version of your icon should be plain, but it should also have sufficient detail so that
it can be recognized when it appears on your dashboard's New Bar. Start by using a 1-pixel
pencil tool in your image editing application, and trace an outline of your icon. In addition to the
outline, trace some of your icon's internal components so that it will be easier to recognize.
2. Take the outline tracing of your icon and follow these directions to create your grayscale icon for
dark backgrounds:
3. Take the outline tracing of your icon and follow these directions to create your grayscale icon for
light backgrounds:
4. After the two grayscale versions are complete, create the color versions. This involves placing the
color icon that you already have on a variety of background colors to check its appearance. Try
the following colors:
■ #5A759C - default color for the New Bar
■ #F1F4F9 - default color for the Recent Records menu
■ #EBECEF - default color for the Create New menu
Try other colors, such as light and dark reds and then test the colors of your NetSuite color
theme. After you see how your color icon looks on different background colors, you can create
the last version of your icon.
If you feel that your color icon looks fine regardless of background color, make a copy of it to be
placed in the fourth slot of your .png image.
5. Place the four versions of your icon in a single .png image, using the proper spacing described
above. Save your icon image file as a PNG-24 file, and upload it to your NetSuite account.
SuiteBuilder
Creating Custom Record Types
223
Sample Icons
Click here to download our sample set of custom icons (.zip archive, 14 KB), designed to help you get
started.
Numbering Custom Record Types
You can have numbers automatically assigned to your custom record instances for easier tracking and
designation.
Warning: After you enable auto-numbering, numbers cannot be removed from records.
Disabling auto-numbering in the future only prevents future records from being numbered.
To assign automatic numbers to a custom record type:
1. Go to Customization > Lists, Records, & Fields > Record Types.
2. Click Edit next to the record type you want to have auto-numbered.
3. Click the Numbering subtab.
4. Check the Enable box to turn on automatic numbering.
5. In the Prefix field, enter any numbers or letters you want added before each automaticallygenerated number.
6. In the Suffix field, enter any numbers or letters you want added after each automaticallygenerated number.
7. In the Minimum Digits field, enter the number or total digits you want as the minimum for autogenerated numbers.
This adds placeholder zeros to numbers that do not have the number of minimum digits you set.
For example, enter 4 to have the first number added as 0001. Valid values for this field range
from 0–20.
8. In the Initial Number field, enter the number you want to use to start automatic numbering.
For example, if you enter 20, the first record instance created is numbered 20, and no record
instances are numbered below 20. The next record instance numbered would be 21.
9. Check the Allow Override box if you want to be able to enter a custom number when you edit
the record instance.
10. Check the Update box to number record instances that have already been created.
If you have already enabled automatic numbering, checking this box does not change any
existing numbers, as those numbers have already been referenced in the system.
11. Click Save.
Important: Be aware that, as of Version 2010 Release 2, handling of the Name criteria for
custom records searches has been modified. These changes particularly affect auto-numbered
custom record types. Previously, the value specified for the Name criteria was compared to
the Name field values of custom records, to IDs containing prefixes, and to IDs with prefixes.
Now, the Name criteria value is compared only to Name field values, providing a more clearly
delineated set of results. To search for ID values, users can use the ID criteria.
Adding Custom Forms for a Record
The Forms subtab lets you create custom entry forms for your records. You can create an unlimited
number of entry forms for your record type. After you have created custom entry forms, you can select
which form is the preferred entry form.
SuiteBuilder
Creating Custom Record Types
224
Important: This tab is not available until the record type has been saved.
By default, at least one form is automatically assigned to the custom record type. This custom record
form can be customized as desired.
To create custom forms for the record:
1. In the Forms subtab, click Customize or Edit next to the entry form you want to customize.
Selecting Customize enables you to create a new custom form based on the selected one. Click
Edit to customize the selected form.
2. Customize the form as desired and then save it.
For step-by-step instructions on how to customize a form, see Creating Custom Entry and
Transaction Forms.
3. In the Preferred column, check the entry form that you want to be set as the preferred form for
this record type.
Note: If you have also set preferred forms on the Permissions subtab, the preferred
form set on the Permissions subtab takes precedence over the role set on the Forms
subtab.
For example, you set Custom Form A as the preferred form on the Forms subtab. On the
Permissions subtab, you set the default form for the Sales Rep role to Custom Form B. When a
sales rep creates a new record, Custom Form B is selected by default.
4. Click Save.
Online Custom Record Forms
An online custom record form is used to receive information from customers on your website.
Information received from online forms automatically creates or updates records in your NetSuite
account.
For example, you might link to a warranty custom record form from your website. You require your
customers to include their name, the end date of the warranty, the item purchased, serial number, the
start date and the type of warranty.
You can customize the appearance of online forms as well as the information you require from anyone
who submits these forms. When creating an Online Form, start with either a default template or your
own HTML template and then modify as needed for the current form.
■ Default NetSuite Template: provides the ability to customize page messages, field labels and
properties, etc.
■ HTML Template: provides the ability to customize HTML templates that have already been created..
For more information, see the following:
■ Adding Custom Online Forms for a Record
■ Creating Online Custom Record Forms
■ Linking Online Custom Record Forms to My Website
■ Creating HTML Templates for Online Custom Record Forms
Adding Custom Online Forms for a Record
The Online Forms subtab lets you create online entry forms to capture information and create new
records from outside of your NetSuite account.
SuiteBuilder
Creating Custom Record Types
225
Important: This subtab is not available until the record type has been saved.
To add custom online forms:
On the Online Forms subtab, do one of the following:
■ Click New Online Form to create an online form for this record type.
■ Click New Online HTML Form to create an online form based on an HTML template.
■ To edit an existing online form, click the name of the form.
Creating Online Custom Record Forms
To create an online custom record form:
1. Go to Customization > Lists, Records, & Fields > Record Types.
2. In the Edit column, click the name of the record you want to create an online form for.
3. In the Online Forms subtab, click New Online Form or New Online HTML Form.
Selecting New Online Form enables you to create a form based on the NetSuite default
template. Selecting New Online HTML Form lets you create a form based on a custom HTML
template that you have created. You must first create the custom HTML template before you can
use it for an online form.
The steps involved for creating an Online Form versus an Online HTML Form are the same with a
couple of exceptions as noted in the following procedure.
4. Enter a title for this form.
This title is displayed at the top of the form.
5. If creating an HTML template (these options not available for Default templates):
■ In the Template field, select the HTML template you want to use for this form.
You can create online HTML form templates at Lists > Marketing > Marketing Templates.
■ To have NetSuite insert labels for your form fields, check the Include Field Labels box.
If you leave this box unchecked, you must include field labels in your HTML template file.
6. If creating a Default template (these options not available for HTML templates):
■ In the Message field, enter a message that your customers will see at the top of the form.
This message can include up to 500 HTML characters.
Note: The message can be formatted using built-in rich text formatting tools. If you
prefer to edit the message directly with HTML tags, click HTML Source Code.
■ In the Detail Message field, enter a message you would like to display at the bottom of the
form.
This message can include up to 4000 HTML characters. Again, you can use the built-in rich
text formatting tools or view as HTML only.
7. Check the Enable Online box if you want to link to this form from a website.
8. If desired, check the Form is Inactive box. You can always reactivate it at a later date.
9. In the Select Fields subtab, edit any existing fields or add new fields as desired.
Rearrange the order of fields as desired.
Click on a line and drag and drop it to the desired position or click Move Up, Move Down, Move to Top
or Move to Bottom.
SuiteBuilder
Creating Custom Record Types
226
1. In the Set Up Workflow subtab:
■ To receive notification when this form is submitted, enter the addresses you want email to
be sent to in the Notify by EMail field.
■ To specify a page for customers to be sent to after they submit the form, enter the URL
for that page in the Redirect to URL field. By default, the user who submits the form is
redirected the home page of your primary website.
■ In the Handle Duplicate Records field, select how you want NetSuite to handle records that
are duplicates of existing records.
2. Click the Set Up Appearance subtab.
■ In the Number of Columns Shown field, select the number of columns for the form.
■ In the Color Theme field, select a color theme for the form.
■ In the Font field, select a font for the form.
■ Check the Default Browser Style box to make the form's appearance match the customer's
browser.
■ Check the Unlayered Sections box to expand any subtabs on the form.
■ In the Button Alignment field, select where to place the buttons on the form.
■ In the Form Logo field, select a logo to place at the top of the form.
You can upload new logos at Lists > Web Site > Images.
As you define the appearance options for your form, keep in mind that your end users use
various sized browsers and types. For example, if you are designing on a high-resolution
large monitor, several columns may display fine, but for smaller low-resolution monitors
it may be better to design your layout with fewer columns. Also, if customers may need
to print the form, ensure that the colors you select will properly display for both color and
black and white printers.
3. In the Custom Code subtab:
The Custom Code tab is only available if you have a SuiteScript feature enabled. For detailed
information on using custom JavaScript files to perform functions, refer to SuiteScript 1.0.
■ In the Script File field, select the JavaScript file that contains the desired scripts for this form.
Important: You must upload your file to the file cabinet before you can select it.
■ In the Page Init Function field, enter the script name to be called from your script file when
this entry form is first loaded.
■ In the Save Record Function field, enter the script name to be called from your script file
when this record is saved.
■ In the Validate Field Function field, enter the script name to be called from your script file
when a field on this entry form is changed.
■ In the Field Changed Function field, enter the script name to be called from your script file
when a change made to a field is accepted.
4. Click Save.
5. If desired, preview your new form.
Select the form from the Online Form subtab and then click Preview Form.
6. Add links to your online form to your website.
For details on how link to your online form see Creating Links to Custom Records.
Now, customers can enter information on your website, and records are automatically created or
updated in NetSuite.
SuiteBuilder
Creating Custom Record Types
227
Linking Online Custom Record Forms to My Website
You can link to an online custom record form from your website.
If you have a NetSuite website, you can create a link to an online form in one of your information items,
category descriptions and from any other HTML description field.
To link to an online custom form from your NetSuite website:
1. Click the Setup tab.
2. On the Setup page, under the Customization heading, click Record Types.
The Custom Record Types list opens.
3. In the Edit column, click the name of the record type you want to edit.
4. Click the Online Forms subtab.
5. Click the name of the form you want to link to.
6. On the Online Custom Record Form page, click the External subtab.
7. Copy the URL from the Publishable Form URL field.
You can highlight the URL with your mouse, right-click, and then click Copy.
8. Click the Lists tab.
9. On the Lists page under the Web Store heading, click the kind of item you want to paste the link
into.
10. On the list, click Edit next to the information item or category you want to link to your online
custom record form.
11. Enter or paste the link in the description field you want the link to appear in.
For example, the account administrator of Wolfe Electronics wants to include a line in a Detailed
Description field that says, "Click here to register for your warranty." The word "here" links to the
custom record form.
The HTML markup source entered would be:
<p>Click <a href='the Online Custom Record Form's URL'>here</a> to register for your warranty.<
/p>
12. Click Save.
Now your customers can follow the link to your online custom record form on your website. After this
form is submitted, a record is created with the customer's information.
You can also link to your online custom record form from an external website or from an email
message. To do this, copy and paste the form's URL into a link in your HTML document.
For more information about entering HTML in your website, read the help topic Using HTML in
Description Fields.
For more information about online custom record forms, read Creating Online Custom Record Forms.
Creating HTML Templates for Online Custom Record Forms
To use an HTML template when creating your online forms, you must first create the template and
store it within NetSuite. You can create your HTML templates locally on your own machine and then
upload them to the NetSuite file cabinet or you can use the built-in NetSuite template creator. See:
■ Creating an HTML Template Locally
■ Uploading an HTML Template
■ Creating an HTML Form Template
SuiteBuilder
Creating Custom Record Types
228
Note: Online HTML form templates are especially useful if you do not use a NetSuite website,
but you use NetSuite online forms.
Creating an HTML Template Locally
When creating an online form template on your local machine, you can define how the fields are
arranged, which fields to include on the form and the style of the page. Use standard HTML code to
create the template as you would for any other HTML form and include the following elements:
■ <NLFORM> and </form> tags to define the beginning and end of the form.
■ Tags for each NetSuite field included on the form. For details, see Using NetSuite Field Tags.
■ An input tag that defines the button your customers use to submit the form.
<input type="submit" value="Button Text">
You can substitute text in the button by changing the value in the code. For example, if you want the
text in the button to read Submit Form, the code would be:
<input type="submit" value="Submit Form">
For example, the following HTML code is a representation of an acceptable form template:
<html>
<head>
</head>
<body>
<NLFORM>
<p>Please, enter the name of your company: <NLNAME></p>
<p>Please, enter an email address we can use to contact you: <NLCUSTRECORD1></p>
<p><input type="submit" value="Submit Form"></p>
</form>
</body>
</html>
Important: The resulting file must include all tags, including <html>, <head> and <body> tags,
to ensure that it is a valid HTML file recognizable by NetSuite.
Using NetSuite Field Tags
Field tags in an HTML form are defined as <NLTAG>, where TAG is the ID of the field. Each field in
NetSuite has a unique ID and therefore a unique tag definition.
Note: Because field IDs are incorporated into tag definitions for fields, when creating custom
fields that will be used in your HTML templates, it is useful if you specify IDs for each field
and use consistent naming conventions that make sense in your business environment. If the
default NetSuite IDs are accepted when creating your custom fields, the tags may not make
sense in your HTML code making it more difficult to know exactly what the field references.
If you have chosen to include a mandatory Name field on your custom record, you must include the
tag, <NLNAME>, for that field in your template.
To determine the tags to use for each field on your custom record:
1. Click Customization > List, Records, & Fields > Record Types.
SuiteBuilder
Creating Custom Record Types
229
2. In the Edit column, click the name of the record type you want to create a template for.
3. On the Fields subtab, click the name of the field you want to place in your template.
4. In the Address bar of your browser, the URL for this page is displayed. At the end of the URL is
the ID for the selected field.
Uploading an HTML Template
After you create your own HTML template, you must upload the template to NetSuite to make it
available when creating online HTML forms.
Note: HTML templates are saved by default in the Marketing Templates folder in your file
cabinet. To change the folder you use to store your templates, an account administrator or sales
administrator can go to Setup > Sales > Preferences > Sales Preferences.
To upload an HTML template:
1. Click Documents > Files > File Cabinet.
2. In the file cabinet, browse to Templates > Marketing Templates.
3. In the File field, click Browse.
4. In the Choose File window locate your HTML template on your hard drive.
5. Select the file.
6. Click Open.
7. On the Folder Contents page, click Add This File.
Creating an HTML Form Template
HTML form templates can be creating by selecting an existing template and setting additional
properties for it or by designing a new HTML template in NetSuite.
To create an HTML form template record:
1. Go to Lists > Marketing > Marketing Templates > New.
2. On the Select Type page, click Online Form.
3. In the Name field, enter a name for the template.
4. If desired, enter a title for the template.
If no title is provided, this field sources the name field.
5. In the Description field, enter any additional information for this template.
This is information that describes the template — it is not a component of the displayed form. It
may be useful to describe where and how this template should be used or describe any unusual
fields or field relationships.
6. To base the current template record on an existing template, in the Template File field, select the
template.
You can select a template in a number of ways:
■ Enter the first few letters of the template name in the Template File field and then press the
Tab key to automatically select a matching template — if multiple templates match the text, a
list is displayed in a pop-up where you can select the desired template.
■ Click the List icon to display a pop-up where you can select the desired template.
■ Click the New icon to upload an HTML template from your hard drive. See Creating an HTML
Template Locally for information on creating your own HTML templates.
SuiteBuilder
Creating Custom Record Types
230
After a template is selected, you can view detailed information about the template by clicking
the Open icon.
7. To design a new template, enter your text and template tags in the Template field.
■ To add NetSuite fields into your HTML template, select the desired field from the Insert Field
list.
■ To view the HTML code, click the HTML Source Code link.
If you have selected a template in step 6, skip this step. You do not need to enter template
tags since the file selected in step 6 contains all of this information.
8. If desired, limit access to this template by selecting a group from the Restrict to Group field.
9. Click Save Now. When you create an HTML online form, you can select this template.
Setting Up a Permissions List for a Custom Record Type
You can manage access to a custom record type's data by setting up a permissions list on the
Permissions subtab of the record type page.
The role-based restrictions you set on this subtab are also available on the record for each role.
Changes made on role records related to this custom record's permissions are reflected here.
Important: For the permission settings in the Permissions subtab to take affect, the Use
Permissions option must be selected for Access Type. Be aware that these permission settings
are not used to restrict search access to custom record data. You can limit searches' access to
custom record data on a per-field or per-search basis. See Limiting Search Access to Custom
Records.
To set up a permissions list for a record type:
1. On a custom record type page, click the Permissions subtab.
Note: If the custom record type is associated with a custom segment, the Permissions
subtab is not available. The permissions must be set on the custom segment
configuration page.
2. In the Role column, select the role you want to have access to custom record entries of this type.
3. In the Level column, select a level of access for this role. Available options include:
■ None: People with this role cannot use custom records of this type at all.
■ View: People with this role can view custom records of this type.
■ Create: People with this role can view and create custom records of this type.
■ Edit: People with this role can view, create and edit custom records of this type.
■ Full: People with this role can view, create, edit and delete records of this type.
4. Select a value in the Restrict column to limit the access of users with the selected role to custom
records of this type:
■ Select Viewing and Editing to restrict users with this role to viewing or editing only the
records of this type that they or their subordinates created.
■ Select Editing Only to restrict users with this role to editing only the records of this type that
they or their subordinates created. They can view all records of this type.
■ Leave this column blank to allow users with this role to view and edit all records of this type.
5. In the Default Form column, select a default entry form for this role to use when entering
records of this type.
SuiteBuilder
Creating Custom Record Types
231
Note: The default form you set here for a role takes precedence over the preferred form
setting on the Forms subtab.
For example, you set Custom Record Form A as the preferred form on the Forms subtab. On the
Permissions subtab, you set the default form for the Sales Rep role to Custom Record Form B.
When a sales rep creates a new record, Custom Form Record B is selected by default.
6. Check the box in the Restrict Form column to make the default form the only entry form
available to this role.
7. From the Search Form list, select a custom search form to be used for searches of this record
type, if one is available.
8. From the Search Results list, select a custom search to be used to limit results for searches of
this record type, if one is available.
9. From the List View, Dashboard View, and Sublist View lists, select a custom search to be used
to limit displayed results for these lists, if one is available. Check a box in one of the Restricted
columns to make the selected view the only one available to this role.
10. Click Add.
11. Repeat these steps for each role you want to give access to.
12. Click Save.
Creating Links to Custom Records
The Links subtab lets you create links throughout your account to access your custom records. When
determining where to place links for the records, it is important to consider all roles that will be using
the record type and how they will be using it to determine the most logical place for the links.
Important: Even after you create a link to a custom record type, this link does not display for
users that do not have permission to access that custom record type.
To add a link to a custom record:
1. In the Center column of the Links subtab, select the center you want the link to be visible in.
If desired, you can add links to this custom record in each center.
2. In the Section column, select the tab you want the link to display on.
The tabs available vary depending on the selected center. If a center has not been selected, no
tabs are listed.
3. In the Category column, select a standard, built-in NetSuite category, or select a custom category
you have already created. (See Creating Center Categories for information on creating custom
categories.)
4. In the Label column, enter a name for this link.
If you do not enter a label, the label name defaults to the name of the custom record type.
5. (Optional) In the Translation column, type the translated name for the link.
6. (Optional) In the Insert Before column, choose where you want to place the link. If you do not
provide a value in the Insert Before column, the link will appear below the last link in your
chosen category.
7. Click Add.
8. Repeat these steps for each link you want to add.
If you want to edit a link, click the line for that link.
9. Click Save.
SuiteBuilder
Creating Custom Record Types
232
Adding Translations for Custom Records
If the Multi-Language feature is enabled in your account, you can translate the name of a custom
record, its custom subtab titles, and its custom sublist labels, so that they match the language of the
NetSuite user interface. You can also translate the names of instances of a custom record. For details,
see the following:
■ Translating a Custom Record Name
■ Translating Custom Record Subtab Titles
■ Translating Custom Record Sublist Labels
■ Translating Custom Record Instance Names
Important: Before you can add these translations, you need to select translation languages
at Setup > Company > General Preferences, on the Languages subtab. This subtab lists both
system-supported languages that can be used for the NetSuite user interface (and are available
at Home > Set Preferences ), and additional languages that can used for website translations
only (and are not available at Home > Set Preferences). You should only enter translations for
system-supported languages, because these are the only languages that can be displayed in the
user interface. For details, see the help topic Configuring Multiple Languages.
Translating a Custom Record Name
You can define translations for a custom record type name on the Translation subtab of the custom
record page:
SuiteBuilder
Creating Custom Record Types
233
Note: Translated names that are available on a menu are truncated to 128 characters.
Translating Custom Record Subtab Titles
You can define translations for a custom record type's subtab titles, on the Subtabs subtab of the
custom record page:
For details about custom record subtabs, see Adding Subtabs to a Custom Record.
Translating Custom Record Sublist Labels
You can define translations for custom record type sublist labels on the Sublists subtab of the custom
record page:
Custom sublists present information related to the record you are viewing, based on results from a
selected saved search of the record type or a related record type. You can apply a custom sublist to a
custom record, so it displays on forms for that record. For more details, see Applying Custom Sublists
to Custom Record Types.
Translating Custom Record Instance Names
In addition to providing translations for the name of the custom record type itself, you can provide
translations for individual instances of that record type. For example, in addition to providing the
Spanish translation “Muebles” for a custom record type named Furniture, you also can provide
translations for the individual instances of that record type, such as chair, table, bed.
To allow translation of custom record instance names, check the Enable Name Translation box for the
custom record type. This option is disabled by default.
SuiteBuilder
Creating Custom Record Types
234
You can enable the Enable Name Translation option for a custom record type if all of the following are
true:
■ The Multi-Language feature is enabled for the account.
■ The Include Name Field option is enabled for the custom record type.
■ Numbering is not enabled for the custom record type. (The Enable box on the Numbering subtab is
not checked.)
When the Enable Name Translation box is checked for a custom record type, each custom record
instance has a Translation subtab.
Parent-Child Record Relationships
A child record type is a record that is referenced in another record in NetSuite. Child record types can
be used to track specific information that requires multiple fields on a record. For more information,
see Using Child Records.
SuiteBuilder
Parent-Child Record Relationships
235
For example, a typical Customer record includes a subtab for Notes and Messages. In this case
the Customer record is a Parent of the Note and Message records — and therefore the Notes and
Messages are child records of the Customer record.
You can also create your own Parent-Child relationships. For example, you could create a custom
record type for Service Notes, and attach your Service Notes record to an Equipment custom record
type. The Service Notes would be a child record of Equipment. On the Service Notes record, you could
include fields for service person, price of service, whether it was covered under the warranty and
the equipment's next date of service. Employees could then view these service notes when they are
working on Equipment records.
Note: Child records are only available during a record update, not an add, and only in the
context of the parent record. Also, a child record may not be available on a form for a parent
record that was created through transformation from another record type. For example, if you
define a custom record as a child record of sales order, this custom child record is not available
on forms for sales orders transformed from quotes. Also, for records that are transformed
from other records, you cannot attach child records during the add/create action. After these
transformed records are saved, you can attach child records during edit or view actions.
Establishing a Parent-Child Relationship
To establish a parent-child relationship between records, you can do one of the following:
■ Create a custom child record. To do this, create a custom record as described in Creating Custom
Record Types but define at least one custom field as a child record.
Fields are defined as a child record by checking the Record is Parent box and then selecting a Parent
Subtab in the Display subtab of the record.
■ Create a custom field, attach a built-in field, and then define the field as a child record. For more
information on attaching built-in records, see Creating Built-in Child Records.
User events are triggered when a custom child record is attached to or detached from its parent record,
unless the parent record is a multi-select field. A beforeLoad, beforeSubmit, or afterSubmit event
occurs if a record is attached or removed.
The user events supports scripting and workflows based on attachment and removal of custom
child records. The event is audited on the custom child record as an edit execution event type, and is
supported in both SuiteScript 1.0 and 2.0.
Creating Built-in Child Records
Using custom fields, you can attach existing built-in records to other records.
For example, you can attach a list of customer records to your case records. When you view a case
record, you can click a subtab to view a list of customers associated with that case.
Important: To edit a built-in child record, a user must have sufficient permission levels to
access the parent record. Without permission to access the parent, editing of the child record is
not allowed, because changes to the child record are effectively changes to the parent record.
To attach a built-in record to another record:
1. Click Customization > Lists, Records, & Fields and then click New next to the kind of field you
want to create.
SuiteBuilder
Parent-Child Record Relationships
236
The type of field you select depends on the type of record you want to attach. For example, if
you want to attach a list of customers to your case records, you would create an entity field for
customer records.
2. In the Label field, enter a name for your custom field.
3. In the Type field, select List/Record or Multiple Select.
Choosing Multiple Select lets you attach multiple records to another record. For example, you
can attach multiple issues to a customer record.
4. In the List/Record field, select the kind of record you want to attach this list to.
For example, if you want to attach a list of records to your case records, you would select Cases.
5. Check the Record is Parent box.
6. On the Applies To subtab, check the box next to the type of record you want to attach to another
record.
For example, check the Customer box to attach customer records.
7. Click the Display subtab.
8. In the Parent Subtab field, select the subtab where you want this list to display on the parent
record.
9. Click Save.
Now, when you view a parent record, a list of built-in records is attached on the specified subtab.
Note: When attaching a list to a transaction, you can only attach to transactions that have
customizable forms. For example, you can attach a list of cases to a cash sale but not to a bill.
The following transactions are available as parents:
■ Cash Refund
■ Cash Sale
■ Credit Memo
■ Estimate
■ Invoice
■ Opportunity
■ Purchase Order
■ Return Authorization
■ Sales Order
Warning: A child record may not be available on a form for a parent record that was created
through transformation from another record type. For example, if you define a custom record
as a child record of sales order, this custom child record is not available on forms for sales
orders transformed from quotes.
Using Child Records
After you have created your child record types, you can enter data into records from the child record
list or parent records.
To enter data in child records from the child record list:
1. Go to Customization > Lists, Records & Fields > Record Types.
2. Click New Record next to the name of the child record type you want to enter records for.
SuiteBuilder
Parent-Child Record Relationships
237
3. In the field that links to the parent record, choose the record you want this child record to link to.
For example, in the Equipment field, you would choose the machine you are entering service
notes for.
4. Enter data in the remaining fields on the record.
5. When you are finished, choose one of two options to submit the information to NetSuite:
■ Click Submit to submit the information and return to the child record list.
■ Click Submit & New to submit the information and add another record.
You can now view this child record from its parent record.
To enter data in child records from the parent record:
1. Open the list of records where your parent record appears.
■ If your parent record is a custom record:
1.
Go to Customization > Lists, Records & Fields > Record Types.
2.
Click the name of the custom record list you want to open.
If you have a link in your center directly to your parent record list, you can click that link
instead of the above steps.
■ If your parent record is a standard NetSuite record, on the Lists page, click the name of the
list you want.
You can attach child records to any of the standard NetSuite records, but for records that are
transformed from other records, child record attachment cannot occur when the records are
first created, only after they have been saved.
1.
Click View next to the name of the record you would like to enter data for.
2.
Click the subtab where the child record list appears.
3.
Click New above the list to enter a new child record.
4.
Enter data in the fields on the record.
5.
When you are finished, choose one of two options to submit the information to
NetSuite:
■ Click Submit to submit the information and return to the parent record.
■ Click Submit & New to submit the information and add another child record.
To view a child record from the parent record, click the link for the child record in the list of child
records. To edit a child record from the parent record, click Edit.
By default, inactive child records are not shown on the parent record. If you customize the sublist and
the saved search filters by the Inactive box, inactive records can be shown in the sublist.
Warning: A child record may not be available on a form for a parent record that was created
through transformation from another record type. For example, if you define a custom record
as a child record of sales order, this custom child record is not available on forms for sales
orders transformed from quotes.
Sourcing with Custom Records
You can use sourcing with custom record types for both standard and custom records. You must
first create a List/Record field on your custom record type for the kind of record you want to source
information from. After you have created that field, you can then choose it in the Source List field.
SuiteBuilder
Sourcing with Custom Records
238
For example, you have created an Intern custom record type. You want to include information on
your intern records about the employees supervising each intern. You can do this by first creating an
Employee field with a list of your employees. Then you can source information from employee records
to other fields on your intern records.
For information on sourcing and custom fields, see Sourcing with Custom Records.
To use sourcing with custom record types:
1. Go to Customization > Lists, Records & Fields > Record Types.
2. Click Edit next to the record type you want to create a sourced field for.
3. Click the Fields subtab.
4. Click New Field.
5. In the Description field, enter the name of your new field.
For example, if you are creating a field to list your employees you would enter Employee.
6. In the Type field, select List/Record.
7. In the List/Record field, select the kind of record you want to include information from in other
fields on your record type.
For example, if you want to include information about your employees you would select
Employee.
8. Click Save.
Now, you can create your sourced fields.
9. Click the Fields subtab.
10. Click New Field.
11. In the Description field, enter a description for your field.
For example, if you wanted to include an employee's email address you would enter Employee
Email.
12. In the Type field, select a type of custom field.
The type you select must match the type of field you want to source from.
For example, if you wanted to include an email address you would choose Email Address in the
Type field.
For a list of standard fields and their types, see Available Standard Fields and Field Types for
Custom Record Types and Source Lists.
13. If you are creating a List/Record field, select the appropriate list or record in the List/Record field.
For example, if you are sourcing from the Sales Rep field on Customer records, choose
Employee in the List/Record field because your sales reps are employees.
14. In the Source List field, select the record type you want to source information from.
This field lists the field you created in steps 1-9.
You can create multiple source lists for your custom records by repeating steps 1-9 for each kind
of record you want to be able to source information from.
15. In the Source From field, select the field you want to include information from.
You must choose a Source List before you can choose a field.
The selected field's type must match the type selected in the Type field.
16. When you have finished, click Save.
SuiteBuilder
Sourcing with Custom Records
239
17. To add Source List fields, repeat steps 1-9.
To add sourced fields, repeat steps 10-17.
You can now include information from standard and custom fields and records on your custom record
types.
Available Standard Fields and Field Types for Custom
Record Types and Source Lists
Custom record types and source lists can use sourcing with the standard fields and records listed
below. In addition to standard records, you can also use custom fields and record types for sourcing.
When using custom fields and record types for sourcing, the field type chosen depends on the field
type of the custom field being sourced from.
For example, you have created an custom entity check box field for Quarterly Mailing. If you want to
source information from the Quarterly Mailing field to a custom CRM field for cases, you must choose
Check Box in the Type field when creating your CRM field.
Customer, Employee, Partner and Vendor Fields
Field
Type
Customer
Employee
Partner
Vendor
Name/ID
Free-Form Text
×
×
×
×
Bill To
Text Area
×
×
×
Ship To
Text Area
×
×
Phone
Phone Number
×
×
×
×
Fax
Phone Number
×
×
×
E-mail
E-mail Address
×
×
×
×
City
Free-Form Text
×
×
×
State
Free-Form Text
×
×
×
Zip
Free-Form Text
×
×
×
Country
Free-Form Text
×
×
×
Sales Rep
List/Record*
×
Expected
Close Date
Date
×
Renewal Date
Date
×
Contact
Free-Form Text
×
×
Alt. Contact
Free-Form Text
×
×
Alt. Phone
Phone Number
×
×
Balance
Currency
×
×
Credit Limit
Currency
×
×
Account
Free-Form Text
×
×
1099 Eligible
Check Box
×
Tax ID
Free-Form Text
×
Company
Name
Free-Form Text
×
×
SuiteBuilder
Sourcing with Custom Records
Field
Type
Customer
Employee
Partner
Vendor
Supervisor
List/Record*
×
Soc. Sec. #
Free-Form Text
×
* In the List/Record field, you must choose the Employee list for sourcing to work properly.
Item
Field
Type
Name
Free-Form Text
Display Name
Free-Form Text
Vendor Name
Free-Form Text
Online Name
Free-Form Text
Available Online
Check Box
Base Price
Currency
Cost
Currency
Preferred Vendor
List/Record*
On Hand
Decimal Number
* In the List/Record Field, you must choose the Vendor list for sourcing to work properly.
Updating Custom Record Types
Inactivating a Custom Record Type
To inactivate a custom record type :
1. Go to Customization > Lists, Records & Fields > Record Types.
2. At the top of the page, check the Show Inactives box.
3. Check the box in the Inactive column next to the record type you want to inactivate.
4. Click Submit.
Deleting a Custom Record Type
To delete a custom record type:
1. Go to Customization > Lists, Records & Fields > Record Types.
2. In the Edit column, click the name of the custom record type you want to delete.
SuiteBuilder
240
Updating Custom Record Types
241
3. In the More Actions menu, click Delete.
After the deletion, the list of custom records no longer includes the deleted record type.
Important: You cannot delete a custom record type that is used by any custom fields or
workflows. When you attempt to delete a custom record type that has this kind of dependency,
you receive error messages with lists of custom field names and/or custom workflow names
that depend on the custom record. You must delete any dependent custom fields and
workflows before you can delete the record type.
Viewing or Editing a Custom Record Type
To view or edit a custom record type:
1. Go to Customization > Lists, Records & Fields > Record Types.
2. In the Edit column, click the name of the custom record type you want to view or edit.
3. Record types have the following subtabs for you to further define them:
■ Fields – Create and rearrange the fields for your custom record type. See Adding Fields to
Custom Record Types.
■ Subtabs – Create and arrange subtabs for your custom record type. For information, see
Adding Subtabs to a Custom Record.
Note: To save time, create and arrange subtabs for your custom records before
defining your custom fields.
■ Sublists – Add search results as sublists on your custom record type. For more information,
see Applying Custom Sublists to Custom Record Types.
■ Icons – Select the .png sprite you want to use to represent this record type in the New Bar,
Create New menu, Recent Records menu, Recent Records portlet, and QuickViews. You
can choose from built-in icons or create your own custom icon. For more information, see
Choosing an Icon for a Custom Record.
■ Numbering – Specify the numbering format for custom records types. For information, see
Numbering Custom Record Types.
■ Forms – Customize and select a preferred entry form for your custom record type.
For more information, see Adding Custom Forms for a Record.
■ Permissions – Choose the roles you want to access custom record entry forms, choose
a default form and restrict the forms available here. For information, see Setting Up a
Permissions List for a Custom Record Type.
Important: You must choose Use Permission List from the Access Type list for
these permissions to take effect. For custom record types that are associated with a
custom segment, you cannot edit the permissions of the custom record. The custom
record permissions are set on the custom segment definition page.
■ Links – Create links that take you to the list of record entries for this type and choose where
to place the links. See Creating Links to Custom Records.
■ Managers – Define specific employees as managers of the current record type. This allows
them to modify the custom record type. When defined as a manager, the employee is
automatically granted custom record view permission. This allows them to see the list of
custom record types but not drill down on them.
SuiteBuilder
Updating Custom Record Types
242
Note: If an employee has a role that includes the Custom Record Type permission,
they have edit access to all custom records types. The Managers subtab enables you
to grant permission for an employee to the current record type only.
■ Translation – (when Multi-Language feature is enabled) Define translations for the custom
record type name to be used when users change the language preference. See Adding
Translations for Custom Records.
■ Child Records – If this record type is a parent record, the child records are listed here. See
Using Child Records.
■ Parent Records – If this record type is a child record, the parent records are listed here. See
Parent-Child Record Relationships.
4. When you have finished making changes, click Save.
Custom Record Types Associated with a Custom Segment
On the Record Types list page, the custom segment name in the Segment column means that the
custom record type is associated with a custom segment.
The custom record has the same name as the custom segment.
SuiteBuilder
Updating Custom Record Types
243
If you edit a custom record that is associated with a custom segment, note the following:
■ Some of the fields on the Custom Record Types page are read-only to avoid conflict with the custom
segment settings.
■ Some of the subtabs on the Custom Record Types page are not available because the record is
associated with the custom segment.
■ You cannot edit the permissions of the custom record. The custom record permissions are set on
the custom segment definition page.
■ The custom record type cannot be inactivated because it is associated with a custom segment.
When you add a new field to the record, it appears as a column on the Values subtab of the custom
segment definition page.
SuiteBuilder
Updating Custom Record Types
SuiteBuilder
244
Using Custom Record Entries
245
Using Custom Record Entries
Custom record instances or entries are the actual custom records you create. You can create, edit and
search your custom record instances from the list of record types. You can also inactivate or delete a
record type that is no longer being used.
For details, see the following:
■ Inactivating a Custom Record Type
■ Deleting a Custom Record Type
■ Viewing a Custom Record Entries List
■ Viewing or Editing a Custom Record Entry
■ Creating a Custom Record Entry
■ Copying a Custom Record Entry
■ Viewing or Editing a Custom Record Type
■ Custom Record Types Associated with a Custom Segment
■ Searching Custom Record Entries
Viewing a Custom Record Entries List
To view a custom record entries list:
1. Go to Customization > Lists, Records & Fields > Record Types.
You can also reach the custom record entries list by placing a link directly to the list in your
center. See Creating Links to Custom Records.
2. Click the List link for the custom record entries list you want to see.
Your list of custom records appears.
You can also reach the custom record entries list by placing a link directly to the list in your
center. See Creating Links to Custom Records.
Viewing or Editing a Custom Record Entry
To view or edit a custom record entry :
1. Go to Customization > Lists, Records & Fields > Record Types, and click the List link for the
custom record entries list you want to see.
(You can also reach the custom record entries list by placing a link directly to the list in your
center. See Creating Links to Custom Records.)
2. In the records list, click the View or Edit link for the record you want.
3. If you are editing, click Save when you are finished.
Creating a Custom Record Entry
To create a custom record entry:
1. Go to Customization > Lists, Records & Fields > Record Types, and click the New Record link.
SuiteBuilder
Using Custom Record Entries
246
2. Enter a name and any notes you want to add, and click Save.
Copying a Custom Record Entry
To copy a custom record entry:
1. Go to Customization > Lists, Records & Fields > Record Types, and click the List link for the
custom record entries list you want to see.
2. Click View next to the record you want to copy.
3. In the More Actions menu, choose Make Copy.
4. Enter a name for your new record, and click Save.
You cannot create another record with the same name. The information from the original record
is copied except the name.
Searching Custom Record Entries
To search a list of custom record entries:
1. Go to Customization > Lists, Records & Fields > Record Types.
2. Click the Search link for the record type you want to search.
3. On the Search page, enter or select criteria to filter search results:
To enter specific criteria:
■ Select Any to search for all information of that kind.
■ Select Is, Starts With, or Contains and enter the information or part of the information you
want to find.
■ Select Is Not, Does Not Start With, or Does Not Contain and enter the information you want
to exclude.
■ Select a choice or choices from a list or a list of options.
■ Click List next to an empty list field to select from a popup, or enter the first few letters and
press the Tab key.
■ Enter or pick dates in From and To fields if you selected custom in the date field.
■ Select Either, Yes, or No for the option you want.
Using a combination of these fields is the best way to find what you are looking for.
4. After entering search criteria, choose one of the following options:
■ Click the Submit button to run the search and open a NetSuite page with a list of results.
■ Click the Export button to run the search and save results as a .csv file that you can save to
disk or open on your desktop. For more information, see the help topic Exporting Search
Results.
■ Click the Reset button to clear the filters you defined.
■ Click the Customize button to open a saved search page with no filters defined, where you
can define a custom search form to be your default search form for the record type. See the
help topic Defining a Saved Search as a Preferred Search Form.
■ Click the Create Saved Search button to open a saved search page that includes the filters
you defined. See the help topic Saved Searches.
SuiteBuilder
Using Custom Record Entries
247
5. After you have submitted a search and a search results page has opened, you can do the
following:
■ Export search results as a .csv or .xls file. See the help topic Exporting Search Results.
■ Email search results to one or more recipients. See the help topic Emailing Search Results.
■ Create a saved search with the same definitions as the search. See the help topic Saved
Searches.
6. If the list of results is too large or too small, you can add, remove or expand criteria. To return
to the search criteria page, click Return To Previous Search at the bottom of the Search Results
page.
■ To set more complex search criteria and define search results display options, enable the
Use Advanced Search box on the Search page. For information about using advanced search
functionality, see the help topic Defining an Advanced Search.
■ Saved searches can be run on demand, include all advanced search functionality and
provide additional capabilities, including scheduling, email alerts, audience definition, and
highlighting of results. See the help topic Saved Searches.
SuiteBuilder
Custom Transactions
248
Custom Transactions
The Custom Transactions feature lets you create transaction types tailored to your business needs.
This feature, along with Custom GL Lines and Custom Segments, is part of the SuiteGL feature set. For
more about SuiteGL, Custom Segments, and Custom GL Lines, see the help topics SuiteGL Features
Overview, Custom Segments, and Custom GL Lines Plug-in.
For information about custom transactions, see the following topics:
■ Benefits of Custom Transaction Types
■ Custom Transaction Type Setup
■ Creating and Editing Custom Transaction Types
■ Custom Transaction Type Association with a Plug-in Implementation
■ Deleting Custom Transaction Types
■ Printing Custom Transaction Instances
■ Custom Transaction Types in Workflows
■ Custom Transaction Types in Bundles
Benefits of Custom Transaction Types
The Custom Transactions feature has the following benefits:
■ You can name your custom transaction types in a way that reflects your business logic. For details,
see Custom Transaction Type Naming Enables Better Organization.
■ Like standard transactions, each custom transaction type can have its own numbering scheme,
permissions, and workflow logic. For details, see Custom Transaction Types Support Key NetSuite
Features.
■ You can create custom transaction types in multiple styles. For example, the transaction type can
resemble a journal entry, or it can behave more like an expense report. For details, see Custom
Transaction List Styles.
Custom Transaction Type Naming Enables Better Organization
In your business, there may be a wide variety of events that can require an adjustment to your general
ledger. For example, you may need to record adjustments for non-operational income, such as interest
income that your company receives through investments. Conversely, you may need to record debits
for rewards you give customers through customer loyalty programs. Without the Custom Transactions
feature, your options for recording these various adjustments may be limited. One strategy might
be to record all adjustments as journal entries. However, when you rely solely on the journal entry
record, all of these varying transactions are grouped together in a single list view. Moreover, when
employees enter journal entries, they have limited choices for distinguishing one type of journal entry
from another.
By contrast, with the Custom Transactions feature, you can create custom transaction types that are
clearly labeled for specific purposes. With this approach, each custom transaction type has its own
list view and its own menu path, which you can customize. In the following example, three custom
transaction types have been added to the Accounting Center’s Financial tab.
SuiteBuilder
Benefits of Custom Transaction Types
249
These enhancements make it possible for employees to automatically classify each transaction when
they create it. And if they want to view a list of all transactions of a particular type, they can do so using
that type’s list view.
Custom Transaction Types Support Key NetSuite Features
When you use custom transaction types, you can leverage many of the same features that are available
with standard NetSuite transaction types. For example:
■ Each custom transaction type can have its own numbering, permissions, and workflows.
■ Custom transaction types can include custom transaction fields that you define.
■ You can create multiple custom entry forms for each transaction type.
■ You can interact with custom transaction instances using SuiteScript. For details, see the help topic
Custom Transaction.
■ You can interact with custom transaction instances by using SuiteTalk (Web Services). For details, see
the help topic Custom Transaction.
■ You can interact with custom transaction instances by using the CSV Import Assistant. For details,
see the help topic Custom Transactions Import.
■ You can reference your custom transaction types when creating saved searches. To find custom
transaction types, use the Transaction search type. In the Types list, your custom transaction types
are listed with standard transaction types.
■ You can interact with custom transaction instances by using SuiteAnalytics Connect. To reference
your custom transaction types, use the Transaction table. Use the transaction_type column to
identify your custom transaction type. For more details, see the help topic Connect Schema.
■ Custom transaction types can be bundled, as described in Custom Transaction Types in Bundles.
However, be aware that bundles including custom transaction types cannot be installed in NetSuite
accounts running Version 2014 Release 2.
■ Custom transaction types can be used in conjunction with the Custom GL Lines plug-in. With the
Custom GL Lines plug-in, you can create logic that automatically creates a GL impact. For more
information, see Custom Transaction Type Association with a Plug-in Implementation.
Support for these features makes it possible for each transaction type to have its own unique behavior
and processing. These advantages may be critical as you develop a series of discrete transaction types
to meet different needs.
Note: Custom transactions do not appear on the Deposits and Credits subtab of the Reconcile
Bank Statement.
For example, suppose you have a custom transaction type called Bad Debt, which you use to account
for debts that are not collectible. For this type, you may want to restrict access to a limited set of users.
You can manage this access on the Permissions subtab by using the transaction type’s Level sublist.
SuiteBuilder
Benefits of Custom Transaction Types
250
You may also want to create a custom workflow for this type. On the New Workflow page, custom
transaction types are listed with standard transaction types.
If appropriate, your workflow can reference any custom statuses that you have defined for your
transaction type. Custom statuses are a unique feature of custom transaction types and are not
available with standard transaction types. You create statuses by using the transaction type’s Statuses
subtab.
Custom Transaction List Styles
The Custom Transactions feature supports multiple transaction type formats. That is, you can create
transaction types in any of the following styles:
■ Basic – Lets users record credit or debit lines to specified accounts. The corresponding account
to be adjusted for balancing purposes is defined on the transaction type record. This approach is
similar to the expense report transaction, which always debits the same predefined account.
■ Journal – Lets users record sets of debits and credits to accounts that a user manually specifies
when entering the transaction. As with a standard journal entry record, the total value of credits
must equal the total balance of debits.
■ Header only – Relies on a GL plug-in implementation to calculate the GL impact. That is, the
transaction does not include a Lines sublist for users to manually enter debits and credits to specific
SuiteBuilder
Benefits of Custom Transaction Types
251
accounts. Rather, the plug-in implementation calculates the impact based on other data. This data
can consist of values that users enter on the transaction header or of values they enter on a custom
form created by using SuiteScript objects.
For full details on the various list styles, see Custom Transaction Type List Styles.
Custom Transaction Type Setup
For help getting started with the Custom Transactions feature, see the following topics:
■ Enabling the Custom Transactions Feature (required)
■ Granting a Role Permission to Work With Custom Transaction Types (optional)
After you have enabled the feature, authorized users can create custom transaction types, as described
in Creating and Editing Custom Transaction Types. After custom transaction types have been created,
authorized users can enter transaction instances by going to Cusotmimzation > Lists, Records, & Fields
> Transaction Types, and clicking the New Transaction link for the desired transaction type.
If appropriate, you can also configure other menu paths for entering custom transactions. This process
is described in Creating Links for a Custom Transaction Type.
Enabling the Custom Transactions Feature
Before you can create custom transaction types, you must enable the feature. To enable the feature,
go to Setup > Company > Enable Features. On the SuiteCloud subtab, check the Custom Transactions
box, and click Save.
After you enable the feature, you can begin creating custom transaction types, as described in Creating
a Custom Transaction Type.
Granting a Role Permission to Work With Custom
Transaction Types
By default, only account administrators and users with the Full Access role have permission to create
custom transaction types. However, account administrators can grant access to other roles. The
available access levels are described in the following table.
Level
Users can:
Users cannot:
View
View transaction type definitions.
Edit, create, or delete transaction
types.
Create
View and create transaction types.
Edit or delete transaction types.
Edit
View, create, and edit transaction types.
Delete transaction types.
Full
View, create, edit, and delete transaction
types.
To configure a role’s ability to work with custom transaction types:
1. Go to Setup > Users/Roles > Manage Roles.
2. Locate the role you want to modify, and click the corresponding Edit or Customize link.
3. On the Permissions subtab, click the Setup subtab.
SuiteBuilder
Custom Transaction Type Setup
252
4. Do one of the following:.
■ To grant the role access, add a line to the sublist. In the Permission column, set the list to
Custom Transaction Types. In the Level column, choose the appropriate access level, and
then click Add.
■ To make changes to the role’s existing access, locate the Custom Transaction Types
permission and edit the corresponding value in the Level column. Then click OK.
■ To remove a role’s access, locate the Custom Transaction Types permission and click it to
enable a series of buttons. Then click Remove.
5. Click Save.
Note: Giving a role permission to manage custom transaction types does not give the role
permission to enter transaction instances. For information on permitting a role to work with
transaction type instances, see Permissions for a Custom Transaction Type.
Creating and Editing Custom Transaction Types
After you have enabled the Custom Transactions feature, the next step is to create custom transaction
types.
For help creating and updating custom transaction types, see the following topics.
■ Custom Transaction Type List Styles
■ Creating a Custom Transaction Type
■ Editing a Custom Transaction Type
■ Locked Custom Transaction Types
■ Custom Transaction Type Classification Fields
■ Setting the Account Field for a Basic Transaction Type
■ Custom Fields in Custom Transaction Types
■ Numbering for a Custom Transaction Type
■ Statuses for a Custom Transaction Type
■ Creating Links for a Custom Transaction Type
■ Adding Custom Forms for a Custom Transaction Type
■ Permissions for a Custom Transaction Type
■ Adding Translations for a Custom Transaction Type
Note: For help enabling the Custom Transactions feature, see Enabling the Custom
Transactions Feature.
Custom Transaction Type List Styles
For each custom transaction type you create, you must choose a list style. The list style determines how
instances of the type will appear and behave, how users will interact with transaction instances, and
how they will affect your general ledger. After a transaction type has been saved, its list style cannot
be changed. For this reason, you may find it useful to review this section prior to creating your custom
transaction types.
The available list styles include the following:
■ Basic
SuiteBuilder
Creating and Editing Custom Transaction Types
253
■ Journal
■ Header Only
Basic
Users entering instances of a Basic style transaction type can enter either a series of credits or a series
of debits. Users specify the accounts to be credited (or debited) in each transaction’s Lines sublist.
The corresponding account to be adjusted for balancing purposes is defined on the transaction type’s
definition. This account is sometimes called the offset account.
With this approach, the custom transaction is similar to the expense report transaction, which always
debits the same predefined account. However, one unique feature of the Basic style is that you can
choose whether the offset account named on the transaction type is to be credited or debited. You
make this choice using the transaction type’s Credit box. When this box is checked, the offset account
is credited, and the accounts that the user identifies in the Lines sublist are debited. When the box is
cleared, the reverse behavior is used.
After a transaction type has been created, the value of the Credit check box cannot be changed.
Journal
The Journal list style lets users record sets of debits and credits to accounts they specify when entering
the transaction. As with a standard journal entry record, the total value of credits must equal the total
value of debits.
Header Only
With the Header Only list style, the system uses a Custom GL Lines plug-in implementation to
determine the GL impact of transactions that users enter. That is, the transaction instances do not
include a Lines sublist for users to manually enter debits or credits to specific accounts. Rather, the
plug-in implementation calculates the impact based on other data that users enter. This data can come
from standard or custom fields on the transaction instance entry form. It can also come from values
entered in a custom UI created by using SuiteScript objects.
SuiteBuilder
Creating and Editing Custom Transaction Types
254
For example, you may want to create a Header Only transaction that uses SuiteScript objects to create
a sublist based on a saved search. With this approach, you could configure the transaction type to
display a list of transactions on which the system can take some action, depending on choices the user
makes when entering each transaction instance. The plug-in implementation could then create GL lines
based on those choices.
The following screenshot illustrates this approach. In this example, a Bad Debt Accrual transaction
instance shows a list of overdue invoices. The user can select those invoices which should be
designated as bad debt.
Note: When using custom transactions with the Custom GL Lines Plug-in, a posting must have
at least one transaction line.
A Header Only transaction instance has no GL impact until it is associated with a plug-in
implementation. However, you can create Header Only transaction types prior to enabling the
Custom GL Lines feature. Similarly, users can enter Header Only transaction instances before the
corresponding transaction type is linked to a plug-in implementation, as long as the type does not have
a posting status.
For more information on the Custom GL Lines plug-in, see the help topic Custom GL Lines Plug-in
Overview. For information on working with SuiteScript UI objects, see the help topics UI Objects and
Enhancing NetSuite Forms with User Event Scripts. For information on linking a transaction type with
a Custom GL Lines plug-in implementation, see Custom Transaction Type Association with a Plug-in
Implementation.
Creating a Custom Transaction Type
When you create a custom transaction type, you must choose a name and a list style for the type. If
appropriate, you can also define other qualities, such as the numbering style the type will use, the
SuiteBuilder
Creating and Editing Custom Transaction Types
255
menu paths that will provide access to the transaction form, and more. After you save your new type,
you can also add custom fields and create custom entry forms.
Note: Custom transactions do not appear on the Deposits and Credits subtab of the Reconcile
Bank Statement.
To create a custom transaction type:
1. Go to Customizataion > Lists, Records & Fields > Transaction Types > New.
2. In the Name field, enter a name for the type. This value must be unique. As a best practice, enter
a singular noun, because for certain locales the system uses the plural form of the name on the
transaction type’s List view.
3. Enter a value in the ID field. You use this value when scripting to instances of the transaction
type. As a best practice, enter a name that begins with an underscore. If you do not enter a
value, the system generates one.
4. Set a value for List Style. This choice determines how users will interact with instances of this
type. Your choices are:
■ Basic – Users entering transaction instances can use a Lines sublist to enter either a series
of credits or a series of debits to accounts that they specify. With this style, you must also
identify the corresponding account to be adjusted for balancing purposes in the transaction
type’s Account field, as described in the next step.
■ Journal – Users record sets of credits and debits to accounts that they manually specify when
entering the transaction.
■ Header only – With this style, users do not manually identify accounts to credit or debit.
Instead, this style relies on a Custom GL Lines plug-in implementation to calculate the GL
impact.
For more details on the available list styles, see Custom Transaction Type List Styles.
Important: After you save your custom transaction type, the List Style cannot be
changed.
5. If you chose a List Style of Basic, complete the following steps:
■ Use the Account list to select an account. This account will be debited or credited each time
users enter instances of this transactions type.
■ If you want this account to be credited when users enter instances of this transactions type,
check the Credit box. In this case, the account named in the Account field will be credited
each time an instance of this transaction type is saved. The accounts that the user identifies
in each transaction instance’s Lines sublist will be debited. If you want the reverse behavior,
leave the box cleared.
Important: After you save your custom transaction type, the state of the Credit box
cannot be changed.
For more information about the Account field and Credit box, see Setting the Account Field for a
Basic Transaction Type.
6. If appropriate, check the Allow Void Transactions Using Reversing Journals box. This option
enables users to create reverse journal entries for posting transactions. This box is active only
when the global Void Transactions Using Reversing Journals preference is enabled. You can view
and set the global preference at Setup > Accounting > Accounting Preferences, on the General
subtab.
SuiteBuilder
Creating and Editing Custom Transaction Types
256
7. If appropriate, use the Class, Department, and Location lists to specify that these fields appear
on instances of this transaction type. For each field, you can specify that it is displayed either on
the transaction header or as a column in the Lines sublist. For each classification, you can also
check the corresponding Mandatory box to make the field required. For more information about
these fields, see Custom Transaction Type Classification Fields.
8. By default, a new custom transaction type has a non-posting status. If you want instances of the
transaction to post, navigate to the Statuses subtab and do one of the following:
■ Check the Posting box. With this choice, every instance of the transaction posts when it is
saved.
■ Create statuses for the transaction type. Each status can be configured to be either posting or
non-posting. For help creating statuses, see Statuses for a Custom Transaction Type.
9. Optionally, use any of the following subtabs to further define your custom transaction type:
■ Numbering – Configure auto-numbering for the type. For more details, see Numbering for a
Custom Transaction Type.
■ Links – Create menu paths for the transaction type. For more details, see Creating Links for a
Custom Transaction Type.
■ Permissions – Choose the roles that should be permitted to work with instances of this
custom transaction type. For more details, see Permissions for a Custom Transaction Type.
■ Translation – Define translations for the custom transaction type’s name. This subtab
appears only if the Multi-Language option is enabled at Setup > Company > Enable Features,
on the Company subtab. For more details, see Adding Translations for a Custom Transaction
Type.
10. Click Save.
The system saves your new custom transaction type and creates a template to use for printing.
It also adds two subtabs to the page. You can use these subtabs to further define the type, as
follows:
■ Custom Fields – Create custom fields and automatically add them to the transaction type.
Be aware that any custom field you create is available to be added to any standard or
custom transaction type that exists in your system. For details, see Custom Fields in Custom
Transaction Types.
■ Forms – Create custom forms for entering instances of the transaction type. For details, see
Adding Custom Forms for a Custom Transaction Type.
Editing a Custom Transaction Type
Use the following procedure to make changes to an existing custom transaction type. Some fields,
such as the List Style field and the Credit box, cannot be changed after you have saved the type.
Additionally, after transaction instances have been created, the transaction type’s Posting box should
not be changed. However, other values can be modified.
Note: In some cases, a transaction type that was installed from a bundle may be locked to
editing. In these cases, you cannot directly edit the transaction type as described in this topic.
However, you can still make changes to certain aspects of the transaction type’s behavior. For
details, see Locked Custom Transaction Types.
To edit a custom transaction type:
1. Go to Customization > Lists, Records & Fields > Transaction Types.
2. In the Edit column, click the name of the transaction type you want to edit.
SuiteBuilder
Creating and Editing Custom Transaction Types
257
3. Change any of the following values, as appropriate:
■ Name – This value must be unique. As a best practice, enter a singular noun. (For certain
locales, the system uses the plural form of the name in the transaction type’s List view.) When
you make a change to the type’s name, the old name is no longer used, even for existing
transaction instances.
■ Account – The system displays the Account field only if the transaction type’s List Style is
Basic. In these cases, you can use the list to modify the offset account, which is the account
to be debited or credited each time a user enters an instance of the transaction type. Any
change you make to the Account field affects only those transaction instances created after
you save your change.
The way this account is used varies depending on whether the Credit box is checked. For
more information about the Account field and Credit box, see Setting the Account Field for a
Basic Transaction Type.
■ Allow Void Transactions Using Reversing Journals – This option enables users to create
reverse journal entries for posting transactions. To use this option, you must have enabled
the global Void Transactions Using Reversing Journals preference, which is available at Setup
> Accounting > Accounting Preferences.
■ Class, Department, and Location – Use these fields to make changes to whether class,
department, and location can be set on instances of this transaction type. Any changes you
make affect existing transaction instances as well as new ones. For more details on these
fields, see Custom Transaction Type Classification Fields.
4. The ID field is used to reference this transaction type during scripting. All IDs have a prefix of
customtransaction, which cannot be changed. However, you can change the latter part of the ID
by completing the following steps:
a.
Click the Change ID button to display the Change Script ID popup
b.
In the New ID field, enter the desired new ID.
c.
Click Save.
5. Optionally, make changes on any of the following subtabs to further define your custom
transaction type:
■ Custom Fields – Create custom fields and automatically add them to the transaction type
(and to any transaction type). Be aware that any custom field you create is available to be
added to any standard or custom transaction type that exists in your system. For more
details, see Custom Fields in Custom Transaction Types.
■ Numbering – Configure auto-numbering for the type. For more details, see Numbering for a
Custom Transaction Type.
■ Statuses – Create posting and non-posting for statuses the type. When editing existing
statuses, some limits exist. For more details, see Statuses for a Custom Transaction Type.
■ Links – Create menu paths for the transaction type. For more details, see Creating Links for a
Custom Transaction Type.
■ Permissions – Choose the roles that should be permitted to work with instances of this
custom transaction type. For more details, see Permissions for a Custom Transaction Type.
■ Translation – Define translations for the custom transaction type’s name. This subtab
is displayed only if the Multi-Language option is selected at Setup > Company > Enable
Features, on the Company subtab. For more details, see Adding Translations for a Custom
Transaction Type.
■ Forms – Create custom entry forms for the transaction type. For details, see Adding Custom
Forms for a Custom Transaction Type.
6. Click Save.
SuiteBuilder
Creating and Editing Custom Transaction Types
258
Locked Custom Transaction Types
In some cases, you may be working with a custom transaction type that has been locked to editing.
For example, transaction types that were imported by a bundle are sometimes locked. In these cases,
you cannot directly modify the transaction type definition. However, you can use other options in the
NetSuite UI to refine aspects of how the transaction type functions in your account. For more details,
see the following:
■ Setting the Account Field for a Basic Transaction Type
■ Permissions for a Custom Transaction Type
■ Numbering for a Custom Transaction Type
■ Adding an Existing Custom Field to a Custom Transaction Type
■ Adding Custom Forms for a Custom Transaction Type
■ Creating Links for a Custom Transaction Type
Custom Transaction Type Classification Fields
For each transaction type, you can decide whether instances of the type include fields for class,
department, and location.
Your choices for each of these fields are as follows:
■ None – (Default choice) The field is not used.
■ Header – The field is displayed on the transaction’s body.
■ Lines – The field is a column in the transaction’s Lines sublist.
For each field, you can also check a Mandatory box. If you check this box, users entering transaction
instances are required to enter a value for the field.
Your choices about these fields are all reflected on the standard form for the transaction type. Your
choices are also reflected in the default configuration of any custom forms you create, although
you can make changes to the custom forms. For example, on a custom form, you can hide any of
the classification fields, even if the transaction type was configured to make the field visible and
mandatory. In this manner, you can bypass the transaction type’s settings.
Important: Your custom transaction type may be associated with a plug-in implementation.
If it is, consider the logic of the plug-in implementation before setting these fields. Specifically,
the plug-in implementation may set line values for class, department, or location. If it does, you
must set the Class, Department, or Location list to Lines. If you do not, the values provided by
the plug-in are not used.
You can set values for the classification fields both when you create a custom transaction type
and when you edit one. For details, see Creating a Custom Transaction Type and Editing a Custom
Transaction Type.
For more information about the classification fields, see the following topics:
■ Impact of Global Preferences
■ Classification Fields in Numbering
■ Behavior of Classification Fields Following Edits
Impact of Global Preferences
The choices that you make on the custom transaction type for class, department, and location override
your global accounting preferences. These preferences are set at Setup > Accounting > Accounting
SuiteBuilder
Creating and Editing Custom Transaction Types
259
Preferences. However, if your transaction type’s Mandatory setting is less restrictive than your global
accounting preferences, the system displays a warning. In this case, you can dismiss the warning and
save the less-restrictive setting.
Classification Fields in Numbering
If you configure your transaction type to include the Location field on the transaction header, you may
also want to refer to location in the auto-numbering scheme for instances of this transaction type.
Similarly, if you have a OneWorld account, you can refer to subsidiary when configuring your autonumbering sequence. For details, see Numbering for a Custom Transaction Type.
Behavior of Classification Fields Following Edits
When you edit an existing custom transaction type, you can change the settings related to class,
department, and location. Any changes you make affect existing instances of the transaction type, as
well as new ones. If you make changes, note the following:
■ If you move a field from the Lines sublist to the header, the new header field is populated only if all
of the fields on the transaction instance’s Lines sublist shared the same value. Otherwise, the field’s
value is not defined. If you change the location back to Lines, the former values are restored.
■ If you choose to make a field mandatory that was not previously required, existing transaction
instances may not have the required value. However, a user editing one of these instances is
required to enter a value before being permitted to save changes.
Setting the Account Field for a Basic Transaction Type
When a transaction type has a list style of Basic, the type must also have an offset account defined. The
offset account shows the account to be debited (or credited) each time an instance of the transaction
type is saved. You define this value by using the Account field for the transaction type.
The behavior of the Account field varies depending on the value of the transaction type’s Credit box. If
the box is checked, the offset account is credited when an instance of the transaction type posts. The
accounts that the user identifies on the transaction instance’s Lines sublist are debited. If the box is
cleared, the reverse behavior occurs.
After a transaction type is created, the value of the Credit box cannot be changed. However, you can
change the offset account. If you do make a change to a transaction type’s Account field, existing
instances are not affected.
To set the Account field for a Basic Transaction Type:
1. Navigate to one of the pages that lets you configure the Account field, by doing one of the
following:
■ Go to Customization > Lists, Records, & Fields > Transaction Types, and click the name of the
appropriate transaction type, or
■ Go to Setup > Accounting > Accounting Preferences, and click the Items/Transaction subtab.
On this page, under Accounts, the system lists several transaction types. This list includes all
custom transaction types that use the Basic list style.
Both of these pages offer a view into the same set of fields, so a change made on one page is
visible on the other.
2. Set the list to the appropriate value.
3. Click Save.
For full details on editing and creating custom transaction types, see Creating a Custom Transaction
Type and Editing a Custom Transaction Type.
SuiteBuilder
Creating and Editing Custom Transaction Types
260
Custom Fields in Custom Transaction Types
If appropriate, you can add custom fields to your custom transaction type. For more details, see the
following sections:
■ Creating a Custom Field and Adding it to a Custom Transaction Type
■ Adding an Existing Custom Field to a Custom Transaction Type
Creating a Custom Field and Adding it to a Custom Transaction
Type
If appropriate, you can create new custom fields and automatically add them to your custom
transaction type. However, be aware of the following:
■ When you create a custom field, it becomes available for all transaction types, including all standard
and custom types. It is not exclusive to the custom transaction type that you are working with.
■ When you add a custom field to your transaction type, you add it to all forms that exist for the
type, including the standard form and any custom forms that exist. However, if appropriate, you
can customize the field on your custom forms. For example, you can change the field’s label, make
it read-only, or hide it. For help working with custom forms, see Configuring Custom Forms for a
Custom Transaction Type.
If your transaction type has been locked to editing and you want to add custom fields to it, see Adding
an Existing Custom Field to a Custom Transaction Type.
Note: You create and maintain custom fields by using the transaction type’s Custom Fields
subtab. This subtab appears only when you are editing an existing transaction type. The subtab
is not available when you are creating a new transaction type.
For more information, see Custom Transaction Body Fields and Custom Transaction Column Fields.
To create a custom field and add it to your custom transaction type:
1. Go to Customization > Lists, Records, & Fields > Transaction Types, and click the name of the
appropriate transaction type. The Custom Fields subtab should be displayed by default.
2. Do one of the following:
■ To add to the body of transaction records, click New Body Field, or
■ To add to the line items of transaction records, click New Column Field.
The system displays a page that lets you create the new field. On the new field record’s Applies
To subtab, the custom transaction type is already selected. If you want to apply your new field to
additional transaction types, you can select the types on this subtab.
3. Configure the field as appropriate. For more details on configuring a custom field, see Creating a
Custom Field.
4. Click Save.
The system saves your custom field and adds it to your transaction type.
Adding an Existing Custom Field to a Custom Transaction Type
Every custom transaction field you create is available to be added to all transaction types, both custom
and standard types. This procedure explains how to add one of these fields to your custom transaction
type.
SuiteBuilder
Creating and Editing Custom Transaction Types
261
Be aware that when you add a custom field to your transaction type, you add it to all forms that
exist for the type, including the standard form and any custom forms you have created. However,
if appropriate, you can customize the field on your custom forms. For example, you can change the
field’s label, make it read-only, or hide it. For help working with custom forms, see Configuring Custom
Forms for a Custom Transaction Type.
For help creating a custom field, see Creating a Custom Field.
To add an existing custom field to a custom transaction type:
1. Do one of the following:
■ To add an existing body field, go to Customization > Lists, Records, & Fields > Transaction
Body Fields.
■ To add an existing column field, go to Customization > Lists, Records, & Fields > Transaction
Column Fields.
2. Click the name of the desired field.
3. On the Applies to subtab, locate the Custom Transactions box, which lists all of the existing
custom transaction types. Select the name of the appropriate type.
4. Click Save.
Numbering for a Custom Transaction Type
All NetSuite transactions are auto-numbered. Auto-numbering helps you determine the sequence in
which transactions were entered. Numbering also helps you find transaction instances.
All transaction types, including custom transaction types, use document numbers and transaction
numbers.
Document Numbers
Numbers for document types are external numbers, such as the number that an external vendor uses
on a bill, or account based numbers such as a check number. Document numbers can also store a
number for type based transactions. Type based numbers are available as custom columns in searches
and lists.
For external numbering sequences such as vendor bill, the document number is unique for each
vendor, which permits the same document number to be assigned to more than one vendor. NetSuite
prevents a vendor from having a duplicated document number on the same transaction type.
Document numbers are useful in transactions where the account field has special significance. These
types of transactions must have numbering that is unique to the account named on the transaction.
For example, if five different transactions are drawing money from the same account, then their
document numbers are part of a single sequence even if they are of different types.
Document numbers may also be required because of government numbering requirements. In
those cases, NetSuite customers might want to use the document numbering system to meet
the government requirements and transaction numbering to satisfy their own internal needs and
requirements.
Transaction Numbers
Auto-generated numbers are internal, gapless numbers that cannot be overwritten and are generated
when a transaction record is saved. These internal numbers are generated for each transaction type.
SuiteBuilder
Creating and Editing Custom Transaction Types
262
If auto-generated numbering is not set up in your account, transaction numbers begin at 1. For more
information about the records and transactions available for auto-numbering, see the help topic
Records and Transactions Available for Auto-Numbering.
Important: Historical transaction records may have duplicate internal numbering. NetSuite
prohibits overwriting transaction type numbering sequences but permits the overwriting of
document numbers. NetSuite does not renumber historical internal transaction numbers.
For more information about setting up auto-generated document numbers and transaction numbers,
see the help topic Set Auto-Generated Numbers.
For each of your custom transaction types, you can customize the way these entry numbers are
created. These options are described in Components of a Custom Transaction Type’s Entry Number.
You may want to review these options before configuring numbering.
The process of configuring numbering includes the following tasks:
■ Defining Numbering for a Custom Transaction Type – Set the main values that define your
numbering scheme.
■ Defining Numbering Preferences for Subsidiaries and Locations – (Optional) Tie some aspect of
numbering to subsidiary or location.
Components of a Custom Transaction Type’s Entry Number
At a minimum, the entry number for a transaction instance includes an automatically generated
number. However, you can customize the way the numbers are generated. For example, for each
transaction type, you can do any of the following:
■ Define a static prefix, to be used for all instances of this type.
■ Add a prefix derived from the subsidiary or the location record with which the transaction instance
is associated. When you choose this configuration, the system ties the numbering sequence to the
transaction instance’s subsidiary or location value. In this way, you can have multiple numbering
sequences for each transaction type: one sequence for each subsidiary (or one sequence for each
location).
■ Define a static suffix, to be used for all instances of this type.
The following illustration shows a sample entry number that uses all of these options.
Each component, along with information about configuring it, is described in the following table.
Callout
Description
1
This value corresponds with the transaction type’s Prefix field. This is a static value
used for all instances of the transaction type. For help setting this value, see Defining
Numbering for a Custom Transaction Type.
2
This value corresponds with the Transaction Prefix field of either the subsidiary or
location record with which the transaction instance is associated. This value appears
only if all of the following occur:
■ The transaction type’s Use Subsidiary or Use Location option is enabled. For help
setting this field, see Defining Numbering for a Custom Transaction Type.
SuiteBuilder
Creating and Editing Custom Transaction Types
Callout
263
Description
■ The transaction instance includes a value in the relevant field (Subsidiary or
Location).
■ The relevant subsidiary or location record includes a value in its Transaction Prefix
field. For more details, see Defining Numbering Preferences for Subsidiaries and
Locations.
3
This value is the auto-generated number. In some cases, all instances of a transaction
type are numbered as part of a single sequence. In other cases, there may be multiple
sequences. The system uses the following rules:
■ If the entry number does not include a Transaction Prefix value derived from a
subsidiary or location record, the system uses a generic numbering sequence not
tied to any classification. The initial number of this sequence is the value saved in
the transaction type’s Initial Number field. For help setting this field, see Defining
Numbering for a Custom Transaction Type.
■ In some cases, the entry number of the transaction instance does include a
Transaction Prefix value derived from a subsidiary or location record. In these
situations, the system uses numbering specific to that combination of subsidiary
and transaction type (or the combination of location and transaction type). The
initial number for each sequence is taken from the location or subsidiary record.
For more details, see Defining Numbering Preferences for Subsidiaries and
Locations.
4
This value corresponds with the transaction type’s Suffix field. This is a static value
used for all instances of the transaction type. For help setting this value, see Defining
Numbering for a Custom Transaction Type.
Defining Numbering for a Custom Transaction Type
You can set most of the fields relevant to custom transaction numbering by using the following
procedure.
If you decide to enable the Use Subsidiary or Use Location option as described in the second step
of this procedure, afterward you may want to complete the steps described in Defining Numbering
Preferences for Subsidiaries and Locations.
For information about the components of a custom transaction type’s entry number, see Components
of a Custom Transaction Type’s Entry Number.
To define numbering for a custom transaction type:
1. Navigate to one of the pages that lets you configure numbering, as follows:
■ Go to Customization > Lists, Records, & Fields > Transaction Types, and click the name of the
appropriate transaction type. Click the Numbering subtab.
■ Go to Setup > Company > Auto-Generated Numbers. Click the Transactions subtab, and
locate the your transaction type in the list.
Both of these pages offer a view into the same set of fields, so a change made on one page is
visible on the other.
2. If appropriate, add a prefix tied to the transaction instance’s subsidiary or location field:
■ Use Subsidiary – This option is available only in OneWorld accounts.
■ Use Location – If you choose this option, you may want to make sure that the transaction
type definition is configured to include the Location field on the transaction header (not the
Lines sublist). For help, see Custom Transaction Type Classification Fields. If you are using
a custom entry form, you may also want to make sure that the custom form makes the
SuiteBuilder
Creating and Editing Custom Transaction Types
264
Location field visible. For help with custom forms, see Adding Custom Forms for a Custom
Transaction Type.
When a subsidiary or location prefix is used, the system also uses a unique numbering sequence
for transaction instances that have that prefix.
3. Optionally, enter numbers or letters in the Prefix field. This prefix is displayed before each
automatically generated number. It is also occurs before the subsidiary or location prefix, which
you might have enabled in the previous step.
4. Optionally, enter number or letters in the Suffix field. The suffix is displayed after each
automatically generated number.
5. If appropriate, enter a value from 1 to 20 in the Minimum Digits field. This minimum applies
only to the automatically generated number, not to the characters in the prefix and suffix. To
meet the minimum for generated numbers that are too short, the system prepends zeroes to
the number. For example, if Minimum Digits is set to 4, an automatically generated number of 1
would become 0001.
6. If appropriate, enter a value in the Initial Number field. This number does not apply to
sequences associated with subsidiary or location. Additionally, this number is used only if it is
higher than the value in the Current Number field.
If you do not enter a value in the Initial Number field, the system in most cases starts the
sequence at 1. (There is one exception: if the Current Number field is displayed and has a value,
the numbering begins with the number that follows the value in that field.)
Note: The Current Number field is not displayed if you are in the process of creating
a new transaction type. If the field appears, it has a value only if an instance of the
transaction type exists. This read-only field reflects the value of whichever existing
transaction instance has the highest entry number. In most cases, this is the number of
the most recently created transaction instance.
7. If you want users to be able to override an automatically generated number, check the Allow
Override box.
Warning: Overriding transaction numbers permits users to create duplicate numbers
and gaps in the sequence. Additionally, when a transaction number is overridden with
a higher value, future auto-generated numbers begin at the next number. Each number
can be manually set to a lower value, but auto-generated numbering always follows the
highest number that has been used so far. Use this option with caution. Ensure that you
understand the risks associated with overriding transaction numbers.
8. Click Save.
Defining Numbering Preferences for Subsidiaries and Locations
As described in Components of a Custom Transaction Type’s Entry Number, you can configure
transaction instance entry numbers to include a prefix defined on the subsidiary or location record.
When the entry number includes this type of prefix, the auto-numbering sequence used is specific to
the unique combination of subsidiary and transaction type (or the unique combination of location and
transaction type). In these cases, the initial number is taken from the subsidiary or location record. The
subsidiary or location records in your account include fields where you can set initial numbers for all
custom transaction types that have the Use Subsidiary or Use Location option enabled.
This procedure describes how to create both of the values specific to this configuration: the transaction
prefix and the initial number.
You may have to complete these steps multiple times, depending on how many subsidiaries and
locations exist.
SuiteBuilder
Creating and Editing Custom Transaction Types
265
To define numbering preferences for a subsidiary or location:
1. Navigate to one of the following pages, as appropriate:
■ Setup > Company > Classifications > Subsidiaries
■ Setup > Company > Classifications > Locations
Click the Edit link that corresponds with the appropriate subsidiary or location.
2. The Transaction Prefix field includes the prefix for this record. Make any changes as
appropriate.
Important: The value in the Transaction Prefix field is used for all transaction types
configured to include a subsidiary or location prefix, including standard transaction
types, so proceed with caution when making changes.
3. Configure the initial numbering sequence for your transaction type, for this subsidiary or
location:
a.
Click the Numbering subtab. If the Numbering subtab is not displayed, you have not yet
created a transaction type that has the Use Subsidiary or Use Location option enabled.
b.
In the Type column, locate the name of your transaction type.
c.
In the Initial Number field, enter the number that should be used for the first transaction
instance. If you do not enter a value, the system in most cases starts the sequence at 1.
There is one exception: if there is a value in the Current Number column, the numbering
begins with the number that follows the value in that field.
Important: If the Transaction Prefix field does not include a value, the system ignores
the value in the Initial Number field. In these cases, the system numbers the instance
as part of a sequence not specific to subsidiary or location. The initial number for this
sequence is defined in the transaction type’s Initial Number field. For help setting that
value, see Defining Numbering for a Custom Transaction Type. Additionally, consider
adding a value to the custom transaction type’s Prefix field, to distinguish instances of
this type from those of other transaction types.
4. If appropriate, enter a value in the Initial Number field. This number does not apply to
sequences associated with subsidiary or location. Additionally, this number is used only if it is
higher than the value in the Current Number field.
If you do not enter a value in the Initial Number field, the system in most cases starts the
sequence at 1.
5. Click Save.
Statuses for a Custom Transaction Type
If appropriate, you can create statuses for each transaction type. You use statuses to represent the
various stages of business processing required for instances of your transaction type. Advantages of
this approach include the following:
■ By using statuses, you can keep track of each instance’s progress in the context of your required
business processing.
■ You can designate each status as either posting or non-posting.
■ You can choose to make the Status field visible and available to users, or you can hide it.
■ You can create workflows and scripting solutions that use and set the Status field.
For more information about statuses, see the following topics:
■ Custom Transaction Type Statuses Overview
SuiteBuilder
Creating and Editing Custom Transaction Types
266
■ Creating Statuses for Custom Transaction Types.
■ Modifying or Deleting a Custom Transaction Type Status
■ Displaying or Hiding the Status Field for a Custom Transaction Type
■ Referencing Custom Transaction Type Status in a Workflow
Custom Transaction Type Statuses Overview
As described in Statuses for a Custom Transaction Type, there are many advantages to creating
statuses. However, before you create statuses, you should review the following:
■ When Statuses Exist, All Instances Must Have a Status
■ When Statuses Exist, the Posting Body Field is Ignored
■ Statuses Are User-Facing, Even When the Status Field is Hidden
When Statuses Exist, All Instances Must Have a Status
When you create statuses for a transaction type, you also create a requirement that every instance of
the transaction type have a status.
Because every transaction instance must have a status, you may want to consider how statuses should
be assigned to transaction instances, both at the time they are created and at other key points. You
have the following choices:
■ You can expose the Status field on the transaction instance form. With this approach, a user
entering or editing the transaction in the UI can manually assign a status to the instance. For more
details on this choice, see Displaying or Hiding the Status Field for a Custom Transaction Type.
■ You can create a workflow or SuiteScript that sets the status. For details, see Referencing Custom
Transaction Type Status in a Workflow.
You can also use a combination of these approaches. However, be aware that it is preferable to have
some method of assigning statuses, particularly to new transaction instances. If you do not actively
assign a status to a new transaction instance, the system automatically assigns a status. Specifically, the
system assigns the first status that was created.
Note: There is only one exception to the rule that every transaction must have a status. If
instances of the transaction were entered before the statuses were created, these instances
have an undefined status. They retain their undefined status unless they are opened for editing
and a user saves changes. At this point, a status is assigned.
When Statuses Exist, the Posting Body Field is Ignored
The Statuses subtab includes a Posting box, situated above the Statuses sublist. This box indicates
whether or not instances of the transaction post – but only if no statuses exist for the transaction type.
If statuses are defined for the transaction type, the system ignores the body field. In this case, for each
transaction, the system uses the Posting value associated with the appropriate status. These values are
shown in the Posting column.
SuiteBuilder
Creating and Editing Custom Transaction Types
267
Note: There is only one exception to this rule. If a transaction was entered before the statuses
were created, in general, the posting status depends on the value of the body field. However,
if the transaction is opened for edited following the creation of the statuses and then saved, a
status is assigned to the transaction. After that, the system uses the Posting value associated
with the status.
Statuses Are User-Facing, Even When the Status Field is Hidden
Users can see the status of a transaction instance by referring to a label displayed in the upper left
corner of the page. This label is displayed both when the transaction instance is in edit mode and in
view mode.
Although you can hide the Status field, you cannot hide the status label. For this reason, the status
names you choose should be appropriate for viewing by anyone with permission to view the
transaction instances.
Creating Statuses for Custom Transaction Types
Use the following procedure to create statuses for your custom transaction types. Note that you can
create no more than 24 statuses for any type.
Important: After an instance of a transaction type has been created, your options for
changing any of the type’s statuses are limited to changing its name and the translations of its
name. So proceed with caution when creating statuses.
To create statuses for a custom transaction type:
1. Go to Customization > Lists, Records, & Fields > Transaction Types, and click the name of the
appropriate transaction type.
2. Click the Statuses subtab.
SuiteBuilder
Creating and Editing Custom Transaction Types
268
3. To create a status, add a line to the sublist:
a.
In the Description field, enter a name for the status.
b.
Optionally, enter values in any of the following columns:
■ Posting – If you want the transaction instance to post to the GL when this status is
reached, designate the status as posting. Click in the Posting column, and then check
the box.
■ Translation – If your site uses the Multi-Language feature, enter translations for the
name of the status. Click in the Translation column to display a popup window. In
this window, you can enter a translation for each language your account uses. (The
available languages are set at Setup > Company > Preferences > General Preferences,
on the Languages subtab.) When you are finished entering translations, click Done.
Note: The ID field is populated with an A-Z value that is automatically generated
when the transaction type is saved. You cannot enter a value in this column.
c.
After you have entered values for all needed fields, click OK to add the status to the list.
4. If you want to create more statuses, repeat Step 3.
5. If you want the Status field to be visible and available on transaction instances in the UI, check
the Show Status Field box. For more information about this field, see Displaying or Hiding the
Status Field for a Custom Transaction Type.
6. Click Save.
Modifying or Deleting a Custom Transaction Type Status
After you create statuses for your custom transaction type, you may want to go back and make
changes. Your ability to make changes varies, as follows:
■ Before users have created transaction instances, you can change any field’s value except ID. You can
also delete statuses. Note that when you a delete a status, its ID value is never reused.
■ After an instance of a transaction type has been created, your options are limited to changing the
name of the status and changing the translations of the name. You cannot make other changes, and
you cannot delete statuses.
Note: You can add new statuses at any time, as described in Creating Statuses for Custom
Transaction Types.
To modify or delete a status:
1. Go to Customization > Lists, Records, & Fields > Transaction Types, and click the name of the
appropriate transaction type.
2. Click the Statuses subtab.
3. If you want to edit an existing status, do any of the following:
■ To change the status name, edit the value in the Description column.
■ To change whether or not the status is posting, click in the Posting column and clear the box.
If you cannot display the box, then an instance of the transaction type already exists, and this
field cannot be changed.
■ To change or add translations of the status name, click in the Translation column. In
response, the system displays a popup window that lists all of the existing translations. Make
changes as needed. When you are finished, click Done.
4. If you want to delete a status, complete the following steps:
SuiteBuilder
Creating and Editing Custom Transaction Types
269
a.
Click in the row that represents the status you want to delete. In response, the system
displays several buttons.
b.
Click Remove. If you do not see a Remove button, then an instance of the transaction type
already exists, and the status cannot be deleted.
5. Click Save.
Displaying or Hiding the Status Field for a Custom Transaction
Type
If you have created statuses, you can also choose to display the Status field on transaction instances.
When the Status field is displayed, it appears on the standard entry form as a list that the user can set.
Be aware that when you display the Status field, you make it available to anyone who has permission to
edit instances of the transaction type using the standard entry form. However, you may want the field
to be available only to certain people. You might have a situation where other users may need to create
and edit transaction instances, but these users should not be allowed to set the status field. In these
situations, you should complete two tasks:
■ Make the field available for the transaction type, as described in Configuring the Transaction Type to
Include the Status Field in the UI.
■ Use custom forms and permissions to refine how and for which roles the field is available, as
described in Refining the Availability of the Status Field.
Configuring the Transaction Type to Include the Status Field in the UI
Before the Status field can be available to anyone in the UI, you have to configure it to be available to
the transaction type. When you choose this configuration, you make the field viewable and available on
the standard entry form for the type.
To configure the transaction type to include the Status field in the UI:
1. Go to Customization > Lists, Records, & Fields > Transaction Types, and click the name of the
appropriate transaction type.
2. Click the Statuses subtab.
3. If you want the Status field to be displayed on the transaction, check the Show Status Field box.
If you want to hide the Status field, clear the box.
4. Click Save.
Refining the Availability of the Status Field
If you have configured a transaction type so that the Status field is visible, you may want to restrict
access to the field for certain roles. For example, you might prefer that, for some users, the field is
either hidden or read-only. To create these restrictions, use the following procedure.
To refine the availability of the status field:
1. Create a custom form, and modify the settings for the Status field:
a.
Create the form by opening the transaction type and clicking the Forms subtab. Locate
the standard entry form for the type and click the Customize link. In response, the system
displays details about a new custom entry form, which you can configure.
b.
Click the Screen Fields subtab. Locate the row that represents the Status field, and make
one of the following changes:
SuiteBuilder
Creating and Editing Custom Transaction Types
270
■ To hide the field from view, clear the box in the Show column.
■ To make the field read-only, change the Display Type field by doing one of the
following: To gray out and disable the field, select Disabled. To make the field’s current
setting display as on-screen text, choose Inline Text.
Note: For more details about working with custom forms, see Adding Custom
Forms for a Custom Transaction Type.
c.
Click Save to create the form.
2. Configure the role that should have the restricted view:
a.
Open the role for editing by going to Setup > Users/Roles > Manage Roles. Identify the role
you want to modify and click the corresponding Edit or Customize link.
b.
Click the Forms subtab. In response, the system displays a list of transactions that the
role has permission to work with. This list includes one row for each of the transaction’s
available entry forms.
c.
To remove the role’s ability to use the standard entry form, locate the row that represents
the form. Clear the box in the Enabled column.
d.
To verify that the role has permission to use the new custom form, locate the row that
represents the custom form. Make sure that the box in the Enabled column is checked.
e.
Click Save.
Note: Before the role can work with any entry form for the transaction type, the
role must also have permission to view or use the transaction type. For details, see
Permissions for a Custom Transaction Type.
Referencing Custom Transaction Type Status in a Workflow
After you create statuses, a common next step is to create a workflow. As described in Custom
Transaction Type Statuses Overview, a workflow offers a useful way to set statuses for transactions
instances.
For more details on working with workflows, see Custom Transaction Types in Workflows.
You can also manipulate statuses using SuiteScript. For details on scripting with custom transaction
types, see the help topic Custom Transaction in the SuiteScript Reference section.
Creating Links for a Custom Transaction Type
For each of your custom transaction types, you can create links, or menu paths, in the NetSuite UI.
People in your organization can use these menu paths to access the transaction type’s list view and
entry form. For more details, see the following:
■ Planning for Custom Transaction Type Links
SuiteBuilder
Creating and Editing Custom Transaction Types
271
■ Creating Links by Editing the Transaction Type
■ Creating Links by Using the Customization Menu
Planning for Custom Transaction Type Links
When you create a link to a custom transaction type, first you should consider the center that will host
the link. A center is a view of NetSuite. Each role is linked to only one center. The center determines
which tabs and menus display when a user logs in to NetSuite with the associated role. Before you
begin creating links, you should identify which roles need to access the transaction type, and the
centers that are associated with these roles. For more information on centers, see the help topic
Centers Overview.
For each link you create, you specify a section, category, and label. The following illustration shows
how each of these elements appears in the UI.
In the preceding illustration, the highlighted areas are defined as follows:
■ 1 – A section. Sections are sometimes called tabs.
■ 2 – A category
■ 3 – Labels
When creating links, you can use standard NetSuite centers, sections, and categories, or you can use
ones that you create.
Note: Before members of a role can use links to a transaction type, the role must also have
permission to view or use the transaction type. For details on granting these permissions, see
Permissions for a Custom Transaction Type.
Creating Links by Editing the Transaction Type
If appropriate, you can create links by directly editing the custom transaction type.
Note: In some cases, a transaction type that was installed from a bundle may be locked
to editing. In these cases, you cannot directly edit the transaction type as described in this
topic. However, you can still add links for the type. For details, see Creating Links by Using the
Customization Menu.
To create links for a custom transaction type:
1. Go to Customiztion > Lists, Records, & Fields > Transaction Types, and click the name of the
appropriate transaction type.
2. Click the Links subtab.
SuiteBuilder
Creating and Editing Custom Transaction Types
272
3. Create a link by adding a line to the sublist, as follows:
a.
Use the Center list to select a center.
b.
Use the Section list to select the appropriate section, or tab. The available tabs vary
depending on the center you selected. If you did not select a center, no tabs are listed.
c.
Use the Category list to select the appropriate menu category.
d.
Optionally, in the Label column, enter the label text you want to use. If you enter nothing,
the system uses the name of the transaction type as the label.
e.
Optionally, enter translations for the link. Click in the Translation column to display a
popup window. In this window, you can enter a translation for each language your account
uses. (The available languages are set at Setup > Company > Preferences > General
Preferences, on the Languages subtab.) When you are finished entering translations, click
Done.
f.
Optionally, specify where the label will appear in relation to other labels in the category.
Click in the Insert Before column to display a list, and choose the appropriate label.
g.
Click Save.
4. If you want to create another link, repeat step 3.
5. Click Save.
For full details on creating and editing custom transaction types, see Creating a Custom Transaction
Type and Editing a Custom Transaction Type.
Creating Links by Using the Customization Menu
If you installed your custom transaction type from a bundle and the type has been locked to editing,
you cannot update the transaction type to include new links. Instead, you can use the Customization
menu. With this method, you can update a custom category to include links to your custom transaction
type. For details on creating custom categories, see Creating Center Categories. For details on updating
your custom category to include a link to your custom transaction type, see Creating Center Links.
Adding Custom Forms for a Custom Transaction Type
When you create a custom transaction type, the system automatically creates a standard form for the
type. People in your organization can use this form to enter instances of the transaction.
The standard form can be modified in some ways. For example, you can add custom fields to the
standard form. However, you may prefer to make further changes, such as defining some fields as
read-only, or changing the placement of fields. If you want to make these kinds of changes, you should
create a custom form for the transaction type. For details, see the following:
■ Adding Custom Forms for a Custom Transaction Type
■ Designating a Custom Form as Preferred
Note: One of the ways you can access custom forms is by using the transaction type’s Forms
subtab. This subtab appears only when you are editing an existing transaction type. The subtab
is not available when you are creating a new transaction type.
Configuring Custom Forms for a Custom Transaction Type
When you create a custom form, you create an alternative to the standard form. With your custom
form, you can do any of the following:
SuiteBuilder
Creating and Editing Custom Transaction Types
273
■ Change the names, visibility, and placement of subtabs, field groups, fields, sublists, and actions.
■ Change whether a field is read-only or editable.
■ Add custom actions that execute client SuiteScripts.
■ Associate custom code (existing client SuiteScripts) with the form.
■ Set the form as preferred for one or more roles.
■ Choose whether to store the form with the record.
■ Include a Memo field, which allows users to enter a header level description of their entries that
is propagated to the GL impact. Journal entries do not have a memo header, so adding a memo
header field to custom transaction types enables users to provide meaningful descriptions of
accounting entries. Information entered in the Memo field for a custom transaction is put in the
Memo (Main) field on transaction lines.
To add or modify a form for a custom transaction type:
1. Display a list of the existing forms by doing one of the following:
■ Go to Customization > Lists, Records, & Fields > Transaction Types, and click the name of the
appropriate transaction type. Then click the Forms subtab. In response, the system displays a
list of the existing forms for this transaction type. The list includes the standard form for the
transaction type and any custom forms that have been created.
■ Go to Customization > Forms > Transaction Forms. In response, the system displays a list of
all existing transaction forms.
2. Do one of the following:
■ To create a form based on the standard form for the type, click the Customize link that
corresponds with the standard form.
■ To edit an existing custom form, click the Edit link that corresponds with the form.
3. Customize the form as desired. For more details on working with custom forms, see Creating
Custom Entry and Transaction Forms.
4. Click Save.
Designating a Custom Form as Preferred
Every custom transaction type has a default preferred form, which is displayed for roles that do not
have a preferred form set.
To set a default form for roles that do not have their own preference, use the following procedure. For
help designating a form as preferred for a particular role, see Defining Preferred Forms.
To designate a custom form as preferred:
1. Display a list of the existing forms by doing one of the following:
■ Go to Customization > Lists, Records, & Fields > Transaction Types, and click the name of the
appropriate transaction type. Then click the Forms subtab. In response, the system displays a
list of the existing forms for this transaction type. The list includes the standard form for the
transaction type and any custom forms that have been created.
■ Go to Customization > Forms > Transaction Forms. In response, the system displays a list of
all existing transaction forms.
2. Locate the form that you want to designate as preferred. In the Preferred column, choose the
corresponding radio button or check the box.
3. Click Save.
SuiteBuilder
Creating and Editing Custom Transaction Types
274
For full details on editing and creating custom transaction types, see Creating a Custom Transaction
Type and Editing a Custom Transaction Type.
Permissions for a Custom Transaction Type
For each custom transaction type, you can decide which roles have the ability to work with instances of
the type. By default, only account administrators and users with the Full Access role have the ability to
work with a newly created transaction type.
When you grant a role access to a transaction type, you can choose from several access levels. These
levels are described in the following table.
Level
Users can:
Users cannot:
View
View instances of the transaction type.
Edit, create, or delete transaction
instances.
Create
View and create instances of the transaction
type.
Edit or delete transaction instances.
Edit
View, create, and edit instances of the
transaction type.
Delete transaction instances.
Ful
View, create, edit, and delete instances of the
transaction type.
There are two ways to configure permissions:
■ Configuring Permissions By Editing the Custom Transaction Type
■ Configuring Permissions By Editing the Role
The ability of a role to interact with a custom transaction type can be further refined by restricting the
role’s access to particular forms for the transaction type. For details on creating forms, see Adding
Custom Forms for a Custom Transaction Type. For details on disabling a role’s access to a particular
form, see the help topic Setting Default Forms for Roles.
Note: For help giving a role permission to create and edit custom transaction types, see
Granting a Role Permission to Work With Custom Transaction Types.
Configuring Permissions By Editing the Custom Transaction
Type
Use this procedure to grant a role permission to work with instances of a custom transaction type. You
can also use these steps to modify or remove the role’s access.
Note: In some cases, a transaction type that was installed from a bundle may be locked
to editing. In these cases, you cannot directly edit the transaction type as described in this
topic. However, you can still configure permissions for the type. For details, see Configuring
Permissions By Editing the Role.
To grant a role access by editing the custom transaction type:
1. Go to Customization > Lists, Records, & Fields > Transaction Types, and click the name of the
appropriate transaction type.
SuiteBuilder
Creating and Editing Custom Transaction Types
275
2. Click the Permissions subtab. If any roles have previously been granted access to this
transaction type, they are listed on this subtab.
3. To grant a role access, add a line to the sublist, as follows:
a.
Use the Role list to select the appropriate role.
b.
By default, the Level is set to View. If you want to change this level, click in the column to
display a list. Use the list to select the appropriate level.
c.
Click Add.
4. If you want to grant access to another role, repeat step 3.
5. If you want to make changes to any existing role’s access, edit the appropriate Level value, then
click OK.
6. If you want to remove a role’s access, click on the name of the role to enable a series of buttons,
then click Remove.
7. Click Save.
For full details on editing and creating custom transaction types, see Creating a Custom Transaction
Type and Editing a Custom Transaction Type.
Configuring Permissions By Editing the Role
Use this procedure to grant a role permission to work with instances of a custom transaction type. You
can also use these steps to modify the role’s access or remove the role’s access.
If you installed your custom transaction type from a bundle and the type has been locked to editing,
this method is the only one you can use to configure permissions.
To grant a role access by editing the role:
1. Go to Setup > Users/Roles > Manage Roles. Locate the role that needs access to the transaction
type, and click the corresponding Edit or Customize link. In response, the system displays a page
that lets you edit the role.
2. Locate the Transactions subtab on the Permissions subtab, which should be displayed by
default. Do one of the following:
■ If you want to grant the role access to the transaction type, add a line to the sublist:
1.
In the Permission column, use the list to select the appropriate transaction type.
2.
In the Level column, select the appropriate access level.
3.
Click Add.
■ If the role already has access, and you want to make a change, modify the value in the Level
column as appropriate. Then click OK.
■ If the role already has access, and you want to remove the role’s access, click on the name of
the transaction type to enable a series of buttons. Click Remove.
3. Click Save.
Adding Translations for a Custom Transaction Type
If your account uses the Multi-Language feature, you can add translations for your transaction type’s
name.
SuiteBuilder
Creating and Editing Custom Transaction Types
276
Note: For help entering translations for link labels, see Creating Links for a Custom
Transaction Type.
To add translations for a custom transaction type:
1. Go to Customization > Lists, Records, & Fields > Transaction Types, and click the name of the
appropriate transaction type.
2. Click the Translations subtab.
The system displays a list of the languages configured for your account. These languages are
configured at Setup > Company > Preferences > General Preferences, on the Languages subtab.
3. In the Name column, enter the appropriate translation for each language, as desired.
4. Click Save.
For full details on editing and creating custom transaction types, see Creating a Custom Transaction
Type and Editing a Custom Transaction Type.
Custom Transaction Type Association with a Plugin Implementation
With the Custom GL Lines plug-in, you can create logic that automatically creates a GL impact. A plugin implementation can calculate GL impact based on data that users enter in the standard or custom
fields on the transaction instance entry form. It can also come from values entered in a custom UI
created by using SuiteScript objects. For more information, see the help topic Custom GL Lines Plug-in
Overview.
To take advantage of a plug-in implementation, you must configure the implementation to apply to one
or more transaction types.
You can associate any custom transaction type with a Custom GL Lines plug-in implementation.
If a custom transaction type has a list style of Header Only, it must be associated with a plug-in
implementation before it will have any accounting impact.
When you complete this process, you use the same process as you would for a standard type. On
the configuration page for the plug-in implementation, custom transaction types are listed alongside
standard types.
SuiteBuilder
Custom Transaction Type Association with a Plug-in Implementation
277
For more information, see the help topic Configure the Custom GL Lines Plug-in Implementation.
Deleting Custom Transaction Types
In some cases, it may be necessary to delete a custom transaction type. You can delete individual
custom transaction types, or you can delete custom transaction types that were installed as part of a
bundle.
Deleting Individual Custom Transaction Types
If required, you can delete custom transaction types. However, note that you cannot delete a custom
transaction type in any of the following situations:
■ If instances of the type exist.
■ If other dependent records exist (for example, a custom workflow that references the transaction
type).
■ If the transaction type was created by a bundle and was locked to editing.
For situations where deletion is not prohibited, you can use the following steps to remove the type.
To delete a custom transaction type:
1. Go to Customization > Lists, Records, & Fields > Transaction Types.
2. In the Edit column, click the name of the transaction type you want to delete.
3. Click Actions to display a pop-up menu, then click Delete.
The system displays a pop-up asking if you are sure you want to delete the transaction type.
4. Click OK.
The custom transaction type and any printing templates associated with the transaction type are
deleted from your account.
Deleting Custom Transaction Types with a Bundle
NetSuite 2015.2 included enhanced options for deleting custom transaction types that were installed
as part of a bundle. Custom transaction types can be removed as part of a bundle removal or a bundle
update.
Note: Deleting custom transaction types applies only to bundle operations. If a custom
transaction type was created manually in the UI and a transaction instance exists, you cannot
delete the transaction type.
When a bundle operation is used to delete a transaction type, the system takes the following actions
with any existing instances of that transaction type:
■ The transactions are migrated to a new transaction type called Deprecated Custom Transaction.
■ The transactions are locked to editing, although they can still be voided.
SuiteBuilder
Deleting Custom Transaction Types
■ If the transactions are in open periods, they can be deleted.
■ Body fields are added to the transaction showing:
□ The name of the custom transaction type that was deleted.
□ The status of the transaction at the time it was deleted.
■ Associated printing templates are deleted.
■ Custom fields are discarded unless they are related to a custom segment that has GL impact.
To see a list of transactions that were instances of deleted custom transaction types, use the
Transaction search type. Set the Type field to Deprecated Transaction Type.
Printing Custom Transaction Instances
When you print custom transaction instances, advanced PDF/HTML templates are used to format
the output. You can customize an advanced template for the transaction type to ensure that the
information you want is included in the printout.
Customizing the Template for Printing Custom
Transactions
After you create a custom transaction type, a standard advanced PDF/HTML template for that
transaction type is created automatically. You can customize the template as required.
To customize the advanced template:
1. Go to . The Record Type column shows the custom transaction type ID.
2. Click Customize beside the template that you want to customize.
3. Make the required changes to the template. For information, see Customizing Advanced
Templates in the Template Editor.
Associating the Template with the Transaction Type
After you customize an advanced template, set the custom forms for the custom transaction type to
use the template. For information, see Setting Custom Forms to Use Advanced Templates.
SuiteBuilder
278
Custom Transaction Types in Workflows
279
Custom Transaction Types in Workflows
If appropriate, you can reference your custom transaction types when you create workflows. For
details, see the following sections:
■ Creating a Workflow for a Custom Transaction Type
■ Referencing Status in a Workflow Action
■ Using Status as a Workflow Condition
Creating a Workflow for a Custom Transaction Type
On the New Workflow page, you reference a custom transaction type the same way as you would a
standard transaction type. In the Record Type list, select Transaction. In response, the system updates
the Sub Types list to include all available transaction types, including both standard and custom types.
Use this list to select the appropriate types.
Referencing Status in a Workflow Action
For certain types of workflow actions, you may want to reference the status of a custom transaction
type. In these cases, you can identify the status by using the Parameters section of the Workflow Action
page. To reference the status field, set the Field value to Custom Transaction Status.
If you are using the Set Field Value action, you can select the Static Value radio button and select the
exact status from the Selection list. The list shows all of the available custom transaction statuses, listed
according to custom transaction type. Select the appropriate combination of transaction type and
status.
SuiteBuilder
Custom Transaction Types in Workflows
280
Using Status as a Workflow Condition
If appropriate, you can use a custom transaction type’s status as a workflow condition. In the Workflow
Condition page, set Record Type to Transaction and Field to Status. (Note that this approach is different
from the way you reference status in a workflow action. With that form, you set Status to Custom
Transaction Status.) In the Selection field, choose the appropriate combination of transaction type and
status.
SuiteBuilder
Custom Transaction Types in Bundles
281
Custom Transaction Types in Bundles
If appropriate, you can create bundles that include custom transaction types. For details, see the
following topics:
■ Pre-Bundling Checklist
■ Including a Custom Transaction Type in a Bundle
■ Other Recommended Objects
■ Post-Installation Steps
■ Removing Custom Transaction Types
Pre-Bundling Checklist
Before bundling your custom transaction type, you may want to review the type. In particular, check
the type’s settings for each of the following:
■ List Style
■ Statuses
■ Class, Department, and Location
■ Custom Fields
List Style
Make sure that you have chosen the most appropriate list style for your custom transaction type.
For example, you might have created a transaction type for which the entire GL impact should be
determined by a Custom GL Lines plug-in implementation. For these types, the list style should be
Header Only. For more details on list styles, see Custom Transaction Type List Styles.
Statuses
If your transaction type includes statuses, check that the statuses are set up correctly. For example, you
may want to make sure that the posting flag has been set as desired for each status. After the bundle
is installed, the Statuses sublist cannot be modified in the target account. This limitation exists even if
you do not select the Lock On Install option for the transaction type. You can always make changes to
the type’s statuses in the source account and update the bundle. However, users in the target account
are never able to change existing statuses or add new statuses. For more information about statuses,
see Statuses for a Custom Transaction Type.
Class, Department, and Location
Check that your custom transaction type has the desired settings for the class, department, and
location fields. For help with these fields, see Custom Transaction Type Classification Fields.
Custom Fields
Check the Custom Fields subtab of the custom transaction type. This subtab lists all custom body fields
and column fields that are linked to the transaction type. If any of these fields should be omitted from
the bundled version of the type, remove them before creating the bundle. To remove a field, click the
SuiteBuilder
Custom Transaction Types in Bundles
282
name of the field to open it for editing. On the Applies To subtab, cancel the selection of the custom
transaction type. For more details about custom fields, see Custom Fields in Custom Transaction Types.
Including a Custom Transaction Type in a Bundle
You can add any custom transaction type to a bundle. In the Bundle Builder’s Object Types list, choose
Custom Lists/Records > Transactions. In response, the system updates the Choose Objects list to
include all of your custom transaction types. You can then select the appropriate types to include.
For general details on using the Bundle Builder, see the help topic SuiteApp Creation and Distribution.
Note: If a saved search is filtered by a custom transaction type value, the custom transaction
type is included in the bundle automatically.
Other Recommended Objects
In some cases, you may want to consider including the following objects with your custom transaction
type:
■ A Custom GL Lines plug-in implementation – If your bundle will include a Header Only style
custom transaction type, consider adding a Custom GL Lines plug-in implementation to the bundle.
An instance of a Header Only transaction type has no GL impact unless the type is associated with a
Custom GL Lines plug-in implementation. For more information, see the help topic Custom GL Lines
Plug-in Overview.
■ A workflow – If your transaction type includes statuses, consider adding a workflow to your bundle.
You can use a workflow to set the status flag and take actions based on status values. For details on
why a workflow is recommended, see Custom Transaction Type Statuses Overview. For information
on creating a workflow, see the help topic SuiteFlow Overview.
Post-Installation Steps
Certain tasks cannot be managed by the bundle. These tasks must be completed by an administrator
after the bundle has been installed. They include the following:
■ If your bundle includes a Basic style transaction type, an administrator in the target account must
define the offset account for the type. For more information, see Setting the Account Field for a
Basic Transaction Type.
■ If the bundle includes a Custom GL Lines plug-in implementation, a user in the target account must
configure the plug-in implementation. For details on this process, see the help topic Configure the
Custom GL Lines Plug-in Implementation.
SuiteBuilder
Custom Transaction Types in Bundles
283
■ By default, only account administrators and users with the Full Access role have permission to work
with instances of any custom transaction type. If other roles require permission, an administrator
must configure it. For details, see Permissions for a Custom Transaction Type.
Additionally, an administrator may want to review and customize the transaction type’s numbering
logic. For details, see Numbering for a Custom Transaction Type.
Removing Custom Transaction Types
When a custom transaction type is installed as part of a bundle, it can also be removed, even
if instances of that transaction type exist. You can remove the type by uninstalling the bundle.
Additionally, a bundle update can remove the type.
This behavior differs from how the system treats transaction types that were created in the UI.
Transaction types created in the UI cannot be deleted if an instance of the type exists.
When a bundle operation is used to delete a transaction type, the system takes the following actions
with any existing instances of that transaction type:
■ The transactions are migrated to a new transaction type called Deprecated Custom Transaction.
■ The transactions are locked to editing, although they can still be voided.
■ If the transactions are in open periods, they can be deleted.
■ Body fields are added to the transaction showing:
□ The name of the custom transaction type that was deleted.
□ The status of the transaction at the time the transaction type was deleted.
■ Associated printing templates are deleted.
■ Custom fields are discarded unless they are related to a custom segment that has GL impact.
To see a list of transactions that were instances of deleted custom transaction types, use the
Transaction search type. Set the Type field to Deprecated Transaction Type.
SuiteBuilder
Custom Segments
284
Custom Segments
The Custom Segments feature lets you create custom classification fields similar to class, department,
and location.
This feature, also known as SuiteSegments, is part of the SuiteGL feature set. Other SuiteGL features
includes Custom Transactions and Custom GL Lines. For more about SuiteGL, see the help topic
SuiteGL Features Overview.
For more details about custom segments, see the following topics:
■ Benefits of Custom Segments
■ Custom Segments Overview
■ Permissions for Managing Custom Segments and Values
■ Custom Segment Creation
■ Filtering for a Custom Segment
■ Custom Segment Values
■ Custom Segments in Record Searches
■ Customizing a Report by Using Custom Segments
■ Using Custom Segments in Workflows
■ Deleting a Custom Segment Definition
■ Adding a Custom Segment to a Bundle
For more information about working with classifications, departments and locations, and using the
custom GL lines plug-in, see the following.
■ Custom GL Lines Plug-in
■ Classifications Overview
■ Departments and Classes Overview
■ Locations Overview
Benefits of Custom Segments
The Custom Segments feature lets you create custom classification fields similar to class, department,
and location. You can create an unlimited number of custom segments, define possible values for each
segment, and add the segments to specific record types. People working in NetSuite can then use the
segments to classify records appropriately.
SuiteBuilder
Benefits of Custom Segments
285
You can configure segments to display on the GL Impact page. Additionally, standard NetSuite reports
can be customized to use custom segments as filters and columns. When a segment is used as a
column, it can also be grouped with other columns. For example, the following screenshot shows a
customized version of the Sales by Item report. This report groups two segments in the column at the
left.
In these ways and more, custom segments enhance your ability to categorize data and meet your
organization’s unique reporting and analysis needs.
Before you can create custom segments, you must enable the feature, as described in Enabling the
Custom Segments Feature. After you have done so, you can create custom segments at Customization
> Lists, Records, & Fields > Custom Segments > New. Almost all segment-configuration options can be
managed from this page, including the following:
■ Configure Segment Values to Be Hierarchical
■ Configure a Segment to Default Statically or Dynamically
■ Filter a Segment’s Values Based on Other Segments
■ Filter a Segment’s Values Based on Class, Department, Location, and Subsidiary
■ Configure a Segment to Appear on the GL Impact Page
■ Create Segments as Multi-Select Fields
■ Display Segments Selectively
■ Custom Segments
Custom segments are part of the SuiteGL feature set. For more on SuiteGL, see the help topic SuiteGL
Features Overview.
Configure Segment Values to Be Hierarchical
In the list of available segment values, you can create hierarchal relationships. For example, a segment
called Sales Region might have values such as Americas, APAC, and EMEA. However, you may also
SuiteBuilder
Benefits of Custom Segments
286
want to add options that are more specific. When you create the new options, you can specify in the
segment definition that they are children of the broader geographic categories. These relationships are
shown in the list of values from which the user can choose.
For more details, see Creating Hierarchies Among a Custom Segment’s Values.
Configure a Segment to Default Statically or Dynamically
If appropriate, you can configure a segment to default to a specific value. You have the following
options:
■ You can configure a segment to default to a static choice. This default is used on any record type
where the segment appears, unless overridden. For example, suppose you have a segment called
Sales Region, which includes the values Americas, EMEA, and APAC. If the majority of your records
require a value of Americas, you could specify that Americas is the default.
■ You can create dynamic defaulting for specific categories of record types, such as transactions
and entities. For example, you may have a segment called Sales Region that you have applied
both to the Customer record type and to all sales transactions. You can configure the segment so
that, when it occurs on a sales transaction, it defaults to the value selected on the corresponding
customer record. This type of defaulting overrides static defaulting.
For details on defaults, see Validation and Static Default Values for Custom Segments.
Filter a Segment’s Values Based on Other Segments
In some cases, you may want to limit a segment’s available values based on choices the user made for
other segments on the same record.
For example, suppose your organization sells merchandise worldwide. You may have multiple sales
channels, such as brick-and-mortar stores, a web store, and partner outlets. However, although you
can permit customers everywhere to use your web store, other channels may be available only in
certain geographic regions.
In this case, you could create two segments, Sales Region and Sales Channel. You could configure a
record’s Sales Channel values to be filtered based on the selection the user makes for Sales Region. For
example, you could configure a Sales Region called Denmark to permit the selection of only two Sales
Channel values.
SuiteBuilder
Benefits of Custom Segments
287
You can also set up more complex filtering. You can configure a segment’s available values to be
dependent on multiple segments and on other classification fields, as described in the next section.
For details on filtering, see Filtering for a Custom Segment.
Filter a Segment’s Values Based on Class, Department,
Location, and Subsidiary
You can set up a segment so that its values are filtered based on choices the user made in the Class,
Department, Location, and Subsidiary fields. This capability is similar to the behavior described in Filter
a Segment’s Values Based on Other Segments.
For example, consider a company that sells clothing and accessories. This company may have a
segment called Profit Center, with values such as Clothing, Shoes, and Jewelry. If the company markets
products to both men and women, it may also have departments called Men’s and Women’s.
Both the Men’s and Women’s departments may sell clothing and shoes, but jewelry might be available
only for women. In this case, you could configure the Profit Center segment so that its values are
filtered based on the value of the Department field. A record with a Department value of Men’s would
show only two of the three Profit Center values.
For details on filtering, see Filtering for a Custom Segment.
SuiteBuilder
Benefits of Custom Segments
288
Configure a Segment to Appear on the GL Impact Page
In some cases, you may want to apply segments to transactions. You can apply segments to the body
of a transaction or make them columns in a transaction sublist. In both cases, you can configure these
segments so that their values appear on the GL Impact page for the transactions where they are used.
For custom segments that have GL impact, the Custom GL Lines Plug-in can set and read custom
segment values from custom and standard lines and from transaction records.
For more details, see Configuring GL Impact for a Custom Segment.
Create Segments as Multi-Select Fields
If appropriate, you can set up a segment so that the user can save multiple selections. This option
differs from the Class, Department, and Location fields, where users can select only one option.
Some limitations exist for this capability. For example, if a segment is configured to display on the GL
Impact page, it cannot be a multi-select field. For more details, see Custom Segment Types.
Display Segments Selectively
The Custom Segments feature includes an array of permissions options. One option is that you can
choose to make a segment visible only to users in certain roles. For example, you might choose to
create a segment called Rating that is applied to the Employee record type. This segment might contain
sensitive information that should be available only to supervisors. In this case, you can configure the
segment to be available to users in a Supervisor role but hidden for all other users. Additionally, you
can choose to make the segment read-only for certain roles.
You also have many options for deciding how users can manage custom segments. For example,
your account will probably have many roles that do not have permission to create or edit segments.
However, if appropriate, you can give these roles permission to create and edit values for one
particular segment. Note also that values can be created and updated by using the CSV Import
Assistant. For details, see the help topic Custom Segment Value Import.
For details on managing permissions for segments, see Permissions for Managing Custom Segments
and Values.
SuiteBuilder
Benefits of Custom Segments
289
Set Custom Segment Values
Custom segment values can be set or created using Custom GL Lines Plug-in, SuiteScript, web services,
or CSV import.
The Custom GL Lines Plug-in can set and read custom segment values from custom and standard lines
and from transaction records, if the custom segment has GL impact. The default values for column
segments are sourced from the body. The Custom GL Lines Plug-in can change this value, even for
segments that are applied only to the body. For details, see the help topic Custom GL Lines Plug-In
Interface Definition.
On record types that are exposed to SuiteScript, you can use SuiteScript to set values for custom
segments that exist as fields. You can also use SuiteScript to create values for existing custom
segments. For details see the help topic SuiteScript 2.0 API.
In many cases, you can use web services to set values for custom segments that exist as fields. You can
set values on instances of record types that are exposed to web services and have a CustomFieldList
defined as part of the exposure. You can also use web services to create values for existing custom
segments. For details, see the help topic CustomFieldLists for Setting Custom Segment Values.
Custom segment values can be created and updated by using the CSV Import Assistant. For details, see
the help topic Custom Segment Value Import.
Custom Segments Overview
For help getting started with the Custom Segments feature, see the following topics:
■ Enabling the Custom Segments Feature
■ Transaction Types Supported by Custom Segments
■ Permissions for Managing Custom Segments and Values
Enabling the Custom Segments Feature
Before you can create custom segments, you must enable the feature. Navigate to Setup > Company >
Enable Features. On the SuiteCloud subtab, check the Custom Segments box and click Save.
After you enable the feature, you can begin creating custom segments, as described in Creating a
Custom Segment.
Transaction Types Supported by Custom Segments
Custom segments are supported for the following transaction types. Support is for defining a custom
segment in the body of the transaction, unless otherwise indicated.
■ Assembly build
■ Bad debt (transaction lines)
■ Bill
■ Bill (expense transaction columns)
■ Bill credit
■ Bill credit (expense transaction columns)
■ Bin putaway worksheet
■ Bin transfer
■ Blanket purchase order
SuiteBuilder
Custom Segments Overview
■ Blanket purchase order (expense transaction columns)
■ Budget
■ Cash refund
■ Cash sale
■ Check
■ Check (expense transaction columns)
■ Commission
■ Credit card
■ Credit card (expense transaction columns)
■ Credit card refund
■ Credit memo
■ Currency revaluation (Fx)
■ Custom (expense transaction columns)
■ Deposit application
■ Deprecated custom transactions
■ Estimate
■ Expense report (transaction lines)
■ Expense transaction columns
■ Finance charge
■ Inventory
■ Inventory count
■ Inventory distribution
■ Inventory part (transaction lines)
■ Invoice
■ Item receipt (expense transaction columns)
■ Item receipt (transaction lines)
■ Journal entry (transaction lines)
■ Opportunity (transaction line)
■ Other charge item (transaction line)
■ Partner commission
■ Payable Tegata
■ Paycheck
■ Paycheck company contribution (transaction lines)
■ Paycheck company tax (transaction lines)
■ Paycheck deduction (transaction lines)
■ Paycheck earning (transaction lines)
■ Paycheck employee tax (transaction lines)
■ Payroll adjustment
■ Payroll liability check
■ Purchase contract
■ Purchase order
■ Purchase order (expense transaction columns)
■ Receivable Tegata
■ Request for quote
SuiteBuilder
290
Custom Segments Overview
291
■ Requisition
■ Requisition (expense transaction columns)
■ Return authorization
■ Revenue arrangement
■ Revenue contract
■ Revenue commitment
■ Revenue commitment reversal
■ Sales tax payment
■ Statement charge
■ Store pickup fulfillment
■ Tax liability check
■ Time tracking (time transaction columns)
■ Transfer order
■ Vendor request for quote
■ Vendor return authorization
■ Vendor return authorization (expense transaction columns)
■ Transfer order (transaction lines)
■ Work order
■ Work order (transaction lines)
Custom segments are also supported on transaction lines for the following item types.
■ Apply to Kit
■ Assembly/bill of materials
■ Item fulfillment
■ Item group
■ Kit item
■ Non-inventory part
■ Nonmodifiable type
■ Service
■ Store with item groups
Settings that Affect Where Custom Segments are Applied
Be aware that certain configurations of a custom segment can affect where that segment is applied.
These configurations include the following:
■ Dynamic Defaults
■ Filtering by Another Custom Segment
■ Filtering by Class, Department, Location, or Subsidiary
■ GL Impact
■ Type
Dynamic Defaults
When you use dynamic defaults, you essentially create a relationship between multiple record types
that use a segment. If you try to create this relationship before you have applied the segment to all of
the applicable record types, the system displays a message regarding record application. This message
SuiteBuilder
Custom Segments Overview
292
states that the system will apply the segment to the record type referenced in the Source List choice
that you have made. You can cancel out of the change, or you can let the system apply the segment to
the additional record types.
For more information about sourcing, see Dynamic Default Value Sourcing for Custom Segments.
Filtering by Another Custom Segment
In some cases, you might configure a segment so that it is filtered by another segment. For example,
you might have two segments, Sales Region and Sales Channel. You could configure the Sales Channel
segment’s values to be filtered based on the selection the user makes for Sales Region.
To achieve this type of configuration, edit the Sales Channel segment’s Filtered by field. In this field,
select Sales Region.
When you use this type of configuration, the segment in the Filtered by field must be applied to all of
the same records as the segment that you are editing. For that reason, if you edit a segment to create a
filtering relationship between it and a second segment, you might receive a message regarding record
application. This message might state that the system will apply the second segment, the one named in
the Filtered by list, to more record types.
Additionally, you might receive this message if you are editing a segment that is already filtered by
another segment. If you apply the segment to additional record types, this change can affect the
segment named in the Filtered by list. If that segment is not already applied to the new types you have
selected, the system displays a message stating that it will be applied to them.
In both of these cases, you can cancel the change, or you can let the system apply the segment to the
additional record types.
For more details about filtering, see Filtering for a Custom Segment.
Filtering by Class, Department, Location, or Subsidiary
In some cases, you may want to create a filtering relationship between a custom segment and the
Class, Department, Location, or Subsidiary field. In this case, you edit the custom segment and select
one of these classifications in the Filtered by field.
As described in Filtering by Another Custom Segment, the classifications selected in the Filtered by
field must be applied to all of the same record types as the segment that you are editing. However,
in the standard NetSuite configuration, Class, Department, Location, and Subsidiary do not exist on
certain record types. By using custom fields, you can customize the entry forms for these record types
and make these classifications available. However, custom fields cannot be used for filtering custom
segments, so these custom fields are not listed in the Filtered by field. Even if you name the fields Class,
Department, Location, and Subsidiary, they are not represented by the options listed in the custom
segment’s Filtered by field.
For this reason, in some cases when you try to filter a segment by Class, Department, Location, or
Subsidiary, the system displays a warning. You are prompted to let the system change either the
Filtered by field or the record application of the segment you are editing. The following limitations exist:
■ Class, Department, and Location cannot be used for filtering on the record types listed on the
following subtabs: CRM, Other Record Types, Custom Record Types, and Custom Segments.
SuiteBuilder
Custom Segments Overview
293
■ Subsidiary cannot be used for filtering on the record types listed on the Custom Record Types or
Custom Segments subtabs.
GL Impact
The purpose of the GL Impact option is to add the segment to the GL Impact page for transactions
where it is used. For this reason, you may receive a warning if you check the GL Impact box without
applying the segment to a transaction. The GL Impact option has no function if the segment is not
applied to a transaction type. However, you are not required to apply these segments to transaction
types.
You set the GL Impact when you create a custom segment. After that, the option cannot be changed.
For more information about GL Impact, see Configure a Segment to Appear on the GL Impact Page.
Type
If a custom segment’s Type field is set to Multiple Select, that segment cannot be applied to a
transaction sublist.
For more information about custom segment types, see Custom Segment Types.
Permissions for Managing Custom Segments and
Values
By default, only administrators and users with the Full Access role can create and configure segments
and segment values. However, you can permit other roles to complete these tasks. At a high level, you
can permit a role to do the following:
■ Create and configure custom segments and their values – To grant a role permission to view,
edit, and delete custom segment definitions, you use the global Custom Segments permission. For
details, see Granting a Role Permission to Manage Custom Segments.
■ Create and edit values for a particular custom segment – For each segment, you can grant a
role permission to create, edit, and delete the segment’s values. You grant this access by using the
segment’s Value Management Access permission. For details, see Granting a Role Permission to
Manage Custom Segment Values.
■ Use segments after they have been created, configured, and applied to records types – To give a
role this type of access, you use two permissions, each of which are segment-specific: Record Access
and Search/Reporting Access. For more information, see User Permissions for a Custom Segment.
Note that the first two types of permissions have interdependencies. For example, if a role has some
level of the Custom Segments permission, the role also has permission to view segment values, even if
the role has not specifically been granted Value Management Access for any segment.
Granting a Role Permission to Manage Custom Segments
By default, only administrators and users with the Full Access role have permission to view custom
segment definitions, create segments, edit segments, and delete them. However, you can assign this
permission to other roles. You grant this access by using a permission called Custom Segments, which
is available on the Permissions > Setup subtab of the role record.
For details, see the following sections:
■ Scope of the Custom Segments Permission
SuiteBuilder
Permissions for Managing Custom Segments and Values
■ Assigning the Custom Segments Permission
Scope of the Custom Segments Permission
The following table describes the access associated with the various levels of the Custom Segments
permission. Except where noted, this table assumes that the user has no other permissions.
Level
Users can:
Users cannot:
View
■ View custom
segment definitions.
■ Create, edit, or delete custom segments.
■ View the values
defined for existing
custom segments.
■ Create, edit, or delete values on a custom segment (unless
the role has the appropriate Value Management Access
level for that segment).
■ Use the Custom
Segment search
type.
Create
■ View custom
segment definitions.
■ View the values
defined for existing
custom segments.
■ Edit or delete custom segments.
■ Create, edit, or delete values on an existing custom
segment (unless the role has the appropriate Value
Management Access level for that segment).
■ Use the Custom
Segment search
type.
■ Create custom
segments.
■ Create values for
new segments that
the user is creating.
Edit
■ View custom
segment definitions.
■ View the values
defined for existing
custom segments.
■ Use the Custom
Segment search
type.
■ Delete custom segments.
■ Edit, create, or delete values on an existing custom segment
(unless the role has the appropriate Value Management
Access level for that segment). Note that these users
have the ability to give themselves that permission. They
can change the Value Management Access level on the
Permissions subtab of the Custom Segments definition.
■ Create custom
segments.
■ Create values for
new segments that
the user is creating.
■ Edit body fields and
sublist fields on an
existing segment.
Full
■ View custom
segment definitions.
■ View the values
defined for existing
custom segments.
SuiteBuilder
■ Edit, create, or delete values on an existing custom segment
(unless the role has the appropriate Value Management
Access level for that segment). Note that these users
have the ability to give themselves that permission. They
294
Permissions for Managing Custom Segments and Values
Level
Users can:
■ Use the Custom
Segment search
type.
295
Users cannot:
can change the Value Management Access level on the
Permissions subtab of the Custom Segments definition.
■ Create custom
segments.
■ Create values for
new segments that
the user is creating.
■ Edit body fields and
sublist fields on an
existing segment.
■ Delete custom
segments.
As shown in the preceding table, even if a role does not have the Value Management Access permission
for any segment, the Custom Segments permission always gives the user permission to view segment
values. Similarly, the Create, Edit, and Full levels of the Custom Segments permission give the role some
ability to create values, even if they do not have the Value Management Access permission.
However, if you want any of these users to be able to edit values on an existing custom segment,
you may want to actively assign them the Value Management Access permission for the appropriate
segments. Be aware that they can also grant themselves this permission on the Permissions subtab of
the custom segment.
Assigning the Custom Segments Permission
Use the following procedure to assign the Custom Segments permission to a role.
To assign the Custom Segments permission:
1. Go to Setup > Users/Roles > Manage Roles.
2. Locate the role you want to modify, and click the corresponding Edit or Customize link.
3. On the Permissions subtab, click Setup.
4. Do one of the following:
■ To grant the role access, add a line to the sublist: In the Permission column, set the list to
Custom Segments. In the Level column, select the appropriate access level. Then click Add.
■ To remove a role’s existing access, locate the Custom Segments permission in the sublist.
Click on it to enable a series of buttons. Then click Remove.
■ To modify the role’s existing access, locate the Custom Segments permission in the sublist.
Edit the corresponding value in the Level column. Then click OK.
5. Click Save.
Granting a Role Permission to Manage Custom Segment
Values
In some cases, you may want to give a role permission to add values for a particular segment. This
capability may be useful if you have certain users who are responsible for one segment but should not
have the ability to change the values of another segment.
SuiteBuilder
Permissions for Managing Custom Segments and Values
296
A user must have the Value Management Access permission to be able to edit or delete the values of
an existing segment.
You grant users the ability to manage values for a segment by using the Value Management Access
permission. You can configure this permission by making changes on the Permissions subtab of the
custom segment definition.
For details, see the following sections:
■ Required Permissions for Creating Custom Segment Values
■ Scope of the Value Management Access Permission
■ Assigning the Value Management Access Permission
Required Permissions for Creating Custom Segment Values
To be able to create values, a user must have the appropriate privileges. There are several permission
configurations that can result in users having this access.
Examples of users with various permission configurations are described in the following table, along
with the procedures that each group can use to create values.
Description
When Can the User Add Values?
Permitted Methods for
Creating Values
Users assigned to either the
Administrators or Full Access role.
At any time
Creating Values Within the
Segment Definition
Creating Values by Clicking
Manage Values
Creating Values Using the
New Button
Users with the Create level of the
Custom Segments permission
Only during the time that the user
is creating the segment (unless the
user has additional privileges).
Creating Values Within the
Segment Definition
Users with the following:
At any time
Creating Values Within the
Segment Definition
Creating Values by Clicking
Manage Values
At any time
Creating Values by Clicking
Manage Values
Creating Values Using the
New Button
■ The Create, Edit, or Full level of
the Value Management Access
permission
Users with both of the following:
■ The Create, Edit, or Full level of
the Value Management Access
permission
■ Permission to work with the
segment when it is displayed
on another record
Note: Be aware that even if users have only the Edit or Full value of the Custom Segments
permission, they can assign themselves the Value Management Access permission for any
custom segment.
Scope of the Value Management Access Permission
Refer to the following table for details on the privileges associated with the Value Management Access
permission.
SuiteBuilder
Permissions for Managing Custom Segments and Values
Value Management Access
Level
Users can:
Users cannot:
View
■ View values for the segment. (In addition,
by having the View level of the Custom
Segments permission, the user can view
values for all segments.)
■ Create, edit,
or delete the
segment’s values.
Create
■ Create values for the segment for which
they have the Value Management Access
permission.
■ Edit or delete the
segment’s values.
Edit
■ Create and edit the values for the
segment.
■ Delete the
segment’s values.
Full
■ Create, edit, and delete the values for the
segment.
297
Assigning the Value Management Access Permission
Use this procedure to grant a role permission to work with a custom segment’s values.
To assign the Value Management Access permission:
1. Go to Customization > Lists, Records, & Fields > Custom Segments.
2. Locate the segment for which you want to grant access, and click the Edit link.
3. Click the Permissions subtab.
4. For a role to have access, the role must be referenced in the Permissions sublist. Review the
sublist to see if the role is already listed, then do one of the following:
■ If the role is not listed, add a line to the sublist: In the Role column, select the appropriate
role. In the Value Management Access Level column, choose the desired access level. Review
the values for this role in the columns labeled Record Access Level and Search/Reporting
Access Level. Make any changes as needed. Then click Add. For details on the Record Access
and Search/Reporting Access permissions, see User Permissions for a Custom Segment.
■ If the role is already listed but does not have the ability to manage values, then edit the role’s
access. Locate the role in the sublist. Edit the corresponding value in the Value Management
Access Level column. Then click OK.
Note: If the Role has not been granted the Custom Segments permission, None is the
only option available on the Value Management Access Level list. You must grant the role
the Custom Segments permission before you can specify the value management access
level. Go to Setup > Users/Roles > User Management > Manage Roles. On the Permissions
> Setup subtab, add the Custom Segments permission to the role.
5. Click Save.
Note: You can also set the Value Management Access Level by editing the role. On the role
record, go to the Permissions > Custom Record subtab. The names of all custom segments are
displayed in the Record column.
Custom Segment Creation
After the Custom Segments feature has been enabled, authorized users can create and configure
segments. For more details, see the following topics:
SuiteBuilder
Custom Segment Creation
298
■ Custom Segment Types
■ Creating a Custom Segment
■ Configuring GL Impact for a Custom Segment
■ Applying a Custom Segment to Record Types
■ Validation and Static Default Values for Custom Segments
■ Making a Custom Segment Mandatory
■ User Permissions for a Custom Segment
■ To edit a custom segment:
Custom Segment Types
Every custom segment has a type. The type determines how the segment behaves when a user
encounters a segment on a record and sets a value for it.
A segment’s type can be either of the following:
■ List/Record (default) – The user can save only one selection.
■ Multiple Select – The user can save multiple selections.
For more information about types, see the following:
■ Limitations of Multiple Select
■ Ramifications of Changing a Segment’s Type Field
■ Changes that Can Indirectly Modify a Segment’s Type Field
Limitations of Multiple Select
If you choose a type of Multiple Select for a segment, be aware of the following limitations:
■ The segment cannot have GL Impact.
■ The segment cannot be applied to transaction columns.
■ You cannot configure dynamic defaulting for the segment. (Dynamic defaulting is configured by
using the Source List field on the Application & Sourcing subtab of the segment definition, as
described in Creating a Custom Segment.)
Ramifications of Changing a Segment’s Type Field
It is possible to change a segment’s type during editing of the segment. However, exercise caution
when changing a segment’s type. This type of change can have the following effects:
■ Changing the type from Multiple Select to List/Record can cause data loss. For example, suppose
you create a segment of type Multiple Select and apply it to a record type. In this case, users may
create records that store multiple values for that segment. If the segment’s type is later changed to
List/Record, the saved values are discarded.
■ Changing the type from List/Record to Multiple Select can affect where the segment has been
applied. For example, suppose you have a segment of type List/Record that is applied to one or
more transaction sublists. If you change the type to Multiple Select, the system generates a warning
explaining that the segment will be removed from these transaction sublists. You have the ability
to cancel out of this change, or you can proceed with changing the type and application of the
segment.
SuiteBuilder
Custom Segment Creation
299
Changes that Can Indirectly Modify a Segment’s Type Field
Be aware that in some cases, you can indirectly change a segment’s type. For example, this type of
change can occur when you have a filtering relationship between two segments, one of type List/
Record and one of type Multiple Select.
For example, suppose that Segment A is of type List/Record. You may decide to filter Segment A’s
values by the choice a user made in another segment, Segment B, on the same record. Suppose that
Segment B is of type Multiple Select.
With filtering, both segments must be applied to the same record types and transaction columns. So
in this example, you are choosing to filter Segment A’s values according to Segment B. In this case, if
Segment B is not already applied to the same records as Segment A, the system makes changes. It
automatically updates Segment B to apply it to all of the records where Segment A has been applied.
Now, suppose that Segment A has been applied to a transaction sublist, such as Sales Item or Expense.
In this scenario, when you create the filtering relationship between Segment A and Segment B, the
system must apply Segment B to the transaction sublist that Segment A is associated with. However,
because a segment of type Multiple Select cannot be applied to transaction sublists, the system
changes Segment B’s type to List/Record. In this case, you are not warned that the type of Segment B
will be changed.
For more details about filtering, see Filtering for a Custom Segment.
Creating a Custom Segment
When you create a custom segment, you can choose a label for the segment, define its values, and
configure other settings. Of the available fields, only Label is required for the segment to be saved.
To create a segment, you must have the appropriate permissions. Authorized users include the
following:
■ Administrative users – Users who belong to either the Administrators or Full Access role.
■ Other users – Users who belong to a role that has the Create, Edit, or Full level of the Custom
Segments permission.
To create a custom segment:
1. Go to Customization > Lists, Records, & Fields > Custom Segments > New.
2. In the Label field, enter a label for the segment. This text will be used as the segment’s label
when it appears on records or as a transaction column.
Important: This value must be unique across all classifications in your system.
Consider the following restrictions when entering a label for your custom segment.
■ The label cannot be a duplicate of an existing segment label.
■ The label cannot be a duplicate of an existing custom field label.
■ If you have classifications called Class, Department, Location, and Subsidiary, you cannot use
any of those words as labels.
■ You cannot name a segment Account.
3. Optionally, enter a value in the ID field. As a best practice, enter a name that begins with an
underscore. If you do not enter a value, the system generates one. Note that this value cannot
be changed after the new segment is saved.
SuiteBuilder
Custom Segment Creation
300
4. Optionally, change the Type list from its default of List/Record to Multiple Select. This choice
determines whether a user setting a value for the segment can save multiple selections, as
follows:
■ List/Record – The user can save only one selection.
■ Multiple Select – The user can save multiple selections.
Some limitations exist with Multiple Select. For details, see Custom Segment Types.
5. If a custom segment is no longer needed, you can inactivate it by checking the Inactive box. For
details, see Inactivating a Custom Segment.
6. In some cases, you may want to set up filtering for a segment’s values. With this option, you
can specify that, for any of the segment’s values, the value’s availability is conditional based on
selections the user made in other classification fields on the same record. For full details about
filtering, see Filtering for a Custom Segment.
If you want to use this capability, in the Filtered by list, select the classifications you will use to
filter this segment’s available values. Hold down Ctrl to select more than one option.
Later, you must manage the exact filtering configuration for each value by using the Set Filters
button, as described later in this procedure.
7. If appropriate, check the GL Impact box. Checking this box means that, when the segment is
used on a transaction, the segment’s value is displayed on the GL Impact page.
Important: After the segment is created, the value of the GL Impact option cannot be
changed. For more details about GL impact, see Configure a Segment to Appear on the
GL Impact Page.
8. Enter field-level help for the segment in the Help field. When you enter help information, a user
working with the segment can click the segment’s label to display a popup window containing
your help text.
9. If required, enter notes about the segment in the Description field. This text is visible only on
this page, for people who have permission to view or edit the segment.
10. Optionally, enter additional configuration settings on the segment’s subtabs, as follows:
■ Values – Create values for the custom segment by adding lines to the Values sublist. Note
that if you made a selection in the Filtered by box, you must populate the Filtering column
for each value that you want to be available to users. For full details on configuring filtering
for a value, see Setting Filters for Each of the Segment’s Values. For more details about each
column in the Values sublist, see Creating Values Within the Segment Definition.
■ Application & Sourcing – On this subtab, you can do both of the following:
□ Apply the segment to one or more record types by checking the record types. You can also
make the segment available on another custom segment or as a column in a transaction
sublist. For more details, see Applying a Custom Segment to Record Types.
□ If the segment applies to more than one record type, you can set up dynamic defaulting
using the Source List field. With this approach, you can make the segment value on
one record default to the segment value saved on another record. For full details
on configuring dynamic defaulting, see Dynamic Default Value Sourcing for Custom
Segments.
SuiteBuilder
Custom Segment Creation
301
■ Validation & Defaulting – On this subtab, you can do both of the following:
□ Make the segment mandatory when it appears on a record type by checking the
Mandatory box. Be aware, however, that a custom form for the record type can be
designed to prevent the field from being visible (and therefore prevent it from being
mandatory). For more details, see Making a Custom Segment Mandatory.
□ Choose a static default value for the segment by using the Default Selection list. If you
have configured dynamic defaulting using the Source List field on the Application &
Sourcing subtab, the dynamic defaulting overrides the default selection value specified.
For more details, see Configuring Static Defaults for Custom Segments.
■ Permissions – Grant roles permission to work with this segment. You can configure the
following:
□ Value Management Access Level – Specify which roles can create and edit values for the
segment. For details, see Granting a Role Permission to Manage Custom Segment Values.
□ Record Access Level – Specify which roles can view and set values for a segment when it
appears on a record. For details, see Granting Roles Permission to Set Segment Values on
Records.
□ Search/Reporting Access Level – Specify which roles can do the following: search based
on segment values, customize reports to include segment values as columns and filters,
and view segment values on custom reports. For details, see Granting Roles Permission to
Use Segments in Searches and Reports.
■ Dependent Segments — When editing an existing segment, use this subtab to see a list of
the segments that use the current segment for filtering their values.
Note: The Dependent Segments subtab lists custom segments that are configured
to have their values filtered by the current segment. When you create a new segment,
this subtab is empty.
■ Display Order – Specify the order in which custom segments appear the body and lines of
transactions, on other records, and on the GL Impact page, if applicable. You can set the
display order to reflect the priority and dependencies of custom segments. For details see
Setting Display Order of All Custom Segments.
■ Translation – Define translations for the segment’s label and help text. Be aware that the
Translation subtab is displayed only if the Multi-Language option is enabled, at Setup >
Company > Enable Features, on the Company subtab.
11. Click Save.
The custom segment and an associated custom record type are created. The custom record type
has the same name as the custom segment and is available on the Custom Record Types list
page. You can edit the custom record type directly to add values to the custom segment.
Configuring GL Impact for a Custom Segment
If you have applied a custom segment to transaction types or columns, the segment can have GL
impact. When you enable GL Impact, segment values that are saved on transaction instances are
displayed on the GL Impact page for those transactions.
If desired, you can select the GL Impact option even when the segment is not applied to transaction
types or columns. However, until you apply the segment to a transaction type or column, this option
has no effect.
Any user who has permission to create a custom segment can enable GL impact for that segment.
However, after the segment has been created, this option cannot be modified.
SuiteBuilder
Custom Segment Creation
302
For custom segment values, if a period is closed, you cannot change custom segment values that
impact GL on any transactions in the period.
GL Impact Hidden Lines
Custom segments on GL Impact hidden lines are supported to ensure appropriate financial reporting.
The hidden lines get the custom segment values from the item line or transaction body, where
applicable. Hidden line support ensures that GL Impact is correctly reflected for landed cost, tax lines,
and currency revaluations.
Segment Values Available for Generated COGS and Revenue
Lines
When a sale order or sale order item custom segment has GL impact, the appropriate GL segment
value is assigned to the generated COGs and revenue GL lines to ensure appropriate financial
reporting. The auto-generated COGS and revenue lines get the segment value from the item line or
transaction body, where applicable, even if they belong to different business transactions.
Automatically-Generated Journals
Custom segments are supported on automatically-generated journals that include classification,
department, and location. The following automatically-generated journals include custom segments:
■ Advanced Revenue Recognition Journal
■ Amortization Journal
■ Bill Variances Journal (SCM)
■ Collect Tegata and Pay Tegata
■ Entity Open Balance Journal Entry
■ Intercompany Elimination Journal Entry
■ Offset Journal Entry (Absolute Balance Update)
■ Recognize Gift Certificate (SCIS)
■ Revaluation Journal (FX Revaluation)
■ Revenue Reclassification Journal
■ Revenue Recognition Journal Entry
■ Time Posting to Journal Entry (PSA)
■ Transactions created during historical transaction processing (HTP)
You can apply custom segments to revenue arrangement and revenue element records, which are part
of the Advanced Revenue Management feature.
Important: The GL impact setting can only be specified when you create a new custom
segment. After the custom segment is saved, the GL Impact option cannot be changed.
Examples
You enter a standard invoice or cash sale and set or source a GL segment value on the body, line, or
both. The auto-generated COGS and revenue lines on the transaction have the same segment value.
You enter a sales order with the GL segment value on the item, and then you fulfill the item. The COGS
line on the GL impact page gets the segment value from the item line. When you invoice the sales order
later, the revenue line on the GL Impact gets the same segment value. Both COGS and revenue lines
SuiteBuilder
Custom Segment Creation
303
source the GL segment value from the sales order item line unless the user manually overwrites the
values.
For more information, see the help topics GL Impact Page and Cost of Goods Sold (COGS) G/L Impact.
To configure GL impact for a custom segment:
1. Go to Customization > Lists, Records, & Fields > Custom Segments > New .
2. Check or clear the GL Impact box as appropriate.
3. Click Save.
Filtering for a Custom Segment
If appropriate, you can set up a segment so that, when it appears on a record, its values are filtered.
Values can be filtered based on choices the user made in other classification fields on the same record.
For example, consider a company that markets entertainment media. This company has a segment
called Profit Center, with values such as Books, Games, Music, and Video. The company operates in
APAC, EMEA, and North America, and has Location values that represent each of those geographic
areas.
Suppose that both Profit Center and Location are available on sales transactions, but for some
locations, only certain Profit Centers are available. For example, all profit centers may be available in
North America. However, in the other three locations, only games, music, and video are available.
In this case, you might configure the Profit Center segment so that its values are filtered based on the
value selected for Location. With this configuration, you can specify that, if the selected Location is
EMEA, the Books value is hidden from the list of Profit Center values.
In addition to Location, you can filter based on the values selected in the Class and Department fields,
if those features are enabled. Additionally, you can filter based on choices the user made in another
segment. In OneWorld accounts, you can also filter by the Subsidiary field.
Note also that you can filter by one field or by multiple fields.
For more details about filtering, see the following topics:
■ Setting Up Filtering for a Custom Segment
■ Removing Filtering from a Custom Segment
■ Viewing a Custom Segment’s Filtering Relationships
SuiteBuilder
Custom Segment Creation
304
Setting Up Filtering for a Custom Segment
As described in Filtering for a Custom Segment, you can configure each segment so that its available
values are determined by selections made in another classification field.
To configure filtering, at a high level, you complete two steps:
■ Setting the Segment’s Filtered by Field
■ Setting Filters for Each of the Segment’s Values
Note: When you are configuring filtering, be aware that filtering choices can be overridden
by a static default. That is, if you configure a static default for a segment, that value can always
be saved on a new record, even if your filtering configuration would otherwise make the value
impermissible. If you want to avoid this behavior, avoid choosing a static default that is not
permitted by your filtering configuration. For details on static defaults, see Configuring Static
Defaults for Custom Segments.
Setting the Segment’s Filtered by Field
To enable filtering, you edit the Filtered by field of the segment whose values are being filtered.
For example, if you had a Profit Center segment whose available values depend on the selection
made in the Location field, you edit the Profit Center segment. No changes are required to the other
classification field (in this case, the Location field).
To configure the segment’s Filtered by field:
1. Edit the custom segment for which you want to add filtering.
2. In the Filtered by field, select all of the classifications to use for filtering. (In the example from
the beginning of this topic, you select Location.) To select more than one value, hold down the
Ctrl key.
Note: In some cases, you might want to select another custom segment in the Filtered
by list, but that segment is not listed. In these cases, the problem might be that the other
segment already has a filtering relationship with the segment you are editing. To find out,
navigate to the other segment definition, and view the Dependent Segments subtab. This
subtab lists all of the segments that currently filter by the segment you are viewing.
3. Click Save.
Setting Filters for Each of the Segment’s Values
After the segment’s Filtered by field has been configured, you must edit each of the segment’s values.
(In the example from the beginning of this topic, you edit the Profit Center segment’s values.) If you
fail to edit any value, that value will never be available for users to select. You can use either of the
following approaches to edit the values:
■ Editing Values Within the Segment Definition
■ Editing Each Value Directly
Important: Make sure you edit every value, if you want every value to be available under
some circumstance. If you do not set the filtering conditions for a value, that value is never
displayed in the segment’s list.
Editing Values Within the Segment Definition
If you have permission to edit the segment definition, you can set filters for each value by editing the
Values sublist.
SuiteBuilder
Custom Segment Creation
305
To edit values within the segment definition:
1. Edit the custom segment for which you want to add filtering.
2. In the Values sublist, edit each value as follows:
a.
For the value that you want to configure, click anywhere in that row to enable a series of
buttons.
b.
Click Set Filters to display a popup window. The popup window includes a Filter list. Its
value is the field selected in the segment’s Filtered by field. Directly below the list is a list
of that field’s values.
c.
In the popup window, select the values of the Filter field that permit this value to be
displayed as an option. For example, suppose you are editing the Book value of the Profit
Center segment. If you want this value to be available only when the North America
location is selected, select North America. To select more than one value, hold down the
Ctrl key.
d.
If the segment’s Filtered by field includes more than one selection, use the Filter list to
select another classification and set its values.
e.
When you have made selections for all of the fields listed in the Filter list, click Set.
Important: You must set values for all of the fields available in the Filter list, or
the value is never available to users.
f.
Click OK.
3. If there are other values that should be available, and do not have filters set, repeat the editing
steps above for that value.
4. Click Save on the segment definition.
Editing Each Value Directly
If you do not have permission to edit the segment definition, but you do have permission to edit its
values, use the following procedure.
To edit each value directly:
1. If it is not already open, open the value for editing. For more information, see Editing a Custom
Segment’s Values by Clicking Manage Values.
2. Locate the Filter by [Classification Field] field, where [Classification Field] is the field selected in
the segment’s Filtered by field. This list includes all possible values of the field by which you are
filtering.
SuiteBuilder
Custom Segment Creation
306
3. Select the values of the classification field that should permit the user to select the value that
you are editing. For example, suppose you are editing the Book value of the Profit Center
segment. If you want this value to be available only when the North America location is selected,
select North America. To select more than one value, hold down the Ctrl key.
4. If the page includes additional fields labeled Filtered by [Classification Field], make selections in
each of these fields.
Important: You must set values for all of the Filtered by fields, or the value you are
editing is never available to users.
5. Click Save.
Filtering Across Body and Line Segments
Segment values on transaction lines can be filtered by the segment value set in the body of a
transaction. When you select a value for a parent segment, only child segments of that parent are
available for selection on transaction lines.
For example, you have a parent custom segment called Business Unit that is available on purchases at
the body level and includes a list of different areas of the business, such as grocery, bakery, and cafe.
SuiteBuilder
Custom Segment Creation
307
The child custom segment, Product Line, is filtered by Business Unit and available on purchase
transaction lines. Items include food, cold beverages, hot beverages, and frozen desserts. For each list
value, you set filtering to specify for which business unit the item will be available.
On a purchase order, selecting a business unit at the body level filters the items available in the
Product Line list at the line level, making order entry less cumbersome.
Removing Filtering from a Custom Segment
When you remove filtering from a segment, all of its values become available for selection. Use the
following procedure to remove filtering from a segment.
To remove filtering from a segment:
1. Edit the custom segment that no longer requires filtering.
2. To remove filtering, clear the selections in the Filtered by field. To clear a selection, hold down
the Ctrl key and click a selected field. Note that you may have to use the scroll bars to see all
classifications that have been selected.
3. Click Save.
SuiteBuilder
Custom Segment Creation
308
Viewing a Custom Segment’s Filtering Relationships
When working with a custom segment, you may want to know what filtering relationships it has with
other segments. There are two areas on the segment definition that show this information:
■ The Filtered by body field – Shows the segments that the current custom segment uses to filter its
values.
■ The Dependent Segment subtab – Shows the segments that use the current segment for filtering
their values.
To navigate to a custom segment definition, go to Customization > Lists, Records, & Fields > Custom
Segments. Locate the appropriate segment, and click the Edit or View link.
To view a custom segment definition, you need at least the View level of the Custom Segments
permission. For details about this permission, see Granting a Role Permission to Manage Custom
Segments.
Applying a Custom Segment to Record Types
For a custom segment to be available on records, you must apply the segment to one or more
record types or transaction sublists. After you do, the segment is available as a field on instances
of that records. Depending on where you apply the segment, it is available either as a body field or
as a column in a transaction sublist. Authorized users can use the segment to classify the record or
transaction line. On standard forms, the segment is displayed on the Custom subtab of the record
instance.
You can also apply segments to groups of record types, in some cases, or make them columns in
transaction sublists, or groups of transaction sublists. For example, you can apply a segment to all sales
transactions or to all sales item sublists. You can also apply a segment to another segment.
You apply segments to record types when creating or editing a segment by using the Application &
Sourcing subtab.
The options available in the Application field group of the Transactions and Transaction Columns
subtabs enable you to specify the transactions and transaction columns where the custom segment is
available.
For more information about the transactions where custom segments can be used, see Transaction
Types Supported by Custom Segments.
Note: Custom segments cannot be applied to custom lists.
To apply a segment to a record type, transaction sublist, or group:
1. Edit the custom segment.
2. Click the Application & Sourcing subtab.
The subtabs available from the Application & Sourcing subtab include the following.
■ Transactions, including the following items:
□ Custom transaction types
□ Check the Tegata box to apply the custom segment to Collect Tegata and Pay Tegata
transactions
□ Check the Vendor Payment box to apply the custom segment to single vendor payments
and bill payments to multiple vendors
SuiteBuilder
Custom Segment Creation
309
■ Transaction columns, and custom transaction sublists
■ Entities
■ CRM
■ Items
■ Other Record Types, including the following items:
□ Advanced revenue recognition records
□ Allocation Schedule destination line – Applies the custom segment to the destination lines
on an allocation schedule
□ Allocation Schedule source line – Applies the custom segment to the source lines on an
allocation schedule
For more information about allocation schedules, see Expense Allocation Overview.
□ Budget Import — If a custom segment is applied to a budget record, and budget
transactions exist, the custom segment cannot be inactivated, deleted, or removed from
the budget record.
Important: To avoid data corruption, the Custom Segments feature cannot be
disabled if a custom segment is applied to a budget record.
□ Multi-book accounting records
Note: Some records are not available unless the feature is enabled. For example,
the accounting book record is not available if the Multi-Book Accounting feature is not
enabled.
■ Custom Record Types, which includes any custom record types available in the account
■ Custom Segments, which includes all custom segments available in the account
3. Specify where the custom segment is available by checking the appropriate boxes on each of the
subtabs.
■ Some of the subtabs have an Application field group, where you specify the transactions
where this custom segment is available.
■ All of the subtabs include a list of record types, where you specify the record types where the
custom segment is available.
4. Click Save.
Dynamic Default Value Sourcing for Custom Segments
In some cases, you might apply a custom segment to two record types that have a relationship with
each other. In these situations, you may want the segment value on one record to populate with the
value selected on the other.
For example, in the standard NetSuite configuration, each sales transaction is associated with a
particular customer record. You may want the segment value on a new sales transaction to populate
with the segment value saved on the corresponding customer record. You can configure this behavior
by specifying dynamic default logic.
For more information about dynamic defaults, see the following topics:
■ Dynamic Defaulting for Custom Segments
■ Creating Dynamic Default Logic for Custom Segments
SuiteBuilder
Custom Segment Creation
310
Dynamic Defaulting for Custom Segments
In some cases, you may want to apply a custom segment to two record types that have a relationship
with each other. In these cases, you may want the segment on one record to populate automatically
with the value of the segment on the other. To configure this behavior, you must specify dynamic
default logic for the segment.
With this approach, at a high level, you create a relationship between the following:
■ One or more target record types – The group of record types, or single record type, whose
instances receive the dynamically loaded default value.
■ A field on the target record type – This field is used to identify the particular record instance that
provides the default value. This record is the source record instance.
For more details, see the following sections:
■ Source List Choices
■ Choose a Target
■ Prerequisites for Creation of a Dynamic Default
Source List Choices
When you configure dynamic defaulting, you use the Source List field.
Each choice in the Source List shows two terms. The first term represents the label of a field. The
second term represents a record type.
Callout
Description
This term represents the name of a field on the target record types. The selection
that a user makes in this field always represents another record. For example, some
transaction types have a field called Sales Rep. When a value for that field is saved on
a transaction, that value identifies a specific employee record.
This term represents the record type of the source record instance. To follow the
example from the preceding row, a field labeled Sales Rep identifies a record of type
Employee.
Choose a Target
The Application & Sourcing subtab includes several child subtabs. Each of these subtabs represents a
different category of record type.
When you display some of these subtabs, you will see only one Source List field. The choice you make
in this field affects all of the record types selected on that subtab. When you navigate to certain other
subtabs, you can select a different Source List option for those record types.
On two of the subtabs, you can specify a Source List choice for each record type listed. This option is
possible for the types listed on two subtabs: Other Record Types and Custom Record Types.
Prerequisites for Creation of a Dynamic Default
Sometimes you may save a Source List choice, but a dynamic default is not always generated for the
applicable record types. For a default to be generated, the following statements must be true:
SuiteBuilder
Custom Segment Creation
311
■ The source record instance must have a value saved in the segment field – If the segment field
on the source record instance has not been populated with a value, no dynamic default is created.
For example, suppose you have configured the segment on sales transactions to populate with the
segment value saved on the corresponding customer record. If the corresponding customer record
does not have a value saved in the segment field, no dynamic default is created. If you want to avoid
this situation, you can make the segment mandatory, as described in Making a Custom Segment
Mandatory.
■ The Source List field must exist on the entry form for the target record type – On the subtabs
where one Source List is used for many record types, note that not all record types have all of
the fields listed. If you select a choice in the Source List field, and one of the record types does
not have that field, no default is ever created for instances of that record. For example, on the
Transactions subtab, the Source List includes a choice labeled Sales Rep (Employee). If you select
that option, then dynamic defaults are created for transactions that have a Sales Rep field. For
example, instances of the Cash Sale record type could receive the dynamic default value. However,
for transactions such as Journal Entry, which does not have a Sales Rep field, no dynamic default
can be created.
■ A value for the Source List field must be selected on the instance of the target record type –
Sometimes not every field on a record has a value saved. If an instance of the target record type
is saved with no value selected for the field identified by the Source List, no default is created. For
example, suppose you have configured account records to populate with a default value. In the
Source List for the Account record type, you may have chosen Restrict to Location (Location). If an
instance of the account record does not have a value selected in the Restrict to Location field, no
dynamic default can be created for that record.
Creating Dynamic Default Logic for Custom Segments
If appropriate, you can create dynamic defaulting for a custom segment. This capability can be useful
when a segment is applied to multiple record types. For example, suppose you have a segment that
has been applied to sales transactions and customer records. You can configure the segment so that,
when it occurs on a sales transaction, the segment populates with the segment value selected on the
corresponding customer record. This type of defaulting overrides static defaulting.
You can configure dynamic defaults at the time you are creating the segment. You can also edit the
segment later to add this configuration.
To create dynamic default logic for a custom segment:
1. Edit the custom segment.
2. Click the Application & Sourcing subtab.
3. Navigate to the subtab that represents the group or record type for which you want to
configure dynamic defaulting. For example, to configure a default for transaction types, click the
Transactions subtab. If you want to configure a default for one of the record types listed on the
Other Record Types or Custom Record Types subtab, click one of those subtabs.
4. Set the Source List field to the appropriate value. The choices in this list each represent a field
on the target record type, which is used to identify another record. For help understanding these
options, see Source List Choices.
5. Click Save.
Example
In the following example, a Preferred Contact Method custom segment is set up to appear on sales
orders, and be sourced from the customer record.
SuiteBuilder
Custom Segment Creation
NetSuite automatically checks the Customer box on the Entities subtab to make the custom segment
available on the customer record.
SuiteBuilder
312
Custom Segment Creation
313
If the preferred contact method is specified on the customer record, it defaults in automatically when
you select the customer on a sales order.
When the customer is selected on the sales order, the Preferred Contact Method field is filled in
automatically with the value from the customer record.
Validation and Static Default Values for Custom Segments
If appropriate, you can create default values for custom segments. For any segment, you can use one
or both of the following options:
■ You can choose any of the segment’s available values and make it the static default. That value
is automatically selected on all new records that use the segment, unless other logic creates a
different default. For details, see Configuring Static Defaults for Custom Segments.
■ You can configure logic that dynamically generates default values. You can specify different logic
for different groups of record types. With this approach, the default for a record is derived from the
segment value that was saved on a related record. If a dynamic default value is loaded on a record,
it overrides a static default. For details, see Dynamic Default Value Sourcing for Custom Segments.
Making a Custom Segment Mandatory
If you want a segment to be a required field on records where it appears, you can configure it to
be mandatory. You implement this configuration by checking the Mandatory box on the segment
definition. This option affects all record types to which the segment has been applied.
However, be aware that even with this configuration, the segment is not necessarily mandatory in all
situations. For example:
■ A custom form for the record type can be designed to prevent the custom segment from being
visible. When a user creates or updates a record using this type of form, the segment is not
mandatory.
■ Some users might have permission to create and edit a specific record type, but they might not have
permission to set a value for the segment. When these users work with the record, the segment is
not mandatory.
You can configure a segment to be mandatory when you are creating the segment. You can also edit
the segment later to change this configuration.
SuiteBuilder
Custom Segment Creation
314
To make a segment mandatory:
1. Edit the custom segment.
2. Click the Validation & Defaulting subtab.
3. Check the Mandatory box.
4. Click Save.
Configuring Static Defaults for Custom Segments
When you create a static default, you choose a single value from the segment’s list of available values.
When the segment appears on a new record as a field, it is populated with that value, unless other
configuration overrides it.
Be aware of the following:
■ If you have configured dynamic defaulting for a segment, any dynamic default that is generated
overrides the static default. For details about dynamic defaults, see Dynamic Default Value Sourcing
for Custom Segments.
■ If the segment uses filtering, note that the value you choose as the static default can always
be saved on a new record, even if your filtering configuration would otherwise make that value
impermissible. If you want to avoid this behavior, choose a static default that is always permitted by
your filtering configuration. For more details, see Filtering for a Custom Segment.
You can configure static defaults when you are creating a segment. You can also edit a segment later to
add this configuration.
To configure a static default value for a custom segment:
1. Edit the custom segment.
2. Click the Validation & Defaulting subtab.
3. Set the Default Selection list to the appropriate value.
4. Click Save.
User Permissions for a Custom Segment
Every segment that has been applied to a record becomes a field on that record. For that reason, you
can use the Permissions subtab to manage permissions for each segment in its capacity as a field on
another record. At a high level, you can permit a role to do any of the following:
■ View and use a segment when it appears on a record – For each segment, you can explicitly
allow or disallow a role from being able to set a value for the segment. You can also make the
segment hidden or read-only for a particular role. You manage these types of privileges by using
the segment’s Record Access permission. For details, see Granting Roles Permission to Set Segment
Values on Records.
■ View and refer to the segment when using searches and reports – For each segment, you can
explicitly allow or disallow a role from being able to use the segment as a search field or column.
You can also allow or disallow a role from being able to use segments when customizing reports.
You manage these types of privileges by using the segment’s Search/Reporting Access permission.
For details, see Granting Roles Permission to Use Segments in Searches and Reports.
SuiteBuilder
Custom Segment Creation
315
Granting Roles Permission to Set Segment Values on Records
For every segment, you can control which roles can view and interact with the segment as a field. You
control this access by defining the Record Access level for each role. You can also set a default access
level, which applies to all roles that do not have an access level explicitly defined.
For details, see the following sections:
■ Scope of the Record Access Permission
■ Assigning the Record Access Permission
Scope of the Record Access Permission
The following table describes the access associated with the various levels of the Record Access
permission. Level
Users can:
Users cannot:
None
View or set values for the segment on
the records where the segment has
been applied. For these users, the
segment — both its label and value
— are hidden.
View
View segments on the records where the
segment has been applied (if the user has
permission to view or edit the record type).
Users can view both the segment label and the
selected value, if a selection has been saved.
For users with this access level, the segment
field is read-only, even if the user has
permission to edit the record.
Set values for the segment.
Edit
View and set values for the segment on records
where the segment has been applied (if the user
has permission to edit the record type).
Assigning the Record Access Permission
Use the following steps to assign the Record Access permission to a role.
To assign the Record Access permission to a role:
1. Edit the custom segment.
2. Click the Permissions subtab.
3. For a role to have access, the role must be referenced in the Permissions sublist. Review the
sublist to see if the role is already listed, then do one of the following:
■ If the role is not listed, add a line to the sublist: In the Role column, select the appropriate
role. In the Record Access Level column, choose the desired access level. Review the values
for this role in the columns labeled Value Management Access Level and Search/Reporting
Access Level. Make any changes as needed. Be aware that the Value Management Access
permission gives the user permission to create values, so review this column with care. For
details, see Granting a Role Permission to Manage Custom Segment Values. Then click Add.
SuiteBuilder
Custom Segment Creation
316
■ If the role is already listed but does not have the ability to manage values, then edit the role’s
access. Locate the role in the sublist. Edit the corresponding value in the Record Access Level
column. Then click OK.
4. From the Default Record Access Level list, set the default record access level for a segment. This
access level applies to any role that is not listed in the Permissions sublist with a specific access
level.
5. Click Save.
Granting Roles Permission to Use Segments in Searches and
Reports
For every segment, you can control which roles can view and interact with the segment when working
with searches and reports. You control this access by defining the Search/Reporting Access level for
each role. You can also set a default access level, which applies to all roles that do not have an access
level explicitly defined.
For details, see the following sections:
■ Scope of the Search/Reporting Access Permission
■ Assigning the Search/Reporting Access Permission
Scope of the Search/Reporting Access Permission
The following table describes the access associated with the various levels of the Search/Reporting
Access permission. Level
Users can:
Users cannot:
None
■ Use the segment as a search filter.
■ Use the segment as a column in search results.
■ View columns that reference custom segments
in saved searches. The user can view the saved
search, but columns referencing custom segments
are omitted from the view.
■ View reports that use the segment as a filter or
include it as a column.
■ Customize reports to use custom segments as
filters or columns.
View
■ View saved searches that
include custom segments
in their results.
■ View reports that use
the segment as a filter or
include it as a column.
Edit
■ View saved searches that
include custom segments
in their results.
■ View reports that use
the segment as a filter or
include it as a column.
SuiteBuilder
■ Use the segment as a search filter
■ Use the segment as a column in search results.
■ Customize reports to use custom segments as
filters or columns.
Custom Segment Creation
Level
Users can:
317
Users cannot:
■ Use the segment as a
search filter.
■ Use the segment as a
column in search results.
■ Customize reports to use
custom segments as filters
or columns.
Assigning the Search/Reporting Access Permission
Use the following steps to assign the Search/Reporting Access permission to a role.
To assign the Search/Reporting Access permission to a role:
1. Edit the custom segment.
2. Click the Permissions subtab.
3. For a role to have access, the role must be referenced in the Permissions sublist. Review the
sublist to see if the role is already listed, then do one of the following:
■ If the role is not listed, add a line to the sublist: In the Role column, select the appropriate
role. In the Search/Reporting Access Level column, choose the desired access level. Review
the values for this role in the columns labeled Value Management Access Level and Record
Access Level. Make any changes as needed. Be aware that the Value Management Access
permission gives the user permission to create values, so review this column with care. For
details, see Granting a Role Permission to Manage Custom Segment Values. Then click Add.
■ If the role is already listed but does not have the ability to manage values, then edit the role’s
access. Locate the role in the sublist. Edit the corresponding value in the Search/Reporting
Access Level column. Then click OK.
4. From the Default Search/Reporting Access Level list, set the default search/reporting access
level. This access level applies to any role that is not listed in the Permissions sublist with a
specific access level.
5. Click Save.
Dependent Segments
When editing an existing segment, you might want to know what filtering relationships it has with other
segments. From the custom segment definition, use the Dependent Segments subtab to see a list of
the segments that use the current segment for filtering their values.
Setting Display Order of All Custom Segments
You can specify the display order of custom segments in the body and lines on transactions, on other
records, and on the GL Impact page, if the custom segment has GL impact. This display order reflects
the priority and dependencies of custom segments.
The Display Order subtab lists all active custom segments in display order.
SuiteBuilder
Custom Segment Creation
318
By default, the current segment is selected in the list. When you create a new custom segment, the
name is listed as - Segment currently being created - until you enter a name in the Label field. To
change the display order of custom segments, drag and drop the list items or click the Move To Top
and Move To Bottom buttons.
On the Custom Segments list page, numbers in the Display Order column show the segment display
order.
The default display order is based on the order in which segments were created. As new segments
are created, they are added to the end of the display order unless you change it. If you check Show
Inactives on the list page, inactive custom segments appear at the bottom of the list because they have
no display order.
Editing Custom Segments
In some cases, you may want to make changes to an existing custom segment. For example, you might
want to change the segment’s label, the record types where the segment is applied, or the segment’s
default value. Most fields on a custom segment can be changed after the segment is created, but note
the following exceptions:
■ The ID field cannot be changed.
■ The GL Impact option cannot be changed.
■ Your ability to change the Type field varies depending on your permissions. For details, see
Required Permissions for Editing Custom Segments.
For more information about editing custom segments, see Inactivating a Custom Segment and Deleting
a Custom Segment Definition.
When a custom segment is created, an associated custom record type is also created. The custom
record type has the same name as the custom segment, and you can edit the custom record at any
time to add custom segment values. For more information about creating custom record types, see
Creating Custom Record Types.
Custom segment definitions can be updated at any time, even if the segment is used in a transaction
that is in a closed period.
SuiteBuilder
Editing Custom Segments
319
Note also that changing the Type field from Multiple Select to List/Record can cause data loss. For
details, see Custom Segment Types.
To edit a custom segment:
1. Go to Customization > Lists, Records, & Fields > Custom Segments.
2. In the list, locate the appropriate segment and click the corresponding Edit link.
3. Change any fields as appropriate. If you need to add or update values, and the Values sublist is
grayed out, click Manage Values to open a different page for working with values. For details,
see Creating Values by Clicking Manage Values.
If you need help understanding other fields on the segment definition, see the following topics.
■ Filtering for a Custom Segment
■ Applying a Custom Segment to Record Types
■ Dynamic Default Value Sourcing for Custom Segments
■ Validation and Static Default Values for Custom Segments
■ User Permissions for a Custom Segment
■ Dependent Segments
■ Setting Display Order of All Custom Segments
4. After making all needed changes on the segment definition, click Save.
Required Permissions for Editing Custom Segments
To be able to open a custom segment for editing and save changes, you must have the appropriate
privileges. Further, not all user groups can make changes. The following table gives examples of groups
with permission configurations that let them edit segments.
Note: After a custom segment is created, the GL Impact option cannot be changed.
Group
Users can:
Users cannot:
Users assigned
to either the
Administrators or Full
Access role
These users can change any value on the
segment definition, except for ID, which can
never be changed.
Users in this group are the only ones who can
change the following value:
Change the ID field.
■ The Type of an existing segment, if the
segment’s GL Impact box has been
checked. (If the GL Impact box has not been
checked, other users can also change the
type.)
Users with both of the
following:
■ The Create, Edit, or
Full level of Value
Management Access
permission
■ The Edit or Full
level of the
SuiteBuilder
■ Change most values on the segment
definition.
■ Work with values by directly editing the
Values sublist. Users can also click the
Manage Values button to complete these
tasks on another page, if they prefer.
(Whether these users can add, edit, or
delete values depends on the exact value
Change any of the
following fields:
■ ID.
■ Type, if the segment’s
GL Impact box has
been checked.
Editing Custom Segments
Group
Custom Segments
permission
Users with either the
Edit or Full level of
the Custom Segments
permission
Users can:
320
Users cannot:
of the user’s Value Management Access
permission. For details, see Required
Permissions for Creating Custom Segment
Values.)
Change most values on the segment
definition.
■ Change any of the
following fields:
□ ID.
□ Type, if the
segment’s GL
Impact box has
been checked.
■ Add, create, or delete
values. ( (However,
these users can
give themselves
that permission by
making changes
on the Permissions
subtab of the segment
definition.)
Users with both of the
following:
■ The Create, Edit, or
Full level of Value
Management Access
permission
■ The View level of the
Custom Segments
permission
These users cannot directly modify anything
on the segment definition, but they can work
with the segment’s values. They can open the
segment definition in View mode and click
Manage Values to display a page that lets
them work with values. (Whether these users
can add, edit, or delete values depends on the
exact value of the user’s Value Management
Access permission. For details, see Required
Permissions for Creating Custom Segment
Values.)
Edit the segment
definition.
Inactivating a Custom Segment
You can inactivate a custom segment by checking the Inactive box on the custom segment definition
page. When a custom segment is made inactive, it no longer appears on any forms, reports, searches,
or GL Impact pages, and is not available for SuiteBundler, SuiteFlow, SuiteTalk, SuiteAnalytics Connect,
Mass Update, or the Custom GL Lines Plug-in. However, an inactive segment is not permanently
removed, and can be used again when needed.
When you inactivate a parent custom segment but leave its child segment active, the child segment is
no longer filtered by the parent.
If you attempt to inactivate a custom segment that is used as a search filter or in a workflow, the
inactivation is not allowed and a message appears indicating why the custom segment cannot be
inactivated.
Inactive segments and their values are not visible on historical transactions, nor are they available
when entering new transactions.
To view inactive segments, check Show Inactives on the Custom Segments list page. Inactive segments
appear at the bottom of the list because they have no display order specified.
SuiteBuilder
Editing Custom Segments
321
Note: Inactive custom segments cannot be included in bundles. For more information see
Adding a Custom Segment to a Bundle.
Deleting a Custom Segment Definition
Depending on the Allow GL Custom Segment Deletion setting in General Accounting Preferences, you
may be able to delete custom segments. If custom segments cannot be deleted, you can inactive them.
Warning: If you delete a custom segment definition, both the custom segment definition
and all custom segment values and instances on records are removed anywhere they are used.
Consequently, custom segment values are removed from transactions, even in closed periods.
You cannot reverse the deletion of a custom segment.
To delete a custom segment, you must have the appropriate permissions. Authorized users include the
following:
■ Administrative users – Users assigned to either the Administrators or Full Access role.
■ Other users – Users assigned to a role that has the Full level of the Custom Segments permission.
You cannot delete a custom segment if it has dependent segments. For example, if another segment
references this segment in the Filtered by field, the first segment cannot be deleted.
To delete a custom segment definition:
1. Go to Customization > Lists, Records, & Fields > Custom Segments.
2. Locate the name of the segment you want to delete, and click the corresponding Edit link.
3. Click Actions to display a popup menu, then Delete.
The system displays a warning asking if you are sure you want to delete the custom segment.
4. Click OK.
Custom Segment Values
When a custom segment is displayed on a record, the segment’s values are displayed as choices in
a list. Depending on the configuration of the segment’s Type field, the user can save one or more
selections.
For details on designing and working with a segment’s list of values, see the following:
■ Value Creation for Custom Segments
■ Creating Hierarchies Among a Custom Segment’s Values
SuiteBuilder
Custom Segment Values
322
■ Edit a Custom Segment’s Values
■ Changing the Order of a Custom Segment’s Values
■ Making a Custom Segment’s Values Inactive
■ Deleting a Custom Segment’s Values
Value Creation for Custom Segments
Values can be created during the time that a custom segment is being created. Additionally, authorized
users can create values for existing segments.
For more details, see the following topics:
■ Required Permissions for Creating Custom Segment Values
■ Creating Values Within the Segment Definition
■ Creating Values by Clicking Manage Values
■ Creating Values Using the New Button
■ Creating Values from the Setup Menu
Creating Values Within the Segment Definition
In some cases, you may have permission to edit custom segments. In these cases, you can create
values by editing the segment’s Values sublist. One advantage of this approach is that you can view all
of the values in the list as you add new values.
To create segment values by editing the segment definition:
1. Edit the custom segment. Go to Customization > Lists, Records, & Fields > Custom Segments,
and click Edit.
2. On the Values subtab, add a line to the sublist. In the Value column, enter a name. This text is
displayed in the segment’s list, when the segment appears on a record.
3. If your account uses the Multi-Language feature and you want to create translations for the
value’s name, click in the Translation column. The system displays a popup window. Enter the
appropriate translations in the fields provided. When you are finished, click Done.
4. If another value in this sublist should be the parent of the value that you are adding, click in the
Parent column. The system displays a list. Select the name of the parent. For more information
about parent-child relationships, see Creating Hierarchies Among a Custom Segment’s Values.
NetSuite validates parent-child combinations to ensure that the values are unique. If the same
parent-child combination already exists, an error message appears.
5. If you want to hide the new value from users, make the value inactive. Note that making the
value inactive prevents the value from appearing as a standalone choice. However, if the value
is a parent to another value, the value still appears as a parent. To make a value inactive, click in
the Inactive column to display a box, and check the box.
SuiteBuilder
Custom Segment Values
323
6. If this segment uses filtering, you enter criteria for determining when this value is available.
Click Set Filters. A popup window appears, showing the classification fields you can use to set
conditions for this value’s availability. Choose the appropriate values, and then click Set. Click OK.
For more information about filtering, see Filtering for a Custom Segment.
7. If you have more values to add, repeat step 3.
8. Choose Sublist or Alphabetical to specify the display order of the values.
9. Click Save on the segment definition.
Creating Values by Clicking Manage Values
In some cases, you might not have permission to edit segments, but you do have permission to add
values for a segment. In these cases, to add a value, you must open a page designed specifically for
creating values. One way to navigate to this page is by viewing the segment definition and clicking a
button labeled Manage Values.
To create segment values by clicking Manage Values:
1. Go to Customization > Lists, Records, & Fields > Custom Segments.
2. In the list, select the name of the segment for which you want to create values. The system
opens the segment definition in view mode.
3. Click Manage Values. A list of the existing segment values appears.
4. Locate the button that lets you create a new value. The button’s name incorporates the segment
label. For example, if the segment’s label is Profit Center, the button is labeled New Profit Center.
Click the button to open a form for creating a new value.
5. Fill out the form as follows:
■ In the Name field, enter a name. This text is displayed in the segment’s list, when the
segment appears on a record.
■ If another value should be the parent of the value that you are adding, select that value in
the Filter list. NetSuite validates parent-child combinations to ensure that the values are
unique. If the same parent-child combination already exists, an error message appears. For
more information about parent-child relationships, see Creating Hierarchies Among a Custom
Segment’s Values.
■ If this segment uses filtering, the page displays one or more lists with headings that begin
with the words Filter by. In each box, select the appropriate value. To select more than one
value, use the control key. For more information about filtering, see Filtering for a Custom
Segment.
■ If you want to hide the new value from users, make the value inactive. Note that making
the value inactive prevents the value from appearing as a standalone choice. However, if
the value is a parent to another value, the value still appears as a parent. To make a value
inactive, check the Inactive box.
If you want to hide the new value from users, check the Inactive box.
If your account uses the Multi-Language feature and you want to create translations for the
value’s name, enter the translations in the fields provided.
SuiteBuilder
Custom Segment Values
324
6. Click Save.
Creating Values Using the New Button
In some cases, you may have permission to create values for a segment, and you may also have
permission to work with the segment in another context. For example:
■ You may have permission to select a value for a segment when it appears on a record that you have
permission to edit.
■ You may have permission to create values for two different segments that have some relationship
to each other. For example, one segment may be used to filter the other segment’s values.
In these cases, when you come across the segment on another record, you can use the New button to
create values. This approach lets you create a new segment value without navigating away from the
record you are working on. The new value is immediately available for selection in the record.
To create values using the New button:
1. During the time that you are working on the record that shows the segment, move your cursor
to the right of the segment label.
The system displays a New button.
2. Click New.
The system displays a popup form that lets you create a new value.
3. Fill out the form as follows:
■ In the Name field, enter a name. This text is displayed in the segment’s list, when the
segment appears on a record.
■ If another value should be the parent of the value that you are adding, select that value in
the Filter list. NetSuite validates parent-child combinations to ensure that the values are
unique. If the same parent-child combination already exists, an error message appears. For
more information about parent-child relationships, see Creating Hierarchies Among a Custom
Segment’s Values.
■ If this segment uses filtering, the page displays one or more lists with headings that begin
with the words Filter by. In each box, select the appropriate value. To select more than one
value, use the Ctrl key.
For more information about filtering, see Filtering for a Custom Segment.
■ If you want to hide the new value from users, make the value inactive. Note that making
the value inactive prevents the value from appearing as a standalone choice. However, if
the value is a parent to another value, the value still appears as a parent. To make a value
inactive, check the Inactive box.
SuiteBuilder
Custom Segment Values
325
■ If your account uses the Multi-Language feature and you want to create translations for the
value’s name, enter the translations in the fields provided.
4. Click Save.
Creating Values from the Setup Menu
Custom segments appear on the Classification menu in Setup > Company > Classifications at the
bottom of the classification group. In the following example, the user created a Business Area custom
segment.
To add a value for the custom segment:
1. Go to Setup > Company > Classifications > Custom Segment Name > New.
2. In the Name field, enter the value.
3. In the Parent list, select the parent for this value, if required.
4. Click Save. If the display order for the custom segment values is set to Sublist, the new value appears at the end
of the list of values. If the display order for the custom segment values is set to Alphabetical, the new
value is incorporated into the alphabetical list of values.
SuiteBuilder
Custom Segment Values
326
Creating Hierarchies Among a Custom Segment’s Values
Within a custom segment’s list of values, you can create a hierarchy, which makes a value a parent to
one or more other values. When the segment is available on a record, the parent-child relationships are
denoted with a colon.
A segment value can also have a grandparent and more senior levels of hierarchy.
If you have a value that should exist only to be the parent of another value, you might want to make
the value inactive. Making a value inactive prevents the value from appearing as a standalone choice in
the segment’s list but permits the value to remain visible as a parent. To make a value inactive, check
the Inactive box associated with that value.
To create a parent-child relationship, you edit the value that should be the child, as described in the
following procedure.
To make a value the child of another value:
1. Open a page where you can edit the value. Depending on your privileges, you may be able to
make your changes by editing the custom segment’s Values sublist. Otherwise, you can view the
segment definition, click the Manage Values button, and open the appropriate value for editing.
For details, see Edit a Custom Segment’s Values.
2. Do one of the following:
■ If you are editing the Values sublist, locate the value in the sublist. Click in the Parent column
to enable a list. Set the list to the desired parent value. Click Save.
SuiteBuilder
Custom Segment Values
327
■ If you have opened a single value for editing, the Parent list should be visible on the page. Set
the list appropriately. Click Save.
NetSuite validates parent-child combinations to ensure that the values are unique. If you
have entered a duplicate of an existing parent-child combination, an error message appears.
Edit a Custom Segment’s Values
For details on making changes to a custom segment’s values, see the following topics:
■ Required Permissions for Editing Custom Segment Values
■ Editing a Custom Segment’s Values by Updating the Segment Definition
■ Editing a Custom Segment’s Values by Clicking Manage Values
Required Permissions for Editing Custom Segment Values
To be able to edit a custom segment’s values, a user must have the appropriate privileges. There are
several permission configurations that can result in users having this access.
Examples of users with various permission configurations are described in the following table, along
with the procedures that each group can use to modify values.
Description
Permitted Methods for Editing Values
Users assigned to either the Administrators or Full
Access role.
Editing a Custom Segment’s Values by Updating
the Segment Definition
Editing a Custom Segment’s Values by Clicking
Manage Values
Users with both of the following:
Editing a Custom Segment’s Values by Updating
the Segment Definition
Editing a Custom Segment’s Values by Clicking
Manage Values
■ The Edit or Full level of the Value Management
Access permission
■ The Edit or Full level of the Custom Segments
permission
Users with both of the following:
■ The Edit or Full level of the Value Management
Access permission
Editing a Custom Segment’s Values by Clicking
Manage Values
■ The View level of the Custom Segments
permission
Note: Be aware that even if users have only the Edit or Full value of the Custom Segments
permission, they can assign themselves the Value Management Access permission for any
custom segment.
Editing a Custom Segment’s Values by Updating the Segment
Definition
If you have the appropriate privileges, you can modify a custom segment’s values by editing the
segment’s Values sublist. One advantage of this approach is that you can view all of the values in the
list as you make changes.
SuiteBuilder
Custom Segment Values
328
For details on the permissions required to complete this procedure, see Required Permissions for
Editing Custom Segment Values. For an alternate method of editing values, see Editing a Custom
Segment’s Values by Clicking Manage Values.
To edit a custom segment’s values by updating the segment definition:
1. Edit the custom segment.
2. Locate the value you want to change in the Values subtab. Make any of the following changes, as
appropriate:
■ In the Value column, you can change the value’s name. The value’s name is displayed in the
segment’s list when the segment appears on a record.
■ If your account uses the Multi-Language feature, and you want to change translations for the
value’s name, click in the Translation column. The system displays a popup window. Modify
the translations as needed. When you are finished, click Done.
■ If you want to create a parent or change the value’s parent, click in the Parent column.
The system displays a list. Adjust the list as appropriate. For details about parent-child
relationships, see Creating Hierarchies Among a Custom Segment’s Values.
■ If you want to change whether this value is visible to users, click in the Inactive column
to display a check box. Check or clear the box as appropriate. Note that making the value
inactive prevents the value from appearing as a stand-alone choice. However, if the value is a
parent to another value, the value still appears as a parent.
■ If this segment uses filtering, you may want to create, change, or clear criteria for determining
when this value is available. In this case, click the name of the value to display a series of
buttons. Click Set Filters to display a popup window. The popup window shows the other
classification fields you can use to set conditions for this value’s availability. Make the
appropriate changes. Then click Set to close the window. Click OK to close the series of
buttons and save the filtering choices. For more information about filtering, see Filtering for a
Custom Segment.
3. If you have more values to modify, repeat step 2.
4. Click Save on the segment definition.
Editing a Custom Segment’s Values by Clicking Manage Values
One way to edit a custom segment’s values is to view the segment definition and click the button
labeled Manage Values. You should use this method if you do not have permission to edit the segment
definition.
Note: Custom segment values on transactions that impact GL cannot be edited in closed
periods.
To edit a custom segment’s values by clicking Manage Values:
1. Go to Customization > Lists, Records, & Fields > Custom Segments.
SuiteBuilder
Custom Segment Values
329
2. In the list, select the name of the segment for which you want to edit values.
The system opens the segment definition in view mode.
3. Click Manage Values. A list of the existing segment values appears.
4. Locate the value you want to modify and click the corresponding Edit button.
5. Make any of the following changes, as appropriate:
■ In the Name column, you can change the value’s name. The value’s name is displayed in the
segment’s list when the segment appears on a record.
■ If you want to create a parent or change the value’s parent, adjust the Parent list. For more
information about parent-child relationships, see Creating Hierarchies Among a Custom
Segment’s Values.
■ If this segment uses filtering, the page displays one or more list boxes. These lists have
headings that begin with the words Filter by. In each list, change the selections as
appropriate. You can use the control key to select more than one value or to clear a value. For
more information about filtering, see Filtering for a Custom Segment.
■ If you want to change whether this value is visible to users, check or clear the Inactive box.
Note that making the value inactive prevents the value from appearing as a stand-alone
choice. However, if the value is a parent to another value, the value still appears as a parent.
6. Click Save.
Changing the Order of a Custom Segment’s Values
When you add values to a custom segment, those values are displayed in a list on a record.
There are two ways to configure the sequence of values. You can sort them alphabetically, or you can
have them display in the sequence in which they are listed on the segment definition. The latter option
is the default.
To change the way values are ordered, you must have permission to edit the segment definition.
To reorder segment values:
1. Edit the custom segment.
SuiteBuilder
Custom Segment Values
330
2. On the Values subtab, locate the Display Order label.
3. Do one of the following:
■ To make the values appear in the order shown on the segment’s Values sublist, choose
Sublist.
■ To make the values appear in alphabetical order, choose Alphabetical.
4. Click Save.
Making a Custom Segment’s Values Inactive
In some cases, you may need to hide one or more of a custom segment’s values. To hide a value, you
make it inactive. Be aware that when you make a value inactive, it does not appear as a choice in the
segment’s list. However, if the value is a parent to another value, it still appears as a parent.
There are two ways to make a segment’s value inactive:
■ Making a Value Inactive by Editing the Segment Definition
■ Making a Value Inactive by Clicking Manage Values
If appropriate, you can also delete a segment’s values. For details, see Deleting a Custom Segment’s
Values.
Making a Value Inactive by Editing the Segment Definition
In some cases, you may have a set of permissions that includes the ability to edit the segment
definition. In these cases, you can make a value inactive by directly editing the segment’s Values sublist.
One advantage of this approach is that you can view all values as you modify the list.
To make a value inactive by editing the segment definition:
1. Edit the custom segment.
2. Locate the value you want to hide. Click in the Inactive column to display a check box.
3. Check the Inactive box.
4. Click Save.
Making a Value Inactive by Clicking Manage Values
In some cases, you might not have permission to edit segments, but you do have permission to
edit values for a segment. In these cases, to make a value inactive, you must open a page designed
specifically for managing the value. You navigate to this page by viewing the segment definition and
clicking the button labeled Manage Values.
SuiteBuilder
Custom Segment Values
331
To make a value inactive by clicking Manage Values:
1. Go to Customization > Lists, Records, & Fields > Custom Segments.
2. In the list, select the name of the segment for which you want to edit values.
The system opens the segment definition in view mode.
3. Click Manage Values. A list of the existing segment values appears.
4. Locate the value you want to modify and click the corresponding Edit button.
5. Check the Inactive box.
6. Click Save.
Deleting a Custom Segment’s Values
In some cases, you may need to delete one or more of a custom segment’s values. There are two ways
to delete a segment’s values:
■ Deleting Values Within the Custom Segment Definition
■ Deleting Values by Clicking Manage Values
You cannot delete a value if that value has been saved on an instance of a record. If you try to delete
this type of value, the system displays the following error: The segment value cannot be deleted
because a child record exists.
As an alternative to deletion, consider making the value inactive.
If a period is closed, you cannot change custom segment values that impact GL on any transactions in
the period.
Deleting Values Within the Custom Segment Definition
In some cases, you may have a set of permissions that includes the ability to edit the segment
definition. In these cases, you can delete values by editing the segment’s Values sublist. One advantage
of this approach is that you can view all values as you modify the list.
To delete a custom’s segment value from within the segment definition:
1. Edit the custom segment.
2. Locate the value you want to delete. Click anywhere in that row to enable a series of buttons.
3. Click Remove.
4. Click Save.
Deleting Values by Clicking Manage Values
In some cases, you might not have permission to edit segments, but you do have permission to delete
values for a segment. In these cases, to delete a value, you must open a page designed specifically
for managing the value. You navigate to this page by viewing the segment definition and clicking the
button labeled Manage Values.
To delete values by clicking Manage Values:
1. Go to Customization > Lists, Records, & Fields > Custom Segments.
2. In the list, select the name of the segment for which you want to edit values.
The system opens the segment definition in view mode.
SuiteBuilder
Custom Segment Values
332
3. Click Manage Values. A list of the existing segment values appears.
4. Locate the value you want to modify and click the corresponding Edit button.
5. Point to the Actions label to display a popup menu.
6. Click Delete.
The system displays a message asking if you are sure you want to delete the record.
7. Click OK.
Custom Segments in Record Searches
After you have applied a custom segment to a record type, authorized users can reference that
segment when searching for records. When you use advanced search, you can use custom segments
as search filters and search columns. On both the Criteria and Results subtab, each segment appears
among the other available fields from the record. Each segment’s label is followed by the word Custom
in parentheses.
Note that if you are searching a transaction, the name of the custom segment appears twice in the list
of fields. One instance represents the custom segment as a transaction column. The other represents
the segment as a body field. The segment appears twice even if you did not apply the segment to both
a transaction sublist and the transaction body.
To use a custom segment as a search filter or column, you must have the Edit level of the Search/
Reporting Access permission for that segment.
To view a saved search that includes the segment in its results, you must have at least the View level of
the Search/Reporting Access permission. Otherwise, the column referencing segment data is hidden.
For more details on the Search/Reporting Access permission, see Granting Roles Permission to Use
Segments in Searches and Reports.
For full details on running an advanced search, see the help topic Defining an Advanced Search.
Note: If you want to search for a custom segment definition, you can use the Custom Segment
search type. Go to Reports > New Search and click Custom Segment.
Customizing a Report by Using Custom Segments
After you have applied a custom segment to a record type, authorized users can reference that
segment when customizing reports. You can use custom segments as columns or filters.
SuiteBuilder
Customizing a Report by Using Custom Segments
333
When you click Edit Columns or Filters in the Report Builder, you can find segments in the Add
Fields list. Each segment appears under the label representing the record type where it was applied.
Segments are listed alphabetically with other available fields.
For transactions, the name of the custom segment appears twice in the list of fields. One instance
represents the custom segment as a transaction column. The other represents the segment as a body
field. The segment appears twice even if you did not apply the segment to both a transaction sublist
and the transaction body.
For reports other than financial statements, you can add a custom segment as a report dimension to
the current report. Select the custom segment in the Column list in the report footer. The selection
applies only to the current report, so you need to repeat the selection each time you run the report.
In the Financial Report Builder, you can add a custom segment as a dimension for a financial
statement. Select the custom segment in the View Columns By list on the Edit Columns page. This
selection persists whenever the custom financial statement is run.
To customize a report to include a custom segment, you must have the appropriate Search/Reporting
Access permission level for that segment. Similarly, to view a report that filters by or references custom
segments, you must have the appropriate level. For more details on this permission, see Granting Roles
Permission to Use Segments in Searches and Reports.
For full details on customizing reports, see the help topic Report Customization.
Adding a Custom Segment to a Bundle
You can create bundles that include custom segments. When creating the bundle, custom segments
are listed under Custom Lists/Records on the Select Objects page of the Bundle Builder. For more
information about SuiteBundler, see the help topics SuiteBundler Overview and Creating a Bundle with
the Bundle Builder.
For the limitations of custom segments in bundles, see the following:
■ Creating and Installing Bundles
■ Updating Bundles
■ Uninstalling Bundles
Creating and Installing Bundles
When a bundle is installed, all selected objects are copied as well as their settings, such as GL
impact and where the segment will be used. Whenever a custom segment that is part of a parent/
SuiteBuilder
Adding a Custom Segment to a Bundle
334
child hierarchy is included in a bundle, all segments in the hierarchy are included in the bundle
automatically.
Locked Custom Segments in Bundles
If a custom segment is locked in the Bundler, you cannot change it from the user interface in the target
account.
If permissions are assigned for a locked custom segment and a standard role, those permission levels
are included with the bundle. For locked custom segments, no one can edit the custom segment
definition and only an administrator and the roles specified can manage custom segment values.
To add or change the roles that are allowed to manage custom segment values, you can assign the
value management permission to a custom role for specific custom segments.
To assign the value management permission to a custom role:
1. Go to Setup > Users/Roles > Manage Roles.
2. Click Edit next to the custom role that you have created.
Note: You cannot assign access to locked custom segments for built-in NetSuite roles.
3. On the Permissions > Setup subtab, select Custom Segments from the Permission list.
4. In the Level field, select the level of access that this role requires for custom segments.
5. On the Permissions > Custom Record subtab, select the custom segment from the Record list.
6. In the Level field, select the level of access that this role requires for custom segment values.
7. Click Save.
On the Permissions subtab of the Custom Segment configuration, the added custom role and value
management access level are shown. No record access or search/reporting access levels are set for the
custom role, so the default settings are applied.
Updating Bundles
When an installed bundle is updated in a target account, the custom segment definitions in the source
bundle overwrite the settings in the account, with the following exceptions:
■ Segment use settings are merged
■ Display order is not changed
■ GL Impact flags are not changed
■ Segment values are preserved or merged.
For any custom segment that includes data, a preference can be set that is applied during bundle
updates. This preference indicates whether: the target account custom segment data should be
preserved, or data from the bundled custom segment and target account custom segment should
be merged, during the update. The default is to preserve data.
A list is available for custom segments on the Set Preferences page of the Bundle Builder. The list
includes Preserve Data and Merge Data options. When the Preserve Data option is selected, the
bundle update does not make any changes to target account custom segment values. When the
Merge Data option is selected, the bundle update merges custom segment values, without deleting
any values from the target account custom segment. The avoidance of target account custom
SuiteBuilder
Adding a Custom Segment to a Bundle
335
segment value deletion is due to the possibility that a custom segment may have GL impact. In
addition, no option is provided to replace data for a custom segment, also to avoid unintentional
changes to GL impact.
For more information about setting bundle preferences, see the help topics Step 4 Set Preferences
and Bundle Object Preferences.
If the custom segment type in the source account is changed, the type is updated on the custom
segment in the target account. Be aware of the effect the change will have:
■ If the custom segment type is changed from list/record to multi-select, the segment is removed
from any transaction sublists. Transaction column applications are not valid for multi-select lists.
■ If the custom segment type is changed from multi-select to list/record, data may be lost.
If the Allow GL Custom Segment Deletion preference is enabled, an update to a bundle can delete a
custom segment. If the Allow GL Custom Segment Deletion preference is not enabled, an error appears
when you attempt to update a bundle containing a deleted custom segment.
You should avoid deleting custom segments using the bundle update. The best practice is to inactivate
any custom segments that are no longer needed.
Uninstalling Bundles
If the Allow GL Custom Segment Deletion setting is enabled, bundles containing custom segments can
be uninstalled. If the Allow GL Custom Segment Deletion setting is not enabled, an error appears when
you attempt to uninstall a bundle containing a custom segment.
Using Custom Segments in Workflows
If appropriate, you can reference custom segments when working with workflows. You can do either of
the following:
■ Refer to custom segments when they appear as fields on other record types. For example, you
can configure a segment field to default to a particular value. For details, see Custom Segments as
Fields.
■ Use workflows to manage the records that represent custom segment values. For details, see
Records that Represent Custom Segment Values.
Custom Segments as Fields
When a custom segment has been applied to a record type, your workflow can reference the segment
as it would any of that record type’s fields. For examples, see the following sections:
■ Setting Field Values
■ Setting Workflow Conditions
Setting Field Values
If appropriate, you can use the Set Field Value action to populate a custom segment field with a value.
This approach can be an alternative to using the custom segment’s Source List field (which is described
in Dynamic Default Value Sourcing for Custom Segments). Compared with the Source List field, the Set
Field Value action allows for greater granularity when configuring the behavior of defaults.
SuiteBuilder
Using Custom Segments in Workflows
336
For example, with a workflow, you can set a different sourcing method for each specific record type.
By contrast, in some cases, the custom segment’s Source List field lets you choose only one defaulting
method, and that method is shared by multiple record types. For example, you can select only one
Source List value for all transaction types. However, with a workflow, you could use the Set Field Value
action to create a different defaulting method for each specific transaction type.
For example, suppose you were editing a workflow that affects the Cash Sale transaction type. For the
purpose of this example, assume also that you have a custom segment called Sales Region that has
been applied to both the Cash Sale transaction type and the Customer record type. You might want
the Sales Region value used on each cash sale to match the value of the segment as it appears on the
corresponding customer record.
To configure this behavior, use the fields under the Parameters heading in the Workflow Action
window. You identify the segment for which you want to create the default by using the Field list on the
left side of the page, then use the fields under the Value heading to configure the sourcing behavior.
Specifically, you select the From Field radio button. Then you use the Record list to identify the record
that will provide the default value. Use the Field list to identify the source field.
The Set Field Value action also provides multiple options for determining when the segment field
will be populated with a default value. By contrast, when you use the custom segment’s Source List
field, the segment is populated with the default value only when the value of the source field is set
or changes. Typically, this event takes place when the user opens a new record, if the source field
populates automatically, or when the user is editing the record. With a workflow, you could configure
the value to be populated at different times, including after the user clicks Save and is no longer
looking at the record. You configure this behavior in the Workflow Action window. Specifically, you use
the Trigger On list.
SuiteBuilder
Using Custom Segments in Workflows
337
Similarly, with a workflow, you could choose to have the segment value be set only when the record is
updated, rather than when it is created (or vice versa). You do this by editing the workflow and making
choices under the Event Definition heading.
For full details on the Set Field Value action, see the help topic Set Field Value Action.
Setting Workflow Conditions
Another time you may want to refer to a segment as a field is when setting workflow conditions. For
example, you could create a condition that a workflow runs only if the segment is set to a certain value.
In this case, open the Workflow Condition window as you would when setting any condition. In the
Field list, select the name of the segment. In the Value column, add the specific text that you want to
reference. For example, in the following screenshot, a condition dictates that a workflow will run only
when the Sales Region segment is set to the value Lima.
For more information on workflow conditions, see the help topic Workflow Conditions.
Records that Represent Custom Segment Values
When you create a value for a custom segment, NetSuite creates a record to represent that value. For
example, consider a custom segment called Sales Region that has values such as Americas and EMEA.
In this case, the values Americas and EMEA are records of type Sales Region. If appropriate, you could
create a workflow that handles these records.
This type of workflow is used only if you open a form to create or work with the segment value. The
workflow is not used when you add or update values by modifying the Values sublist of the custom
segment definition.
You might use a workflow that manipulates segment values in the following type of situation: Suppose
users need to create new values for the Sales Region custom segment. You might prefer that these
values be inactive by default. In this case, you could create a workflow that automatically checks the
Inactive box when the user opens a form for creating a new value. To configure this behavior, create
a Set Field Value action. In the Workflow Action window, choose Inactive in the Field list. Under Value,
select a static value of checked.
SuiteBuilder
Using Custom Segments in Workflows
338
You could also take other actions. For example, you could configure a workflow to automatically create
a new value for an existing custom segment. To configure this behavior, you use the Create Record
action. In the Workflow Action window, you make changes under the Parameters heading. Specifically,
in the Record Type list, select the custom segment for which you want to create a value. Minimally, you
also have to add logic for populating the Name field of the new value.
For more details on the Create Record action, see the help topic Create Record Action.
Important: Any workflow you create to manage a custom segment’s values affects the
behavior of values only in certain cases. The workflow is used only if you open a value in a
separate form, as described in Creating Values by Clicking Manage Values, Editing a Custom
Segment’s Values by Clicking Manage Values, and Creating Values Using the New Button. This
type of workflow does not affect changes that you make when editing the Values sublist of the
custom segment definition.
SuiteScript and Custom Segments
Scripting is supported for custom segment values and for custom segments as fields. The following are
supported:
■ On record types that are exposed to SuiteScript, you can use SuiteScript to set values for custom
segments that exist as fields.
■ You can use SuiteScript to create values for existing custom segments.
Scripting is not supported for custom segment definitions.
Web Services and Custom Segments
The following web services support is available for custom segments:
■ In many cases, you can use web services to set values for custom segments that exist as fields.
You can set values on instances of record types that are exposed to web services and have a
CustomFieldList defined as part of the exposure.
■ You can use web services to create values for existing custom segments.
SuiteBuilder
CSV Import and Custom Segments
339
CSV Import and Custom Segments
You can import values for an existing custom segment using the CSV Import. For example, with the
segment called Sales Channel, you could use the Import Assistant to import new values such as Catalog
and Partner Outlet.
For more information about this import, see the following:
■ Prerequisites for Importing Values
■ Segments Appear Under Classification Import Type
Prerequisites for Importing Values
Before you can import values for custom segments, you must do both of the following:
■ Enable the Custom Segments) feature at Setup > Company > Enable Features, on the SuiteCloud
subtab.
■ Create at least one custom segment in your account. You can create custom segments at
Customization > Lists, Records, & Fields > Custom Segments > New.
By default, only administrators and users with the Full Access role have permission to import custom
segment values. However, you can grant permission to other roles. The following permissions are
required:
■ The global Custom Segments permission – You can add this permission on the Permissions >
Setup subtab of the role record. At least the View level is required.
■ The Value Access Level permission for the custom segment – You can add this permission on
the Custom Record subtab of the role record. To be able to add values, the role needs at least the
Create level. To be able to update values, or to be able to set the parent for a value, the user needs
at least the Edit level.
Segments Appear Under Classification Import Type
To import values, set the Import Type to Classification. In the Record Type list, the system displays
both the names of your custom segments and any other classifications enabled in your account. For
example, custom segments named Brand and Product Line would be listed with Class, Department,
and Location, if those features were enabled.
For each import, you can define values for the following fields:
SuiteBuilder
CSV Import and Custom Segments
340
■ The name of the value.
■ A parent for the value. For example, if your segment has a value called Retail Store, that value might
be the parent of values such as Express Kiosk and Superstore.
■ Inactive, which determines whether the segment value is available to be selected.
■ Translations of the value’s name, if your account uses the Multi-Language feature.
For more information, see the help topic Custom Segment Value Import.
SuiteBuilder
Custom Centers
341
Custom Centers
You can create custom centers that you apply to custom roles. To use the Custom Centers feature,
you must enable the Custom Records feature, at Setup > Company > Setup Tasks > Enable Features >
SuiteCloud.
NetSuite Centers determine which tabs and links are available for groups of similar user roles. For
example, the Sales Center is shared by the Sales Rep, Sales Manager, and Sales Administrator roles and
includes tabs such as Leads, Opportunities and Forecast. (For a visual representation of a center, see
Custom Centers in the SuiteBuilder Overview section.)
Each tab contains links to transactions, lists and setup pages. The links that appear are based on the
user's role and the permissions the role is granted. For example, users assigned to the Sales Rep role
would see different links on the Forecast tab than users with the Sales Administrator role because of
permissions granted to each role. However, both roles share the Sales Center.
To create a custom center, you create a center record and then create its custom tabs. When you create
custom tabs, you choose the center you want the tab to appear in. The center can be either an existing
or custom center. You also choose the links and portlets that will appear in the center. You can only
customize centers and tabs if the Custom Records feature is enabled.
Note: Users can only use links and information that their roles have access to. To customize
roles, go to Setup > Users/Roles > Manage Roles. You must create a new role to apply a custom
center to it. To create a new role, click New on the Manage Roles page, select your custom
center in the Center Type field and customize your new role.
Be aware that newly enabled feature menu items are not automatically added to custom centers. You
must manually add menu items to custom centers after a feature is enabled.
See the following topics.
■ Creating and Editing Custom Centers
■ Creating Center Tabs
■ Creating Center Categories
■ Creating Center Links
■ Translating Custom Centers, Tabs, Categories, and Links
■ Assigning a Custom Center to a Custom Role
Creating and Editing Custom Centers
To create a custom center, go to Customization > Centers and Tabs > Centers > New. Enter a name for
your center and click Save.
Next, you create the tabs and links you want to appear in your center. To add tabs to a center, go to
Customization > Centers and Tabs > Centers, click the Edit link next to the center, and click the New Tab
button. Or, you can go to Customization > Centers and Tabs > Center Tabs > New.
To change the order of the tabs in a custom center, go to Customization > Centers and Tabs > Centers
and click the Edit link next to the center. The definition page for the center lists the tabs in the order
in which they are displayed. To change the order, you can select a tab listing and drag it to a different
place in the order. You can also select a tab listing and click the Move to Top or Move to Bottom
buttons.
SuiteBuilder
Creating and Editing Custom Centers
342
You can only customize centers if the Custom Records feature is enabled.
Note: If the Multi-Languages feature is enabled in your account, you can define translated
center names to be used for different language settings. See Translating Custom Centers, Tabs,
Categories, and Links.
Creating Center Tabs
You use center tabs to add custom tabs to roles. Center tabs can include categories of links to NetSuite
pages, custom records, Suitelets, or external web pages. You can also designate which portlets you
want to appear on the dashboard when users click the tab. You can only customize center tabs if the
Custom Records feature is enabled.
In the following figure, Documents, Setup, Customization, and Support are the tabs. Off the Documents
tab, Files, Templates, and Mail Merge are the categories. Off of the Files category are the links to the
File Cabinet, SuiteScripts, Attachments Received, and so on.
Note that if you want to create a tab that displays internal information in your account, you should
create your own custom intranet tab. For more information, see the help topic Publishing Information
to an Internal Site.
To create a center tab:
1. Go to Customization > Centers and Tabs > Center Tabs > New. A Custom Center Tab page
appears.
2. In the Label field, enter a name for the tab.
Users click the name to view the tab's contents.
3. In the Center field, choose the center where you want the tab added.
If you want to show the tab in all centers, select -All-.
SuiteBuilder
Creating Center Tabs
343
Note: If you create a custom center tab and specify that it be shown in all centers, it will
not appear in a dashboard that is already published.
4. On the Categories subtab, in the Label column, enter a name for a category of links. After
creating your categories, you will later follow the steps in Creating Center Links to assign specific
links to each category.
Warning: Step 4 is for adding custom categories to custom tabs. If you want to add
custom categories to standard, built-in NetSuite tabs, see Creating Center Categories.
5. Click Add.
6. Add all of the category links that you want to appear on the tab.
7. Click the Portlets subtab.
8. In the Type column, choose Links.
9. In the Column section, choose to place the portlet on the left, right or in the middle of your tab.
10. If you want the link to show, check the Show box.
11. Click Add.
12. Add all the required portlets to the tab.
13. Click the Audience subtab.
14. Specify who can access the custom center. For each area, you can make the custom center
available to all by checking the Select All box. Indicate the areas that have access. You can
specify:
■ roles
■ employees — giving permission to specific employees could create extra maintenance
requirements when employees change roles or leave the company. The best practice is to
assign a custom center to a role instead of directly to an employee.
■ departments
■ groups
■ customers
■ vendors
SuiteBuilder
Creating Center Tabs
344
■ partners
Note: If the Multi-Languages feature is enabled in your account, you can define
translated tab names to be used for different language settings. See Translating Custom
Centers, Tabs, Categories, and Links.
15. Click Save.
16. Next, add links to your categories. See Creating Center Links for details.
Note: If you return to the tab and do not see the changes you have made, clear your browser
cache. To do so in Internet Explorer, click Tools, and select Internet Options. In the Temporary
Internet Files section, click Delete Files, and then click OK.
Creating Center Categories
Use the following steps to add custom categories to standard, built-in NetSuite tabs. After creating
custom categories for standard tabs, you can then add links to each category. The links can go to
NetSuite pages, custom records, Suitelets, or external websites. You can only customize center
categories if the Custom Records feature is enabled.
Note: To add custom categories to custom tabs, see Creating Center Tabs. On the Categories
subtab, in the Label column, enter a name for a category of links. After creating your categories,
you will later follow the steps in Creating Center Links to assign specific links to each category.
To add custom categories to standard tabs:
1. Go to Customization > Center and Tabs > Center Categories > New. A Center Category page
appears.
2. On the Center Category page:
a.
In the Label field, provide a UI label for the category.
b.
In the ID field, provide an ID for the category if desired.
c.
From the Center Type list, choose an existing center.
d.
From the Center Tab list, choose one of the standard, built-in NetSuite tabs (also referred
to as sections).
SuiteBuilder
Creating Center Categories
e.
From the Insert Before list, specify where you want to insert your custom category.
f.
From the Link list, choose the appropriate link.
345
The links that appear in the lists are links to other NetSuite pages, custom records,
Suitelets, and external web pages. Links to NetSuite pages, custom records, and Suitelets
will appear by default.
If you want to select a link to an external website, you must have already created that link
by going to Customization > Centers and Tabs > Center Link. (See Creating Center Links for
details.) After the link is created, it appears in the Link list.
g.
In the Label field, provide a UI label for the link.
h.
In the Short List column, to indicate that the link should appear in a portlet when the link
is in a narrow column of the dashboard, check the box.
Note: If the Multi-Languages feature is enabled in your account, you can
define translated category labels to be used for different language settings. See
Translating Custom Centers, Tabs, Categories, and Links.
3. Click Add.
4. Click Save.
Note: If you return to the tab and do not see the changes you have made, clear your browser
cache. To do so in Internet Explorer, click Tools, and select Internet Options. In the Temporary
Internet Files section, click Delete Files, and then click OK.
Creating Center Links
You can create links that appear on your own custom categories as well as on standard, built-in
NetSuite categories. Center links can take users to other pages within NetSuite, custom records,
Suitelets, or external websites. You can only customize center links if the Custom Records feature is
enabled.
To create links to NetSuite pages, custom records, and Suitelets:
1. Go to Customization > Centers and Tabs > Center Categories.
2. On the Custom Center Categories list page, click Edit next to the category you want to add links
to.
SuiteBuilder
Creating Center Links
346
3. On the Custom Center Category page, in the Link field, select the NetSuite page, custom record,
or Suitelet you want to link to.
Note: For custom records, you can also create links using the Links subtab on the
Custom Record Type definition page. If you want a link to appear on a standard category,
you must set the link on the Custom Record Type definition page. See Creating Links to
Custom Records for details. Also note that a link to a custom record type does not display
for users that do not have permission to access that custom record type.
4. Provide a UI label for the link. The label appears off to the side of the category in the UI.
Note: If the Multi-Languages feature is enabled in your account, you can define
translated link labels to be used for different language settings. See Translating Custom
Centers, Tabs, Categories, and Links.
5. Click Add.
6. Add all of the center links required.
7. Click Save.
To create links to web pages:
1. Go to the website or NetSuite page for which you want to create a link. Right-click the address
bar and select Copy.
2. Go to Customization > Centers and Tabs > Center Links.
3. In the Label column, enter a name for your custom link.
4. In the URL column, enter the URL for the link.
5. Click Add.
Note: The link will open in the existing window. You cannot set up a link to open in a
new window.
6. Add all of the web links required.
7. Click Save.
8. Add the link to a custom category by going to Customization > Centers and Tabs > Center
Categories.
9. Click Edit next to the category.
SuiteBuilder
Creating Center Links
347
10. From the Link list, select the label of your custom link.
11. Click Add.
12. Click Save.
Translating Custom Centers, Tabs, Categories, and
Links
If the Multi-Language feature is enabled in your account, you can translate labels for custom centers,
tabs, categories, and links, so that they match the language of the NetSuite user interface, set by each
user at Home > Set Preferences. For details, see the following:
■ Translating Custom Centers
■ Translating Custom Center Tabs
■ Translating Custom Center Categories
■ Translating Custom Center Links
■ Displaying Translated Centers
Important: Before you can translate these labels, you need to select translation languages
at Setup > Company > Preferences > General Preferences, on the Languages subtab. The
Languages subtab lists both system-supported languages that can be used for the NetSuite
user interface (and are available at Home > Set Preferences), and additional languages that
can used for website translations only (and are not available at Home > Set Preferences). You
should only enter translations for system-supported languages, because these are the only
languages that can be displayed in the user interface. For details, see the help topic Configuring
Multiple Languages.
Translating Custom Centers
You can define translated labels for a custom center when you edit the center. (You must first create
and save it.) After the center has been created, go to Customization > Centers and Tabs > Centers, click
Edit, and enter translated labels on the Translation subtab.
SuiteBuilder
Translating Custom Centers, Tabs, Categories, and Links
348
Translating Custom Center Tabs
You can define translated labels for a custom center tab when you first create it or when you edit it
later. Go to Customization > Centers and Tabs > Center Tabs > New and enter translated labels on the
Translation subtab. These labels translate the Name field.
Translating Custom Center Categories
You can define translated labels for a custom center category when you first create it or when you edit
it later. Go to Customization > Centers and Tabs > Center Categories > New and enter translated labels
on the Translation subtab. These labels translate the Category field.
SuiteBuilder
Translating Custom Centers, Tabs, Categories, and Links
349
Translating Custom Center Links
You can define translated labels for custom center links on the Custom Center Category page that lists
the links. Go to Customization > Centers and Tabs > Center Categories, select a center category, and
enter link translations on the Values subtab.
Displaying Translated Centers
The following screenshot shows a custom center, tab, category, and link in U.S. English:
SuiteBuilder
Translating Custom Centers, Tabs, Categories, and Links
350
The following screenshot shows the translations for these labels when the user preference is changed
to Spanish at Home > Set Preferences:
Assigning a Custom Center to a Custom Role
You can assign the custom center to a custom role.
Note: You can assign a custom center only to a new custom role. If you customize an existing
NetSuite role, the standard center is used.
To assign a custom center to a custom role:
1. Go to Setup > User/Roles > Manage Roles > New. A Role window appears.
2. Enter a name and ID for the new role.
3. In the Center Type field, select the custom center that you created.
4. Enter all of the other required settings for the new role. For information, see the help topic
Customizing or Creating NetSuite Roles.
5. Click Save.
Important: When you create a custom role and click Save, you cannot change the center
assigned to that role.
Testing a new Custom Center
To see the new custom center, you assign the new role to yourself and switch to the new role.
To test a new custom center:
1. Go to List > Employees > Employees.
2. Click Edit next to your name.
3. Click the Access subtab.
SuiteBuilder
Assigning a Custom Center to a Custom Role
4. In the Role field, select the new role that you created.
5. Click Add.
6. Click Save.
7. Switch to the new role. For information, see the help topic Switching Between Roles. The
dashboard for the role appears with your custom center.
8. Test the links in the new custom center.
SuiteBuilder
351
Deploying Upgraded Forms
352
Deploying Upgraded Forms
NetSuite administrators can use the Upgrade Checklist to preview custom forms with Version 2010
Release 2 Form Layout Enhancements applied. These enhancements include Field Groups and the
standardization of form Subtabs and Sublists. After previewing the new layout, administrators can then
deploy the upgraded custom forms to end users.
To access the Upgrade Checklist, go to Customization > Forms > Entry Forms [or Transaction Forms],
and click the link in the message area at the top. If you have already upgraded forms in your account,
the link in the message area is called Return to Upgrade Checklist.
After you deploy an upgraded form, you cannot “roll back” the deployment. When you deploy an
upgraded form, you are replacing the existing form.
Important: As of Version 2012 Release 2, all standard forms have been automatically
upgraded to use form layout enhancements, so there is no need for administrators to deploy
upgraded standard forms. Also, if your NetSuite account was established in Version 2010
Release 2 or later, form layout enhancements are automatically applied to custom forms
as well. The custom form deployment process described here is applicable only to NetSuite
accounts established prior to Version 2010 Release 2.
Review the following to get an understanding of form layout enhancements and the process for
previewing, upgrading, and deploying custom forms to apply these enhancements:
■ Form Layout Enhancements – Summarizes the changes that are made when you deploy upgraded
forms.
■ Custom Form Deployment Process (Summary) – Provides a high-level overview of the deployment
process.
■ Custom Form Deployment Process (In Detail) – Provides a workflow diagram that depicts each step
in this process.
See the following for detailed steps:
■ Deploying Upgraded Custom Forms
■ Understanding Form Deployment Statuses
■ Understanding Form Layout Enhancement Upgrade Logic
Form Layout Enhancements
Version 2010 Release 2 introduced a new user interface (UI), which included a set of changes
categorized as Form Layout Enhancements. These form layout enhancements were note
automatically applied to custom forms that were created prior to Version 2010 Release 2. NetSuite
administrators have the option of applying form layout enhancements to each custom form, as
described in Deploying Upgraded Custom Forms.
Form layout enhancements include the following:
■ The addition of Field Groups to organize all fields on a record into logical groups.
■ The consistent naming and placement of Subtabs and Sublists.
SuiteBuilder
Form Layout Enhancements
353
NetSuite administrators can upgrade the transaction and entry forms in their account to include
these enhancements. Administrators must then deploy the upgraded forms to their NetSuite users
before the users can begin working with the enhanced forms.
Administrators should use the Upgrade Checklist to manage the form upgrade and deployment
processes. If you are an account administrator, see Deploying Upgraded Forms to learn more.
Important: As of Version 2012 Release 2, form layout enhancements have been applied to
all standard forms.
Form Layout Enhancements (The Big Picture)
The following figures show the difference between a form that has been upgraded to include the
Form Layout Enhancements and one that has not.
The first figure is a view of a sales order with a custom sales order form applied. In this figure, the
Field Groups and the Subtabs and Sublists changes associated with the Form Layout Enhancements
have not yet been applied to the custom form used for this record.
The second figure shows the same record, but with an “upgraded” standard sales order form. The
upgraded form now includes:
■ Field Groups – All fields in the main header area are organized into the Primary Information, Sales
Information, and Classification field groups. Based on the data in the record, NetSuite automatically
created these field groups when the account administrator upgraded the form.
SuiteBuilder
Form Layout Enhancements
354
■ Updated Subtabs and Sublists – Subtab and sublist data have been reorganized into more
meaningful categories. In this example, the Address, Payment, Messages, and History tabs have
been removed. Content that was previously on these subtabs has been moved to the main header
area or other subtabs/sublists. The Billing, Accounting, Relationships, Communication, Related
Records, and System Information tabs have been added.
SuiteBuilder
Form Layout Enhancements
355
Field Groups
When your account administrator upgrades your existing forms to include the Form Layout
Enhancements, the fields on your record pages are reorganized into field groups. Field groups organize
related data into logical groups.
The following figure shows fields organized into six different field groups. By default, the Primary
Information field group will appear on all record pages when the Form Layout Enhancements are
deployed by your account administrator. Some of the other field groups on this page may also appear,
depending on the form type, the data in the form, and the features enabled in your account.
In the main body area of the standard vendor form (shown below), fields have been automatically
organized into the Primary Information, Email | Phone | Address, and Classification field groups.
Notice that field groups can also appear on subtabs. The Financial subtab shows the Account
Information, Balance Information, Tax Information, and Project Information field groups.
SuiteBuilder
Form Layout Enhancements
356
Administrators can use SuiteBuilder to customize field group titles, order, and layout. See Configuring
Field Groups in the NetSuite Help Center for information on customizing field groups.
When administrators upgrade the standard and custom transaction and entry forms in your account,
NetSuite automatically groups all standard, built-in fields. Custom fields remain on the subtabs they
were previously assigned to, unless they were assigned to subtabs that have been removed. In this
case, after the upgrade occurs, custom fields will automatically be placed on a subtab called Custom.
Account administrators can then reassign these fields to other subtabs if they choose.
For detailed information on how standard and custom fields are reorganized into field groups, NetSuite
administrators should see Understanding Form Layout Enhancement Upgrade Logic in the NetSuite
Help Center.
Subtabs and Sublists
After administrators deploy a form with the Form Layout Enhancements applied, the subtabs and
sublists that appear on the form will change. End users will notice that new subtabs and sublists have
been added (see Added Subtabs and Sublists). They will also notice that certain subtabs and sublists
have been removed (see Removed Subtabs and Sublists).
The subtab and sublist changes associated with the Form Layout Enhancements were implemented
by NetSuite to create more consistency across the application. Across all records, subtabs and sublists
now have a more consistent pattern of naming and placement.
Added Subtabs and Sublists
If you are viewing forms with the Form Layout Enhancements applied, you will notice that the following
subtabs have been added:
SuiteBuilder
Form Layout Enhancements
357
■ Accounting (appears on certain entity, item, and transaction forms)
■ Billing (appears on certain transaction forms)
■ Builds (appears on certain transaction forms)
■ Communication (appears on certain entity, item, and transaction forms and will contain these
subtabs in a consistent order)
□ Messages (appears when record is in View or Edit mode)
□ Activities (appears when record is in View or Edit mode)
□ Events (appears when record is in New)
□ Tasks (appears when record is in New)
□ Calls (appears when record is in New)
□ Files
□ User Notes
□ Bulk Merge (often hidden by default)
■ Fulfillments and Credits (appears on certain transaction forms)
■ Fulfillments and Receipts (appears on certain transaction forms)
■ Journal (appears on certain transaction forms)
■ Locations (appears on certain item forms)
■ Message (appears on certain CRM forms)
■ Preferences (appears on certain entity and item forms)
■ Purchasing / Inventory (appears on certain item forms)
■ Receipts and Refunds (appears on certain transaction forms)
■ Relationships (appears on certain entity and transaction forms and will contain all entities
associated with the primary record. The entities appearing on this subtab will vary depending on
the primary record you are on.)
■ Related Records (appears on certain entity, item, CRM, and transaction forms, and will contain
transactions and other records associated with the primary record. The records appearing on this
subtab will vary depending on the primary record you are on.)
■ Sales (appears on certain transaction forms)
■ Subscriptions (appears on certain entity forms)
■ System Information (appears on certain entity, item, CRM, and transaction forms, and will contain
these subtabs in a consistent order)
□ System Notes (appears when record is in View or Edit mode)
□ Access (for all entity records except the Employee record, the Access subtab now appears under
the new System Information subtab. On the Employee record the Access subtab will continue to
appear as a top-level subtab. It will not appear under any other tab.)
□ Workflow
□ Translation (only appears on certain items)
■ Time Tracking (appears on some entity records)
■ Vendors (appears on some item records)
SuiteBuilder
Form Layout Enhancements
358
Important: Be aware that the Date Created field and the Inactive field both appear on the
new System Information subtab after the Form Layout Enhancements have been deployed
to your account.
Removed Subtabs and Sublists
If your account administrator has not yet deployed Form Layout Enhancements to your account, you
will notice that there are no changes to the organization of the fields or subtabs on a page.
However, if you are viewing forms with the Form Layout Enhancements applied (meaning that your
account administrator has deployed the upgraded forms to your account), you will notice the following
subtabs have been removed:
Entity Forms:
■ General
■ Info
Item Forms:
■ Basic
■ History
■ Rev Rec / Amort (note: subtab fields have been moved to the Revenue Recognition / Amortization
subtab)
■ Specials (the fields on this subtab are moved to the Web Store subtab when you deploy the
upgraded form)
CRM Forms:
■ General
■ History
Transaction Forms:
■ Carrier
■ General
■ History
■ International
■ Packages
■ Revenue (the fields on this subtab are moved to the new Accounting subtab when you deploy the
upgraded form)
Other subtabs not removed but relabeled:
■ Related Info (CRM forms) relabeled to Related Records
Fields that used to reside on these subtabs have been moved to new locations on the form or to
another subtab.
SuiteBuilder
Form Layout Enhancements
359
Important: If you are a SuiteScript developer and you have referenced any of these
deprecated tabs in your scripts, you will need to modify your scripts to reference existing
subtabs. Note that the IDs for all new subtabs are provided in the SuiteScript Records Browser.
Custom Form Deployment Process (Summary)
The custom form deployment process involves previewing each custom form, further modifying the
layout of each form (if necessary), testing each form in the context of a record, and then deploying the
form to end users. Custom forms must be deployed individually.
The following diagram summarizes the form deployment process. Use the NetSuite Upgrade Checklist
to manage this process. To access the Upgrade Checklist, go to Customization > Forms > Entry Forms
[or Transaction Forms], and click the link in the message area at the top. If you have already upgraded
forms in your account, the link in the message area is called Return to Upgrade Checklist.
Note: As of Version 2012 Release 2, the upgrade process has been simplified to remove the
Skip Upgrade option.
Custom Form Deployment Process (In Detail)
You begin the custom form deployment process by going to the Upgrade Checklist.
To access the Upgrade Checklist for custom transaction forms, go to Customization > Forms >
Transaction Forms, and click the Upgrade Checklist link. To access the Upgrade Checklist for custom
entry forms, go to Customization > Forms > Entry Forms, and click the Upgrade Checklist link. If you
have already upgraded forms in your account, the link is called Return to Upgrade Checklist.
SuiteBuilder
Custom Form Deployment Process (Summary)
Important: If you do not see this link in the upper right of the custom transaction forms or
360
custom entry forms list, it means your account does not include any custom forms that require
upgrading.
The following diagram shows the entire workflow for deploying upgraded forms.
SuiteBuilder
Custom Form Deployment Process (Summary)
Note: To enlarge the diagram, press Ctrl+Plus Sign. To return your screen to its normal size,
press Ctrl+Minus Sign.
Note: As of Version 2012 Release 2, the upgrade process has been simplified to remove the
Skip Upgrade option.
The following steps outline the process for deploying upgraded forms.
1. Open the Upgrade Checklist. Go to Setup > Customization > Transaction or Entry Forms.
2. In the Preview Forms column, click the link for the custom form.
SuiteBuilder
361
Custom Form Deployment Process (Summary)
362
3. To edit the new layout of the form, click Edit Layout, make changes, and click Save. Preview the
form by clicking the link for the form in the Preview Name column.
4. When you have finished editing the form layout, click Enable Test Mode. Test the form to
ensure that you get the expected output.
5. When testing is complete, click Disable Test Mode.
6. To deploy the form, click the Deploy Form link next to the form
After reviewing the overall form deployment workflow, go to Deploying Upgraded Custom Forms to
begin the form upgrade and deployment processes.
Deploying Upgraded Custom Forms
Use the following steps to deploy custom forms that include Form Layout Enhancements. When you
deploy upgraded custom forms to end users, NetSuite automatically applies the layout enhancements
to the form. These enhancements include Field Groups and the standardization of form Subtabs and
Sublists.
Note: As of Version 2012 Release 2, all standard forms have been automatically deployed
to use form layout enhancements, so there is no need to deploy standard forms. Also, if your
NetSuite account was established in Version 2010 Release 2 or later, form layout enhancements
are automatically applied to custom forms as well. The custom form deployment process
described here is applicable only to NetSuite accounts established prior to Version 2010 Release
2.
To deploy upgraded custom forms, see these sections in the following order:
1. Previewing Undeployed Custom Forms
2. Editing the Layout of Custom Forms Prior to Deployment
3. Avoid Editing Custom Forms in Tandem
4. Testing Undeployed Custom Forms
5. Deploying Custom Forms
Be aware of the following:
■ You are NOT required to upgrade any of your custom forms if you prefer that they keep their
existing layout. If you choose not to upgrade a custom form, you can take no action at all.
■ As of Version 2012 Release 2, the form upgrade process has been simplified to remove the Skip
Upgrade option. If prior to that release you used this option, and later decide you want Form
Layout Enhancements applied to the form, you can perform an Undo Skip operation (see Deploying
Skipped Custom Forms for details.) However, if you have added custom field groups to a “skipped”
form, you will lose all field group formatting when you deploy the upgraded custom form. The fields
in the field groups will remain, however they will be reorganized into auto-generated field groups
(which you can later customize).
Previewing Undeployed Custom Forms
Before deploying upgraded custom forms to end users, NetSuite lets you preview what the forms will
look like after you deploy them. The preview process for custom forms is extremely important, as it
lets you consider the following:
■ Do you like how NetSuite has applied the Form Layout Enhancements to your custom forms?
■ Do you see additional layout modifications you need to make to the form so that it suits your
business needs?
SuiteBuilder
Deploying Upgraded Custom Forms
363
■ Do you want users to start working with the upgraded custom form? (If so, you will deploy the
form.)
■ Would you prefer to keep the custom form in its existing layout?
To preview undeployed custom forms:
1. Navigate to the Upgrade Checklist:
a.
Go to Customization > Forms > Transaction ( or Entry ) Forms.
b.
On the forms list page, in the right column near the top, click the Upgrade Checklist link.
If you have already upgraded forms in your account, the link in the message area is called
Return to Upgrade Checklist.
2. In the Preview Form column, click the custom form you want to preview.
The form that appears will have the form layout enhancements applied according to the logic
described in Understanding Form Layout Enhancement Upgrade Logic.
3. If you generally approve of the upgraded layout, but see a few areas you need to modify, see
Editing the Layout of Custom Forms Prior to Deployment.
If you decide you want to retain the existing layout that your end users are currently working
with, click Cancel and take no further action.
Editing the Layout of Custom Forms Prior to Deployment
After previewing a custom form, you will probably notice parts of the layout you want to modify. You
will go through the Upgrade Checklist to make these modifications.
Important: During the form upgrade/deployment process, you must go through the Upgrade
Checklist to make form layout modifications that apply to the upgraded form. You may
continue to make changes to the old form through the forms list pages (Customization > Forms
> Transaction ( or Entry ) Forms), however, these layout changes will be lost after the upgraded
form is deployed.
To edit the layout of undeployed custom forms:
1. Navigate to the Upgrade Checklist:
SuiteBuilder
Deploying Upgraded Custom Forms
364
a.
Go to Customization > Forms > Transaction ( or Entry ) Forms.
b.
On the forms list page, in the message area at the top, click the Upgrade Checklist link. If
you have already upgraded forms in your account, the link in the message area is called
Return to Upgrade Checklist.
2. In the Edit Layout column, click Edit next to the custom form you have previewed and now want
to modify.
3. Use the page that appears to make your additional layout changes (see figure below).
Important: The custom form edit page you access through the Upgrade Checklist
should be used to modify ONLY the layout aspects of the form. Use this page to modify
tabs, field groups, screen fields, and lists. Do not use this page to modify any other
properties of the form! All other form properties related to roles, form default settings
and permissions are inherited from the custom form currently in use. If you want to
change any of these settings, you must do so by accessing the form through the custom
forms list page (Customization > Forms > Transaction ( or Entry ) Forms.)
4. After making your layout changes, click Save.
5. Navigate back to the Upgrade Checklist:
a.
Go to Customization > Forms > Transaction ( or Entry ) Forms.
b.
On the forms list page, in the message area at the top, click Upgrade Checklist. If you
have already upgraded forms in your account, the link in the message area is called
Return to Upgrade Checklist.
6. Preview the form. The layout changes you made in Step Step 3 will reflect in the preview.
7. If you want to further modify the layout, repeat steps Step 2–Step 6.
8. When you are satisfied with the layout, you can test the form to verify it works as expected. See
Testing Undeployed Custom Forms for details.
SuiteBuilder
Deploying Upgraded Custom Forms
365
Avoid Editing Custom Forms in Tandem
NetSuite does not recommend that you simultaneously edit the forms that are currently in use (in
your production account) and their corresponding forms accessed through the Upgrade Checklist.
For example, it is not recommended that you edit the layout of Custom Form A that is currently used
in production, during the time that you also edit the “preview version” of Custom Form A accessible
through the Upgrade Checklist. Editing both versions will cause the undeployed preview version to get
out of synch with the version in production.
Instead, you should pick one version of the form to modify: either the version currently in production,
or the (upgraded) undeployed preview version accessed through the Upgrade Checklist.
If you choose to edit the production version, then when you preview the form through the Upgrade
Checklist, the preview will show the Form Layout Enhancements – as they apply to ALL the
modifications you have made to the form. Note that if you continue to modify the production version
after you have previewed it, the two versions of the form will be out of sync.
If you choose to make all form layout edits to the upgraded/undeployed “preview” version, you will
know that when you are ready to deploy the form, none of the modifications you have made will be
lost. This cannot be said of the modifications made to the “production” version currently in use.
Testing Undeployed Custom Forms
When you test an undeployed custom form, you are viewing the form in the context of a record page.
When in test mode, you have the opportunity of viewing the form as it appears in New mode and Edit
mode.
When it comes to testing SuiteScripts on custom forms, you will be testing any client or user event
scripts associated with the record type or the form.
To test undeployed custom forms:
1. Navigate to the Upgrade Checklist:
a.
Go to Customization > Forms > Transaction ( or Entry ) Forms.
b.
On the forms list page, in the message area at the top, click Upgrade Checklist. If you
have already upgraded forms in your account, the link in the message area is called
Return to Upgrade Checklist.
2. Click the Enable Test Mode button on the bottom of the Upgrade Checklis t.
3. Use the navigation menus to go to the form you want to test.
For example, if you want to test a custom sales order form, do one or all of the following:
■ Go to Transactions > Sales > Enter Sales Orders > New (to test a form in New mode)
■ Go to Transactions > Sales > Enter Sales Orders > List > and click Edit next to an existing
record (to test a form in Edit mode)
4. In the page that appears, from the Custom Form list, select the custom form you want to test
(see figure).
Note: When in Test Mode, all custom forms that appear in the Custom Form list will
appear with the upgraded layout. This includes both deployed and undeployed custom
forms.
5. Notice that the page layout changes to include field group and subtab Form Layout
Enhancements. Verify that the upgraded layout will suit your business needs.
SuiteBuilder
Deploying Upgraded Custom Forms
366
6. If you have any client or user event scripts associated with the form or the record type your are
testing, verify that the scripts execute as expected.
7. After testing your custom form, navigate back to the Upgrade Checklist by going to
Customization > Forms > Transaction ( or Entry ) Forms, and clicking Upgrade Checklist at the top
of the page. If you have already upgraded forms in your account, the link in the message area is
called Return to Upgrade Checklist.
8. On the Upgrade Checklist, click the Disable Test Mode button to take the form out of test mode.
9. After testing a custom form, you can now deploy the upgraded form to end users. See Deploying
Custom Forms for details.
Deploying Custom Forms
After you have previewed a custom form, edited its layout (if necessary), and tested it thoroughly, you
can deploy the upgraded form into the accounts of all users.
After you deploy a custom form, you will notice that its status on the Upgrade Checklist changes to
Deployed. You will also notice that all links to the form are removed from the Upgrade Checklist. After
a custom form has been deployed, if you want to access the form to make further changes, you will
access the form through the custom forms list page (Customization > Forms > Transactions Forms (or
Entry Forms). The Upgrade Checklist is used to facilitate the form deployment process only. It is not
meant to be used to access forms that have been deployed.
To deploy custom forms:
1. Navigate to the Upgrade Checklist:
a.
Go to Customization > Forms > Transaction (or Entry) Forms.
b.
On the forms list page, in the message area at the top, click the Upgrade Checklist link. If
you have already upgraded forms in your account, the link in the message area is called
Return to Upgrade Checklist.
2. In the Upgrade Checklist, in the Deploy Options column, click the Deploy Form link for the
custom form you want to deploy.
After clicking the link, notice that the status for the form changes to Deployed.
After you have deployed a custom form, the form will be available in the accounts of all of your end
users. If the custom form you deploy is currently set as the “Preferred Form” for all users or for users
with specific roles, your users will begin using this form immediately after it is deployed.
Deploying Skipped Custom Forms
Use the following steps to deploy a custom form that you had previously “skipped.”
Note that, as of Version 2012 Release 2, the form upgrade process has been simplified to remove the
Skip Upgrade option. The following procedure applies to any custom forms for which you skipped
upgrade prior to that release.
Important: Field groups created on existing custom forms that were skipped will not be
carried over in the new upgraded form. You will notice this when you preview the upgraded
custom form.
To deploy skipped custom forms:
1. Navigate to the Upgrade Checklist:
SuiteBuilder
Deploying Upgraded Custom Forms
a.
Go to Customization > Forms > Transaction ( or Entry ) Forms.
b.
On the forms list page, in the message area at the top, click Upgrade Checklist. If you
have already upgraded forms in your account, the link in the message area is called
Return to Upgrade Checklist.
367
2. Next to the custom form you want to deploy, in the Deploy Options column, click Undo Skip
and Upgrade Form. After clicking this link, the Edit link reappears next to the form, and the form
itself becomes a link.
3. In the Preview Name column, click the custom form to preview.
The form that appears will have the layout enhancements applied according to the NetSuite logic
for applying these enhancements. See Understanding Form Layout Enhancement Upgrade Logic
for details.
Notice the following:
■ The new Field Groups that automatically render when you preview the form.
■ The Subtabs and Sublists that have been added or removed.
■ If you had previously added custom field groups to these forms, when you upgrade the
layout and deploy the form, all standard fields you might have placed on a custom field group
will automatically be put into the fields groups NetSuite considers appropriate. All custom
fields you had placed in a custom field group will appear at the bottom of the main area of
the form and will not have a field group title. You will have to manually edit those fields and
place them on new field groups.
4. If you decide you approve of most of the changes to your form, but you need to make additional
layout modifications before deploying the form to users, see Editing the Layout of Custom Forms
Prior to Deployment.
5. Next, test the upgraded form. See Testing Undeployed Custom Forms.
6. After thoroughly previewing and testing the custom form, click the Deploy Form link.
Understanding Form Deployment Statuses
Form deployment statuses appear in the Upgrade Checklist and on the transaction and entry custom
form list pages .
Upgrade Checklist Deployment Statuses
In the Status column on the Upgrade Checklist you will see these statuses for custom forms:
Status
Description
< No status at all >
The account administrator has not performed any action on the form. The form
has not been deployed (by clicking the Deploy Form link) .
Deployed
The account administrator has clicked the Deploy Form link and deployed the
form. The deployed form includes the Version 2010 Release 2 Form Layout
Enhancements and is now in the accounts of all end users.
Skipped Upgrade
The account administrator has clicked the Skip Upgrade link and has explicitly
chosen to skip the deployment of the form. The form will retain its existing layout.
SuiteBuilder
Understanding Form Deployment Statuses
Status
368
Description
Important: As of Version 2012 Release 2, the Skip Upgrade option is
no longer available, but any form that was skipped prior to that release
continues to display a status of Skipped Upgrade until the account
administrator deploys the form.
Understanding Form Layout Enhancement
Upgrade Logic
When you preview custom forms, NetSuite executes a backend process that automatically applies
form layout enhancements to the existing versions of the forms. These enhancements include the
arrangement of fields into logical Field Groups and the standardization of Subtabs and Sublists.
The goal of the backend upgrade process is to create a form layout that is better organized and more
consistent. The other goal is to upgrade the layout and maintain form customizations where ever
possible.
See the following sections to learn about the NetSuite upgrade logic as it applies to custom forms,
standard and custom fields, subtabs, and custom field record pages used to add or edit custom fields.
These topics do not need to be read in order.
■ Upgrade Logic for Custom Forms
■ Upgrade Logic for Subtabs
■ Upgrade Logic for Fields (Diagram)
For information on field ordering as it applies to form upgrades, see Field Ordering.
Upgrade Logic for Custom Forms
When the backend upgrade process runs against a custom form, the standard fields on the form are
rearranged to match the new field location of the standard fields on the upgraded standard form. For
example, when a custom Customer form is upgraded, the standard fields on the custom Customer
form are rearranged to match the layout of the standard fields on the upgraded standard Customer
form.
Important: The exception to this is standard fields placed on a custom subtab. When a
custom form is upgraded, standard fields that have been placed on a custom subtab will
remain on the custom subtab.
The location of custom fields on custom forms will also remain unchanged during the upgrade process.
Custom fields will only be moved if they are on a subtab that is removed during the upgrade process.
See the following table for details. Also see the Upgrade Logic for Fields (Diagram) for a visual
description of these field upgrade changes.
Existing Form
Upgraded Form
Custom Fields
Custom fields that are on a valid
standard subtab.
SuiteBuilder
Will be kept on the same subtab when the form is upgraded.
Understanding Form Layout Enhancement Upgrade Logic
Existing Form
Upgraded Form
Custom fields on a subtab that is
removed when the form is upgraded.
Will be moved to a subtab called Custom.
After previewing the new auto-generated layout, you can
manually edit the layout and move your custom fields off of the
Custom subtab.
See Editing the Layout of Custom Forms Prior to Deployment.
Custom fields that are on a custom
subtab.
Will be kept on the same custom subtab.
Custom fields that are in the main
area of the form.
Will be placed at the bottom of the main area, below the autogenerated field groups.
369
After previewing upgraded custom forms, if you are not satisfied with the auto-generated layout, you
can reassign fields to different groups, relabel or remove field groups, and create your own custom
fields groups. You can also move fields between the new subtabs that were auto-generated. For more
information, see Previewing Undeployed Custom Forms and Editing the Layout of Custom Forms Prior
to Deployment.
To create custom layouts, go to Customization > Forms > Transaction Form PDF Layouts or
Customization > Forms > Transaction Form HTML Layouts, and click the Customize link next to a layout.
Make your changes and click Save. You can choose default layouts to apply to one or more types of
forms by checking box(es) in the Preferred column at Customization > Forms > Transaction Form PDF
Layouts or Customization > Forms > Transaction Form HTML Layouts, and clicking Submit.
Upgrade Logic for Subtabs
In addition to the creation of field groups on upgraded custom forms, the backend upgrade process
also reorganizes and relabels certain subtabs and sublists. When forms are upgraded, certain subtabs
are added (depending on the form type), and others are removed. Although certain subtabs are
removed during the upgrade process, the data on these subtabs are moved to another (more logical)
area on the form. This new location can be another subtab or it can be under a field group. (See
Subtabs and Sublists for more information about the subtabs that are added or removed during the
form upgrade process.)
To create custom layouts, go to Customization > Forms > Transaction Form PDF Layouts or
Customization > Forms > Transaction Form HTML Layouts, and click the Customize link next to a layout.
Make your changes and click Save. You can choose default layouts to apply to one or more types of
forms by checking box(es) in the Preferred column at Customization > Forms > Transaction Form PDF
Layouts or Customization > Forms > Transaction Form HTML Layouts, and clicking Submit.
Upgrade Logic for Fields (Diagram)
The following diagram visually represents the field arrangement concepts discussed in Upgrade Logic
for Custom Forms. Technically, all NetSuite fields appear on subtabs, even fields that appear in the
main body of the form are (technically speaking) located on a subtab called Main.
The following diagram shows the subtab assignment for fields in a “V1” (non-upgraded) environment
and a “V2” (upgraded) environment.
Note the following in the diagram:
■ V1 indicates the existing form, and V2 indicates the upgraded form
■ Boxes outlined in red highlight the scenarios where a field's location (subtab) changes when a form
is upgraded.
SuiteBuilder
Understanding Form Layout Enhancement Upgrade Logic
370
■ <New Std Location> means that NetSuite automatically moves the field to a new subtab, existing
subtab, or to the Main subtab based on the field’s data.
■ Main is one example of a subtab that is valid for both V1 and V2 forms.
■ General is one example of a subtab that is deprecated when forms are upgraded.
■ Some standard fields that are common across forms have been moved to a new location for better
logical grouping. The move is consistent across forms. For example, Inactive was moved from Main
to System Information on all forms.
Note: To enlarge the diagram, press Ctrl+Plus Sign. To return your screen to its normal size,
press Ctrl+Minus Sign.
To create custom layouts, go to Customization > Forms > Transaction Form PDF Layouts or
Customization > Forms > Transaction Form HTML Layouts, and click the Customize link next to a layout.
Make your changes and click Save. You can choose default layouts to apply to one or more types of
forms by checking box(es) in the Preferred column at Customization > Forms > Transaction Form PDF
Layouts or Customization > Forms > Transaction Form HTML Layouts, and clicking Submit.
Field Ordering
Customized ordering of fields will not be respected when a form is upgraded. The exception is the
order of fields on custom tabs. Their ordering will not change when Form Layout Enhancements are
applied.
To create custom layouts, go to Customization > Forms > Transaction Form PDF Layouts or
Customization > Forms > Transaction Form HTML Layouts, and click the Customize link next to a layout.
Make your changes and click Save. You can choose default layouts to apply to one or more types of
forms by checking box(es) in the Preferred column at Customization > Forms > Transaction Form PDF
Layouts or Customization > Forms > Transaction Form HTML Layouts, and clicking Submit.
SuiteBuilder
Download PDF
Similar pages