Sunday, March 31, 2019

Cannot find 'Print on Check As' field on Vendor Saved Search

The name of the Print on Check As field is shown differently on the Vendor Saved Search. To add this field on the search results, users should select Print As field instead.

Getting "Invalid issueinventorynumber reference key x" when when doing Item Fulfillment via Web Services

When doing an item Fulfillment via Web Services for Lot Numbered Inventory items, one of the key information that needs to be specified is that of the issueinventorynumber.

There are times when one may encounter an error stating "Invalid issueinventorynumber reference key x" where 'x' is the internal ID of the inventory number record.

In this scenario, one must first verify if the internal ID specified is correct. You can do so by doing the following:

1) go to the Item record > Inventory Detail subtab
2) view the desired inventory number record by clicking its corresponding link on the Number column or by clicking the Edit link beside it
3) on the URL, look for the number set in the id parameter

If the internal ID of the inventory number record itself is verified to be correct, then check if the location being set on the request corresponds to the number record's location. You can check this again by going to the Item record > Inventory Detail subtab.

Functions that gets triggered when using Quick Add Portlet

There are some instances when users would like to use the Quick Add Portlet to create new records and then do the other needed logic via script, thus, they would need to know which script trigger gets triggered when using the said portlet.

Client Script triggers such as save record, post sourcing, recalc and validate field do not get triggered when using the said portlet.

As for User Events Scripts, only the before and after submit functions gets triggered, provided that no error pops up after clicking the save button on the portlet.

Note that all of the mandatory fields of the to be created record needs to be added on the Quick Add portlet, or else an error stating that those fields needs to be populated would pop-up upon clicking the Save button.

Custom Field That Will Make Shipping Tax Code or Shipping Tax Rate Value Available on Custom Saved Search

A. Create a custom transaction body field.
1. Navigate to Customization > Lists, Records, & FieldsTransaction Body Fields > New.
2. Enter a Name for the custom field. (Ex. Custom Shipping Tax Code)
3. Check the Sale check box on the Applies To tab.
4. Save.

B. Create a workflow that will set the value of the custom field.
1. Navigate to Customization > ScriptingWorkflows > New.
2. Enter a Name for the workflow.
3. Set Record Type field to Transaction.
4. Set Sub Types fields to <Transaction Type> (example Sales Order)
5. Under Initiation check the On Create and On Update check boxes.
6. Set Trigger Type field to All.
7. Click Save.
8. Click the New State button on the right section of the workflow window called Diagram.
9. Enter a Name for the State (Ex. Copy Shipping Tax Code)
10. Save.
11. Click the Copy Shipping Tax Code button.
12. Click the New Action button.
13. Click Set Field Value.
14. Set Trigger On field to Entry.
15. Under Parameters, set the Field field to Custom Shipping Tax Code.
16. Under Value, tick the From Field radio button.
17. Set Record field to Current Record.
18. Set Field to Shipping Tax Code.
19. Save.

Note: The value of the standard Shipping Tax Code field will only be copied over to the custom field if user updates an existing sales order(old sales orders). User will be able to update multiple sales orders through CSV import and the value of the standard field will be copied over to the custom field if the Run Server SuiteScript and Trigger Workflows found in Setup > Import/Export > CSV Import Preferences is checked.

Warning: Make sure to inform Administrator or the people who handles scripting customization for the NetSuite account to make sure that the workflow and the settings will not have an impact to any other customizations that are already in place. Make sure to perform testing on sandbox account if you have any.

User is getting a SAML error: "Your access has been deactivated on SAML SSO login even when user is active and has access"

  • Notice: "Your access to [companyname] has been deactivated. Please contact the company's administrator to re-activate your access" is received on login from IDP platform to NetSuite.

What to Check:

  • Verify if user has an active employee record (List > Employees > Employees) by checking the status on the employee record. Status should be "Active".
  • Verify if the role being used by user has SAML SSO Permission (Setup > Users / Roles > View Role of user) on the Permissions > Setup subtab on the role settings.


  • If permission and status of the user are verified okay and the error still persists, user may have an inactive duplicate employee records that still have access to the account. To resolve this, locate all inactive duplicate records of the user and remove the access by unchecking the Give Access checkbox under the Access sub-tab on those records.

Return Currently Selected Line Item on Address of a Customer Record via nlapiGetCurrentLineItemIndex

