Some PDIs are currently unavailable, and PDI actions are paused. View the latest updates here. Read More

Don't show Check box variables with value false in email notification

RudhraKAM
Tera Guru

We have a notification on sysapproval ,when a request is created we will be sending all the variables on catalog item but we have couple of items where we have 50 checkboxes , If user select only 1 check box  in the notification for approval all other 50 fields are displayed , is there a way to show only the selected checkbox instead of showing all check box ?

 

below is the mail script 

 

var classtype = current.sysapproval.sys_class_name;
if (classtype == 'sc_req_item') {
	
	var gr = new GlideRecord('sc_req_item');
	if (gr.get('sys_id', current.sysapproval)) {
		template.print("<b>Title</b>: " + gr.short_description + "<br />");
		template.print("<b>Requested for</b>: " + gr.request.requested_for.getDisplayValue() + "<br />");
		
		template.print("<b>Options:</b><br />");
		
		var varown = new GlideRecord('sc_item_option_mtom');
		varown.addQuery("request_item", gr.sys_id.toString());
		varown.query();
		while (varown.next()){
			var visible = varown.sc_item_option.item_option_new.visible_summary;
			var question = GlideappQuestion.getQuestion(varown.sc_item_option.item_option_new);
			question.setValue(varown.sc_item_option.value);
			if (question.getLabel() != "" && question.getDisplayValue() != "" && visible == true){
				template.space(4);
				template.print('     ' +  question.getLabel() + " = " + question.getDisplayValue() + "\n");
			}
		}
		
		
	}
} else {
	template.print("<p></p>Requested items:\n");
	
			var gr = new GlideRecord("sc_req_item");
		gr.addQuery("request", current.sysapproval.sys_id);
		gr.query();
		while(gr.next()) {
			template.print("<b>Title</b>: " + gr.short_description + "<br />");
			template.print("<b>Requested for</b>: " + gr.request.requested_for.getDisplayValue() + "<br />");
			
			template.print("<b>Options:</b><br />");
			
			var varown = new GlideRecord('sc_item_option_mtom');
			varown.addQuery("request_item", gr.sys_id.toString());
			varown.query();
			while (varown.next()){
				var visible = varown.sc_item_option.item_option_new.visible_summary;
				var question = GlideappQuestion.getQuestion(varown.sc_item_option.item_option_new);
				question.setValue(varown.sc_item_option.value);
				if (question.getLabel() != "" && question.getDisplayValue() != "" && visible == true){
					template.space(4);
					template.print('     ' +  question.getLabel() + " = " + question.getDisplayValue() + "\n");
				}
			}
			
		}
	}

 

8 REPLIES 8

pratyusha11
Tera Contributor
var templateId = 'PASTE_VERSION1_TEMPLATE_SYS_ID_HERE';
var gr = new GlideRecord('std_change_record_producer');
gr.get(templateId);

gs.info('sys_created_on: ' + gr.getValue('sys_created_on'));

var gaver = new GlideAggregate('std_change_producer_version');
gaver.addQuery('std_change_producer', templateId);
gaver.addQuery('std_change_producer.active', true);
gaver.addAggregate('MAX', 'sys_created_on');
gaver.query();

if (gaver.next()) {
    gs.info('Aggregate MAX date: ' + gaver.getAggregate('MAX', 'sys_created_on'));
} else {
    gs.info('No version records found - will use sys_created_on as fallback');
}

pratyusha11
Tera Contributor
var templateId = 'PASTE_VERSION1_TEMPLATE_SYS_ID_HERE';
var TARGET_DAYS = 152;

var gaver = new GlideAggregate('std_change_producer_version');
gaver.addQuery('std_change_producer', templateId);
gaver.addQuery('std_change_producer.active', true);
gaver.addAggregate('MAX', 'sys_created_on');
gaver.query();

var lastVersionDate;
if (gaver.next()) {
    lastVersionDate = gaver.getAggregate('MAX', 'sys_created_on');
}

if (!lastVersionDate || lastVersionDate === '')
    lastVersionDate = new GlideRecord('std_change_record_producer').getValue('sys_created_on');

gs.info('lastVersionDate: ' + lastVersionDate);

var gdtLastVersion = new GlideDateTime(lastVersionDate);
var gdtThreshold = new GlideDateTime(gs.beginningOfToday());
gdtThreshold.addDaysUTC(-TARGET_DAYS);

