When to Use: When the we want to use custom records of Netsuite in View file for showing or performing some operations using those data.
JavaScript
View.js
define('Ravin4Madi.MadiCourses.course.detailed.View', [ 'ravin4madi_madicourses_course_details.tpl', 'Ravin4Madi.MadiCourses.courses.Model', 'GlobalViews.Message.View', 'jQuery', 'underscore', 'Backbone', "Backbone.CompositeView", "Backbone.CollectionView", "Backbone.FormView", "sweetAlert", "Utils"], function( ravin4madi_madicourses_course_details, Model, GlobalViewsMessageView, jQuery, _, Backbone, BackboneCompositeView, BackboneCollectionView, BackboneFormView, swal, Utils) { 'use strict';
return Backbone.View.extend({
template: ravin4madi_madicourses_course_details
, title: _("Course Details | Madi International").translate(), initialize: function(options) { this.application = options.application; var url_string = window.location.href; //window.location.href var url = new URL(url_string);jQuery.get(this.service_url, { 'method': 'getCourseDetails', 'courseID': this.courseID}).then(function(res) { res = JSON.parse(res); console.log('res', res)}); }
, events: { }, bindings: { }
,getContext: function getContext() { this.message = this.message || 'Hello World!!' return { message: this.message, data: this.data, notification: this.notification, isLoading: this.isLoading, country: this.country, courseDates: this.newBookingData }; } });});
suitescript
ServiceController.js
define("Ravin4Madi.MadiCourses.courses.ServiceController", ["ServiceController", "Ravin4Madi.MadiCourses.courses"], function( ServiceController, Model) { "use strict";
return ServiceController.extend({ name: "Ravin4Madi.MadiCourses.courses.ServiceController",
// The values in this object are the validation needed for the current service. options: { common: {} },
get: function get() { var method = this.request.getParameter('method'); var category = this.request.getParameter('courseCategory'); var courseID = this.request.getParameter('courseID');
if (method == "getAllDetails") { return Model.getAllDetails(category); } else if (method == "getCourseDetails") { return Model.getCourseDetails(courseID); } },
post: function post() { //not implemented },
put: function put() { // not implemented },
delete: function() { // not implemented } });});
model.js
define('Ravin4Madi.MadiCourses.courses', [ 'Ravin4Madi.MadiCourses.courses.ServiceController', "SC.Model", "Application", "Utils", "underscore",], function( coursesServiceController, SCModel, Application, Utils, _) { 'use strict';
return SCModel.extend({getAllDetails: function(categoryID) { if (categoryID) { var courseDetails = this.searchCourse(categoryID); return JSON.stringify({ 'success': true, 'reason': 'Course Found', 'data': courseDetails }); } else { return JSON.stringify({ 'success': false, 'reason': 'No category ID' }); } }, getCourseDetails: function(courseID) {
var country = this.getListValues('customlist977'); var city = this.getCityList(); var district = this.getDistrictList();
var selectFieldDetails = { 'country': country, 'city': city, 'district': district };
var courseDetails = this.getCourse(courseID);
if (courseDetails) { var allDetails = _.extend(selectFieldDetails, courseDetails);
return JSON.stringify({ "success": true, "data": allDetails }); } else { return JSON.stringify({ 'success': false, 'reason': 'No Data Found' }); } },getCourse: function(courseID) {
var obj = {};
var coursesSearch = nlapiSearchRecord("customrecord_ra4madi_madi_courses", null,
[
["internalidnumber", "equalto", courseID]
],
new nlobjSearchColumn("name"), new nlobjSearchColumn("internalid"), new nlobjSearchColumn("custrecord_madi_course_badge"), new nlobjSearchColumn("custrecord_madi_course_image"), new nlobjSearchColumn("custrecord_madi_course_breakdown"), new nlobjSearchColumn("custrecord_madi_course_description"), new nlobjSearchColumn("custrecord_madi_course_duration"), new nlobjSearchColumn("custrecord_madi_course_price"), new nlobjSearchColumn("custrecord_madi_course_modules"), new nlobjSearchColumn("custrecord_madi_course_schedule"), new nlobjSearchColumn("custrecord_madi_course_timing"), new nlobjSearchColumn("custrecord_jj_city","CUSTRECORD_JJ_MADITRAINGCOURSE",null), new nlobjSearchColumn("custrecord_jj_coutryrec","CUSTRECORD_JJ_MADITRAINGCOURSE",null), new nlobjSearchColumn("custrecord_jj_date","CUSTRECORD_JJ_MADITRAINGCOURSE",null), new nlobjSearchColumn("custrecord_jj_day","CUSTRECORD_JJ_MADITRAINGCOURSE",null), new nlobjSearchColumn("custrecord_jj_educator","CUSTRECORD_JJ_MADITRAINGCOURSE", null), new nlobjSearchColumn("custrecord_jj_maditraingcourse","CUSTRECORD_JJ_MADITRAINGCOURSE", null), new nlobjSearchColumn("custrecord_jj_program","CUSTRECORD_JJ_MADITRAINGCOURSE", null), new nlobjSearchColumn("custrecord_jj_count","CUSTRECORD_JJ_MADITRAINGCOURSE", null), new nlobjSearchColumn("custrecord_course_prices_person_price", "CUSTRECORD_MADI_TRAINING_COURSE", null), new nlobjSearchColumn("custrecord_course_prices_person", "CUSTRECORD_MADI_TRAINING_COURSE", null), new nlobjSearchColumn("formulatext").setFormula("CASE WHEN {custrecord_madi_course_image} IS NOT NULL THEN 'https://5102772-sb1.app.netsuite.com/'||{custrecord_madi_course_image} END")
);
if (coursesSearch && coursesSearch.length > 0) {
obj = {
name: coursesSearch[0].getValue("name"),
id: coursesSearch[0].getValue("internalid"),
badge: coursesSearch[0].getValue("custrecord_madi_course_badge"),
courseBreakdown: coursesSearch[0].getValue("custrecord_madi_course_breakdown"),
courseDescription: coursesSearch[0].getValue("custrecord_madi_course_description"),
courseDuration: coursesSearch[0].getValue("custrecord_madi_course_duration"),
coursePrice: coursesSearch[0].getValue("custrecord_madi_course_price"),
courseModules: coursesSearch[0].getValue("custrecord_madi_course_modules"),
courseSchedule: this.getDateOptions(coursesSearch[0].getValue("custrecord_madi_course_schedule")),
timing: coursesSearch[0].getValue("custrecord_madi_course_timing"),
images: coursesSearch[0].getValue("formulatext"),
Booking:[],
CoursePrices: [],
SumData: []
};
for (var i in coursesSearch) {
obj.Booking.push({ "Date": coursesSearch[i].getValue("custrecord_jj_date", "CUSTRECORD_JJ_MADITRAINGCOURSE", null),
'City':coursesSearch[i].getText("custrecord_jj_city", "CUSTRECORD_JJ_MADITRAINGCOURSE", null),
'Country':coursesSearch[i].getText("custrecord_jj_coutryrec", "CUSTRECORD_JJ_MADITRAINGCOURSE", null),
'Day':coursesSearch[i].getValue("custrecord_jj_day", "CUSTRECORD_JJ_MADITRAINGCOURSE", null),
'Educator':coursesSearch[i].getValue("custrecord_jj_educator", "CUSTRECORD_JJ_MADITRAINGCOURSE", null),
'courseName':coursesSearch[i].getText("custrecord_jj_maditraingcourse", "CUSTRECORD_JJ_MADITRAINGCOURSE", null),
'Program':coursesSearch[i].getText("custrecord_jj_program", "CUSTRECORD_JJ_MADITRAINGCOURSE", null),
'Count':coursesSearch[i].getValue("custrecord_jj_count", "CUSTRECORD_JJ_MADITRAINGCOURSE", null)});
obj.CoursePrices.push({"Price": coursesSearch[i].getValue("custrecord_course_prices_person_price","CUSTRECORD_MADI_TRAINING_COURSE", null),
'Person':coursesSearch[i].getValue("custrecord_course_prices_person", "CUSTRECORD_MADI_TRAINING_COURSE", null),});
if (coursesSearch[i].getValue("custrecord_jj_date", "CUSTRECORD_JJ_MADITRAINGCOURSE", null)) {
obj.SumData.push(this.getSumDetails(coursesSearch[i].getValue("custrecord_jj_date", "CUSTRECORD_JJ_MADITRAINGCOURSE", null), courseID));
}}
return obj;
}
return false;
},
getSumDetails: function (CourseDate, courseID) {
var arr = [];
var customrecord_ra4madi_madi_training_leadsSearchsum = nlapiSearchRecord("customrecord_ra4madi_madi_training_leads",null,
[
["custrecord_jj_training_lead.custrecord_jj_training_leaddate_selected","on",CourseDate],
"AND",
["custrecord_jj_training_lead.custrecord_jj_training_lead_course","anyof",courseID]
],
[
new nlobjSearchColumn("custrecord_jj_booking_count","CUSTRECORD_JJ_TRAINING_LEAD","SUM"),
new nlobjSearchColumn("name","CUSTRECORD_JJ_TRAINING_LEAD","COUNT").setSort(false)
]
);
if (customrecord_ra4madi_madi_training_leadsSearchsum && customrecord_ra4madi_madi_training_leadsSearchsum.length > 0){
arr = {
'CourseDate': CourseDate,
'sum': customrecord_ra4madi_madi_training_leadsSearchsum[0].getValue("custrecord_jj_booking_count", "CUSTRECORD_JJ_TRAINING_LEAD", "SUM"),
'sumCount': customrecord_ra4madi_madi_training_leadsSearchsum[0].getValue("name", "CUSTRECORD_JJ_TRAINING_LEAD", "COUNT"),
};
return arr;
}
},
getDateOptions: function(dates) {
var arr = [];
var options = { year: 'numeric', month: 'long', day: 'numeric' };
if (dates) {
var splitDate = dates.split(',');
for (var i in splitDate) {
var obj = {};
var date = splitDate[i].trim();
var parsedDate = nlapiStringToDate(date);
obj.value = date;
//obj.option= date+ ' '+this.getleadsearch(date);
var bookingStatus = this.getleadsearch(date);
var isBooked = (bookingStatus == 'Fully Booked' ? true : false);
var isPast = new Date(parsedDate) < new Date();
obj.option = new Date(parsedDate).toLocaleDateString("en-US", options) + ' ' + bookingStatus;
if (isBooked || isPast) {
obj.disabled = true
}
arr.push(obj);
}
}
return arr;
},
getleadsearch: function(date) {
var customrecord_ra4madi_madi_training_leadsSearch = nlapiSearchRecord("customrecord_ra4madi_madi_training_leads", null,
[
["custrecord_training_lead_date_selected", "on", date]
],
[
new nlobjSearchColumn("internalid")
]
);
var length = (customrecord_ra4madi_madi_training_leadsSearch && customrecord_ra4madi_madi_training_leadsSearch.length) || 0;
return length >= 10 ? 'Fully Booked' : '';
},
getListValues: function(listID) {
var searchResults = nlapiSearchRecord(listID, null, null, [new nlobjSearchColumn('name'), new nlobjSearchColumn('internalid')]);
var obj = {};
if (searchResults && searchResults.length >= 1) {
for (var i in searchResults) {
obj[searchResults[i].getValue('internalid')] = searchResults[i].getValue('name');
}
}
return obj;
},
getCityList: function() {
var resultArr = [];
var customrecordb2b_citySearch = nlapiSearchRecord("customrecordb2b_city", null,
[],
[
new nlobjSearchColumn("name"),
new nlobjSearchColumn("internalid"),
new nlobjSearchColumn("custrecordb2b_country")
]
);
if (customrecordb2b_citySearch && customrecordb2b_citySearch.length >= 1) {
for (var i in customrecordb2b_citySearch) {
var obj = {};
obj.name = customrecordb2b_citySearch[i].getValue('name');
obj.internalid = customrecordb2b_citySearch[i].getValue('internalid');
obj.country = customrecordb2b_citySearch[i].getValue('custrecordb2b_country');
resultArr.push(obj);
}
}
return resultArr;
},
getDistrictList: function() {
var resultArr = [];
var customrecordb2b_districtSearch = nlapiSearchRecord("customrecordb2b_district", null,
[],
[
new nlobjSearchColumn("name").setSort(false),
new nlobjSearchColumn("internalid"),
new nlobjSearchColumn("custrecordb2b_district")
]
);
if (customrecordb2b_districtSearch && customrecordb2b_districtSearch.length >= 1) {
for (var i in customrecordb2b_districtSearch) {
var obj = {};
obj.name = customrecordb2b_districtSearch[i].getValue('name');
obj.internalid = customrecordb2b_districtSearch[i].getValue('internalid');
obj.country = customrecordb2b_districtSearch[i].getValue('custrecordb2b_district');
resultArr.push(obj);
}
}
return resultArr;
} })
});