Change Status of Selected Sub jobs

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

http://www.jobinandjismi.in/2019/04/09/customization-on-main-job-custom-record/

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


Leave a comment

Your email address will not be published. Required fields are marked *