var lastVersionDateOnly = gdtLastVersion.getLocalDate().getValue();
var thresholdDateOnly = gdtThreshold.getLocalDate().getValue();

gs.info('lastVersionDateOnly: ' + lastVersionDateOnly);
gs.info('thresholdDateOnly: ' + thresholdDateOnly);
gs.info('Banner should show: ' + (lastVersionDateOnly <= thresholdDateOnly));
This will confirm whether the logic itself is correct independently of the Business Rule. S

pratyusha11
Tera Contributor
var templateId = 'PASTE_VERSION1_TEMPLATE_SYS_ID_HERE';

// Replicate exactly what the Scheduled Job does
var gaver = new GlideAggregate('std_change_producer_version');
gaver.addQuery('std_change_producer', templateId);
gaver.addAggregate('MAX', 'sys_created_on');
gaver.query();

if (gaver.next()) {
    var createdOn = gaver.getAggregate('MAX', 'sys_created_on');
    gs.info('MAX sys_created_on from version table: ' + createdOn);
} else {
    gs.info('NO records found in std_change_producer_version for this template');
}

// Also check the template's own sys_created_on
var grTemplate = new GlideRecord('std_change_record_producer');
grTemplate.get(templateId);
gs.info('Template sys_created_on: ' + grTemplate.getValue('sys_created_on'));
gs.info('Template version: ' + grTemplate.getValue('version'));

// Check threshold
var TARGET_DAYS = 151;
var gdtThreshold = new GlideDateTime(gs.beginningOfToday());
gdtThreshold.addDaysUTC(-TARGET_DAYS);
gs.info('Threshold date: ' + gdtThreshold.getLocalDate().getValue());

pratyusha11
Tera Contributor
(function executeRule(current, previous) {

    var TARGET_DAYS = 151;

    // For Version 1 templates std_change_producer is null, fallback to own sys_id
    var templateId = current.getValue('std_change_producer') || current.getUniqueValue();

    g_scratchpad.kbUrl = gs.getProperty('wf.std_chg.inactivity.kb_url');

    var gaver = new GlideAggregate('std_change_producer_version');
    gaver.addQuery('std_change_producer', templateId);
    gaver.addAggregate('MAX', 'sys_created_on');
    gaver.query();

    if (gaver.next()) {
        var lastVersionDate = gaver.getAggregate('MAX', 'sys_created_on');
    }

    // Fallback for Version 1 templates with no version history
    if (!lastVersionDate || lastVersionDate === '')
        lastVersionDate = current.getValue('sys_created_on');

    if (!lastVersionDate) return;

    var gdtLastVersion = new GlideDateTime(lastVersionDate);
    var gdtThreshold = new GlideDateTime(gs.beginningOfToday());
    gdtThreshold.addDaysUTC(-TARGET_DAYS);

    // Compare date only, ignore time component to avoid boundary condition mismatch
    var lastVersionDateOnly = gdtLastVersion.getLocalDate().getValue();
    var thresholdDateOnly = gdtThreshold.getLocalDate().getValue();

    if (lastVersionDateOnly <= thresholdDateOnly) {

        var gdtDeactivate = new GlideDateTime(lastVersionDate);
        gdtDeactivate.addDaysUTC(183);

        var gdtToday = new GlideDateTime(gs.beginningOfToday());
        if (gdtDeactivate.getValue() <= gdtToday.getValue()) {
            gdtDeactivate = new GlideDateTime(gs.beginningOfToday());
            gdtDeactivate.addDaysUTC(30);
        }

        var monthNames = ['January', 'February', 'March', 'April', 'May', 'June',
            'July', 'August', 'September', 'October', 'November', 'December'
        ];

        var dtStr = gdtDeactivate.getValue();
        var dateParts = dtStr.split(' ')[0].split('-');
        var year = parseInt(dateParts[0], 10);
        var month = parseInt(dateParts[1], 10) - 1;
        var day = parseInt(dateParts[2], 10);

        g_scratchpad.showInactivityBanner = true;
        g_scratchpad.deactivationDate = monthNames[month] + ' ' + day + ', ' + year;

    } else {
        g_scratchpad.showInactivityBanner = false;
        g_scratchpad.deactivationDate = '';
    }

})(current, previous);