Attaching letter template

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

			};

		});

Leave a comment

Your email address will not be published. Required fields are marked *