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