I want to populate asset in a assigned variable
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-19-2025 10:31 AM
My requirement is: X (reference) field calling below scriptinclude via advance reference qualifier. it will fetch the hardware assets related to current logged in users assignment group. we use this X field in multiple catalog items.and I have created system property, kept two sysids of catalog items in it. I need to populate the asset in X field onload for these two catalog items :- we have conditions that asset status is Instock ,substate is Available , asset function is New, Depreciation date should be old.
systemproperty has two sysids(items sysid)
for 1st sysid(item):we have "primary" variable's(reference to hardware) available in request item {1st sysid(item)}; we need to match "primary" variable manufacture and model.type(refers to model)
for 2nd sysid(item): we have pc , class variables which is select box type; pc has choices which is showing hardware assets->configuration item->operating system,; class variable which shows type of model.
for the rest of items it should follow the condition as status instock and substate as available.
script include
testGetassigned: function() {
var cat_item = this.getParameter('sysparm_cat_sys_id');
var ritmSysid = this.getParameter('sysparm_ritm_sys_id');
gs.info('Assigned to user groups');
gs.info("Catalog item: " + cat_item);
gs.info("RITM sys_id: " + ritmSysid);
try {
gs.info("Current user: " + gs.getUserID());
var userGroups = [];
var groupAgg = new GlideAggregate('sys_user_grmember');
groupAgg.addQuery('user', gs.getUserID()); // Filter for current user
groupAgg.groupBy('group'); // Group by group ID to avoid duplicates
groupAgg.query();
while (groupAgg.next()) {
userGroups.push(groupAgg.getValue('group')); // Collect group sys_ids
}
if (userGroups.length > 0) {
gs.info("User groups: " + userGroups.join(', '));
var hardwareIds = [];
gs.info('Applying query based on catalog item: ' + cat_item);
try {
var hardwareGR = new GlideRecord('cmdb_ci_computer');
var itemsProperty = gs.getProperty("propertyName").split(",");
var pcrefresh=itemsProperty[0];
var newhire= itemsProperty[1];
if (itemsProperty.indexOf(cat_item) > -1) {
var ritmGR = new GlideRecord('sc_req_item');
if (ritmGR.get(ritmSysid)) {
if (cat_item ==pcrefresh') {
// Query Primary Machine's Manufacturer and Model Type
var primaryMachine = ritmGR.getValue('primary_machine'); // Reference to hardware asset
var assetGR = new GlideRecord('alm_hardware');
if (primaryMachine && assetGR.get(primaryMachine)) {
var modelType = assetGR.getValue('model_id.type');
var manufacture = assetGR.getValue('manufacturer');
hardwareGR.addQuery('model_id.type', modelType);
hardwareGR.addQuery('manufacturer', manufacture);
}
} else if (cat_item ==newhire) {
// Query PC Type (CI's Operating System) and PC Class (Model Type)
var pcType = ritmGR.getValue('pc_type'); // Reference to configuration item
var pcClass = ritmGR.getValue('pc_class');
hardwareGR.addQuery('os', pcType);
hardwareGR.addQuery('model_id.type', pcClass);
}
}
// Common
hardwareGR.addQuery('asset.stockroom.assignment_group', 'IN', userGroups);
hardwareGR.addQuery('asset.install_status', '6');
hardwareGR.addQuery('asset.substatus', 'available');
hardwareGR.addQuery('asset.asset_function', 'new');
hardwareGR.addQuery('asset.depreciation_date', 'ISNOTEMPTY');
hardwareGR.orderBy('depreciation_date');
hardwareGR.setLimit(1);
} else {
// Default query for other catalog items
gs.info('Applying default query for catalog item: ' + cat_item);
hardwareGR.addEncodedQuery('install_status=6^substatus=available');
}
hardwareGR.query();
gs.info("Query executed. Records found: " + hardwareGR.getRowCount());
while (hardwareGR.next()) {
gs.info("Checking sys_id: " + hardwareGR.getUniqueValue());
hardwareIds.push(hardwareGR.getUniqueValue());
}
gs.info("Final hardwareIDs: " + hardwareIds.join(','));
if (hardwareIds.length > 0) {
return hardwareIds.join(',');
}
} catch (queryErr) {
gs.error('Error querying cmdb_ci_computer: ' + queryErr.message);
}
}
} catch (outerErr) {
gs.error('Error retrieving user groups: ' + outerErr.message);
}
return 'sys_idINEMPTY'; // Return an empty value if no assets are found
catalg client script:
function onLoad() {
alert('On load catalog Task');
alert(g_form.getParameter('sysparm_id'));
var ga = new GlideAjax('scriptincludeName');
ga.addParam('sysparm_name', 'testGetassigned');
ga.addParam('sysparm_cat_sys_id', g_form.getParameter('sysparm_id'));
ga.addParam('sysparm_ritm_sys_id', g_form.getValue("request_item"));
ga.getXML(function(response) {
//alert(response);
var assetSysIds = response.responseXML.documentElement.getAttribute("answer");
alert(assetSysIds);
if (assetSysIds) {
g_form.setValue('X', assetSysIds); // Set the 'assigned_asset' reference field
} else {
g_form.setValue('X', ''); // Clear the reference field
}
});
}
}