Vendor Preview Page

Jira code: UMAR-5
A suitelet page in which all the selected vendors on the Vendor select suite will be previewed on this page. From this page, the user can verify the selected vendor and go to the next stage by pressing the Next button on that page. Otherwise, the user can go back to the Vendor Select page.

Vendor Select Page

http://www.jobinandjismi.in/2019/04/17/vendor-select-page-on-a-custom-record/

Suitelet for Vendor Preview

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
define(['N/ui/serverWidget'],

function(serverWidget) {
   
    /**
     * 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.2
     */
    function onRequest(context) {
    	var vendorForm = serverWidget.createForm({
    		title:'Vendors Preview'
    	});
    	vendorForm.clientScriptFileId = 1603;
    	if(context.request.method =='GET'){
    		
    	
    		var jobField = vendorForm.addField({
        		id:'custpage_jobid',
        		type:serverWidget.FieldType.TEXT,
        		label: 'Job Id'
        	});
    		
    		jobField.updateDisplayType({
     			 displayType : serverWidget.FieldDisplayType.DISABLED
       			
      		});
          
          	var loadingUrl = "https://system.eu2.netsuite.com/core/media/media.nl?id=2461&c=4817421&h=1461eeba51aacda4dba5";
    		var image_tag = '<img id="custpage_load_img" style="height:80px;width:100px;visibility: hidden;" src="'+loadingUrl+'"/>';
    		var loadField = vendorForm.addField({
        		id:'custpage_progress',
        		type:serverWidget.FieldType.INLINEHTML,
        		label: 'Job Id'
        	});
    		loadField.defaultValue = image_tag;
    		loadField.updateLayoutType({
    		    layoutType: serverWidget.FieldLayoutType.OUTSIDEBELOW
    		});
    		
    		//---
    		var vendorList = vendorForm.addSublist({
    			id:'vendor_sublist',
    			label: 'Vendor List',
    			type: serverWidget.SublistType.INLINEEDITOR
    			
    		});
    		
    		
    		var vendorid =vendorList.addField({
    			id:'id',
    			label: 'ID',
    			type: serverWidget.FieldType.TEXT
    		});
    		vendorid.updateDisplayType({
   			 displayType : serverWidget.FieldDisplayType.HIDDEN
   			
   		});
    		var vendorName =vendorList.addField({
    			id:'entityid',
    			label: 'Vendor Name',
    			type: serverWidget.FieldType.TEXT,
    			source: 'vendor'
    		});
    		vendorName.updateDisplayType({
    			 displayType : serverWidget.FieldDisplayType.DISABLED
    			
    		});
    		var country = vendorList.addField({
    			id:'custentity_netu_country',
    			label: 'Country',
    			type: serverWidget.FieldType.TEXT,
    			source: 'country'
    		});
    		country.updateDisplayType({
   			 displayType : serverWidget.FieldDisplayType.DISABLED
   			
   		});
   		
    		var port = vendorList.addField({
    			id:'custentity_netu_port',
    			label: 'Ports',
    			type: serverWidget.FieldType.TEXT,
    			source: 'custentity_netu_port'
    		});
    		port.updateDisplayType({
   			 displayType : serverWidget.FieldDisplayType.DISABLED
   			
   		});
    		var category = vendorList.addField({
    			id:'category',
    			label: 'Category',
    			type: serverWidget.FieldType.TEXT,
    			source: 'vendorcategory'
    		});
    		category.updateDisplayType({
      			 displayType : serverWidget.FieldDisplayType.DISABLED
      			
      		});
    		
    		var direct = vendorList.addField({
    			id:'vendor_job_type',
    			label: 'Is Direct',
    			type: serverWidget.FieldType.TEXT,
    		});
    		direct.updateDisplayType({
     			 displayType : serverWidget.FieldDisplayType.DISABLED
     			
     		});
   		
    	
  
    	}
    	vendorForm.addButton({
			id:'vendor_back',
			label:'Back',
			functionName:'moveBackAction'
		});
    	vendorForm.addSubmitButton({
    		label:'Next'
    	});
    	context.response.writePage(vendorForm);
    }

    return {
        onRequest: onRequest
    };
    
});