If one needs to get an alert on every click out of the Address book sublist in the customer record, set up the client script below. The API will return the line number selected. Using the API returns a more consistent value than just returning a parameter like linenum.

1. Setup > Customization > Scripts > New > Client
2. Upload the script below and reference the function name (testOne) on the Field Changed Function

function testOne(type)



var poppin = nlapiGetCurrentLineItemIndex('addressbook');




3. Save and Deploy the Client Script
4. On the Script Deployment, set the following below.
-- Applies To: Customer
-- Audience > Roles = All Roles = T
5. Save

Note: Clicking the "Add / Edit" button will always return the current number of items plus 1. As the button label states, it has two functions wherein updated / changed line items are saved and a new line item is selected at the end when clicked. So if you edit line item 2 on a list of 5 line items and hit the "Add / Edit" button, the changes will be saved to line item 2 but the alert will return 6.

Location Quantity and Available Serial Numbers Do Not Match and Lot Tracking is Not Enabled.

Location Quantity and Available Serial Numbers Do Not Match and Lot Tracking is Not Enabled.

Negative Serial Number Search if Lot Tracking is not enabled.

Below are the steps to create a Transaction Saved Search to find the negative Serial Numbers.

1. Navigate to Reports > Saved Searches > All Saved Searches > Transaction.
2. In Criteria > Standard > Filter:
                a. Add Item Fields... and in the popup choose Costing Method. In the new popup select Serialized.
                b. Add Account and in the popup choose the Asset Account of the Item
                c. Add Posting and in the popup choose Yes
                d. Add Item and in the popup enter the Item Name/s
                e. Add Location and in the popup choose the appropriate Location
                f. Add Transaction Serial/Lot Number and in the popup set it to not empty
3. In Criteria > Summary:
                a. Set Summary Type to Sum
                b. Add Transaction Serial/Lot Number Quantity in the Field column
                c. Set Description to less than 0
4. In Results > Columns > Field:
                a. Add Type, Date, Number, Item
                b. Add Transaction Serial/Lot Number and set Summary Type is Group
                c. Add Transaction Serial/Lot Number Quantitiy and set Summary Type as Sum
5. Rename the Saved Search and click Save & Run.

Case Saved Search that allows you to drill down on grouped Escalated To field

Use Case: Ability to show Count of Cases and whom they are Escalated To and to be able to drill down on the Escalated To field to see detailed results


Create a Saved Search by following these steps:


1. Navigate to Lists > Search > Saved Searches > New.

2. Select Case.

3. Provide a Search Title.

4. On the Criteria tab > Standard subtab, set the following:
---System Notes : Field is Escalatee


5. On the Results tab > Columns subtab, Add the fields you want, in particular add:
---Number - with Summary = Count
---System Notes: New Value – with Summary = Group
---Escalated To – with Summary = Group, Custom Label = Escalatee

6. Click Save & Run.

Now when viewing the results a user can confirm the grouped Escalated To field matches the grouped Escalatee field and they can drill down into the grouped Escalatee field to see detailed results

Customize Payment Center Categories from EFT Bundle

1. Navigate to Setup > Customization > Center Categories.
2. Edit the Payment Processing for both Accounting Center and Classic Center.
3. On the Custom Center Category page > Link portlet, user may add or remove links according to the needs of the business.
4. Hit Save.

Note: The system may take some time to apply changes. Certain browsers require clear cache to show the changes made.

Vendor Bill Report to Display Total per Month

1. Navigate to Reports > Purchases > Purchase by Vendor > Customize Summary.

2. On the Filters link, edit the Value for Transaction Type Field and remove Credit Card, Check, Bill Credit and leave only Bill.

3. Rename the report and hit Save.

4. On the footer of the report, change Column from Total to Month and hit Refresh.

List of Assembly Build Transactions with No Rolled Up Cost From the Components to The Primary Assembly Item (No GL Impact)

-Navigate to Reports>Saved Searches>All Saved Searches>New

-Select Search Type = Transaction

-Enter the desired title of the Search under the Search Title field

-Navigate to Criteria tab>Standard subtab>Filter column and add the following filters:

a. Type = is Assembly Build

b. Main Line = is true

c. Amount (Transaction Total) = is 0.00

-Navigate to Results tab>Columns subtab>Field column and add the following:

a. Date

b. Type

c. Number

d. Item

e. Amount

