In NetSuite, there is a limitation for letter template, while sending an email it cannot be attached and modified with record details accordingly. A client script and user event script which is deployed in the email record.
When there is a custom flag then the user event script set the appropriate template automatically. So that user need not have to worry about attaching the template while sending an email.
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
* @NModuleScope SameAccount
*/
define([ 'N/email', 'N/http', 'N/https', 'N/record', 'N/runtime',
'N/ui/serverWidget', 'N/url' ],
/**
* @param {email}
* email
* @param {http}
* http
* @param {https}
* https
* @param {record}
* record
* @param {runtime}
* runtime
* @param {serverWidget}
* serverWidget
* @param {url}
* url
*/
function(email, http, https, record, runtime, serverWidget, url) {
/**
* Function definition to be triggered before record is loaded.
*
* @param {Object}
* scriptContext
* @param {Record}
* scriptContext.newRecord - New record
* @param {string}
* scriptContext.type - Trigger type
* @param {Form}
* scriptContext.form - Current form
* @Since 2015.2
*/
function beforeLoad(scriptContext) {
var request = scriptContext.request;
var isCustom = request.parameters.iscustom;
var emailtemplate = request.parameters.emailtemplate;
var filetemplate = request.parameters.filetemplate;
log.debug({
title : "filetemplate",
details : filetemplate
});
log.debug({
title : "emailtemplate",
details : emailtemplate
});
log.debug({
title : "isCustom",
details : isCustom
});
if (isCustom == 't') {
log.debug({
title : "isCustom",
details : isCustom
});
var objRecord = scriptContext.newRecord;
log.debug({
title : 'objrecord',
details : objRecord
});
objRecord.setValue({
fieldId : 'letter',
value : emailtemplate
});
objRecord.setValue({
fieldId : 'template',
value : filetemplate
});
function logme(title, details) {
log.debug({
title : title,
details : details
});
}
} else if (isCustom == 'f') {
var objRecord = scriptContext.newRecord;
objRecord.setValue({
fieldId : 'template',
value : filetemplate
});
}
}
return {
beforeLoad : beforeLoad
};
});
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
define(
[ 'N/http', 'N/https', 'N/record', 'N/runtime', 'N/search',
'N/ui/message', 'N/url' ],
function(http, https, record, runtime, search, message, url) {
/**
* Function to be executed when field is changed.
*
* @param {Object}
* scriptContext
* @param {Record}
* scriptContext.currentRecord - Current form record
* @param {string}
* scriptContext.sublistId - Sublist name
* @param {string}
* scriptContext.fieldId - Field name
* @param {number}
* scriptContext.lineNum - Line number. Will be undefined
* if not a sublist or matrix field
* @param {number}
* scriptContext.columnNum - Line number. Will be
* undefined if not a matrix field
*
* @since 2015.2
*/
function fieldChanged(scriptContext) {
if (scriptContext.fieldId == 'custentity_jj_file_template') {
var records = scriptContext.currentRecord;
var entity = getParameterByName('id');
var filetemplate = records.getValue({
fieldId : 'custentity_jj_file_template'
});
var emailtemplate = records.getValue({
fieldId : 'custentity_jj_email_template'
});
console.log(emailtemplate);
var numLines = records.getLineCount({
sublistId : 'recmachcustrecord_satphone_customer'
});
console.log(numLines);
for (var i = 0; i < numLines; i++) {
var recordid = records.getSublistValue({
fieldId : 'id',
sublistId : 'recmachcustrecord_satphone_customer',
line : i
});
}
console.log(recordid);
if (emailtemplate == null || emailtemplate == "") {
window
.open(
"https://system.na2.netsuite.com/app/crm/common/crmmessage.nl?recordtype=1&record="
+ recordid
+ "&l=T&templatetype=MAIL&iscustom=f&entity="
+ entity
+ "&emailtemplate="
+ emailtemplate
+ "&filetemplate="
+ filetemplate + "", "",
"width=800,height=500");
} else {
window
.open(
"https://system.na2.netsuite.com/app/crm/common/crmmessage.nl?recordtype=1&record="
+ recordid
+ "&l=T&templatetype=EMAIL&iscustom=t&entity="
+ entity
+ "&emailtemplate="
+ emailtemplate
+ "&filetemplate="
+ filetemplate + "", "",
"width=800,height=500");
}
}
// for getting parameter by name .................
function getParameterByName(name, url) {
if (!url)
url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex
.exec(url);
if (!results)
return null;
if (!results[2])
return ' ';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
}
return {
fieldChanged : fieldChanged
};
});