Convert SPR record (custom record) to sales order

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */

define(['N/record','N/currentRecord','N/search',"N/ui/message"],

    function(record,currentRecord,search,message) {

        function pageInit(scriptContext) {
        }

        /******************************************************************************
         * Function to create sales order record from SPR record
         ******************************************************************************/
        function converttoSO() {
            try {
                    jQuery('#custpage_sobutton').prop('disabled', true);

                var currentSPR = currentRecord.get().id
                console.log("rec id", currentSPR);
                var objRecord = record.load({
                    type: 'customrecord_jj_spr_custom',
                    id: currentSPR,
                    isDynamic: true,
                });

                //get details from SPR Record

                var customer = objRecord.getValue({
                    fieldId: 'custrecord_jj_cust_name'
                });
                var expDate = objRecord.getValue({
                    fieldId: 'custrecord_jj_expdate'
                });
                var docNum = objRecord.getValue({
                    fieldId: 'name'
                });
                var line_count = objRecord.getLineCount({
                    sublistId: 'recmachcustrecordjj_parent'
                });

                //get item sublist values
                var itemArray = []
                for (var i = 0; i < line_count; i++) {
                    var itemObj = {}
                    var lineNum = objRecord.selectLine({
                        sublistId: 'recmachcustrecordjj_parent',
                        line: i
                    });
                    itemObj.itemName = objRecord.getCurrentSublistValue({
                        sublistId: 'recmachcustrecordjj_parent',
                        fieldId: 'custrecordjj_item',
                    });

                    itemObj.itemQty = objRecord.getCurrentSublistValue({
                        sublistId: 'recmachcustrecordjj_parent',
                        fieldId: 'custrecord_jj_qty',
                    });
                    itemObj.sprCost = objRecord.getCurrentSublistValue({
                        sublistId: 'recmachcustrecordjj_parent',
                        fieldId: 'custrecordjj_spr_cost',
                    });
                    itemObj.itemRate = objRecord.getCurrentSublistValue({
                        sublistId: 'recmachcustrecordjj_parent',
                        fieldId: 'custrecord_jj_price_level',
                    });

                    itemArray.push(itemObj);
                }

                // create sales order record from SPR
                var soRecord = record.create({
                    type: record.Type.SALES_ORDER,
                    isDynamic: true,
                    defaultValues: {
                        entity: customer
                    }
                });

                soRecord.setValue({
                    fieldId: 'duedate',
                    value: expDate
                });

                 //set item sublist values
                if(itemArray.length>0){
                for(var j = 0; j< itemArray.length; j++) {
                    soRecord.selectNewLine({
                        sublistId: 'item'
                    });
                    soRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'item',
                        value: itemArray[j].itemName
                    });
                    soRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'quantity',
                        value: itemArray[j].itemQty
                    });

                    // set custom price level

                    soRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'price',
                        value: -1
                    });

                    soRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'rate',
                        value: itemArray[j].itemRate
                    });
                    soRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'custcol_jj_spr_cost',
                        value: itemArray[j].sprCost
                    });
                    soRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'custcol_jj_spr_hash',
                        value: docNum
                    });
                    soRecord.commitLine({
                        sublistId: 'item'
                    });
                }
            }
                soRecord.setValue({
                    fieldId:'custbody_jj_spr_reference',
                    value:currentSPR
                });
                var recId=soRecord.save({
                    relatedRecords:currentSPR,
                    enableSourcing: true,
                    ignoreMandatoryFields: true
                });
                console.log("recId",recId);
                if(recId){
                    var fieldLookUp = search.lookupFields({
                        type: search.Type.SALES_ORDER,
                        id: recId,
                        columns: ['tranid']
                    });


                    var salesDocNum= fieldLookUp.tranid
                    alert("Sales Order record Sales Order #"+salesDocNum+" is created successfully")
                 
                    var existValues= objRecord.getValue({
                        fieldId:'custrecord_jj_createdfrom_quote'
                    })
            // setting the related transactions on the multiselect field
                    var recIdArray=[]
                    for(var i=0; i<existValues.length; i++){
                        recIdArray.push(existValues[i])
                    }
                    console.log("recIdArray",recIdArray)
                    recIdArray.push(JSON.stringify(recId))
                    console.log("recIdArray",recIdArray)


                    objRecord.setValue({
                        fieldId: 'custrecord_jj_createdfrom_quote',
                        value:recIdArray
                    });
                    objRecord.save({
                        enableSourcing: true,
                        ignoreMandatoryFields: true
                    });

                    window.onbeforeunload = function () { };
                    location.reload();


                }
            } catch (e) {
                console.log("error@converttoSO",e)
                alert("Sales Order record is not created due to the following error: " +e)
            }
        }

        return {
            converttoSO:converttoSO,
            pageInit: pageInit
        };

    });

Leave a comment

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