-Navigate to Available Filters tab>Filter column and add the field: Date then mark the box under the Show in Footer column next to the field added.

-Hit Save & Run button

Create a Saved Search to pull up Total Component Quantity Usage per Month on Assembly Builds

The most convenient way to generate the required data is through a Transaction Saved Search.

Here are the steps:

1. Navigate to Reports>Saved Searches>All Saved Searches>New

Select Search Type = Transaction

Enter the desired title of the search under the Search Title field

4. Navigate to Criteria tab>Standard subtab>Filter column and add the following filters:

a. Type = is Assembly Build

b. Formula (Numeric) | Formula: Case when {linesequencenumber} = 0 then 1 else 0 end | Formula (Numeric): not equal to | Value: 1

c. Date = the date range that covers one calendar year.  Example: 01/01/2012 – 12/31/2012

5. Navigate Results tab>Sort By: Item

6. Navigate to Results tab>Columns subtab>Field column and add the following fields:

a. Item | Summary Type: Group

b. Type

c. Number

d. Location

e. Formula (Numeric) | Summary Type: Sum | Formula: case when  {linesequencenumber} <> 0 and to_char({trandate},'MM') = '01' then -nvl({quantity},0) else null end | Custom Label: JAN | Summary Label: JAN

f. Formula (Numeric) | Summary Type: Sum | Formula: case when  {linesequencenumber} <> 0 and to_char({trandate},'MM') = '02' then -nvl({quantity},0) else null end | Custom Label: FEB | Summary Label: FEB

g. Formula (Numeric) | Summary Type: Sum | Formula: case when  {linesequencenumber} <> 0 and to_char({trandate},'MM') = '03' then -nvl({quantity},0) else null end | Custom Label: MAR | Summary Label: MAR

h. Formula (Numeric) | Summary Type: Sum | Formula: case when  {linesequencenumber} <> 0 and to_char({trandate},'MM') = '04' then -nvl({quantity},0) else null end | Custom Label: APR | Summary Label: APR

i. Formula (Numeric) | Summary Type: Sum | Formula: case when  {linesequencenumber} <> 0 and to_char({trandate},'MM') = '05' then -nvl({quantity},0) else null end | Custom Label: MAY | Summary Label: MAY

j. Formula (Numeric) | Summary Type: Sum | Formula: case when  {linesequencenumber} <> 0 and to_char({trandate},'MM') = '06' then -nvl({quantity},0) else null end | Custom Label: JUN | Summary Label: JUN

k. Formula (Numeric) | Summary Type: Sum | Formula: case when  {linesequencenumber} <> 0 and to_char({trandate},'MM') = '07' then -nvl({quantity},0) else null end | Custom Label: JUL | Summary Label: JUL

l. Formula (Numeric) | Summary Type: Sum | Formula: case when  {linesequencenumber} <> 0 and to_char({trandate},'MM') = '08' then -nvl({quantity},0) else null end | Custom Label: AUG | Summary Label: AUG

m. Formula (Numeric) | Summary Type: Sum | Formula: case when  {linesequencenumber} <> 0 and to_char({trandate},'MM') = '09' then -nvl({quantity},0) else null end | Custom Label: SEP| Summary Label: SEP

n. Formula (Numeric) | Summary Type: Sum | Formula: case when  {linesequencenumber} <> 0 and to_char({trandate},'MM') = '10' then -nvl({quantity},0) else null end | Custom Label: OCT| Summary Label: OCT

o. Formula (Numeric) | Summary Type: Sum | Formula: case when  {linesequencenumber} <> 0 and to_char({trandate},'MM') = '11' then -nvl({quantity},0) else null end | Custom Label: NOV | Summary Label: NOV

p. Formula (Numeric) | Summary Type: Sum | Formula: case when  {linesequencenumber} <> 0 and to_char({trandate},'MM') = '12' then -nvl({quantity},0) else null end | Custom Label: DEC | Summary Label: DEC


The following are limitations of the above Search

-The Search cannot accurately pull up data if the date range set is greater than one calendar year.  Example: Jan 15, 2012 to Jan 15, 2013.

-Components that are not associated in assembly build on the date range specified will not show up in the report.

Send Automatic Emails for Drop Shipment causes Error: Please specify an email address to send to

