Adding Radio Button on Suitelet SS2.0 - netsuite

I am adding the radio button on Suitlet page but it is throwing an error while loading the page. I am not sure where I am going wrong.
var custType1 = form.addField({
id: 'custpage_customertype',
name: 'retail_customer',
type: serverWidget.FieldType.RADIO,
label: 'Retail Customer',
container: 'companygroup'
});
var custType2 = form.addField({
id: 'custpage_customertype',
name: 'corporate_customer',
type: serverWidget.FieldType.RADIO,
label: 'Corporate Customer',
container: 'companygroup'
});
var custType3 = form.addField({
id: 'custpage_customertype',
name: 'external_customer',
type: serverWidget.FieldType.RADIO,
label: 'External Customer',
container: 'companygroup'
});
While running the code, I am getting error on this line saying SSS_MISSING_REQD_ARGUMENT. Following is the error code -
{"type":"error.SuiteScriptError","name":"SSS_MISSING_REQD_ARGUMENT","message":"nlobjField: Missing a required argument: radiobuttons: sSource","stack":["addField(N/serverWidget)","(/SuiteScripts/sdr_sw_suitelet_test.js:123)"],"cause":{"type":"internal error","code":"SSS_MISSING_REQD_ARGUMENT","details":"nlobjField: Missing a required argument: radiobuttons: sSource","userEvent":null,"stackTrace":["addField(N/serverWidget)","(/SuiteScripts/sdr_sw_suitelet_test.js:123)"],"notifyOff":false},"id":"","notifyOff":false,"userFacing":false}

You need a source property which will be like the id of the radio button. This will be the value used by the script to know which radio button was selected. Something like
var custType1 = form.addField({
id: 'custpage_customertype',
name: 'retail_customer',
type: serverWidget.FieldType.RADIO,
label: 'Retail Customer',
source:'retail',
container: 'companygroup'
});

Related

View webpage on button click on Hero Card in Microsoft Teams

I have a message extension running in MS Teams.
The search list displays the Hero Card.
On selecting one of them it displays something like below in the chat.
Part of code that displays the button:
...
heroCard.content.buttons = [{
type: 'invoke',
title: 'Open Attachment',
value: {
type: "task/fetch",
messageId: "12345",
}
}];
I am looking to run my angular app on clicking Open Attachment which displays the documents.
I figured out the way to proceed using Microsoft Docs: Use task modules from bots
First I need to tweak the hero card button to pass my data.
...
heroCard.content.buttons = [{
type: 'invoke',
title: 'Open Attachment',
value: {
type: "task/fetch",
messageId: "12345",
data: attachments
}
}];
The second thing is to handle the fetch request:
async handleTeamsTaskModuleFetch(context, action) {
var attachments = action.data.data
return {
task: {
type: 'continue',
value: {
height: 400,
width: 400,
title: 'View Documents',
url: `https://example.io?data=${attachments}`
}
}
};
}
Note: the URL must be in the valid domain of the manifest - otherwise you'll see the blank page.
The below is the final output:

I want to make a custom form in NetSuite with a list of Status after enabling Inventory Status with no empty field option

`sublist.addField({
id: 'INV_STATUS',
label: 'INV_STATUS',
type: serverWidget.FieldType.SELECT,
source: 'inventorystatus'
});`
I am using this code to add a field to sublist but the sublist has first value as empty.
You have to populate the list manually to avoid an empty option.
var list = sublist.addField({
id: 'INV_STATUS',
label: 'INV_STATUS',
type: serverWidget.FieldType.SELECT
});
search.create({
type: search.Type.INVENTORY_STATUS,
columns: 'name'
}).run().each(function(result) {
list.addSelectOption({
value: result.id,
text: result.getValue('name')
});
});

cannot create item with duplicate context menu id in extension

I am creating a new extension. And I add a context menu option via an extension in webpages.
But chrome developer mode throws an error, that is 'unchecked.runtime.lastError: cannot create an item with duplicate id my id '. but I gave that in unique id. how to fix that.?
this is my context creation method.
chrome.contextMenus.create({
id: "zm_mark_down_preview_beta",
title: 'preview and edit',
contexts: ["editable"]
});
In Chrome, you should create the context menu just once after install/update.
Use onInstalled event:
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
id: "zm_mark_down_preview_beta",
title: 'preview and edit',
contexts: ["editable"]
});
});
Alternatively, you can simply suppress the error by accessing lastError in the callback:
chrome.contextMenus.create({
id: "zm_mark_down_preview_beta",
title: 'preview and edit',
contexts: ["editable"]
}, () => chrome.runtime.lastError);

