‘Quick Search’ Portlet Issue

Jira Code: TM-184
On entering the keyword for searching in the ‘Quick Search’ portlet, the result does not show.

Client Script: TM-150 JJ CS Dashboard View

/*******************************************************************************
 * Author:Jobin and Jismi IT services LLP
 * Date:08/01/2019 
 * Script name: TM-150 JJ CS Dashboard view
 * Folder:SuiteScripts : JJSuiteScripts : TM-140
 * Description:Quick Search portlet for Web Address option to search.
 * 
 * Revision 1.0 nd
 * 			1.1 aj to remove Download Button for TM 51 Take 5 Sales Person
******************************************************************************/
/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/record', 'N/search', 'N/url','N/currentRecord','N/format', 'N/runtime'],
/**
 * @param {record} record
 * @param {search} search
 * @param {url} url
 */
function(record, search, url,currentRecord,format,runtime) {
    
    /**
     * Function to be executed after page is initialized.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.mode - The mode in which the record is being accessed (create, copy, or edit)
     *
     * @since 2015.2
     */
    function pageInit(scriptContext) {

    }

    /**
     * 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) {

    }

    /**
     * Function to be executed when field is slaved.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     * @param {string} scriptContext.fieldId - Field name
     *
     * @since 2015.2
     */
    function postSourcing(scriptContext) {

    }

    /**
     * Function to be executed after sublist is inserted, removed, or edited.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @since 2015.2
     */
    function sublistChanged(scriptContext) {

    }

    /**
     * Function to be executed after line is selected.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @since 2015.2
     */
    function lineInit(scriptContext) {

    }

    /**
     * Validation 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
     *
     * @returns {boolean} Return true if field is valid
     *
     * @since 2015.2
     */
    function validateField(scriptContext) {

    }

    /**
     * Validation function to be executed when sublist line is committed.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @returns {boolean} Return true if sublist line is valid
     *
     * @since 2015.2
     */
    function validateLine(scriptContext) {

    }

    /**
     * Validation function to be executed when sublist line is inserted.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @returns {boolean} Return true if sublist line is valid
     *
     * @since 2015.2
     */
    function validateInsert(scriptContext) {

    }

    /**
     * Validation function to be executed when record is deleted.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @returns {boolean} Return true if sublist line is valid
     *
     * @since 2015.2
     */
    function validateDelete(scriptContext) {

    }

    /**
     * Validation function to be executed when record is saved.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @returns {boolean} Return true if record is valid
     *
     * @since 2015.2
     */
    function saveRecord(scriptContext) {
    	try{
    		var records = scriptContext.currentRecord;
			var custscript_webaddress = records.getValue({
				fieldId : 'webaddress'
			});
			var userObj = runtime.getCurrentUser();
			log.debug({
				title : 'user',
				details : userObj
			});
			console.log("userObj="+userObj.roleId);
	//	alert("userObj="+userObj.roleId);
			var custscript_company = records.getValue({
				fieldId : 'companyname'
			});
			
			var custscript_contact = records.getValue({
				fieldId : 'contact'
			});
			console.log("custscript_webaddress="+escape_char(custscript_webaddress)+"***custscript_company="+escape_char(custscript_company)+"custscript_contact="+escape_char(custscript_contact))
			
			if(custscript_company=="" && custscript_contact=="" && custscript_webaddress=="")
			{
				alert("You must enter a Web Address or Company name or Contact.")
				
			}else{
               window.onbeforeunload=function(){};
               // To check if the role is "TM 51 Take 5 Sales Person"
               
              
               
						var output = url.resolveScript({
				scriptId : 'customscript_tm_165_sl_search_ext_custom',
				deploymentId : 'customdeploy_tm_165_sl_search_ext_custom',
				returnExternalUrl : false,
				params : {
					'quicksearch' : true
					
				}
			});
			
				window.open( output +"&custscript_webaddress="+ escape_char(custscript_webaddress)+"&custscript_contact="+ escape_char(custscript_contact)+"&custscript_company="+ escape_char(custscript_company), '',"width=1800,height=1000");
				
			}
			function escape_char(spcl_char){
				console.log('spcl_char',spcl_char)
				var content1
				if(((spcl_char.indexOf('+') != -1) || (spcl_char.indexOf('>') != -1) || (spcl_char.indexOf('<') != -1) || (spcl_char.indexOf('&') != -1) || (spcl_char.indexOf('#') != -1))){
					content1 = spcl_char.replace(/\+/g,'plusk');
//					content1 = content1.replace(/ /g,'space');
					content1 = content1.replace(/#/g,'hashk');
					content1 = content1.replace(/&/g,'andk');
					content1 = content1.replace(/>/g,'grtk');
					content1 = content1.replace(/</g,'lsstk');
				}else{
					content1 = spcl_char;
				}
				console.log('content1',content1)
				return content1;
			}
				
    	}catch(e)
   	{
   		//log.debug("Err@ FN ",e.message);
   		console.log("Err@ FN =",e.message);
   	}

    }
    
    

    return {
    	/* pageInit: pageInit,
        inventoryBookReport:inventoryBookReport
        
        fieldChanged: fieldChanged,
        postSourcing: postSourcing,
        sublistChanged: sublistChanged,
        lineInit: lineInit,
        validateField: validateField,
        validateLine: validateLine,
        validateInsert: validateInsert,
        validateDelete: validateDelete,*/
        saveRecord: saveRecord
    };
    
});