By design, the "Automatically Email Drop Ship P.O.s" option found under Setup > Accounting > Accounting Preferences will take effect on all vendors as long as the vendor has an e-mail address specified in their vendor record. This means that, if this option is enabled, e-mail will still be sent to the vendor even if "Send Transaction via Email" option in the vendor record is disabled as long as the e-mail address is specified in the vendor record. Moreover, if this is enabled, the system will require you to enter a vendor email address else, the error (Please specify an email address to send to) is shown.

As for the "Send Transaction via Email" option in the Vendor Record details, if this option is enabled, it will send an email to the vendor even if the "Automatically Email Drop Ship P.O.s" in the Accounting Preferences is disabled. The purpose of the "Send Transaction via Email" option in the record detail is to enable specific vendors to send transaction via email.

If you do not wish to send any particular vendor an email, you should disable "Automatically Email Drop Ship P.O.s" and enable the "Send Transaction via Email" for all other vendors whom you want to send email to.

NetSuite for Outlook > Identify which records are synced/saved in Outlook

SCENARIO: User wants to identify which records are synced via NetSuite for Outlook.

The table below indicates the column fields that can be added in Outlook to identify which records are synced. 


User-defined Fields

Field Chooser Name



User-defined fields in Inbox


NetSuite Shared
ns Company ID
ns Phone
ns Reserve Time
ns Transaction ID

User-defined fields in folder


NetSuite Shared
ns Billing Phone
ns Company ID
ns shippingPhone
ns Unsubscribe


NetSuite Shared
ns Company ID
ns Transaction ID


Users need to be in List view to expose these fields.  When using Microsoft Outlook 2010, perform the steps below:

A.    Inbox

1.    Click View tab > Change View > select Compact.

2.    On the Layout group, click Reading Pane > select either Bottom or Off.

B.    Calendar and Contacts

1.    Click on View tab > Change View > select List.

When List view is selected, perform the following steps:

1.    In Outlook, right-click on the column and select Field Chooser.

2.    Select User-defined fields in folder.

3.    Click a field on the selection and drag it as a column on your list.

Note: Field Chooser option is available in any view for Tasks.

Saved Search with separate columns for multiple time intervals

This article shows how to run a report on all inventory items and see in results separate columns for ship date within multiple time ranges. This can be achieved by creating a saved search and adding a formula field in the results tab of the search. The steps are outlined below:


1.To create a saved search for items that were shipped in two different time ranges navigate to Lists> Search> Saved Searches>New>Item or Inventory Item or Information Item. In this example let's take first time range of ship date between 01/01 and 6/30 and second time range before 01/01. On the Criteria tab and sub-tab Standard the filter should be defined as following: Transaction : Ship Date is before 6/30/2013


2. On the Results tab add a column filed type of Formula(Text)  labeled e.g. "Ship Date within 01/01/2013 and 06/30/2013".  Use the following formula below to fill into the Formula field:
CASE WHEN (ROUND (TO_DATE('01/01/2013', 'MM/DD/YYYY') - {transaction.shipdate}) <= 0)THEN TO_CHAR({transaction.shipdate}, 'MM/DD/YYYY') ELSE '' END


3. Click the button Save&Run


1. The sample formula above can be also used to create a similar formula for column field labeled as "Ship Date is before 01/01/2013" just by changing the operator in the expression above.

2. In order to show only the items with Ship date in your desired time range are displayed in the results of saved search,  go to the Results tab and set the value of the Sort By field to "Formula (Numeric)".


Execute Script when Mark-All button is Clicked

Customer has a function that calculates a custom column in their end. This function works if the use will manually check Apply checkbox one-by-one. When user marks the items using Mark All button, the custom column was not set and was not calculated.  

(1) Create a client Script using this script:

function validateField(type,name,linenum)
 if(type == 'time' && name == 'apply')
    var stApply = nlapiGetLineItemValue('time','apply',linenum);
   nlapiLogExecution('debug','stApply', stApply);
  if(stApply == 'T')
   var oldRate = nlapiGetCurrentLineItemValue('time','rate');
   nlapiLogExecution('debug','oldRate', oldRate);
   var newRate = nlapiGetCurrentLineItemValue('time','rate');
   nlapiLogExecution('debug','newRate', newRate);
 return true;
(2) Deploy the created script in Invoice.
(3) Go to Transactions > Sales > Create Invoices > New
(4) Choose customer who has more than one Billable items/expenses/time
(5) Click Apply column of the first line.

Actual Result:
Functions are called, rate value changed.