Client Script

/**
 * This is the support script for the vendor select item page. IThis stores the job and  part details in main job
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/currentRecord','N/url','./NetU_CS_Vendor_Library.js','N/search','N/record','N/https'],

function(currentRecord,url,vendorlib,search,recordlib,https) {
	 /**
     * 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
     */
	
	var flag=null;
    function pageInit(scriptContext) {
    	var vendor_select_record_str =localStorage.getItem('vendor_select_record_str');
		var vendorSelectRecord = JSON.parse(vendor_select_record_str);
		var jobId = vendorlib.getParameterByName('custpage_jobid');
    	console.log('jobId'+jobId);
    	var record = scriptContext.currentRecord;
    	record.setValue({
    		fieldId:'custpage_jobid',
    		value:jobId
    	});
    	setVendorListView(record,vendorSelectRecord);
    	document.getElementsByClassName('uir-machine-button-row')[0].style.display = 'none';
    	document.getElementsByClassName('listinlinefocusedrowcellnoedit')[0].style.display = 'none';
    	
    	
    }

    
    
   
    
    function setVendorListView(vendorList,vendorSelectRecord){
    	try {
    		
    		var len=(vendorSelectRecord.length)-1;
    		console.log('len',len);
    		for(var index=len;index>=0;index--){
    			if(index==len){
    				vendorList.selectLine({
    	        	    sublistId: 'vendor_sublist',
    	        	    line: 0,
    	        	    ignoreRecalc: true
    	        	});
    			}else{
    			vendorList.selectNewLine({
            	    sublistId: 'vendor_sublist'
            	  
            	});
    			}
    		
    		var vendorObj = vendorSelectRecord[index];
    	
        	vendorList.setCurrentSublistValue({
        		fieldId : 'id',
        		sublistId : 'vendor_sublist',
                value :vendorObj.id
            });
        	vendorList.setCurrentSublistValue({
        		fieldId : 'entityid',
        		sublistId : 'vendor_sublist',
                value :vendorObj.entityid
            });
        	
        	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
            });
        	vendorList.setCurrentSublistValue({
        		fieldId : 'vendor_job_type',
        		sublistId : 'vendor_sublist',
                    value :vendorObj.job_type
        		});
        	vendorList.commitLine({
        		sublistId : 'vendor_sublist'
    		});
    		}
			
		} catch (e) {
			console.log(e.name,e.message);
		}
    	
  		
		
    }
	
	function moveBackAction(){
		var record = currentRecord.get();
		var jobId =  record.getValue({
			fieldId:'custpage_jobid'
		});
		var params ={};
		params['custpage_jobid'] = jobId;
		params['is_back'] =1;
		var backUrl =url.resolveScript({
			scriptId:'customscript_netu_vendor_select',
			deploymentId:'customdeploy_netu_vendor_select',
			returnExternalUrl:false,
			params:params
		});
		if(window.onbeforeunload){
			window.onbeforeunload = function(){null;};
		}
		window.location = backUrl;
	}

    /**
     * Validation function to be executed when record is saved.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @returns {boolean} Return true if record is valid
     *
     * @since 2015.2
     */
    function saveRecord(scriptContext) {
    	
    	try {
			
    		var record=  scriptContext.currentRecord;
        	
        	
        	// to disable the 'Next' & 'Back' button
        	document.getElementById("vendor_back").disabled = true;
        	document.getElementById("submitter").disabled = true;
        	
        	document.getElementById("custpage_load_img").style.visibility ='visible';
        	if(jQuery('#custpage_load_img').is(':visible')) {
        		
        		
        		var lineNumber =  record.findSublistLineWithValue({
        		    sublistId: 'vendor_sublist',
        		    fieldId: 'vendor_job_type',
        		    value: 'Part'
        		});
            
            	var jobId = record.getValue({
            		fieldId:'custpage_jobid'
            	});
            	if(lineNumber>-1){
            		openItemsList(record,jobId);
            	}else{
            		createSubJobsForDirectOnly(record,jobId);
            		
            		
            		if(flag==2)
            		{
            		 var nextUrl = url.resolveRecord({
                        recordType: 'customrecord_netu_main_job',
                        recordId: jobId,
                        isEditMode: false
                    });

                    if (window.onbeforeunload) {
                        window.onbeforeunload = function() {
                            null;
                        };
                    }
                    window.location = nextUrl;
            		}
            	}
        		
        	}
        	
		} catch (e) {
			console.log('Test',e.message);
		}
    	
    	
    }
    
  // Open Item entry list
    function openItemsList(record,jobId){
    	var params ={};
    	params['custpage_jobid'] = jobId;
    	var itemsEntryUrl = url.resolveScript({
    		scriptId: 'customscript_netu_sl_vendor_items',
    		deploymentId:'customdeploy_netu_sl_vendor_items',
    		returnExternalUrl:false,
    		params :params
    	});
    	if (window.onbeforeunload){
    		   window.onbeforeunload=function() { null;};
    		};
    		
    	window.location= itemsEntryUrl;
    }
    
  

    function createSubJobsForDirectOnly(itemRecord,jobId) {
    //	var selctedVendors = createParamsForSublist(itemRecord);
    	
    	/*var cnfm=confirm("Do you want to continue with create Subjob and PR?");
    	if(cnfm == true){*/
    		
    		/*var jobFields = search.lookupFields({
    			type: 'customrecord_netu_main_job',
    			id: jobId,
    			columns: ['name']
    		});
    	
    		vendorlib.createSubJobs(jobId, jobFields.name,true);*/
    		var ACTION_CREATE_SUBJOBS =3;
    		var vendor_list = localStorage.getItem('vendor_select_record_str');
			var itemCode = localStorage.getItem('itemCode');
			var dataObj ={};
			dataObj.jobId = jobId;
			dataObj.vendor_list = vendor_list;
			dataObj.itemCode = itemCode;
			dataObj.isDirect = true;
			var partsObjectArray=null;
			dataObj.parts_item = JSON.stringify(partsObjectArray);
			executeServerActions(ACTION_CREATE_SUBJOBS, dataObj);
    		
    		flag=2;
    	//}
    	//else{
    		// to enable the 'Next' & 'Back' button
        	document.getElementById("vendor_back").disabled = true;
        	document.getElementById("submitter").disabled = true;
        	//document.getElementById("custpage_load_img").style.visibility ='hidden';
    		//flag=1;
    	//}
		
    }
    
    
    /**
     * Execute Server side actions if 
     */
    function executeServerActions(action, dataObj){
    	
    	var requestURL = url.resolveScript({ 
    		scriptId: 'customscript_netu_slb_main_job_wizard', 
    		deploymentId: 'customdeploy_netu_slb_main_job_wizard', 
    		returnExternalUrl: false 
    		});
    	dataObj.action = action;
    	var body = JSON.stringify(dataObj);
    	
    	var response = https.post({
    						url: requestURL, 
    						body: body, 
    						headers: {} 
    					});
    	console.log('response--'+response.body);
    	return response.body;
    	
    }
    
    /*
    
    function createParamsForSublist(record){
    	var ITEM_DIRECT = 2;
    	var ITEM_PART = 1;
    	var numLines = record.getLineCount({
    	    sublistId: 'vendor_sublist'
    	});
    	
    		
    	var vendorArray=[];
    	for(var i=numLines-1;i>-1;i--){

    		var vendorObj = {};
    		vendorObj.id = record.getSublistValue({
    		    sublistId: 'vendor_sublist',
    		    line:i,
    		    fieldId: 'id'
    		});
    	
    		var type = record.getSublistValue({
    		    sublistId: 'vendor_sublist',
    		    line:i,
    		    fieldId: 'vendor_job_type'
    		});
    		if(type == 'Part'){
    			vendorObj.type = ITEM_PART;
    		}else{
    			vendorObj.type = ITEM_DIRECT;
    		}
    		
    		vendorArray.push(vendorObj);
    		
    	}
    	return JSON.stringify(vendorArray);
    }
    */
    return {
    	pageInit:pageInit,
    	createSubJobsForDirectOnly:createSubJobsForDirectOnly,
    	moveBackAction:moveBackAction,
    	openItemsList:openItemsList,
        saveRecord: saveRecord
    };
    
});

Leave a comment

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