Tip 20: How can I use a search on Document(file) type in Netsuite SuiteScript (1.0 & 2.0)

Hello Friend,

Its always advised to avoid using saved searches  in scripting as there may be a chance of getting deleted either knowingly/unknowingly.

But there are certain searches which are not included in Search.Type like below example:

While working on a requirement, I realized to add a search on File. As I suggested above I always prefer to use search created in script rather than using a saved search.

But unfortunately I didn’t find any Search.Type for File/Document Type.

So below code was showing error Type Document is not a Valid type in Search.

var mySearch = search.create({
                type: Search.Type.DOCUMENT,
                filters : myFilters,
                columns : myColumns
            });

 

Then I checked in Saved Search and Document type is available there.

Not sure why Netsuite has that difference in Search.Type and Saved Search Type.

Then I created a saved search using Document type and loaded that search in my script as I have no other option.

saved_seach
Fig 1 – Saved Search On Document Record

I recommend to use word like “(Used By Script)” or “(DO NOT DELETE)” in saved search name, so that if somebody will see that saved search, he will be able to understand, this saved search is used for some script. So risk of getting deleted will be reduced to somewhat.

So, here a simple suggestion to all who has similar issues:

If something is not happening using search.create(), try creating saved search on same search type and use search.load() and use that as search.load() doesn’t need any type parameter.

           //Load Saved Search created already with selected id as filter
            var mySearch = search.load({
                id: ‘customsearch_search_file’
            });

I have used SuietScript 2.0 in my sample code. You can refer to SuiteScript 1.0 accordingly if you need.

Hope that will help you.

Happy Coding 🙂

Thanks,

Asha

Tip 19: Add Filter to search.load in Netsuite Suitescript 2.0

Hello Friends,

We all know how to add filters while creating a search in Suitescript, as search.create() has a parameter called filters.

Still I am adding it here for anybody who finds difficult to create a search:

var mySearch= search.create({
type: “folder”,
columns: [
“name”,
“internalid”,
“numfiles”
],
filters: [
search.createFilter({
name: ‘name’,
operator: search.Operator.IS,
values: [folderName]
})
]
});

 

Now let’s see how can we add filter to an already existing saved search created either in UI or by search.create() & then search.save().

    var mySearch = search.load({
id: ‘customsearch_test_search’
});
//Add Filter to search
var filter1 = search.createFilter({
name: ‘name’,
operator: search.Operator.IS,
values: [selectedName]
});
mySearch.filters.push(filter1);

I hope this small tip will help you.

Happy Coding 🙂

Tip 18: Setting DisplayType of field in Suitescript 2.0

Hello Friends,

As I have mentioned in my previous tip, in Suitescript 2.0 developer guide, few points are mentioned wrongly as below.

If you look for how to set display type of a field in either help or guide, you will find as below image.

display_type

But when you use the same syntax its not allowing to upload the code that is

displayType = serverWidget.FieldDisplayType.HIDDEN

But when I changed the syntax by replacing “=” to “:” as below

displayType : serverWidget.FieldDisplayType.HIDDEN

it worked 🙂

Try the same trial method, if you face similar issue.

Hope this trick will help you.

Tip 17: Setting Checkbox in Suitescript 2.0

Hello Friends,

I am exploring Suitescript 2.0 recently and learning new things day by day and I believe I should share it with you all who are also learning Suitescript 2.0.

There are some features which either you won’t get it in document or its wrong in Developer Guide of Suitescript 2.0

Even though its mentioned that in Suitescript 2.0 Checkbox value returns true/false rather than “T”/”F” unlike in Suitescript 1.0, but remember, when you will set Checkbox value use “T”/”F” not true/false.

var fldObj = form.addField({
                    id: ‘custpage_fld_chkbox’,
                    type: serverWidget.FieldType.CHECKBOX,
                    label: ‘Extracting Account?’,
                    container : ‘custpage_tab1’
});
fldObj.defaultValue = ‘T’;

Hope this small tip will save your time and effort.

I will keep on adding tip on Suitescript 2.0

Happy Coding 🙂

 

Tip 16 – Update Subscriptions in Contact Record

Hello Friend,

Recently I got a requirement like, we will have to update Subscriptions in Contact record and I was told that, Netsuite Support team says, its not possible to update it in Contact record through scripting.

I tried even after knowing its not possible as suggested by Netsuite Support.

Even in Record Browser, you won’t find any sublist/fields related to Subscriptions in Contact record.

I checked in Record Browser for Customer and tried checking how it works in Customer record.

Then I tried the same sublist and field IDs in Contact record to update Subscriptions.

You won’t believe, that worked.

Here is the sample piece of code that I am introducing to update Subscriptions in Contact Record:

var contactRecord = nlapiLoadRecord("contact",983);
var subCount = contactRecord.getLineItemCount("subscriptions");
		
//Billing Communication = 2, Marketing=1, Newsletters=4, Product Updates=5, Surveys=3
if(subCount > 0){
	for(var count = 1; count <= subCount; ++count){
		var sub = contactRecord.getLineItemValue("subscriptions", "subscription", count);
		var isChecked = contactRecord.getLineItemValue("subscriptions", "subscribed", count);
		nlapiLogExecution("DEBUG", "sub - isChecked", sub + " - " + isChecked);
				
		if(isChecked == "F"){
			contactRecord.setLineItemValue("subscriptions", "subscribed", count, "T");
		}
		else{
			contactRecord.setLineItemValue("subscriptions", "subscribed", count,"F");
		}
	}
}
var contactId= nlapiSubmitRecord(contactRecord);
nlapiLogExecution("DEBUG", "Contact record submitted", contactId);

Hope when you will get such requirement, you won’t need Netsuite Support’s help 🙂

Cheers

Asha

Tip 4 – Show Item textbox in saved search filter to allow user to enter Item name in Netsuite

We all are familiar with adding filters in Saved search, so that we can dynamically see the report by using those filters manually.

Recently I have a requirement, where user wants to have something like this:

A saved search needs to done where user will see which item is sold to which customer in a date range.

But as user is having more than 1000 items, he wants to enter the item name in stead of searching that particular item in dropdown.

Typing text in the dropdown is not going to be working……then what to do….. 😦

So after trying different methods….I got a very nice and easy solution….. 🙂

Procedure:

Step 1:

Create a saved search of Transaction type say “Track Item who and when sold”.

Step 2:

In Criteria -> Standard Filter:

Type: Sales Order

Formula(Text): select Item in Field and formula ‘starts with’ enter any string which will be set as default select every time you open the saved search. Let’s say “ai” is your default string to be passed.

filter_tip1

Step 3:

Select all the columns that you need to be displayed.

Step 4:

Open Available Filter and

1st enter Date Created in Filter -> select Show in Filter region.

Then enter Formula(Text) in Filter – > select Show in Filter region -> Add a label (Enter Item).

filter_tip2

Now click save & Run to see the result.

You must seeing all the Sales Order with customer Name who bought the item whose Name starts with ‘ai’/’AI’.

Now you can enter any name and hit outside the textbox, and new set of results will be displayed.

filter_tip3

Now 3 things need to be kept in mind:

Note 1:

Don’t forget to add Formula(Text) with field name(here its “Item”) and its default formula in Criteria filter, because in Available Filter you can’t choose field in Formula(Text), so you have to do that here.

Note 2:

Don’t click enter when you are inside the textbox(here its Enter Item textbox), else a csv file will be generated for each result set.

Hoping this will definitely save your time…… 🙂

Thanks,

Asha