Jira code: UMAR-5
The script will create Parts Items in the main Job, sub jobs and purchase requisitions for each sub-job by using the selected vendor, and items.
Vendor item select page using Suitelet
Suitelet for sub job and PR creation
/**
 * This contains all the backend actions that needs to be done in the main job wizard
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
define(['N/record', 'N/search', 'N/url'],
    function(record, search, url) {
        /**
         * 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 ACTION_CREATE_PART_ITEMS = 1;
            var ACTION_CHECK_PART_EXISTANCE = 2;
            var ACTION_CREATE_SUBJOBS = 3;
            var RESPONSE_SUCCESS = 'Success';
            var RESPONSE_FAILURE = 'Failure';
            var RESPONSE_EXISTS = 'true';
            var RESPONSE_NOT_EXISTS = 'false';
            if (context.request.method == 'POST') {
                var body = context.request.body;
                var dataObj = JSON.parse(body);
                var action = parseInt(dataObj.action);
                var jobId = dataObj.jobId;
                var responseObj = RESPONSE_FAILURE;
                switch (action) {
                    case ACTION_CREATE_PART_ITEMS:
                        responseObj = createPartItemsRecord(jobId, dataObj);
                        break;
                    case ACTION_CHECK_PART_EXISTANCE:
                        responseObj = checkExistanceOfPartsJob(jobId, dataObj);
                        break;
                    case ACTION_CREATE_SUBJOBS:
                        responseObj = createSubJobs(jobId, dataObj);
                        break;
                }
                logme('action', responseObj);
                //var responseObj = {msg:responseObj1};
                //context.response.write(JSON.stringify(responseObj));
                context.response.write(responseObj);
            }
            function logme(title, details) {
                log.debug({
                    title: title,
                    details: details
                });
            }
            /**
             * Create Parts Items  in main Job
             */
            function createPartItemsRecord(jobId, dataObj) {
                try {
                    var partsItemStr = dataObj.parts_item;
                    var partsResult = JSON.parse(partsItemStr);
                    for (var index = 0; index < partsResult.length; index++) {
                        var partsRecord = record.create({
                            type: 'customrecord_netu_parts_items',
                            isDynamic: true
                        });
                        partsRecord.setValue({
                            fieldId: 'custrecord_netu_main_job_ref',
                            value: jobId
                        });
                        var partsObj = partsResult[index];
                        for (var key in partsObj) {
                            partsRecord.setValue({
                                fieldId: key,
                                value: partsObj[key]
                            });
                        }
                        partsRecord.save({
                            enableSourcing: false,
                            ignoreMandatoryFields: true
                        });
                    }
                    return RESPONSE_SUCCESS;
                } catch (e) {
                    return e.message;
                }
            }
            function getSubJobSequence(jobId) {
                try {
                    var sequence = 0;
                    var subJobSearch = search.create({
                        type: 'customrecord_netu_sub_job',
                        columns: ['name',
                            search.createColumn({
                                name: 'internalid',
                                sort: 'DESC'
                            })
                        ],
                    });
                    subJobSearch.filters.push(search.createFilter({
                        name: 'custrecord_netu_main_job',
                        operator: 'IS',
                        values: jobId
                    }));
                    var subJobResults = subJobSearch.run().getRange({
                        start: 0,
                        end: 1
                    });
                    if (subJobResults) {
                        if (subJobResults.length > 0) {
                            var lastJobName = subJobResults[0].getValue({
                                name: 'name'
                            });
                            var jobSplit = lastJobName.split('-');
                            sequence = Number(jobSplit[1]);
                        }
                    }
                    return sequence;
                } catch (e) {
                    log.debug("err in getSubJobSequence", e);
                }
            }
            function checkExistanceOfPartsJob(jobId, dataObj) {
                try {
                    logme('Check Parts Enter', 'partsResult');
                    var partsSearch = search.create({
                        type: 'customrecord_netu_parts_items',
                        columns: ['custrecord_netu_part_description', 'custrecord_netu_part_number', 'custrecord_netu_parts_quantity', 'custrecord_netu_parts_unit'],
                        filters: [{
                            name: 'custrecord_netu_main_job_ref',
                            operator: 'is',
                            values: jobId
                        }]
                    });
                    var partsResult = partsSearch.run().getRange({
                        start: 0,
                        end: 10
                    });
                    logme('SLB Check Parts', partsResult.length);
                    if (!partsResult || partsResult.length == 0) {
                        return RESPONSE_NOT_EXISTS;
                    } else {
                        return RESPONSE_EXISTS;
                    }
                } catch (e) {
                    log.debug("err in checkExistanceOfPartsJob", e);
                }
            }
            //create subjobs
            function createSubJobs(jobId, dataObj) {
                try {
                    var jobFields = search.lookupFields({
                        type: 'customrecord_netu_main_job',
                        id: jobId,
                        columns: ['name']
                    });
                    var jobName = jobFields.name;
                    var SUB_JOB_STATUS_AWAITING_OFFER = 2;
                    var ITEM_DIRECT = 2;
                    var ITEM_PART = 1;
                    var parts_item = dataObj.parts_item;
                    var partsObjectArray = JSON.parse(parts_item);
                    var vendor_select_record_str = dataObj.vendor_list;
                    var itemCode = dataObj.itemCode;
                    var vendorArray = JSON.parse(vendor_select_record_str);
                    var newSequence = getSubJobSequence(jobId);
                    var SUBLISTID = 'recmachcustrecord_netu_pur_req_id';
                    var subjobName;
                    var len=(vendorArray.length)-1;
                    for (var index = len; index >=0 ; index--) {
                        log.debug("i", index);
                        var vendorObj = vendorArray[index];
                        var subJobRecord = record.create({
                            type: 'customrecord_netu_sub_job',
                            isDynamic: true,
                        });
                        subJobRecord.setValue({
                            fieldId: "custrecord_netu_main_job",
                            value: jobId
                        });
                        subJobRecord.setValue({
                            fieldId: "custrecord_netu_subjob_vendor_2",
                            value: vendorObj.id
                        });
                        if (vendorObj.job_type == 'Direct') {
                            vendorObj.job_type = ITEM_DIRECT;
                        } else {
                            vendorObj.job_type = ITEM_PART;
                        }
                        subJobRecord.setValue({
                            fieldId: "custrecord_netu_subjob_type",
                            value: vendorObj.job_type
                        });
                        subJobRecord.setValue({
                            fieldId: "custrecord_netu_subjob_status",
                            value: SUB_JOB_STATUS_AWAITING_OFFER
                        });
                        subJobRecord.setValue({
                            fieldId: 'autoname',
                            value: false
                        });
                        //subjobName=jobName +'-'+(newSequence+1);
                        for (var j = 0, len = true; len == true; j++) {
                            subjobName = jobName + '-' + (newSequence + 1);
                            try {
                                subJobRecord.setValue({
                                    fieldId: 'name',
                                    value: subjobName
                                });
                                var subjobId = subJobRecord.save({
                                    enableSourcing: true,
                                    ignoreMandatoryFields: true
                                });
                                len = false;
                            } catch (e) {
                                newSequence++;
                                continue;
                            }
                        }
                        //createSubFolder(subjobId,subjobName,jobName);
                        var vendorId = vendorObj.id;
                        //checking the vendor commission type
                        var vendorComtype = search.lookupFields({
                            type: search.Type.VENDOR,
                            id: vendorId,
                            columns: ['custentity_netu_commission_type']
                        });
                        //console.log(vendorComtype);
                        var vendorType1 = vendorComtype.custentity_netu_commission_type[0];
                        var vendorType = null;
                        if (vendorType1 == null || vendorType1 == "" || vendorType1 == undefined) {
                        } else {
                            vendorType = vendorType1.value;
                        }
                        //if((vendorType=='1') && (commiCheck==null || commiCheck=="" || commiCheck==undefined)){
                        if ((vendorType == '1')) {
                            var scaleField = false;
                        }
                        if (vendorType == '2') {
                            var scaleField = true;
                        }
                        if (vendorType == '3') {
                            var scaleField = false;
                        }
                        if (vendorObj.job_type == ITEM_DIRECT) {
                            createDirectPurchaseRequistion(jobId, subjobId, itemCode, SUBLISTID, scaleField);
                        } else {
                            createPartsPurchaseRequisition(jobId, subjobId, itemCode, SUBLISTID, partsObjectArray, scaleField);
                        }
                        newSequence++;
                    }
                    return RESPONSE_SUCCESS;
                } catch (e) {
                    log.debug("err in createSubJobs", e);
                }
            }
            function saveSubjob(subjobName, subJobRecord) {
                log.debug("subjobName", subjobName);
                try {
                    subJobRecord.setValue({
                        fieldId: 'name',
                        value: subjobName
                    });
                    var subjobId = subJobRecord.save({
                        enableSourcing: true,
                        ignoreMandatoryFields: true
                    });
                    return {
                        status: true,
                        subjobId: subjobId
                    };
                } catch (e) {
                    return {
                        status: false,
                        subjobId: subjobId
                    };
                }
            }
            ///function to create purchase requisitions for parts
            function createPartsPurchaseRequisition(jobId, subjobId, itemCode, SUBLISTID, partsObjectArray, scaleField) {
                try {
                    var requisitionRecord = record.create({
                        type: 'customrecord_netu_purchase_requisition',
                        isDynamic: true
                    });
                    requisitionRecord.setValue({
                        fieldId: 'custrecord_netu_pur_req_main_job',
                        value: jobId
                    });
                    requisitionRecord.setValue({
                        fieldId: 'custrecord_netu_sub_job_number',
                        value: subjobId
                    });
                    requisitionRecord.setValue({
                        fieldId: 'custrecord_netu_req_scale_commission',
                        value: scaleField
                    });
                    var partsResult = getPartsFromMainJob(jobId);
                    var partsResultLength = partsResult.length;
                    for (var index = 0; index < partsResultLength; index++) {
                        if (itemCode) {
                            requisitionRecord.selectNewLine({
                                sublistId: SUBLISTID
                            });
                            requisitionRecord.setCurrentSublistValue({
                                sublistId: SUBLISTID,
                                fieldId: 'custrecord_netu_pur_req_item_code',
                                value: itemCode,
                                ignoreFieldChange: true
                            });
                            var partsObj = partsResult[index];
                            for (var key in partsObj) {
                                requisitionRecord.setCurrentSublistValue({
                                    sublistId: SUBLISTID,
                                    fieldId: key,
                                    value: partsObj[key],
                                    ignoreFieldChange: true
                                });
                            }
                            requisitionRecord.commitLine({
                                sublistId: SUBLISTID
                            });
                        }
                    }
                    var id = requisitionRecord.save({
                        enableSourcing: true,
                        ignoreMandatoryFields: true
                    });
                    /** AU STARTS--- For setting job status  **/
                    // to load the main job page
                    var main_job = record.submitFields({
                        type: 'customrecord_netu_main_job',
                        id: jobId,
                        values: {
                            custrecord_netu_job_status: '1'
                        }
                    });
                    /** AU ENDS **/
                } catch (e) {
                    log.debug("err in createPartsPurchaseRequisition", e);
                }
            }
            ///function to create purchase requisitions for direct
            function createDirectPurchaseRequistion(jobId, subjobId, itemCode, SUBLISTID, scaleField) {
                try {
                    var requisitionRecord = record.create({
                        type: 'customrecord_netu_purchase_requisition',
                        isDynamic: true
                    });
                    requisitionRecord.setValue({
                        fieldId: 'custrecord_netu_pur_req_main_job',
                        value: jobId
                    });
                    requisitionRecord.setValue({
                        fieldId: 'custrecord_netu_sub_job_number',
                        value: subjobId
                    });
                    requisitionRecord.setValue({
                        fieldId: 'custrecord_netu_req_scale_commission',
                        value: scaleField
                    });
                    if (itemCode) {
                        requisitionRecord.selectNewLine({
                            sublistId: SUBLISTID
                        });
                        requisitionRecord.setCurrentSublistValue({
                            sublistId: SUBLISTID,
                            fieldId: 'custrecord_netu_pur_req_item_code',
                            value: itemCode,
                            ignoreFieldChange: true
                        });
                        requisitionRecord.setCurrentSublistValue({
                            sublistId: SUBLISTID,
                            fieldId: 'custrecord_netu_pur_req_partdescription',
                            value: 'Direct',
                            ignoreFieldChange: true
                        });
                        requisitionRecord.commitLine({
                            sublistId: SUBLISTID
                        });
                    }
                    requisitionRecord.save({
                        enableSourcing: true,
                        ignoreMandatoryFields: true
                    });
                    record.submitFields({
                        type: 'customrecord_netu_main_job',
                        id: jobId,
                        values: {
                            custrecord_netu_job_status: '1'
                        }
                    });
                } catch (e) {
                    log.debug("err in createDirectPurchaseRequistion", e);
                }
            }
            function getPartsFromMainJob(jobId) {
                try {
                    var partsSearch = search.create({
                        type: 'customrecord_netu_parts_items',
                        columns: ['custrecord_netu_part_description', 'custrecord_netu_part_number', 'custrecord_netu_parts_quantity', 'custrecord_netu_parts_unit'],
                        filters: [{
                            name: 'custrecord_netu_main_job_ref',
                            operator: 'is',
                            values: jobId
                        }]
                    });
                    var partsResult = partsSearch.run().getRange({
                        start: 0,
                        end: 1000
                    });
                    var partsArray = [];
                    partsResult.forEach(function(result) {
                        var partsObj = {};
                        partsObj.custrecord_netu_pur_req_partdescription = result.getValue({
                            name: 'custrecord_netu_part_description'
                        });
                        partsObj.custrecord_netu_pur_req_partnumber = result.getValue({
                            name: 'custrecord_netu_part_number'
                        });
                        partsObj.custrecord_netu_quantity = result.getValue({
                            name: 'custrecord_netu_parts_quantity'
                        });
                        partsObj.custrecord_netu_pur_req_units = result.getValue({
                            name: 'custrecord_netu_parts_unit'
                        });
                        partsArray.push(partsObj);
                    });
                    return partsArray;
                } catch (e) {
                    log.debug("err in getPartsFromMainJob", e);
                }
            }
        }
        return {
            onRequest: onRequest
        };
    });