To display partner details in the website we need to create saved search to get those values for that refer the KB article : https://jjknowledgebase.com/post/63756
We need to create an extension and then add the codes given below in the corresponding files.
Folder Structure:
assets/services:
PartnerDetails.Service.ss
function service(request, response)
{
'use strict';
try
{
require('JJ.PartnerDetails.PartnerDetails.ServiceController').handle(request, response);
}
catch(ex)
{
var controller = require('ServiceController');
controller.response = response;
controller.request = request;
controller.sendError(ex);
}
}
JavaScript file:
JJ.PartnerDetails.PartnerDetails.js
define(
'JJ.PartnerDetails.PartnerDetails'
, [
'JJ.PartnerDetails.PartnerDetails.View'
]
, function (
PartnerDetailsView
) {
'use strict';
return {
mountToApp: function mountToApp(container) {
let layout = container.getComponent('Layout');
if (layout) {
layout.addChildView('partner-details', function () {
return new PartnerDetailsView({ container: container });
});
};
},
};
});
JJ.PartnerDetails.PartnerDetails.Model.js
define("JJ.PartnerDetails.PartnerDetails.Model", ["Backbone", "Utils"], function (
Backbone,
Utils
) {
"use strict";
return Backbone.Model.extend({
urlRoot: Utils.getAbsoluteUrl(
getExtensionAssetsPath(
"services/PartnerDetails.Service.ss"
)
)
});
});
PartnerDetails.View.js
define('JJ.PartnerDetails.PartnerDetails.View', [
'jj_partnerdetails_partnerdetails.tpl',
'Backbone',
'JJ.PartnerDetails.PartnerDetails.Model',
"Profile.Model"
], function (
jj_partnerdetails_partnerdetails_tpl,
Backbone,
Model,
profilemodel
) {
'use strict';
return Backbone.View.extend({
template: jj_partnerdetails_partnerdetails_tpl,
initialize: function (options) {
this.model = new Model();
},
async getContext() {
try {
let profile_data = profilemodel.getInstance();
let cust_id = profile_data.get("internalid");
let result = await this.model.fetch({ data: { cust_id: cust_id } });
var Partner_name = result.Partner_name.replace(/d/g, '');
return {
Partner_email: result.Partner_email,
Partner_name: Partner_name,
Partner_phone: result.Partner_phone
};
} catch (e) {
console.error("Error@JS file", e);
return {};
}
},
async render() {
let context = await this.getContext();
if (context.Partner_name && context.Partner_email && context.Partner_phone) {
this._render(context);
} else {
this.$el.hide();
} return this;
},
_render(context) {
this.$el.html(this.template(context));
return this;
}
});
});
SuiteScript:
JJ.PartnerDetails.PartnerDetails.js
define('JJ.PartnerDetails.PartnerDetails'
, [
"SC.Model"
]
, function (
SCModel
) {
"use strict";
return SCModel.extend({
partner: function (Cust_id) {
try {
var customerSearch = nlapiSearchRecord("customer", null,
[
["internalidnumber", "equalto", Cust_id]
],
[
new nlobjSearchColumn("partner"),
new nlobjSearchColumn("email", "partner", null),
new nlobjSearchColumn("mobilephone", "partner", null)
]
);
}
catch (error) {
nlapiLogExecution('ERROR', 'ERROR_SSP_LIBRARIES_EXT', JSON.stringify(customerSearch));
}
var partner_name;
var partner_email;
var partner_phone;
try {
if (customerSearch) {
for (var j = 0; j < customerSearch.length; j++) {
var searchResult = customerSearch[j];
partner_name = searchResult.getText("partner");
partner_email = searchResult.getValue("email", "partner");
partner_phone = searchResult.getValue("mobilephone", "partner");
}
}
} catch (error) {
nlapiLogExecution('ERROR', 'customersearcherror', JSON.stringify(customerSearch));
}
return {
Partner_name: partner_name,
Partner_email: partner_email,
Partner_phone: partner_phone,
};
},
});
});
PartnerDetails.ServiceController.js
define("JJ.PartnerDetails.PartnerDetails.ServiceController", [
"ServiceController", 'JJ.PartnerDetails.PartnerDetails'
], function (
ServiceController, PartnerDetails
) {
"use strict";
return ServiceController.extend({
name: "PartnerDetails.ServiceController",
// The values in this object are the validation needed for the current service.
options: {
common: {}
},
get: function get() {
var Customer_id = this.request.getParameter('cust_id');
return PartnerDetails.partner(Customer_id);
},
post: function post() {
// not implemented
},
put: function put() {
// not implemented
},
delete: function () {
// not implemented
}
});
});
Template:
jj_partnerdetails_partnerdetails.tpl
<div class="case-tab-parter">
<p class="case-tab-partner-heading">Contact your Sales Rep:</p>
<p class="case-tab-partner-id"><span id="case-tab-partner-details">Name :</span> {{Partner_name}}</p>
<p class="case-tab-partner-email"><span id="case-tab-partner-details">Email :</span> {{Partner_email}}</p>
<p class="case-tab-partner-phone"><span id="case-tab-partner-details">Phone :</span> {{Partner_phone}}</p>
<p class="case-tab-partner-phone"><span id="case-tab-partner-details">Customer Success :</span>
(877) 689-4253</p>
</div>
Now add the below data-view in the Theme or extension where we need to display in the website.
<div data-view=“partner-details”></div>
Output:
