Transfer case button is not working

suuriyas
Tera Contributor

HI Community,

 

Im facing an issue, in HR Workspace we have a button transfer case when i click on that no action is taking place

UI Action:

suuriyas_0-1751888721197.png

condition: current.active && gs.hasRole('sn_hr_core.case_writer') && (current.hr_service.value != hr.BULK_PARENT_CASE_SERVICE) && new hr_Utils().canRenderUIAction(current,'transfer_case');

 

workspace client script

function onClick(g_form) {
    var messages = [
        'Transfer Type', 'New HR Service', 'Transfer Case',
        'Warning: Transferring a case closes all related child cases or tasks.'
    ];
    getMessages(messages, function() {
        var sysId = g_form.getUniqueValue();
        var table = g_form.getTableName();
        var gA = new GlideAjax("sn_hr_core.hr_CaseTransferAjax");
        gA.addParam('sysparm_name', 'getTransferFields');
        gA.addParam('sysparm_sys_id', sysId);
        gA.addParam('sysparm_table_name', table);
        gA.addParam('sysparm_subject_person', g_form.getValue('subject_person'));
        gA.getXMLAnswer(openModal);

        function openModal(answer) {
            answer = JSON.parse(answer) || {};
            var fields = [];
            var oneTransferMethod = (answer.transferMethods && answer.transferMethods.length == 1) ? true : false;
            if (answer.transferMethods && answer.transferMethods.length > 1) {
                fields.push({
                    type: 'choice',
                    name: 'reasonChoice',
                    label: getMessage('Transfer Type'),
                    value: (answer.transferMethods && answer.transferMethods.length > 0) ? answer.transferMethods[0].value : '',
                    choices: answer.transferMethods,
                    mandatory: true
                });
            }

            fields.push({
                type: 'choice',
                name: 'newService',
                label: getMessage('New HR Service'),
                choices: answer.services,
                mandatory: true
            });

            var warning = getMessage('Warning: Transferring a case closes all related child cases or tasks.');
            g_modal.showFields({
                title: getMessage('Transfer Case'),
                fields: fields,
                instruction: warning,
                size: 'md'
            }).then(function(response) {

                var transferMethod = (oneTransferMethod) ? answer.transferMethods[0].value : response.updatedFields[0].value;
                var hrService = (oneTransferMethod) ? response.updatedFields[0].value : response.updatedFields[1].value;
           
                var ga = new GlideAjax("sn_hr_core.hr_CaseTransferAjax");
                ga.addParam("sysparm_name", "transferCase");
                ga.addParam("sysparm_transfer_method", transferMethod);
                ga.addParam("sysparm_hr_service", hrService);
                ga.addParam("sysparm_sys_id", sysId);
                ga.getXMLAnswer(saveForm);

                function saveForm(result) {    
                    result = JSON.parse(result);
                    if (!result.error) {
                        g_aw.openRecord(result.table, result.id);
                    } else {
                        g_modal.alert(result.error);
                    }
                                   
                }
            });
        }
    });
}
 
script include:
var hr_CaseTransferAjax = Class.create();
hr_CaseTransferAjax.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

    initialize : function(request, responseXML, gc) {
        global.AbstractAjaxProcessor.prototype.initialize.call(this, request, responseXML, gc);
    },

    handleTransferCase: function(transferMethod, hrService, sysId) {
        if (!gs.hasRole('sn_hr_core.case_writer'))
            return null;

        var hrCase = new GlideRecord('sn_hr_core_case');
        hrCase.addQuery('sys_id', sysId);
        hrCase.query();
        var result = {};
        if (hrCase.next()) {        

            var transferredToCaseId = hrCase.getValue('transferred_to');
            if (transferredToCaseId) {
                var error = gs.getMessage("Case was previously transferred. Check State, HR service and case Number for accuracy.");
                return JSON.stringify({error: error});
            }
           
            // Retrieve the case with it's proper table name
            hrCase = new GlideRecord(hrCase.getRecordClassName());
            hrCase.get(sysId);

            var newCase = sn_hr_core.hr_TransferCase.performSelectedTransfer(hrCase, transferMethod, {'selected_service': hrService});
            result = {
                id: newCase.getUniqueValue(),
                table: newCase.getRecordClassName()
            };
        }
        return result;
    },

    transferCase: function() {
        var sysId = this.getParameter('sysparm_sys_id');
        var transferMethod = this.getParameter('sysparm_transfer_method');
        var hrService = this.getParameter('sysparm_hr_service');
        return JSON.stringify(this.handleTransferCase(transferMethod, hrService, sysId));
    },
   
    _getServices: function(subjectPerson) {        
        var services = new sn_hr_core.hr_CaseCreation().getServicesForUser(subjectPerson || '', true);
        var children, result = [];
        for (var x in services) {
            if (services[x].children) {
                children = services[x].children;
                for (var i in children) {
                    result.push({value: children[i].sys_id, displayValue: children[i].display});
                }

            }
        }
       
        result = result.sort(function(a, b) {
            return a.displayValue.localeCompare(b.displayValue);
        });
       
        return result;
       
    },

    _getTransferMethods: function(table, sysId) {
        if (!gs.hasRole('sn_hr_core.case_writer'))
            return null;

        var methods = sn_hr_core.hr_TransferCase.getTransferMethods(table, sysId);
        var result = [], description;
        for (var x in methods) {
            description = sn_hr_core.hr_TransferCase.getDescription(methods[x]);
            result.push({displayValue:description, value: methods[x].type});
        }
        return result;
    },

    getTransferFields: function() {
        var table = this.getParameter("sysparm_table_name");
        var sysId = this.getParameter("sysparm_sys_id");
        var subjectPerson = this.getParameter("sysparm_subject_person");
        var result = {
            transferMethods: this._getTransferMethods(table, sysId),
            services: this._getServices(subjectPerson)
        };

        return JSON.stringify(result);
    },

    type: 'hr_CaseTransferAjax'
});
4 REPLIES 4

abirakundu23
Mega Sage

Hi @suuriyas,
In OOB this button is working correctly, do you have performed any customization on the script ?
Please mark helpful and correct answer if it's worthy for you.

Ankur Bawiskar
Tera Patron
Tera Patron

@suuriyas 

Did someone customize it?

Did you recently upgrade?

Was this working fine earlier?

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Shraddha Kadam
Mega Sage

@suuriyas,

 

  • Please verify if there are any customizations in UI Action or Script Include.
  • Additionally, try uploading an XML file of UI Action/Script Include from your PDI to the instance. 
  • Check with other COE is working fine or not.
If my response was helpful, please mark it as correct and helpful.
Thank you.

kartikchoum
Tera Contributor

I am having the exact same issue. And I can confirm we have not even customized anything about this ui action.