No longer required sometimes work sometimes not

shruti2bhosale
Tera Contributor
(function executeRule(current, previous /*null when async*/ ) {

    var ritm = current.parent;

    var approver = new GlideRecord('sysapproval_approver');
    approver.addQuery('document_id', ritm);
    approver.addQuery('state', 'approved');
    approver.query();
    while (approver.next()) {
        var user = [];
        user = approver.approver;
        gs.log('user-' + user);
    }

    var userGroup = new GlideRecord('sys_user_grmember');
    userGroup.addQuery('user', 'IN', user);
    userGroup.query();
    var groupSysIds = [];
    while (userGroup.next()) {
        var grpsysid = userGroup.getValue('group');
        gs.log('grpsysid -' + grpsysid);
        groupSysIds.push(grpsysid);
    }

    var foundGroup = false;
    for (var i = 0; i < groupSysIds.length; i++) {
        if (groupSysIds[i] == current.assignment_group) {
            foundGroup = true;
            break;
        }
    }

    if (foundGroup) {
        current.active = false;
        current.approval = 'not_required';
        current.short_description = 'Skipped due to duplicates';
        current.work_notes = "Group Approval marked as 'No Longer Required' due to a previous approval on the same record by the same user.";
    } else {

        gs.log('No group approvals to update.');

    }


wrote this script to update the state to no longer required but it works some times and sometimes not
1 REPLY 1

Chaitanya ILCR
Kilo Patron

Hi @shruti2bhosale.,

Try this

(function executeRule(current, previous /*null when async*/ ) {
    var ritm = current.parent;

    var approver = new GlideRecord('sysapproval_approver');
    approver.addQuery('document_id', ritm);
    approver.addQuery('state', 'approved');
    approver.query();
    var user = [];
    while (approver.next()) {
        user.push(approver.approver.toString());
        gs.log('user-' + approver.approver);
    }

    if (user.length > 0) {
        var userGroup = new GlideRecord('sys_user_grmember');
        userGroup.addQuery('user', 'IN', user);
        userGroup.query();
        var groupSysIds = [];
        while (userGroup.next()) {
            var grpsysid = userGroup.getValue('group');
            gs.log('grpsysid -' + grpsysid);
            groupSysIds.push(grpsysid);
        }

        var foundGroup = false;
        for (var i = 0; i < groupSysIds.length; i++) {
            if (groupSysIds[i] == current.assignment_group.toString()) {
                foundGroup = true;
                break;
            }
        }

        if (foundGroup) {
            current.active = false;
            current.approval = 'not_required';
            current.short_description = 'Skipped due to duplicates';
            current.work_notes = "Group Approval marked as 'No Longer Required' due to a previous approval on the same record by the same user.";
        } else {
            gs.log('No group approvals to update.');
        }
    } else {
        gs.log('No approved users found.');
    }
})(current, previous);

Please mark my answer as helpful/correct if it resolves your query.

Regards,
Chaitanya