Code assistance
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-15-2024 06:00 PM
Hello all,
i need some help with below code. It is working as expected and generating numbers based on count and julian date logic. However i need a logic to be inserted and the resulting generated numbers should be checked against the alm_asset table (asset tag field). If an asset tag is present with the generated number, the logic should skip that number and increment the counter. so basically i need the resulting output to just display unique distinct numbers only. Please advise
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-15-2024 06:22 PM
Please see below updated code.
var today = new Date();
var startOfYear = new Date(today.getFullYear(), 0, 1);
var diff = today - startOfYear;
var dayOfYear = Math.floor(diff / (1000 * 60 * 60 * 24)) + 1;
var julianDate = today.getFullYear().toString().slice(2) + dayOfYear.toString().padStart(3, '0');
var baseNumber = parseInt(julianDate + '0001', 10);
var count = 5;
var uniqueCount = 0; // To keep track of unique numbers
var numberArray = [];
var i = 0;
while (uniqueCount < count) {
var generatedNumber = baseNumber + i;
// Check if this number exists in the alm_asset table
var assetGR = new GlideRecord('alm_asset');
assetGR.addQuery('asset_tag', generatedNumber.toString());
assetGR.query();
if (!assetGR.hasNext()) { // If number is not found, it's unique
numberArray.push(generatedNumber);
uniqueCount++; // Add to unique count
}
i++; // Move to the next number
}
gs.info('Generated unique numbers: ' + numberArray.join(', '));
Please mark my answer correct and helpful if this works for you.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-15-2024 06:37 PM
Hi dvelloriy,
The following may work for you
var today = new Date();
var startOfYear = new Date(today.getFullYear(), 0, 1);
var diff = today - startOfYear;
var dayOfYear = Math.floor(diff / (1000 * 60 * 60 * 24)) + 1;
var julianDate = today.getFullYear().toString().slice(2) + dayOfYear.toString().padStart(3, '0');
var baseNumber = parseInt(julianDate + '0001', 10);
var count = 5;
var numberArray = [];
for (var i = 0; i < count; i++) {
if (!assetExists(baseNumber + i))
numberArray.push(baseNumber + i);
}
gs.info('Generated numbers: ' + numberArray.join(', '));
function assetExists(number) {
// checks the alm_asset table for a record where asset_tag = the number
gs.info("checking number = " + number);
var alm = new GlideRecord('alm_asset');
alm.addQuery('asset_tag', number);
alm.query();
if (alm.next())
return true;
else
return false;
}