Rejection Popup window

Requirement:

When clicked on the Rejection button in PO , a pop-up window for entering the rejection reason should appear. once the user enter the reason, this reason should be saved in a custom field in PO

Solution

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 */
/**************************************************************************************************************************
 * POW-221 Suitelet script for creating popup page
 * *************************************************************************************************************************
 *
 * Date: 11-April-2022
 * created on: 11-April-2022
 * Author: Jobin & Jismi IT Services LLP
 *
 * Version History
 *
 *****************************************************************************************************************************/
define(['N/record', 'N/https', 'N/ui/serverWidget','N/redirect'],

    //To check whether a value exists in parameter
    function (record, https, serverWidget, redirect) {


        /**
         * @description Check whether the given parameter argument has value on it or is it empty.
         * ie, To check whether a value exists in parameter
         * @param {*} parameter parameter which contains/references some values
         * @param {*} parameterName name of the parameter, not mandatory
         * @returns {Boolean} true if there exist a value else false
         */
        function checkForParameter(parameter, parameterName) {
            if (parameter !== "" && parameter !== null && parameter !== undefined && parameter !== false && parameter !== "null" && parameter !== "undefined" && parameter !== " " && parameter !== 'false') {
                return true;
            } else {
                if (parameterName)
                    log.debug('Empty Value found', 'Empty Value for parameter ' + parameterName);
                return false;
            }
        }

        /**
         * FUNCTION TO GET RECORD ID FROM SCRIPT CONTEXT URL.
         **/

        function getParameterByName(name, url) {
            if (!url)
                return false;
            name = name.replace(/[\[\]]/g, "\\$&");
            var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
                results = regex
                    .exec(url);
            if (!results)
                return null;
            if (!results[2])
                return ' ';
            return decodeURIComponent(results[2].replace(/\+/g, " "));

        }

        function onRequest(context) {
            try {

                //var id = context.request.parameters.poInternalId;
                var tran_url = context.request.headers.referer
                log.debug("url", context.request.headers.referer)
                var po_id = getParameterByName('id', tran_url);
                log.debug("po_id", po_id)
                //create form
                var form = serverWidget.createForm({title: 'Rejection Reason'});
                form.addFieldGroup({ id: 'enterReason', label: 'ENTER THE REASON FOR REJECTION' });
                var reason = form.addField({
                    id: 'custpage_rejectionreason_pow221',
                    label: 'Reason For Rejection',
                    container: 'enterReason',
                    type: serverWidget.FieldType.TEXT
                }).isMandatory = true;

                var poRecVal = form.addField({ id: 'custpage_po_id', type: serverWidget.FieldType.TEXT, label: 'TXT', container: 'enterReason' })
                poRecVal.updateDisplayType({displayType: serverWidget.FieldDisplayType.HIDDEN});
                poRecVal.defaultValue = po_id;

                form.addSubmitButton({
                    label: 'Submit'
                });
                context.response.writePage(form);

                if (context.request.method == 'POST') {
                    var poID = context.request.parameters.custpage_po_id;
                    var reason = context.request.parameters.custpage_rejectionreason_pow221;
                    log.debug('reason', reason)
                    //load the PO record and store the rejection reason in the custom field
                    var id = record.submitFields({
                        type: record.Type.PURCHASE_ORDER,
                        id: poID,
                        values: {
                            custbody_jj_rejectionreason_powe221: reason
                        },
                        options: {
                            enableSourcing: false,
                            ignoreMandatoryFields : true
                        }
                    });
                    redirect.toRecord({type: record.Type.PURCHASE_ORDER,id: poID});
                }

            } catch (e) {
                log.debug("Error@onRequest", e)
            }
        }

        return {
            onRequest: onRequest
        }

    });

Leave a comment

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