(6) Go back to the Invoice > Click Billable items/expenses/time > Click Mark All button.

Actual Result:
No function is called, rate value not changed.

Expected Result:
Rate value should be changed. 


Create a User-Event Script that will be executed before user submits the record. Using this function, we will be checking the value of the Apply column and then set 100 to rate column if checked.

function beforeRecordSubmit(){
// triggered in the beforeSubmit event
var rec = nlapiGetNewRecord();
var intCount = rec.getLineItemCount('time');

for(var x=0; x < intCount; x++){
 var stApply = nlapiGetLineItemValue('time','apply',x);
 if(stApply == 'T'){
   var newRate = 100.00;
   nlapiSetLineItemValue('time','rate',x, newRate);



DISCLAIMER: The sample code described herein is provided on an "as is" basis, without warranty of any kind, to the fullest extent permitted by law. Netsuite Inc. does not warrant or guarantee the individual success developers may have in implementing the sample code on their development platforms or in using their own Web server configurations.

Netsuite Inc. does not warrant, guarantee or make any representations regarding the use, results of use, accuracy, timeliness or completeness of any data or information relating to the sample code. Netsuite Inc. disclaims all warranties, express or implied, and in particular, disclaims all warranties of merchantability, fitness for a particular purpose, and warranties related to the code, or any service or software related thereto.

Netsuite Inc. shall not be liable for any direct, indirect or consequential damages or costs of any type arising out of any action taken by you or others related to the sample code.

Time Zone for Time entered date in Sytem Notes table for ODBC

In User Interface, the system notes date reflects the timezone set under Home > Set Preferences.

For ODBC, the Time zone date used in Notes System table is in GMT. It is same with date_last_modified and created date, see Notes System in SuiteAnswers (Answer Id: 8278).

For example, a user sets the Time Zone in PDT in the User interface and entered a transaction record at 5:00pm PDT 8/31/13. The  timed_entered date in Notes System table is at 00:00:00 GMT 9/1/13.




Multiple Select for Name field on a Saved Search

The multi-select functionality for the Name field on Saved Searches is currently not possible and is filed as Enhancement# 175473 and 229380. There are instances when users have a list of names that they want to be included on the Saved Search results.

To illustrate, assume that a user wants to have a Saved Search for Items included on the list: Test, Hold, Check and Prepare. It is not possible to use Name is Test || Hold || Check || Prepare. It is also not possible to use Formula(Text) : {name} is Test || Hold || Check || Prepare.

The solution is to manually add one line for each selection. This is possible by adding the following fields on the Criteria tab and checking the Use Expressions box:

(           Name is Test        OR

Name is Hold        OR

Name is Check      OR

Name is Prepare              )


Note that when a user has hundreds or thousands of names on the list then this is no longer plausible as this requires a lot of manual steps.

If a user has a list of Items in a file (e.g. Excel) then the most convenient way is to simply copy and paste this on the Criteria. Using the same scenario, let us say a user wants to have an Item Saved Search for all records included on a predefined excel file/list. This is accomplished through these steps:

A.    Convert name column in excel to 'name' (assume name is on column A):

1.    Open the file

2.    Go to column B (or next to the name column)

3.    Enter formula for the next column: CONCATENATE("'", A2, "'",",",1,",") where A2 is the cell reference for name

4.    Copy the formula up to the end of the table

OUTPUT: Column with the format: 'name',1, (e.g. 'Test',1, instead of Test)

B.    Create the Saved Search

1.    Navigate to Transactions>Management>Saved Searches>New

2.    Select Item

3.    On the Criteria tab add Formula(Numeric)

4.    On the formula popup box, go to the Formula field

5.    Add DECODE({name},

6.    Copy the 'name',1, column created in step A

7.    Paste the values in the Formula field

8.    On the last line add 0)

9.    Set Formula(Numeric) field to equal to

10.  Set Value = 1

11.  Hit Set

12.  Hit Preview or Save and Run

To check, Formula(Numeric) in this case should say DECODE({name},'Test',1,'Hold',1,'Check ',1,'Prepare',1,0).

The results will only show four Items on this scenario: Test, Hold, Check and Prepare. Users can then add columns in the Results tab for additional information that they want to include on the table.

Generate a new Private Key from an existing key used for a Custom Checkout Domain

There are different methods or commands a user can use to generate a Private Key and Certificate Signing Request (CSR) through OpenSSL.


If somehow a user generated a Private Key without a password, this will not be accepted by the system when the key is submitted along with the SSL Certificate and Intermediate Certificate under Setup > Site Builder > Domains > Secure Domains tab, as it would ask the user for a password.


To replace this existing key and generate a new Private Key with a password which is compatible with the SSL certificate, run this command in OpenSSL:


rsa -in [Existing Private Key].key -out [New Private Key].key -des3



This command will generate a new Private Key with a password which the user can use with the SSL certificate and Intermediate certificate to setup their custom checkout domain.

Standard Lead Source field is missing when creating a new Opportunity


Standard Lead Source field is missing when user create a new Opportunity even when this displays checked under the Custom Form > Screen Fields > Main > Lead Source > Show = True

Still in the actual Opportunity page Lead Source is not displayed.


1. Use Administrator role

2. Navigate to Setup > Company > Enabled Features > CRM tab > Basic Features
- Place a check mark at "Marketing Automation" checkbox


4. Click "I Agree" button

5. Click Save button

6. Create a New Opportunity
- Notice that "Lead Source" field is now displayed.

For additional information, view help article Lead Source.

Display the total quantity of items in a transaction (eg. Sales Order, Item Fulfillment, Item Receipt, Transfer Order)

The article below details a client-side script solution to display the total quantity of items in transactions.
This has been tested on Sales Orders, Item Fulfillments, Item Receipts, and Transfer Order
Note that the script may need to change depending on your account's configuration and customizations, and making the said changes require knowledge in SuiteScript.

1) Create Custom Field that will contain the Total Quantity (see Answer 10089 for more info on creating a custom transaction body field).
 Type : Free-form text
 Display Type: Inline Text
 Store Value: Unchecked

2) Create Client Script with the following 'Recalc' function. Remember to change 'custbody_totalqty' to the ID of the field created in step 1 (see Answer 10553 for more info on creating Script Records):
 function updateTotalQuantity(type, name) {
  //initialize variable for total quantity
  var totalQuantity = 0;
  // count number of lines in 'item' sublist
  var itemCount = nlapiGetLineItemCount('item');
  //for each line in the 'item' sublist, add value in quantity column to the total quantity variable
  for(var i=1; i<=itemCount; i++){
   lineLevelQuantity = nlapiGetLineItemValue('item', 'quantity', i)
   if(lineLevelQuantity != '' && lineLevelQuantity != null ) {
    totalQuantity += parseInt(lineLevelQuantity);
  //  assuming custbody_totalqty is the custom body field for the total quantity, change its value based the value from the computation above
  nlapiSetFieldValue('custbody_totalqty', totalQuantity, false);

3) Deploy the Script created in step 2 to the desired transaction types. (see Answer 10554 for more info on defining a Script Deploment)

**Note: The script above will only affect transactions you Create/Edit after creating the script. Users would need to create a separate Mass Update Script in order to populate the total quantity field for all past transactions.

Saturday, March 30, 2019

Creating an Item Fulfillment via Web Services Using C#

Below is sample code on initializing an Item Fulfillment from a Sales Order. To process this you need a valid Login Session and an existing sales order that is waiting to be fulfilled.
Please note this sample will not work if you have Advanced Inventory Management Enabled.

if (status.isSuccess == true)
// Setting the initialize record type and internal id
InitializeRecord rec = new InitializeRecord();
rec.type = InitializeType.itemFulfillment;
InitializeRef ref1 = new InitializeRef();
ref1.internalId = "4";
ref1.type = InitializeRefType.salesOrder;
ref1.typeSpecified = true;
rec.reference = ref1;

ReadResponse res = new ReadResponse();
//NetSuite Service Object Processing the Initialize Request.
res = nss.initialize(rec);
if (res.status.isSuccess == true)
// Creating the Item Fulfillment record and assigning the location.
ItemFulfillment itemFulf = new ItemFulfillment();
itemFulf = (ItemFulfillment)res.record;

ItemFulfillmentItemList items = (ItemFulfillmentItemList)itemFulf.itemList;
RecordRef loc = new RecordRef();
loc.internalId = "1";
items.item[0].location = loc;

// Adding the Item Fulfillment into Netsuite.
WriteResponse writeResponse = nss.add(itemFulf);

if (writeResponse.status.isSuccess == true)


Enable Auto Suggest

NetSuite provides an auto suggest function for lists, including  multi-select lists. As user types three letters or more, a list of suggested matching records displays. User can select from this list to quickly populate the field.

To enable this preference:

1. Navigate to Home > Set Preferences.

2. Under Analytics tab, mark the Popup Auto Suggest checkbox under Search section.

3. Click Save.

Note: Auto Suggest only works for fields when:

a. Maximum Entries in Dropdowns is 0 (can be checked under Home > Set Preferences > General tab), - or -
b. Maximum Entries in Dropdowns is less than the number of possible values in the list/multi-select list

Assign Task record created from Partner Center to Employees

As per Enhancement 138703, Tasks created from Partner Centers can only be assigned to Partners and not Employees.

Alt. Solution:

Since it is not currently possible to select Employee from the Assigned To dropdown on Task created from Partner Center, an alternate solution is to create a Custom CRM Field that sources Employee List and expose the custom field on the Partner Center Task Form:

A. Customize the Partner Center/APC role to add Permissions to View (Access Level) Employee List.
B. Mark Allow Viewing checkbox beside Partner Restrictions.

*As per field Level Help
Check the Allow Viewing box to allow users logged in with this role to see, but not edit, data for employees to which the role does not have access.

Note: This setting does not allow viewing of employee payroll or commissions data.

I. Create custom field "Assigned To Employee" to pull in the list of employees on the form

1. Navigate to Customization > Lists, Records, & Fields > CRM Fields
2. Enter value for Label (e.g. Assigned To Employee for Partner Task Form)
3. Select Type = List/Record; List/Record = Employee
4. Under Applies To tab, select Task
5. Under Display tab, select Main on the Subtab field
6. Click Save

II. Customize the Partner Task Form to make sure that the custom field created in Step I is exposed and hide the default Assigned To field

1. Navigate to Customization > Forms > Entry Forms
2. Locate the Task Form and click Edit
3. Under Fields tab, unmark Show checkbox for Assigned field
4. Make sure that custom field created in Step I is marked for the Show check box
5. Click Save 
III. To send a notification email to the Employee assigned to Tasks created via the Partner Center, create a Task Saved Search and setup the Email Alert:
1. Navigate to Lists > search > Saved Searches > New
2. Select Task as Search Type
3. Under Criteria tab > Standard sub tab > add the following Filters:

  • System Notes: Type = Is Create 
  • System Notes: Set by is any of *you may want to select all of the Partner Records 
4. Under Results tab > Columns sub tab > Add the following Task fields:
  • ID
  • Task Title
  • Start Date
  • Start Time
  • Company
  • Assigned to Employee(Custom)* 
*This is the custom field created in Step I

5. Under Email tab, mark checkbox Send Email Alerts When Records are Created/Updated
6. Under Email tab, Recipients From Results, add the field:
  • Assigned to Employee(Custom) 
7. Under Customize Message tab, customized the message of the email alert according to your preference
8. Click Save

*Employee assigned to the Task should receive a notification email when Task is created by Partner from the Partner Center OR APC.

Error Message: "Please specify an email address to send to", when creating transactions even if To Be E-mailed is not shown and not mandatory

Consider the following scenario:

-       There are Customer records without Email.

-       The To Be E-mailed field under Communication tab > Messages subtab is not shown in the preferred form which is a custom transaction form.

-       From the Customer record,  user created a transaction and received the following message upon saving:


"Please specify an email address to send to"


This occurs if in the Customer record > Preferences subtab, Send Transactions Via Email checkbox is True (checked) and cleared the field for the email address to be inputted. This preference must be set to False (unchecked) to be able to save transactions for customers without an email address on their record.

Resolve the error "This category is no longer available" after submitting an Online Form in the Web Store

In addition to sending an external URL through emails, Online Forms can also be published in the Web Store to allow shoppers to visit a Web Store, fill up the form, and submit them from the site.


These published forms are like Information Items, and you can also use its URL to create a hyperlink on the site to direct shoppers to the form.


The only requirement for this is to assign a Site Category/Tab to the published form in order to have it display in the Web Store.


If for some reason, the Site Category is set to inactive, or removed, the published form can still be accessed through its URL. But when a shopper submits the form, they will receive an error message: This category is no longer available.


To resolve this error, edit the Published Form under Lists > Web Site > Publish Forms. Under the Basic tab, make sure that the Site Category is updated with a valid Site Category/Tab, then save the changes.