Jira code: UMAR-5
A suitelet page which allows selecting the vendors for a specific main job based some filters such as Vessel, Class, Port, Region, Equipment, Equipment Type, Model, and Maker. User can redirect to this page from a button on the Main Job. User can have the options for go to the next session, go back to the Main Job, reset all the filters, Apply filter and view the result.
User Event Script and Client script for the Vendor Select Button
Suitelet for Vendor selection
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
define(['N/ui/serverWidget', 'N/search'],
function(serverWidget, 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
*/
function onRequest(context) {
var vendorForm = serverWidget.createForm({
title: 'Vendor Selection'
});
vendorForm.clientScriptFileId = 1599;
if (context.request.method == 'GET') {
var jobId = context.request.parameters.custpage_jobid;
//Getting the Main Job Details
var mainjobDtls = search.lookupFields({
type: 'customrecord_netu_main_job',
id: jobId,
columns: ['name', 'custrecord_netu_customer', 'custrecord_netu_customer_reference', 'custrecord_netu_vessel',
'custrecord_netu_job_class', 'custrecord_netu_loa', 'custrecord_netu_beam', 'custrecord_netu_subsidiary'
]
});
var mainJobGroup = 'mainJobGroup';
//Job specific fields
vendorForm.addFieldGroup({
id: mainJobGroup,
label: 'Job Details',
});
createFormTextField(vendorForm, 'job_number', serverWidget.FieldType.TEXT, 'Our Reference', null, mainJobGroup, true, mainjobDtls.name);
if (mainjobDtls.custrecord_netu_customer[0]) {
createFormTextField(vendorForm, 'customer', serverWidget.FieldType.TEXT, 'Customer', null, mainJobGroup, true, mainjobDtls.custrecord_netu_customer[0].text);
}
createFormTextField(vendorForm, 'customer_refernce', serverWidget.FieldType.TEXT, 'Customer Reference', null, mainJobGroup, true, mainjobDtls.custrecord_netu_customer_reference);
if (mainjobDtls.custrecord_netu_vessel[0]) {
createFormTextField(vendorForm, 'vessel', serverWidget.FieldType.TEXT, 'Vessel', null, mainJobGroup, true, mainjobDtls.custrecord_netu_vessel[0].text);
}
createFormTextField(vendorForm, 'jobid', serverWidget.FieldType.TEXT, 'Job Id', null, mainJobGroup, true, jobId);
if (mainjobDtls.custrecord_netu_job_class[0]) {
createFormTextField(vendorForm, 'class', serverWidget.FieldType.SELECT, 'Classification', 'classification', mainJobGroup, true, mainjobDtls.custrecord_netu_job_class[0].value);
}
var filterGroupId = 'filterGroupId';
vendorForm.addFieldGroup({
id: filterGroupId,
label: 'Filters',
});
var subsidiry = mainjobDtls.custrecord_netu_subsidiary[0].value;
if (subsidiry != 2) {
createFormTextField(vendorForm, 'loa', serverWidget.FieldType.FLOAT, 'LOA', null, filterGroupId, false, mainjobDtls.custrecord_netu_loa);
createFormTextField(vendorForm, 'beam', serverWidget.FieldType.FLOAT, 'BEAM', null, filterGroupId, false, mainjobDtls.custrecord_netu_beam);
}
createFormTextField(vendorForm, 'port', serverWidget.FieldType.MULTISELECT, 'Port', 'customrecord_netu_port', filterGroupId, false, "");
createFormTextField(vendorForm, 'region', serverWidget.FieldType.MULTISELECT, 'Region', 'customrecord_netu_region', filterGroupId, false, "");
createFormTextField(vendorForm, 'equipment', serverWidget.FieldType.SELECT, 'Equipment', 'customrecord_netu_equipment', filterGroupId, false, "");
createFormTextField(vendorForm, 'equipment_type', serverWidget.FieldType.SELECT, 'Equipment Type', 'customrecord_netu_equipment_type', filterGroupId, false, "");
createFormTextField(vendorForm, 'model', serverWidget.FieldType.SELECT, 'Model', 'customrecord_netu_model', filterGroupId, false, "");
createFormTextField(vendorForm, 'maker', serverWidget.FieldType.MULTISELECT, 'Maker', 'customrecord_netu_maker', filterGroupId, false, "");
//adding subsidiary as hidden field
createFormTextFieldSubsidiary(vendorForm, 'subsidiry', serverWidget.FieldType.TEXT, 'subsidiry', null, filterGroupId, true, subsidiry);
var mainGroupFieldsId = 'mainGroupId';
vendorForm.addFieldGroup({
id: mainGroupFieldsId,
label: 'Choose vendor',
});
createFormTextField(vendorForm, 'select_vendor_name', serverWidget.FieldType.SELECT, 'Select Vendor', null, mainGroupFieldsId, false, "");
vendorForm.addSubmitButton({
label: 'Next'
});
vendorForm.addButton({
id: 'job_back',
label: 'Back',
functionName: 'moveBackAction'
});
vendorForm.addResetButton({
label: 'Reset'
});
vendorForm.addButton({
id: 'apply_filter',
label: 'Apply Filter',
functionName: 'applyFiltersToSearch',
container: 'filterGroupId'
});
var vendorList = vendorForm.addSublist({
id: 'vendor_sublist',
label: 'Vendor List',
type: serverWidget.SublistType.INLINEEDITOR
});
vendorList.addField({
id: 'vendor_select',
label: 'Select',
type: serverWidget.FieldType.CHECKBOX,
});
var vendorid = vendorList.addField({
id: 'id',
label: 'ID',
type: serverWidget.FieldType.TEXT
});
vendorid.updateDisplayType({
displayType: serverWidget.FieldDisplayType.HIDDEN
});
createListTextField(vendorList, 'entityid', 'Vendor Name', serverWidget.FieldType.SELECT, 'vendor', false);
createListTextField(vendorList, 'custentity_netu_country', 'Country', serverWidget.FieldType.TEXT, 'country', true);
createListTextField(vendorList, 'custentity_netu_port', 'Ports', serverWidget.FieldType.TEXT, 'custentity_netu_port', true);
createListTextField(vendorList, 'category', 'Category', serverWidget.FieldType.TEXT, 'vendorcategory', true);
vendorList.addField({
id: 'vendor_job_type',
label: 'Is Direct',
type: serverWidget.FieldType.CHECKBOX,
});
context.response.writePage(vendorForm);
}
/**
* Create field in the form
*/
function createFormTextField(vendorForm, id, type, label, source, containerId, isDisabled, fieldValue) {
var classField;
if (source != null) {
classField = vendorForm.addField({
id: 'custpage_' + id,
type: type,
label: label,
source: source,
container: containerId
});
} else {
classField = vendorForm.addField({
id: 'custpage_' + id,
type: type,
label: label,
container: containerId
});
}
if (fieldValue) {
classField.defaultValue = fieldValue;
}
if (isDisabled) {
classField.updateDisplayType({
displayType: serverWidget.FieldDisplayType.INLINE
});
}
}
//to create subsidiary with hidden field
function createFormTextFieldSubsidiary(vendorForm, id, type, label, source, containerId, isDisabled, fieldValue) {
var classField;
if (source != null) {
classField = vendorForm.addField({
id: 'custpage_' + id,
type: type,
label: label,
source: source,
container: containerId
});
} else {
classField = vendorForm.addField({
id: 'custpage_' + id,
type: type,
label: label,
container: containerId
});
}
if (fieldValue) {
classField.defaultValue = fieldValue;
}
if (isDisabled) {
classField.updateDisplayType({
//displayType: serverWidget.FieldDisplayType.DISABLED/
displayType: serverWidget.FieldDisplayType.HIDDEN
});
}
}
function createListTextField(vendorList, id, label, type, source, isDisabled) {
var category = vendorList.addField({
id: id,
label: label,
type: type,
source: source
});
if (isDisabled) {
category.updateDisplayType({
displayType: serverWidget.FieldDisplayType.DISABLED
});
}
}
}
return {
onRequest: onRequest
};
});
Client Script
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope SameAccount
* edited for setting loa and beam
*/
define(['N/currentRecord', 'N/search', 'N/url', 'N/record','./NetU_CS_Vendor_Library.js'],
function(currentRecord, search, url, recordlib,vendorlib) {
/**
* 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) {
var isBackPressed = getParameterByName('is_back');
if (isBackPressed) {
var vendorFilters = localStorage.getItem('vendor_filters_str');
if (vendorFilters) {
var vendorObj = JSON.parse(vendorFilters);
var filterArray = ['custpage_port', 'custpage_region', 'custpage_equipment', 'custpage_equipment_type', 'custpage_model',
'custpage_maker', 'custpage_loa','custpage_beam','custpage_subsidiry'
];
for (var i = 0; i < filterArray.length; i++) {
var fieldId = filterArray[i];
scriptContext.currentRecord.setValue({
fieldId: fieldId,
value: vendorObj[fieldId],
ignoreFieldChange: true
});
}
applyFiltersToSearch();
}
var vendor_select_record_str = localStorage.getItem('vendor_select_record_str');
var vendorSelectRecord = JSON.parse(vendor_select_record_str);
setVendorListView(scriptContext.currentRecord, vendorSelectRecord);
}
}
function setVendorListView(vendorList, vendorSelectRecord) {
for (var index = 0; index < vendorSelectRecord.length; index++) {
//checkes whether the vendor is in the list
var vendorObj = vendorSelectRecord[index];
checkWhetherVendorExistsInList(vendorList,vendorObj);
}
}
//if vendor exists in the list mark the vendors as selected else add as additional line
function checkWhetherVendorExistsInList(currentRecord,vendorObj){
var lineNumber = currentRecord.findSublistLineWithValue({
sublistId: 'vendor_sublist',
fieldId: 'id',
value: vendorObj.id
});
if (lineNumber > -1) {
currentRecord.selectLine({
sublistId: 'vendor_sublist',
line: lineNumber
});
currentRecord.setCurrentSublistValue({
sublistId: 'vendor_sublist',
fieldId: 'vendor_select',
value: true,
ignoreFieldChange: true
});
if(vendorObj.job_type =='Direct'){
vendorObj.job_type = true;
}else{
vendorObj.job_type= false;
}
currentRecord.setCurrentSublistValue({
fieldId: 'vendor_job_type',
sublistId: 'vendor_sublist',
value: vendorObj.job_type
});
currentRecord.commitLine({
sublistId: 'vendor_sublist'
});
}else{
setAdditionalVendorDetails(currentRecord,vendorObj);
}
}
//Function create an additional line in the sublist and save the vendor details
function setAdditionalVendorDetails( vendorList, vendorObj){
/* vendorList.selectNewLine({
sublistId: 'vendor_sublist',
});*/
var numLines = vendorList.getLineCount({
sublistId: 'vendor_sublist'
});
var lastVendorName = vendorList.getSublistValue({
fieldId : 'id',
sublistId : 'vendor_sublist',
line :numLines-1
});
console.log('lastvendorname'+lastVendorName);
if(lastVendorName=="" || !lastVendorName|| lastVendorName==null ||lastVendorName ==undefined){
vendorList.selectLine({
sublistId: 'vendor_sublist',
line:numLines-1
});
}else{
vendorList.selectNewLine({
sublistId: 'vendor_sublist',
});
}
vendorList.setCurrentSublistValue({
fieldId : 'id',
sublistId : 'vendor_sublist',
value :vendorObj.id
});
vendorList.setCurrentSublistValue({
fieldId : 'entityid',
sublistId : 'vendor_sublist',
value :vendorObj.id
});
vendorList.setCurrentSublistValue({
fieldId : 'custentity_netu_country',
sublistId : 'vendor_sublist',
value :vendorObj.country
});
vendorList.setCurrentSublistValue({
fieldId : 'custentity_netu_port',
sublistId : 'vendor_sublist',
value :vendorObj.port
});
vendorList.setCurrentSublistValue({
fieldId : 'category',
sublistId : 'vendor_sublist',
value : vendorObj.category
});
if(vendorObj.job_type =='Direct'){
vendorObj.job_type = true;
}else{
vendorObj.job_type= false;
}
vendorList.setCurrentSublistValue({
fieldId : 'vendor_job_type',
sublistId : 'vendor_sublist',
value :vendorObj.job_type
});
vendorList.commitLine({
sublistId : 'vendor_sublist'
});
}
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, " "));
}
/**
* 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) {
var currentRecord = scriptContext.currentRecord;
var fieldId = scriptContext.fieldId;
if (fieldId == 'custpage_select_vendor_name') {
var vendorId = currentRecord.getValue({
fieldId: fieldId
});
var lineNumber = currentRecord.findSublistLineWithValue({
sublistId: 'vendor_sublist',
fieldId: 'id',
value: vendorId
});
console.log("vendor select no" + lineNumber);
if (lineNumber > -1) {
currentRecord.selectLine({
sublistId: 'vendor_sublist',
line: lineNumber
});
currentRecord.setCurrentSublistValue({
sublistId: 'vendor_sublist',
fieldId: 'vendor_select',
value: true,
ignoreFieldChange: true
});
currentRecord.commitLine({
sublistId: 'vendor_sublist'
});
currentRecord.setValue({
fieldId: fieldId,
value: 0,
ignoreFieldChange: true
});
} else if (vendorId == 0) {
//Noting to be done
} else {
alert('Vendor not found');
}
} else if (fieldId == 'entityid') {
var vendorId = currentRecord.getCurrentSublistValue({
fieldId: fieldId,
sublistId: 'vendor_sublist'
});
console.log('vendorId' + vendorId);
setVendorDetails(vendorId, currentRecord);
}
}
function setVendorDetails(entityId, vendorList) {
var vendorSearch = search.create({
type: 'vendor',
columns: ['entityid', 'custentity_netu_country', 'custentity_netu_port',
search.createColumn({
name: 'category',
sort: 'ASC'
})
]
});
var idFilter = search.createFilter({
name: 'internalid',
operator: 'IS',
values: entityId
});
vendorSearch.filters.push(idFilter);
var vendorResults = vendorSearch.run().getRange({
start: 0,
end: 1
});
if (vendorResults) {
var result = vendorResults[0];
vendorList.setCurrentSublistValue({
fieldId: 'id',
sublistId: 'vendor_sublist',
value: result.id
});
var country = result.getText({
name: 'custentity_netu_country'
});
if (country == null || country == undefined || !country) {
country = "-";
}
vendorList.setCurrentSublistValue({
fieldId: 'custentity_netu_country',
sublistId: 'vendor_sublist',
value: country
});
var category = result.getText({
name: 'category'
});
if (category == null || category == undefined || !category) {
category = "-";
}
vendorList.setCurrentSublistValue({
fieldId: 'category',
sublistId: 'vendor_sublist',
value: category
});
var port = result.getText({
name: 'custentity_netu_port'
});
if (port == null || port == undefined || !port) {
port = "-";
}
vendorList.setCurrentSublistValue({
fieldId: 'custentity_netu_port',
sublistId: 'vendor_sublist',
value: port
});
}
vendorList.setCurrentSublistValue({
fieldId: 'vendor_select',
sublistId: 'vendor_sublist',
value: true
});
vendorList.setCurrentSublistValue({
fieldId: 'vendor_job_type',
sublistId: 'vendor_sublist',
value: true
});
}
function applyFiltersToSearch() {
var record = currentRecord.get();
var regionFilter, portFilter, equipmentFilter, equipmentTypeFilter, modelFilter, makerFilter, classFilter, loaFilter, beamFilter;
var vendorSearch = search.create({
type: 'vendor',
columns: ['custentity_netu_country', 'custentity_netu_port',
search.createColumn({
name: 'category',
sort: 'ASC'
}),
search.createColumn({
name: 'entityid',
sort: 'ASC'
}),
]
});
vendorSearch.filters.push(search.createFilter({
name: 'isinactive',
operator: 'IS',
values: 'F'
}));
var subsidiry = record.getValue({
fieldId: 'custpage_subsidiry'
});
if (subsidiry != null && subsidiry != undefined && subsidiry != "") {
subsidiryFilter = search.createFilter({
name: 'subsidiary',
operator: 'IS',
values: subsidiry
});
vendorSearch.filters.push(subsidiryFilter);
}
var region = record.getValue({
fieldId: 'custpage_region'
});
if (region != null && region != undefined && region != "") {
regionFilter = search.createFilter({
name: 'custentity_netu_region',
operator: 'IS',
values: region
});
vendorSearch.filters.push(regionFilter);
}
var port = record.getValue({
fieldId: 'custpage_port'
});
if (port != null && port != undefined && port != "") {
portFilter = search.createFilter({
name: 'internalid',
join: 'custentity_netu_port',
operator: 'IS',
values: port
});
vendorSearch.filters.push(portFilter);
}
//FILTERS FROM PRODUCTS RECORD
var equipment = record.getValue({
fieldId: 'custpage_equipment'
});
if (equipment != null && equipment != undefined && equipment != "") {
equipmentFilter = search.createFilter({
name: 'custrecord_netu_equipment',
join: 'custrecord_netu_product_vendor',
operator: 'IS',
values: equipment
});
vendorSearch.filters.push(equipmentFilter);
}
var equipment_type = record.getValue({
fieldId: 'custpage_equipment_type'
});
if (equipment_type != null && equipment_type != undefined && equipment_type != "") {
equipmentTypeFilter = search.createFilter({
name: 'custrecord_netu_equipment_type',
join: 'custrecord_netu_product_vendor',
operator: 'IS',
values: equipment_type
});
vendorSearch.filters.push(equipmentTypeFilter);
}
var model = record.getValue({
fieldId: 'custpage_model'
});
if (model != null && model != undefined && model != "") {
modelFilter = search.createFilter({
name: 'custrecord_netu_model',
join: 'custrecord_netu_product_vendor',
operator: 'IS',
values: model
});
vendorSearch.filters.push(modelFilter);
}
var maker = record.getValue({
fieldId: 'custpage_maker'
});
if (maker != null && maker != undefined && maker != "") {
makerFilter = search.createFilter({
name: 'custrecord_netu_maker',
join: 'custrecord_netu_product_vendor',
operator: 'IS',
values: maker
});
vendorSearch.filters.push(makerFilter);
}
var classification = record.getValue({
fieldId: 'custpage_class'
});
if (classification != null && classification != undefined && classification != "") {
classFilter = search.createFilter({
name: 'internalid',
join: 'custentity_netu_vendor_facilities_class',
operator: 'IS',
values: classification
});
vendorSearch.filters.push(classFilter);
}
/*AU starts*/
//--------
var loa = record.getValue({
fieldId: 'custpage_loa'
});
console.log('LOA', loa);
if (loa != null && loa != undefined && loa != "") {
loaFilter = search.createFilter({
name: 'custrecord_netu_v_loa',
join: 'custrecord_netu_vendor_dt',
operator: 'greaterthanorequalto',
values: loa
});
vendorSearch.filters.push(loaFilter);
}
var beam = record.getValue({
fieldId: 'custpage_beam'
});
if (beam != null && beam != undefined && beam != "") {
beamFilter = search.createFilter({
name: 'custrecord_netu_v_beam',
join: 'custrecord_netu_vendor_dt',
operator: 'greaterthanorequalto',
values: beam
});
vendorSearch.filters.push(beamFilter);
}
//TODO based on vendors number
var vendorResults = vendorSearch.run().getRange({
start: 0,
end: 1000
});
var numLines = record.getLineCount({
sublistId: 'vendor_sublist'
});
console.log(numLines);
var vendorResultsCount = vendorSearch.runPaged().count;
if(vendorResultsCount<=0){
alert("Vendors not found for these filters");
for (var i = numLines - 1; i > -1; i--) {
record.removeLine({
sublistId: 'vendor_sublist',
line: i,
ignoreRecalc: true
});
}
record.commitLine({
sublistId: 'vendor_sublist'
});
record.selectLine({
sublistId: 'vendor_sublist',
line:0,
});
return false;
}
for (var i = numLines - 1; i > -1; i--) {
record.removeLine({
sublistId: 'vendor_sublist',
line: i,
ignoreRecalc: true
});
}
record.commitLine({
sublistId: 'vendor_sublist'
});
setVendorSublist(vendorResults, record);
}
//Function to set the options for select vendor dropdown
function setSelectedVendors(selectedVendorList) {
var record = currentRecord.get();
var field = record.getField({
fieldId: 'custpage_select_vendor_name'
});
//remove all the values
field.removeSelectOption({
value: null
});
for (var key in selectedVendorList) {
if (key == 0) {
field.insertSelectOption({
value: 0,
text: "Select"
});
}
field.insertSelectOption({
value: selectedVendorList[key].id,
text: selectedVendorList[key].name
});
}
}
function setVendorSublist(vendorResults, vendorList) {
if (vendorResults) {
var index = 0;
var selectedVendorList = [];
vendorResults.forEach(function(result) {
var vendorName = result.getValue({
name: 'entityid'
});
if (vendorName == null || vendorName == undefined) {
vendorName = "";
}
if(index ==0){
vendorList.selectLine({
sublistId: 'vendor_sublist',
line:0,
});
}else{
vendorList.selectNewLine({
sublistId: 'vendor_sublist',
ignoreRecalc: true
});
}
console.log('---test' + vendorName);
//--insert vendor to vendor name list
var selectedVendorObj = {};
selectedVendorObj.id = result.id;
selectedVendorObj.name = vendorName;
selectedVendorList.push(selectedVendorObj);
//---End----
vendorList.setCurrentSublistValue({
fieldId: 'entityid',
sublistId: 'vendor_sublist',
value: result.id,
ignoreFieldChange: true
});
vendorList.setCurrentSublistValue({
fieldId: 'id',
sublistId: 'vendor_sublist',
value: result.id
});
var country = result.getText({
name: 'custentity_netu_country'
});
if (country == null || country == undefined || !country) {
country = "-";
}
vendorList.setCurrentSublistValue({
fieldId: 'custentity_netu_country',
sublistId: 'vendor_sublist',
value: country
});
var category = result.getText({
name: 'category'
});
if (category == null || category == undefined || !category) {
category = "-";
}
vendorList.setCurrentSublistValue({
fieldId: 'category',
sublistId: 'vendor_sublist',
value: category
});
var port = result.getText({
name: 'custentity_netu_port'
});
if (port == null || port == undefined || !port) {
port = "-";
}
vendorList.setCurrentSublistValue({
fieldId: 'custentity_netu_port',
sublistId: 'vendor_sublist',
value: port
});
vendorList.setCurrentSublistValue({
fieldId: 'vendor_job_type',
sublistId: 'vendor_sublist',
value: true
});
vendorList.setCurrentSublistValue({
fieldId: 'vendor_select',
sublistId: 'vendor_sublist',
value: false
});
vendorList.commitLine({
sublistId: 'vendor_sublist'
});
index++;
});
//TODO --insert vendor list to vendor drop down
setSelectedVendors(selectedVendorList);
} else {
vendorList.removeLine({
sublistId: 'vendor_sublist',
line: 0,
ignoreRecalc: true
});
vendorList.commitLine({
sublistId: 'vendor_sublist'
});
}
}
function saveRecord() {
var record = currentRecord.get();
var jobclass = record.getValue({
fieldId: 'custpage_class'
});
var jobclassName = record.getText({
fieldId: 'custpage_class'
});
//console.log('jobclass '+jobclass);
var itemCode=null;
//Searching for the item code of the Main Job's Class
var customrecord_netu_class_revenue_mapSearchObj = search.create({
type: "customrecord_netu_class_revenue_map",
filters: [
["custrecord_netu_map_class","anyof",jobclass]
],
columns: [
"custrecord_netu_item_code"
]
});
var classMapsearchResultCount = customrecord_netu_class_revenue_mapSearchObj.runPaged().count;
if(classMapsearchResultCount !=0){
var classMapResults = customrecord_netu_class_revenue_mapSearchObj.run().getRange({ start:0,
start:0,
end:1
});
itemCode = classMapResults[0].getValue({
name: 'custrecord_netu_item_code'
});
}
console.log('itemCode '+itemCode);
if((itemCode==null) || (itemCode=="") || (itemCode==undefined) ){
alert('Itemcode is not defined for the Class "'+jobclassName+'"');
return false;
}
var numLines = record.getLineCount({
sublistId: 'vendor_sublist'
});
console.log('numLines', numLines);
if(numLines==0){
alert("Please select atleat one vendor to Proceed");
return false;
}
var count=0;
for (var i = 0; i < numLines; i++) {
record.selectLine({
sublistId: 'vendor_sublist',
line: i
});
var isSelect = record.getCurrentSublistValue({
sublistId: 'vendor_sublist',
fieldId: 'vendor_select'
});
if (isSelect) {
var entityid = record.getCurrentSublistText({
sublistId: 'vendor_sublist',
fieldId: 'entityid'
});
console.log('entityid', entityid);
if( (entityid == null) || (entityid == undefined) || (entityid == "")){
alert("Vendor is missing in Vendor List Line "+i);
return false;
}
}
else{
count=count+1;
}
}
if(count==numLines){
alert("Please select atleat one vendor to Proceed");
return false;
}
var params = {};
params['custpage_jobid'] = record.getValue({
fieldId: 'custpage_jobid'
});
var previewUrl = url.resolveScript({
scriptId: 'customscript_netu_vendor_select_preview',
deploymentId: 'customdeploy_netu_vendor_select_preview',
returnExternalUrl: false,
params: params
});
localStorage.setItem('vendor_select_record_str', createParamsForSublist(record));
localStorage.setItem('vendor_filters_str', createFilterParams(record));
localStorage.setItem('itemCode', itemCode);
if (window.onbeforeunload) {
window.onbeforeunload = function() {
null;
};
};
window.location = previewUrl;
}
function createFilterParams(record) {
var filterArray = ['custpage_port', 'custpage_region', 'custpage_equipment', 'custpage_equipment_type', 'custpage_model',
'custpage_maker', 'custpage_class', 'custpage_loa', 'custpage_beam', 'custpage_subsidiry'
];
var filterObj = {};
for (var i = 0; i < filterArray.length; i++) {
var fieldId = filterArray[i];
filterObj[fieldId] = record.getValue({
fieldId: fieldId
});
}
return JSON.stringify(filterObj);
}
function createParamsForSublist(record) {
var numLines = record.getLineCount({
sublistId: 'vendor_sublist'
});
var vendorArray = [];
for (var i = numLines - 1; i > -1; i--) {
record.selectLine({
sublistId: 'vendor_sublist',
line: i
});
var isSelect = record.getCurrentSublistValue({
sublistId: 'vendor_sublist',
fieldId: 'vendor_select'
});
if (isSelect) {
var vendorObj = {};
vendorObj.id = record.getCurrentSublistValue({
sublistId: 'vendor_sublist',
fieldId: 'id'
});
vendorObj.entityid = record.getCurrentSublistText({
sublistId: 'vendor_sublist',
fieldId: 'entityid'
});
vendorObj.country = record.getCurrentSublistValue({
sublistId: 'vendor_sublist',
fieldId: 'custentity_netu_country'
});
vendorObj.category = record.getCurrentSublistValue({
sublistId: 'vendor_sublist',
fieldId: 'category'
});
vendorObj.port = record.getCurrentSublistValue({
sublistId: 'vendor_sublist',
fieldId: 'custentity_netu_port'
});
vendorObj.job_type = record.getCurrentSublistValue({
sublistId: 'vendor_sublist',
fieldId: 'vendor_job_type'
});
if (vendorObj.job_type == true) {
vendorObj.job_type = 'Direct';
} else {
vendorObj.job_type = 'Part';
}
vendorArray.push(vendorObj);
}
}
return JSON.stringify(vendorArray);
}
function moveBackAction() {
var record = currentRecord.get();
var jobId = record.getValue({
fieldId: 'custpage_jobid'
});
var params = {};
params['custpage_jobid'] = jobId;
var backUrl = url.resolveRecord({
recordType: 'customrecord_netu_main_job',
recordId: jobId,
isEditMode: false
});
if (window.onbeforeunload) {
window.onbeforeunload = function() {
null;
};
}
window.location = backUrl;
}
return {
setVendorDetails: setVendorDetails,
applyFiltersToSearch: applyFiltersToSearch,
pageInit: pageInit,
moveBackAction: moveBackAction,
fieldChanged: fieldChanged,
saveRecord: saveRecord,
getParameterByName: getParameterByName
};
});