Custom Button Action To Load A Suitelet Page

Client needs to Populate a suitelet page when a custom Button is Clicked from a IF record.

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/currentRecord','N/url','N/record'],
/**
 * @param{url} url
 */
function(currentRecord,url,record) {
    
    /**
     * 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
     */
    function pageInit(scriptContext) {


    }



    function printButton(createdFrom){
        try{
            var currentRec=currentRecord.get().id;
            console.log("current rec id",currentRec);
            
            // if(messageCount > 0){
                var createLinkUrl=url.resolveScript({
                    scriptId: 'customscript_jj_sl_back_ord_bill_155',
                    deploymentId: 'customdeploy_jj_sl_back_ord_bill_155',
                    returnExternalUrl: false,
                    params: {
                        currentRec: createdFrom
                    }
                })
                window.open(createLinkUrl)
        }
        catch(e){
            console.log("error@printButton",e)
        }
    }


    /**
     * Function to be executed when field is changed.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     * @param {string} scriptContext.fieldId - Field name
     * @param {number} scriptContext.lineNum - Line number. Will be undefined if not a sublist or matrix field
     * @param {number} scriptContext.columnNum - Line number. Will be undefined if not a matrix field
     *
     * @since 2015.2
     */
    function fieldChanged(scriptContext) {


    }


    /**
     * Function to be executed when field is slaved.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     * @param {string} scriptContext.fieldId - Field name
     *
     * @since 2015.2
     */
    function postSourcing(scriptContext) {


    }


    /**
     * Function to be executed after sublist is inserted, removed, or edited.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @since 2015.2
     */
    function sublistChanged(scriptContext) {


    }


    /**
     * Function to be executed after line is selected.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @since 2015.2
     */
    function lineInit(scriptContext) {


    }


    /**
     * Validation function to be executed when field is changed.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     * @param {string} scriptContext.fieldId - Field name
     * @param {number} scriptContext.lineNum - Line number. Will be undefined if not a sublist or matrix field
     * @param {number} scriptContext.columnNum - Line number. Will be undefined if not a matrix field
     *
     * @returns {boolean} Return true if field is valid
     *
     * @since 2015.2
     */
    function validateField(scriptContext) {


    }


    /**
     * Validation function to be executed when sublist line is committed.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @returns {boolean} Return true if sublist line is valid
     *
     * @since 2015.2
     */
    function validateLine(scriptContext) {


    }


    /**
     * Validation function to be executed when sublist line is inserted.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @returns {boolean} Return true if sublist line is valid
     *
     * @since 2015.2
     */
    function validateInsert(scriptContext) {


    }


    /**
     * Validation function to be executed when record is deleted.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @returns {boolean} Return true if sublist line is valid
     *
     * @since 2015.2
     */
    function validateDelete(scriptContext) {


    }


    /**
     * 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 curRec= scriptContext.currentRecord;
            console.log("curRec",curRec);
            var createdFrom =  curRec.getValue({fieldId: 'createdfrom'});
            console.log("createdFrom",createdFrom)
            if(createdFrom){
                var salesOrder= record.load({
                    type: record.Type.SALES_ORDER,
                    id: createdFrom
                })
                var flag=0;
                var lineCount= salesOrder.getLineCount({sublistId: 'item'});
                console.log("lineCount",lineCount);
                for(var i=0;i<lineCount;i++){
                    var backQuantity=salesOrder.getSublistValue({sublistId: 'item', fieldId: 'quantitybackordered', line: i});
                    if(backQuantity>0)
                      flag= flag+1;
                }


                if(flag>0) alert("There is remaining back-ordered item in the sales order.nYou can download report of the items.");
                var createLinkUrl=url.resolveScript({
                    scriptId: 'customscript_jj_sl_back_ord_bill_155',
                    deploymentId: 'customdeploy_jj_sl_back_ord_bill_155',
                    returnExternalUrl: false,
                    params: {
                        currentRec: createdFrom
                    }
                })
                window.open(createLinkUrl)
            }
            return true;
        }
        catch(e){
            console.error("error@saveRecord",e)
        }
    }


    return {
        pageInit: pageInit,
        printButton: printButton,
        // fieldChanged: fieldChanged,
        // postSourcing: postSourcing,
        // sublistChanged: sublistChanged,
        // lineInit: lineInit,
        // validateField: validateField,
        // validateLine: validateLine,
        // validateInsert: validateInsert,
        // validateDelete: validateDelete,
        saveRecord: saveRecord
    };
    
});


Leave a comment

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