Custom button action for creating a case record using User Event and Client script.
/**
* @NApiVersion 2.1
* @NScriptType UserEventScript
*/
define(['N/currentRecord', 'N/record' ],
/**
* @param{currentRecord} currentRecord
* @param{record} record
*/
(currentRecord, record,) => {
/**
* Defines the function definition that is executed before record is loaded.
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord - New record
* @param {string} scriptContext.type - Trigger type; use values from the context.UserEventType enum
* @param {form} scriptContext.form - Current form
* @param {ServletRequest} scriptContext.request - HTTP request information sent from the browser for a client action only.
* @since 2015.2
*/
const beforeLoad = (scriptContext) => {
try {
// log.debug( 'current form is',scriptContext.form);
if( scriptContext.newRecord.type == "customrecord_jj_stor_custmr_req_ahap1473"){ //custom record
log.debug( 'current form is',scriptContext.newRecord.type );
let currentRecord = scriptContext.newRecord;
if (scriptContext.type == 'view') {
let taskStatus = currentRecord.getValue({
fieldId: 'custrecord_jj_status_ahap1473'
})
if (taskStatus == '1') {
let companyName = currentRecord.getValue({
fieldId: 'custrecord_jj_company_ahap1473'
})
scriptContext.form.clientScriptModulePath = "SuiteScripts/Jobin and Jismi IT Services/AHAP-2707 Functionality Of Zendesk/Actions/jj_cs_button_action_ahap_2707.js" //The path of client script file
let internalId = currentRecord.id;
scriptContext.form.addButton({
id: 'custpage_jj_case_button',
label: 'Create Case Record',
functionName: `onClickButton(${internalId}, ${companyName})` //function created in client script with parameters
});
}
}
}
} catch (e) {
log.debug('Error in Before Load', e)
}
}
return{ beforeload}
})
Create client Script in the path mentioned in the UE script.
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
define(['N/record', 'N/recordContext', 'N/url'],
/**
* @param{record} record
* @param{recordContext} recordContext
* @param{url} url
*/
function( record, recordContext, url) {
/**
* Function to set value from custom record to Case Record
* @param {*} requestInternalId internal id of store/customer request record
* @param {*} companyName company name from store/customer request record
*/
function onClickButton(requestInternalId,companyName){
try{
let url = "https://359045-sb1.app.netsuite.com/app/crm/support/supportcase.nl?";
url += "record.custevent_jj_created_from="+requestInternalId+'&record.company='+companyName;
window.open(url);
}catch(e){
console.error('error in Clinet Scrip ',e);
}
}
return {onClickButton :onClickButton};
})
Deploy the UE script
New window will open to create the case record as the custom button action