Suitelet Script: TM-165 JJ SL Search for Existing Customers

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
define([ 'N/record', 'N/search', 'N/ui/serverWidget','N/url','N/http', 'N/https','N/file' , 'N/encode', 'N/runtime'],
		/**
		 * @param {record}
		 *            record
		 * @param {search}
		 *            search
		 * @param {serverWidget}
		 *            serverWidget
		 */
		function(record, search, serverWidget, url, http, https,file,encode,runtime) {

	/**
	 * Definition of the Suitelet script trigger point.
	 * 
	 * @param {Object}
	 *            context
	 * @param {ServerRequest}
	 *            context.request - Encapsulation of the incoming request
	 * @param {ServerResponse}
	 *            context.response - Encapsulation of the Suitelet response
	 * @Since 2015.2
	 */
	var CLIENT_SCRIPT_FILE_ID =1096 ;
	function onRequest(context) {

		if (context.request.method == 'GET') {
			try {
			var company = context.request.parameters.custscript_company;
			if(company!= null){
				company = escape_char(company)
			}
			var webaddress = context.request.parameters.custscript_webaddress;
			if(webaddress!= null){
				webaddress = escape_char(webaddress)
			}
			var contact = context.request.parameters.custscript_contact;
			if(contact!= null){
				comcontactpany = escape_char(contact)
			}
			log.debug('company',company)
			log.debug('webaddress',webaddress)
			log.debug('contact',contact)
              var entityid = context.request.parameters.custpage_entity;
			if(entityid!= null){
				entityid = escape_char(entityid)
			}
              var mode = context.request.parameters.mode;
		
              var userObj = runtime.getCurrentUser();
  			log.debug({
  				title : 'user',
  				details : userObj
  			});
		
		if(mode!='download'|| mode==undefined)
		{

		
		var form = serverWidget.createForm({
			title : 'Customer Search'
		});
		form.clientScriptFileId = CLIENT_SCRIPT_FILE_ID;
		
		
		// AJ MODIFIED ON 12/1/2019 modified on 28/01/19
		if(userObj.roleId!='customrole1029_1')
			{
		var download = form.addButton({
			id : 'custpage_download',
			label : 'Download',
			functionName : 'download()'
		});
			}
		var sublist = form.addSublist({
			id : 'custpage_customertable',
			type : serverWidget.SublistType.LIST,
			label : 'Existing Customers'
		});

		// Add columns to be shown on Page
		sublist.addField({
			id : 'custpage_compname',
			label : 'Company Name',
			type : serverWidget.FieldType.TEXT
		});
		
		sublist.addField({
			id : 'custpage_webaddressdress',
			label : 'Web Address',
			type : serverWidget.FieldType.TEXT
		});
		
		
		
		sublist.addField({
			id : 'custpage_salesrep',
			label : 'Sales Rep',
			type : serverWidget.FieldType.TEXT
		});
		sublist.addField({
			id : 'custpage_stage',
			label : 'Stage',
			type : serverWidget.FieldType.TEXT
		});
		sublist.addField({
			id : 'custpage_entitystatus',
			label : 'Status',
			type : serverWidget.FieldType.TEXT
		});
		sublist.addField({
			id : 'custpage_lastmodifieddate',
			label : 'Last Modified Date',
			type : serverWidget.FieldType.TEXT
		});
		
		sublist.addField({
			id : 'custpage_isinactive',
			label : 'isinactive',
			type : serverWidget.FieldType.TEXT
		});
		
		sublist.addField({
			id : 'custpage_usernote',
			label : 'User Note',
			type : serverWidget.FieldType.TEXT
		});
		
	var intid =	sublist.addField({
			id : 'custpage_internalid',
			label : 'Internal ID',
			type : serverWidget.FieldType.TEXT
		});
		
 	intid.updateDisplayType({
 	    displayType: serverWidget.FieldDisplayType.HIDDEN
 	});
		
 	context.response.writePage(form);
		
	if(company||contact||webaddress){
		
		var result = getResults(company,webaddress,contact);
		log.debug("result",result);
	result = JSON.parse(result);
	//log.debug("result2",result);
				var resultLength=result.length;
			
				log.debug("resultLength",resultLength);	
		
	
	
		
		
		
		
		
	var extCompName;
	for (var i = 0; i < result.length; i++) {
		var resultobc = result[i];
		extCompName = unescape(resultobc.extCompName);
		
		var extWebaddress =unescape(resultobc.extWebaddress);
		
		var extSalesRep = unescape(resultobc.extSalesRep);
		
		var extCusSaleActivity = unescape(resultobc.extCusSaleActivity);
	
     
     var  extCusStatus = unescape(resultobc.extCusStatus);
	 
	   extCusisinactive = unescape(resultobc.extCusisinactive);
	  
	  var extCusStage = unescape(resultobc.extCusStage);
	 
	  var  extCususernote = unescape(resultobc.extCususernote);
	  	
var extCusinternal = unescape(resultobc.extCusinternal);

	
		
		sublist.setSublistValue({
                id: 'custpage_compname',
                line: i,
                value: checkifnull(extCompName)
		
		});
		
		
		sublist.setSublistValue({
                id: 'custpage_webaddressdress',
                line: i,
                value: checkifnull(extWebaddress)
		
		});
		
		
	
		
		sublist.setSublistValue({
                id: 'custpage_salesrep',
                line: i,
                value:checkifnull(extSalesRep)
		
		});
	
	
		sublist.setSublistValue({
                id: 'custpage_entitystatus',
                line: i,
                value:checkifnull(extCusStatus)
		
		});
		
		
		
		
	
		
		sublist.setSublistValue({
                id: 'custpage_lastmodifieddate',
                line: i,
               value:checkifnull(extCusSaleActivity)
		
		});
		
		
		
	 

		
		
		
		sublist.setSublistValue({
                id: 'custpage_stage',
                line: i,
                value:checkifnull(extCusStage)
		
		});
		
		
		
	
		
		
		
		sublist.setSublistValue({
                id: 'custpage_isinactive',
                line: i,
                value: checkifnull(extCusisinactive,false)
		
		});
		
		
		
	
		
     var flag="TRUE"

  var userurl=   "https://system.na1.netsuite.com/app/site/hosting/scriptlet.nl?script=112&deploy=1&entity="+extCusinternal;
      var transId = '<a target="_blank" href ='+userurl+'>UserNote</a>'
		
		
	sublist.setSublistValue({
                id: 'custpage_usernote',
                line: i,
                value: transId
		
		});
		
		sublist.setSublistValue({
                id: 'custpage_internalid',
                line: i,
                value: extCusinternal
		
		});
		

	}
	}	
		}
	else
		{
		try
		{
	
		var XML = "";
		var TABLE = "";

		var myXMLFile = file.load({
			id : '1086'
		});
		var myXMLFile_value = myXMLFile.getContents();
		
		//if(company!=null && company!=undefined && company!='' && company!=' ' && company!="" && company!=" "){
			
			var result = getResults(company,webaddress,contact);
		result = JSON.parse(result);
			
					var resultLength=result.length;
				
				if(resultLength>0)
			
		{
		
					for (var i = 0; i < resultLength; i++) {
						var resultobc = result[i];
						extCompName = resultobc.extCompName;
						
						var extWebaddress = resultobc.extWebaddress;
						
						
						var extSalesRep = resultobc.extSalesRep;
						
						var extCusSaleActivity = resultobc.extCusSaleActivity;
						
				     
				     var  extCusStatus = resultobc.extCusStatus;
					
					   extCusisinactive = resultobc.extCusisinactive;
					   	
					  var extCusStage = resultobc.extCusStage;
					
					  var  extCususernote = resultobc.extCususernote;
					  	
				var extCusinternal = resultobc.extCusinternal;
				
					
						
		var strVar = "";
		strVar += "   <Row ss:AutoFitHeight=\"0\">";
		strVar += "    <Cell><Data ss:Type=\"String\">" + unescape(checkifnull(extCompName))
						+ "<\/Data><\/Cell>";
		strVar += "    <Cell><Data ss:Type=\"String\">" + unescape(checkifnull(extWebaddress))
						+ "<\/Data><\/Cell>";
		strVar += "    <Cell><Data ss:Type=\"String\">" + unescape(checkifnull(extSalesRep))
						+ "<\/Data><\/Cell>";
		strVar += "    <Cell><Data ss:Type=\"String\">" + unescape(checkifnull(extCusStage))
						+ "<\/Data><\/Cell>";
		strVar += "    <Cell><Data ss:Type=\"String\">" + unescape(checkifnull(extCusStatus))
						+ "<\/Data><\/Cell>";
		strVar += "    <Cell><Data ss:Type=\"String\">" + unescape(checkifnull(extCusSaleActivity))
						+ "<\/Data><\/Cell>";
		strVar += "    <Cell><Data ss:Type=\"String\">" + unescape(checkifnull(extCusisinactive,false))
		+ "<\/Data><\/Cell>";
		strVar += "   <\/Row>";

		if (i < (resultLength - 1)) {
			strVar = strVar + '\n';
		}
		TABLE = TABLE + strVar;

	}

		XML = myXMLFile_value.replace('<!-- REPLACEWITHTABLEBODY -->',
				TABLE);
		//var XML_TO_PRINT = XML;

			var strXmlEncoded = encode.convert({
				string : XML,
				inputEncoding : encode.Encoding.UTF_8,
				outputEncoding : encode.Encoding.BASE_64
			});
			

			var excelFile = file.create({
				name : 'Existing Lead.xls',
				fileType : file.Type.EXCEL,
				contents : strXmlEncoded
			});			
			
			context.response.writeFile(excelFile,true);
		}
				else
					{
					context.response.write("No result found, Kindly change the WebAddress");
					}
	/*	}
		else
		{
		context.response.write("No result found, Kindly add  the WebAddress");
		}*/
		}catch(e)
		{
			log.error("Err@ DOWN LOADFN ",e);
		}
		
		
		}

		
				
			} catch (e) {
				log.error({
					title : 'form for search',
					details : e.message
				});
			}
		}

	}

	return {
		onRequest : onRequest
	};

	
	//to escape the special characters
	function escape_char(spcl_char){
		var content1
		if(spcl_char.indexOf('plusk') != -1 || spcl_char.indexOf('andk') != -1|| spcl_char.indexOf('lsstk') != -1 ||spcl_char.indexOf('grtk') != -1 || /*spcl_char.indexOf('space') != -1 ||*/ spcl_char.indexOf('hashk') != -1 ){
			content1 = spcl_char.replace(/plusk/g,'+');
//			content1 = content1.replace(/space/g,' ');
			content1 = content1.replace(/hashk/g,'#');
			content1 = content1.replace(/andk/g,'&');
			content1 = content1.replace(/lsstk/g,'<');
			content1 = content1.replace(/grtk/g,'>');
		}else{
			content1 = spcl_char
		}
		return content1;
		
	}
	function getResults(custscript_company,custscript_webaddress,custscript_contact){
		try{
				var output = url.resolveScript({
						scriptId : 'customscript_tm_165_jj_sl_search',
						deploymentId : 'customdeploy_tm_165_jj_sl_search',
						returnExternalUrl : true,

					});
log.debug("output",output);	
					var response = https.post({
								url : output,
								body : {
									'custscript_company' : custscript_company,
									'custscript_webaddress':custscript_webaddress,
									'custscript_contact':custscript_contact
									
								}
							});
log.debug("response",response);	
					var result = response.body;


		
		return result;
	}catch(e)
	{
		log.debug("Err@get result",e);
	}
	}
	  function checkifnull (data,prime) {
                if (data == "" || data == null) {
					if(prime==false){
						return "false"
					}
                    return "-"
                } else {
                    return data
                }
            }
	
});

