Code assistance

dvelloriy
Kilo Sage

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

 

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++) {
    numberArray.push(baseNumber + i);
}

 

gs.info('Generated numbers: ' + numberArray.join(', '));

 

2 REPLIES 2

Gangadhar Ravi
Giga Sage
Giga Sage

@dvelloriy  

 

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.

Bert_c1
Kilo Patron

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;
 }