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
};
});