CLIENT SCRIPT TO VALIDATE SUITELET PAGES BUTTON ACTION

This code sample is to validate the dates from the sales orders in the suitelet page are changed before save action.

if the dates are not changed then alerts the user and restricts save.

define([‘N/currentRecord’],

    /**

     * @param {*} currentRecord

     */

    (currentRecord) => {

        ‘use strict’;

        let ORIGINAL_DATE_ARRAY = [];

        /**

         * This function is called when the user clicks the cancel button.

         */

        function onCancelClick() {

            try {

                window.close();

            } catch (e) {

                console.error(‘error @onCancelClick’, 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) {

            try {

                let currentRecordObj = scriptContext.currentRecord;

                let fieldId = scriptContext.fieldId;

                if (fieldId === ‘custpage_header_req_date’) {

                    var globalDate = currentRecordObj.getValue({ fieldId: ‘custpage_header_req_date’ });

                    var lineCount = currentRecordObj.getLineCount({ sublistId: ‘custpage_sublist’ });

                    for (var i = 0; i < lineCount; i++) {

                        currentRecordObj.selectLine({ sublistId: ‘custpage_sublist’, line: i });

                        currentRecordObj.setCurrentSublistValue({

                            sublistId: ‘custpage_sublist’,

                            fieldId: ‘req_date’,

                            value: globalDate

                        });

                        currentRecordObj.commitLine({ sublistId: ‘custpage_sublist’ });

                    }

                }

            } catch (e) {

                console.error(‘error @fieldChanged’, e);

            }

        }

        /**

         * 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) {

            try {

                let currentRecordObj = scriptContext.currentRecord;

                let lineCount = currentRecordObj.getLineCount({ sublistId: ‘custpage_sublist’ });

                ORIGINAL_DATE_ARRAY = [];

                for (let i = 0; i < lineCount; i++) {

                    let reqDate = currentRecordObj.getSublistValue({

                        sublistId: ‘custpage_sublist’,

                        fieldId: ‘req_date’,

                        line: i

                    });

                    ORIGINAL_DATE_ARRAY.push(reqDate ? String(reqDate) : );

                }

            } catch (e) {

                console.error(‘error @pageInit’, e);

            }

        }

        /**

         * 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() {

            try {

                let recordObj = currentRecord.get();

                let lineCount = recordObj.getLineCount({ sublistId: ‘custpage_sublist’ });

                let currentReqDatesArray = [];

                for (let i = 0; i < lineCount; i++) {

                    let reqDate = recordObj.getSublistValue({

                        sublistId: ‘custpage_sublist’,

                        fieldId: ‘req_date’,

                        line: i

                    });

                    currentReqDatesArray.push(reqDate ? String(reqDate) : );

                }

                let arraysMatch = (

                    ORIGINAL_DATE_ARRAY.length === currentReqDatesArray.length &&

                    ORIGINAL_DATE_ARRAY.every((val, idx) => val === currentReqDatesArray[idx])

                );

                if (arraysMatch) {

                    alert(“No changes are made to the Requested Delivery Dates.”);

                    return false;

                } else {

                    return true;

                }

            } catch (e) {

                console.error(“Error @ saveRecord”, e);

                return false;

            }

        }

        return {

            onCancelClick: onCancelClick,

            pageInit: pageInit,

            fieldChanged: fieldChanged,

            saveRecord: saveRecord,

        };

    });

Leave a comment

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