Suitelet Script: TM-165 JJ SL Seach Suitelet for Customer

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
define([ 'N/record', 'N/search' ],
/**
 * @param {record}
 *            record
 * @param {search}
 *            search
 */
function(record, search) {

	/**
	 * Definition of the Suitelet script trigger point.
	 * 
	 * @param {Object}
	 *            context
	 * @param {ServerRequest}
	 *            context.request - Encapsulation of the incoming request
	 * @param {ServerResponse}
	 *            context.response - Encapsulation of the Suitelet response
	 * @Since 2015.2
	 */
	function onRequest(context) {
		try {
			//log.debug("cont",context.request.body);
			var webAddress = context.request.parameters.custscript_webaddress;
			var Contact = context.request.parameters.custscript_contact;
			var Company = context.request.parameters.custscript_company;
			if (context.request.method == 'POST') {

				/*log.debug("webaddress",webAddress);
				log.debug("contact",Contact);
				log.debug("company",Company);*/

				var companyData = [];
				var myPostDataObj = {};
				var filterArray = [];
				var isFirstElement =0;
				if(Company!=null && Company!=undefined && Company!="" &&Company!=" ")
					{
					filterArray.push(["companyname","contains",Company]);
					isFirstElement++;
					}
				if(Contact!=null && Contact!=undefined && Contact!="" &&Contact!=" ")
					{
					if(isFirstElement!=0)
						{
						filterArray.push("OR");
						}
					isFirstElement++;
					filterArray.push( ["contact.entityid","contains",Contact]);
					}
				if(webAddress!=null && webAddress!=undefined && webAddress!="" &&webAddress!=" ")
					{
					if(isFirstElement!=0)
					{
					filterArray.push("OR");
					}isFirstElement++;
				filterArray.push(["url","contains",webAddress]);
					}
				
				log.debug("filterArray",filterArray);
				// search for existing customers with key words
				var customerSearchObj = search
						.create({
							type : "customer",
							filters :filterArray ,
					columns : [ search.createColumn({
						name : "entityid",
						sort : search.Sort.ASC
					}), "salesrep", "companyname", "lastmodifieddate",
							"entitystatus", "isinactive", "stage",
							"internalid", "url" ]
				});
				var searchResultCount = customerSearchObj.runPaged().count;
				log.debug('searchResultCount', searchResultCount)
				customerSearchObj.run().each(function(result) {
					var extCompName = result.getValue({
						name : 'companyname'
					});

					

					var extSalesRep = result.getText({
						name : 'salesrep'
					});

				//	log.debug('extSalesRep', extSalesRep)

					var extCusSaleActivity = result.getValue({
						name : 'lastmodifieddate'
					});

				//	log.debug("extCusSaleActivity", extCusSaleActivity);

					var extCusStatus = result.getText({
						name : 'entitystatus'
					});
				//	log.debug('extCusStatus', extCusStatus)

					var extCusisinactive = result.getValue({
						name : 'isinactive'
					});

				//	log.debug('extCusisinactive', extCusisinactive)

					var extCusStage = result.getValue({
						name : 'stage'
					});

				//	log.debug('extCusisinactive', extCusisinactive)

					var extCusinternal = result.getValue({
						name : 'internalid'
					});

					var extWebaddress = result.getValue({
						name : 'url'
					});

				//	log.debug('extWebaddress', extWebaddress)

					var myPostDataObj = {};
					myPostDataObj.extCompName = escape(extCompName);

					myPostDataObj.extSalesRep = escape(extSalesRep);
					myPostDataObj.extCusStatus = escape(extCusStatus);
					myPostDataObj.extCusisinactive = escape(extCusisinactive);
					myPostDataObj.extCusSaleActivity = escape(extCusSaleActivity);
					myPostDataObj.extCusStage = escape(extCusStage);
					myPostDataObj.extCusinternal = escape(extCusinternal);
					myPostDataObj.extWebaddress = escape(extWebaddress);

					// cart.push({element: element});
					companyData.push(myPostDataObj);

					// alert(extSalesRep);
					// .run().each has a limit of 4,000 results
					return true;
				});

				var companyData = JSON.stringify(companyData);
				log.debug({
					title : 'companyDatass',
					details : companyData
				});
				context.response.write(companyData);
				// End of search for existing customers with key words
			} else {

			}

		} catch (e) {
			log.debug({
				title : 'search customer',
				details : e.message
			});
		}
	}

	return {
		onRequest : onRequest
	};

});

Leave a comment

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