Dynamically Change OOTB Number field Prefix

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-20-2024 06:28 AM
Hi Team , I have a requirement where we need to change the Prefix of policy number (OOTB Field) according to the type of Policy.
Like If type is * Board of Directors Policy* Number should start from *POL*.
If type is * Charter* Number should start from *CHA*.
If type is * Standard* Number should start from *GEN*.
I tried with before insert business rule & On change client script but no show. Script looks like
–----------------
OnChange Client Script
------------
function onChange(control, oldValue, newValue) {
var policyType = g_form.getValue('type');
var prefix;
if (policyType == 'Board of director policy') {
prefix = 'POL';
} else if (policyType == 'Charter') {
prefix = 'CHA';
} else if (policyType == 'STANDARD') {
prefix = 'GEN';
} else {
prefix = ''; // Handle other policy types if needed
}
if (prefix) {
var currentNumber = g_form.getValue('number');
var newNumber = prefix + currentNumber.substring(prefix.length);
g_form.setValue('number', newNumber);
}
}
–-------------------
Before insert Business Rule
-------------------------
function setNumberPrefix(current) {
var type = current.type;
var prefix;
if (type == 'Board of director policy') {
prefix = 'POL';
} else if (type == 'Charter') {
prefix = 'CHA';
} else if (type == 'STANDARD') {
prefix = 'GEN';
}
if (prefix) {
current.number = prefix + current.number.substring(prefix.length);
}
}
--------------------
Any suggestions will be appreciated !!!
I did checked the community posts but they are not clear
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-20-2024 06:43 AM
The problem is that the number gets set on creation of the new record (before it's saved to the server). The number is reserved until the record is saved.
You could try using an interceptor. The 'new record' link is clicked and in the interceptor you select the type. And based on that you set the number. How is the numbering done on this table? Does it have a default prefix, or just the number?
Please mark any helpful or correct solutions as such. That helps others find their solutions.
Mark

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-20-2024 10:22 AM
Hi Mark,
It has default prefix.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-20-2024 07:00 AM
Use below BR Choose before insert
(function executeRule(current, previous) {
var policyType = current.policy_type;
var prefix = '';
if (policyType == 'Board of Directors Policy') {
prefix = 'POL';
} else if (policyType == 'Charter') {
prefix = 'CHA';
} else if (policyType == 'Standard') {
prefix = 'GEN';
}
if (prefix) {
current.policy_number = prefix + '-' + generateUniqueNumber();
}
function generateUniqueNumber() {
var gr = new GlideRecord('policy_table');
gr.orderByDesc('sys_created_on');
gr.query();
if (gr.next()) {
var lastNumber = gr.policy_number.split('-')[1];
var nextNumber = parseInt(lastNumber, 10) + 1;
return nextNumber.toString().padStart(6, '0');
} else {
return '000001';
}
}
})(current, previous);

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-20-2024 10:23 AM
Hi Manoj,
My requirement is not for updating the existing records, but for every new record under the different type should get their prefix, instead of default *POL*