Jira code: UMAR-13
A button will be placed in the Main Job record for triggering this page. On button click, all the sub-jobs related to that main job will be listed on a new page. Here the user has to select the required sub job and should have entered a reason code. On submitting that form, the status(Quote to Unable/Cancel) of the selected sub job will be changed.
User Event Script and Client script
Suitelet
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
/**
* Script Description: Sub job selection form
*/
/*******************************************************************************
* * UMAR WSR * *
* **************************************************************************
* Date:10/2/18
* Script name: NetU SL Subjob Select
* Script id: customscript_netu_sl_subjob_select
* Deployment id: customdeploy_netu_sl_subjob_select
*
******************************************************************************/
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) {
try {
//Creating the Form
var SubjobForm = serverWidget.createForm({
title : 'Sub-job Selection'
});
var jobId = context.request.parameters.recId;
var type = context.request.parameters.type;
log.debug({
title : "jobId",
details : jobId
});
//SubjobForm.clientScriptFileId = 1700;
if(type==2)
{
SubjobForm.clientScriptFileId = 1700;
}
else if(type==1)
{
SubjobForm.clientScriptFileId = 1605;
}
log.debug({
title : "type",
details : type
});
//Adding Sublist
var sublist = SubjobForm.addSublist({
id : 'custpage_subjob_sublist',
type : serverWidget.SublistType.INLINEEDITOR,
label : 'Sub Jobs'
});
//Setting Sublist columns fields
var inIdField = sublist.addField({
id : 'custpage_subjob_internal_id',
type : serverWidget.FieldType.TEXT,
label : 'INTERNAL ID'
});
inIdField.updateDisplayType({
displayType : serverWidget.FieldDisplayType.HIDDEN
});
sublist.addField({
id : 'custpage_subjob_select',
type : serverWidget.FieldType.CHECKBOX,
label : 'SELECT'
});
var sbidField=sublist.addField({
id : 'custpage_subjob_id',
type : serverWidget.FieldType.TEXT,
label : 'ID'
});
sbidField.updateDisplayType({
displayType : serverWidget.FieldDisplayType.DISABLED
});
var vendorField=sublist.addField({
id : 'custpage_subjob_vender',
type : serverWidget.FieldType.TEXT,
label : 'VENDOR'
});
vendorField.updateDisplayType({
displayType : serverWidget.FieldDisplayType.DISABLED
});
var superintendedField=sublist.addField({
id : 'custpage_subjob_superintended',
type : serverWidget.FieldType.TEXT,
label : 'SUPERINTENDENT'
});
superintendedField.updateDisplayType({
displayType : serverWidget.FieldDisplayType.DISABLED
});
var cs_contact=sublist.addField({
id : 'custpage_subjob_customer_contact',
type : serverWidget.FieldType.TEXT,
label : 'CUSTOMER CONTACT'
});
cs_contact.updateDisplayType({
displayType : serverWidget.FieldDisplayType.DISABLED
});
var cs_contact_cc=sublist.addField({
id : 'custpage_subjob_cust_contact_cc',
type : serverWidget.FieldType.TEXT,
label : 'CUSTOMER CONTACT CC'
});
cs_contact_cc.updateDisplayType({
displayType : serverWidget.FieldDisplayType.DISABLED
});
var vn_contact=sublist.addField({
id : 'custpage_subjob_vendor_contact',
type : serverWidget.FieldType.TEXT,
label : 'VENDOR CONTACT'
});
vn_contact.updateDisplayType({
displayType : serverWidget.FieldDisplayType.DISABLED
});
var vn_contact_cc=sublist.addField({
id : 'custpage_subjob_vend_contact_cc',
type : serverWidget.FieldType.TEXT,
label : 'VENDOR CONTACT CC'
});
vn_contact_cc.updateDisplayType({
displayType : serverWidget.FieldDisplayType.DISABLED
});
var purchaser=sublist.addField({
id : 'custpage_subjob_purchaser',
type : serverWidget.FieldType.TEXT,
label : 'PURCHASER'
});
purchaser.updateDisplayType({
displayType : serverWidget.FieldDisplayType.DISABLED
});
var reasonCode=sublist.addField({
id : 'custpage_subjob_reason',
type : serverWidget.FieldType.SELECT,
label : 'REASON CODE',
source : '181'
});
reasonCode.isMandatory = true;
//Setting Buttons in the Sub Job selection form
SubjobForm.addButton({
id : 'custpage_back',
label : 'Back',
functionName: 'Closesuitelet'
});
SubjobForm.addButton({
id : 'custpage_cancel',
label : 'Change Status To Cancel',
functionName: 'ChangeToCancel'
});
if(type == 1){
SubjobForm.addButton({
id : 'custpage_unable_to_quote',
label : 'Change Status To Unable To Quote',
functionName: 'ChangeToQuoteUnable'
});
}
//Fetching the sub-jobs in a main job using a Main Job Search
var customrecord_netu_main_jobSearchObj = search.create({
type: "customrecord_netu_main_job",
filters: [
["internalidnumber","equalto",jobId],
"AND",
["custrecord_netu_main_job.internalidnumber","isnotempty",""],
"AND",
["custrecord_netu_main_job.custrecord_netu_subjob_status","noneof","20","4"]
],
columns: [
search.createColumn({
name: "name",
//sort: search.Sort.ASC
}),
search.createColumn({
name: "custrecord_netu_subjob_status",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "name",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
/* search.createColumn({
name: "internalid",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),*/
search.createColumn({
name: "internalid",
join: "CUSTRECORD_NETU_MAIN_JOB",
sort: search.Sort.ASC
}),
search.createColumn({
name: "custrecord_netu_subjob_vendor_2",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "custrecord_netu_subjob_superintended",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "custrecord_netu_subjob_customer_contact",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "custrecord_netu_subjob_cust_contact_cc",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "custrecord_netu_subjob_vendor_contact",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "custrecord_netu_subjob_vend_contact_cc",
join: "CUSTRECORD_NETU_MAIN_JOB"
})
]
});
var searchResultCount = customrecord_netu_main_jobSearchObj.runPaged().count;
var subjobResults = customrecord_netu_main_jobSearchObj.run().getRange({
start:0,
end:1000
});
//Setting the Sublist values based on the search result
for (var i = 0; i < searchResultCount; i++) {
var subjobName = subjobResults[i].getValue({
name: 'name',
join: 'CUSTRECORD_NETU_MAIN_JOB'
});
if(subjobName != ''){
sublist.setSublistValue({
id : 'custpage_subjob_id',
line : i,
value : subjobName
});
}
var subjobStatus = subjobResults[i].getValue({
name: 'custrecord_netu_subjob_status',
join: 'CUSTRECORD_NETU_MAIN_JOB'
});
var subjobId = subjobResults[i].getValue({
name: 'internalid',
join: 'CUSTRECORD_NETU_MAIN_JOB'
});
if(subjobId != ''){
sublist.setSublistValue({
id : 'custpage_subjob_internal_id',
line : i,
value : subjobId
});
}
var subjobVendor = subjobResults[i].getText({
name: 'custrecord_netu_subjob_vendor_2',
join: 'CUSTRECORD_NETU_MAIN_JOB'
});
if(subjobVendor != ''){
sublist.setSublistValue({
id : 'custpage_subjob_vender',
line : i,
value : subjobVendor
});
}
var subjobSuperintended = subjobResults[i].getText({
name: 'custrecord_netu_subjob_superintended',
join: 'CUSTRECORD_NETU_MAIN_JOB'
});
if(subjobSuperintended != ''){
sublist.setSublistValue({
id : 'custpage_subjob_superintended',
line : i,
value : subjobSuperintended
});
}
var customerContact = subjobResults[i].getText({
name: 'custrecord_netu_subjob_customer_contact',
join: 'CUSTRECORD_NETU_MAIN_JOB'
});
if(customerContact != ''){
sublist.setSublistValue({
id : 'custpage_subjob_customer_contact',
line : i,
value : customerContact
});
}
var customerContactCC = subjobResults[i].getText({
name: 'custrecord_netu_subjob_cust_contact_cc',
join: 'CUSTRECORD_NETU_MAIN_JOB'
});
if(customerContactCC != ''){
sublist.setSublistValue({
id : 'custpage_subjob_cust_contact_cc',
line : i,
value : customerContactCC
});
}
var vendorContact = subjobResults[i].getText({
name: 'custrecord_netu_subjob_vendor_contact',
join: 'CUSTRECORD_NETU_MAIN_JOB'
});
if(vendorContact != ''){
sublist.setSublistValue({
id : 'custpage_subjob_vendor_contact',
line : i,
value : vendorContact
});
}
var vendorContactCC = subjobResults[i].getText({
name: 'custrecord_netu_subjob_vend_contact_cc',
join: 'CUSTRECORD_NETU_MAIN_JOB'
});
if(vendorContactCC != ''){
sublist.setSublistValue({
id : 'custpage_subjob_vend_contact_cc',
line : i,
value : vendorContactCC
});
}
var subjobPurchaser = subjobResults[i].getText({
name: 'custrecord_netu_subjob_purchaser',
join: 'CUSTRECORD_NETU_MAIN_JOB'
});
if(subjobPurchaser != ''){
sublist.setSublistValue({
id : 'custpage_subjob_purchaser',
line : i,
value : subjobPurchaser
});
}
/*sublist.setSublistValue({
id : 'custpage_subjob_select',
line : i,
value : true
});*/
log.debug({
title : 'subjobResults',
details : subjobName+' '+subjobStatus+' '+subjobId
/*+' '+subjobVendor+' '+subjobSuperintended+' '+customerContact+' '+customerContactCC+' '+vendorContact+' '+vendorContactCC+' '+subjobPurchaser*/
});
}
context.response.writePage(SubjobForm);
} catch (e) {
log.debug({
title : 'Error',
details : e
});
}
}
return {
onRequest: onRequest
};
});