/**
* @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,
};
});