Validation script for avoiding duplicate entries into custom records

/**
 * @NApiVersion 2.1
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
/*************************************************************************************************************************
* Grand Appliance-US-NS
 
* GRAUN-12 | Validation script for avoiding Duplication of Custom records


*********************************************************************************************************************
*
* Author: Jobin & Jismi
* 
* Date Created : 14-March-2024


* Created By: Linu Paul, Jobin and Jismi IT Services
* 
* Description : The validation on the custom record for duplicate prevention.
*
* REVISION HISTORY
* 
**************************************************************************************************************************/
define(['N/search'],
    /**
     * @param{search} search
     */
    function (search) {
        "use strict"
        /**
         * function to find the duplicate of the zip code record
         * @param {string} zipCode 
         * @returns {string}
         */
        function isDupicateZipCode(zipCode) {
            let zipCodeId = '';
            try {
                let customrecord_jj_zip_codes_ftusn_8SearchObj = search.create({
                    type: "customrecord_jj_zipcode",
                    filters:
                        [
                            ["custrecord_jj_zip_code", "is", zipCode]
                        ],
                    columns:
                        [
                            search.createColumn({ name: "internalid", label: "Internal Id" }),
                        ]
                });
                customrecord_jj_zip_codes_ftusn_8SearchObj.run().each(function (result) {
                    zipCodeId = result.getValue({ name: "internalid", label: "Internal Id" });
                });
                return zipCodeId;
            } catch (e) {
                log.error('error@isDupicateZipCode', e);
                return zipCodeId;
            }
        }


        /**
         * function to find the duplicate of the route record
         * @param {string} route 
         * @returns {string}
         */
        function isDupicateRoute(route) {
            let routeId = ''
            try {
                let customrecord_jj_routes_ftusn_10SearchObj = search.create({
                    type: "customrecord_jj_routes",
                    filters:
                        [
                            ["name", "is", route]
                        ],
                    columns:
                        [
                            search.createColumn({ name: "internalid", label: "Internal Id" })
                        ]
                });
                customrecord_jj_routes_ftusn_10SearchObj.run().each(function (result) {
                    routeId = result.getValue({ name: "internalid", label: "Internal Id" });
                });
                return routeId;
            } catch (e) {
                log.error('error@isDupicateRoute', e);
                return routeId;
            }
        }


        /**
         * function to find the duplicate of the shared route record
         * @param {string} sharedRoute 
         * @returns {string}
         */
        function isDupicateSharedRoute(sharedRoute) {
            let sharedRouteId = ''
            try {
                let customrecord_jj_shared_route_codeSearchObj = search.create({
                    type: "customrecord_jj_shared_route_code",
                    filters:
                        [
                            ["name", "is", sharedRoute]
                        ],
                    columns:
                        [
                            search.createColumn({ name: "internalid", label: "Internal Id" })
                        ]
                });
                customrecord_jj_shared_route_codeSearchObj.run().each(function (result) {
                    sharedRouteId = result.getValue({ name: "internalid", label: "Internal Id" });
                });
                return sharedRouteId;
            } catch (e) {
                log.error('error@isDupicateSharedRoute', e);
                return sharedRouteId;
            }
        }
        /**
         * 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 recObj = scriptContext.currentRecord;
                if (recObj.type == 'customrecord_jj_zipcode' && scriptContext.fieldId == 'custrecord_jj_zip_code') {
                    let zipCode = recObj.getValue({ fieldId: 'custrecord_jj_zip_code' })
                    let zipCodeId = isDupicateZipCode(zipCode);
                    console.log('zipCodeId', zipCodeId);
                    if ((recObj.id && zipCodeId && zipCodeId != recObj.id) || (!recObj.id && zipCodeId)) {
                        recObj.setValue({ fieldId: 'custrecord_jj_zip_code', value: '', ignoreFieldChange: true, })
                        alert('The Zip Code already exists!');
                    }
                }
                if (recObj.type == 'customrecord_jj_routes' && scriptContext.fieldId == 'name') {
                    let route = recObj.getValue({ fieldId: 'name' })
                    let routeId = isDupicateRoute(route);
                    if ((recObj.id && routeId && routeId != recObj.id) || (!recObj.id && routeId)) {
                        recObj.setValue({ fieldId: 'name', value: '', ignoreFieldChange: true, })
                        alert('The Route already exists!');
                    }
                }
                if (recObj.type == 'customrecord_jj_shared_route_code' && scriptContext.fieldId == 'name') {
                    let sharedRoute = recObj.getValue({ fieldId: 'name' })
                    let sharedRouteId = isDupicateSharedRoute(sharedRoute);
                    if ((recObj.id && sharedRouteId && sharedRouteId != recObj.id) || (!recObj.id && sharedRouteId)) {
                        recObj.setValue({ fieldId: 'name', value: '', ignoreFieldChange: true, })
                        alert('The Shared Route already exists!');
                    }
                }
            } catch (e) {
                console.log('error@fieldChanged', e);
            }
        }


        return {
            fieldChanged: fieldChanged,  
        };


    });


Leave a comment

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