SuiteScript 2.0 Suitelet Sublist with line-specific "Select" options

I currently have a nice suitelet popup as a PDF Report selection. Everything so far works nicely.
However, some of the available PDF reports require individual options to be passed. ie. a date, or a class selction specific to ONLY 1 of the forms.
Currently I have created the sublist:
var documentList = form.addSublist({
id: 'documentlist',
label: 'Documents Available'+ (data.job ? ' for Job Number: '+data.job : ''),
type: serverWidget.SublistType.LIST
})
documentList.addField({ id: 'mark', type: 'CHECKBOX', label: 'Print'});
documentList.addField({ id: 'config', type: 'SELECT', label: 'Form', source: 'customrecord_advancedformconfig' }).updateDisplayType({displayType : 'INLINE'});
documentList.addField({ id: 'vardate', type: 'CHECKBOX', label: 'Variation Dates' }).updateDisplayType({displayType : 'INLINE'});
documentList.addField({ id: 'document', type: 'TEXT', label: 'Document', }).updateDisplayType({displayType : 'HIDDEN'});
documentList.addField({ id: 'primaryrecord', type: 'TEXT', label: 'Main Record'}).updateDisplayType({displayType : 'INLINE'});
documentList.addField({ id: 'storeincabinet', type: 'CHECKBOX', label: 'Save to Cabinet'}).updateDisplayType({displayType : 'INLINE'});
documentList.addField({ id: 'filename', type: 'TEXT', label: 'File Name to be Generated'}).updateDisplayType({displayType : 'NORMAL'});
var pdfOptions = documentList.addField({ id: 'formoption', type: 'SELECT', label: 'Option' }).updateDisplayType({displayType : 'NORMAL'});
The last line is the sublist field for the form options.
Lets assume the first line requires a couple of date options, while the second line requires a couple of size or colour options.
As there is only a "field" action to pdfOptions.addSelectOption(...) this adds options to ALL occurences of the field.
Is there a method for each LINE of the sublist, to set options for just a single line??
There is no pdfOptions.addSublistSelectOption(...) so I'm going to guess the answer is not, but thought I would ask anyway.
To illustrate, see below image... Only the last line should have a date dropdown.
The way I've accomplished having different select options for different lines is using a client script with the lineInit entry point that cleared out the existing options and added relevant ones for that line.
However you would need to change the sublist type from LIST to EDITOR or INLINEEDITOR for this to work, which probably wouldn't work well in your use case.

Add two sublists in Suitelet side by side

I wanted to add two sublists side by side in netsuite using suitelet. however, when I do that the sublists appear top and bottom.
Is there any solution for this.I want the output as in the screenshot.
var newTab = form.addTab({ id : 'matchedtab', label : 'Matched' });
var nMatchedList = form.addSublist({ id: 'custpage_matched', type: serverWidget.SublistType.LIST, label: 'Matched',tab:'matchedtab' });
nMatchedList.addRefreshButton();
nMatchedList.addField({ id : 'custpage_tr_cleared', type : serverWidget.FieldType.TEXT, label : 'Cleared' });
nMatchedList.addField({ id : 'custpage_tr_name', type : serverWidget.FieldType.TEXT, label : 'Name' }); nMatchedList2 = form.addSublist({ id: 'custpage_matched2', type: serverWidget.SublistType.LIST, label: 'Matched',tab:'matchedtab' });
nMatchedList2.addRefreshButton();
nMatchedList2.addField({ id : 'custpage_tr_cleared2', type : serverWidget.FieldType.TEXT, label : 'Cleared' });
nMatchedList2.addField({ id : 'custpage_tr_name2', type : serverWidget.FieldType.TEXT, label : 'Name' });
Used this code to get output like in the given screenshot but the sublist gets added vertically.
If I'm not mistaken this is the default behavior of the serverWidget module

Resources