Copy RITM in Catalog Item View

ceraulo
Mega Guru

Hello!

I have a requirement to add a clone/copy an existing RITM record functionality in the Catalog Item View. The requirement is to add a Copy RITM checkbox. When this is selected, a dropdown variable will show all of the RITM records for the item. Selecting a record will populate all of the variables from the old RITM. Has this been done before? 

Please help!

Thank you.

 

1 ACCEPTED SOLUTION

@ceraulo 

Yes, its poosible.

function getRITMdata(response) {
    var answer = response.responseXML.documentElement.getAttribute("answer");
    alert(answer);
    var SkipFieldValue = '|requested_by|on_behalf_of'; //here map your variable names which you dont want to copy
    var jData = JSON.parse(answer);
    for (var key in jData) {
        if (SkipFieldValue.indexOf('|' + key + '|') == -1) {
            g_form.setValue(key, jData[key], jData['dv_' + key]);
        }
    }
}

Thanks
Murthy

Thanks,
Murthy

View solution in original post

16 REPLIES 16

@ceraulo 

Yes, its poosible.

function getRITMdata(response) {
    var answer = response.responseXML.documentElement.getAttribute("answer");
    alert(answer);
    var SkipFieldValue = '|requested_by|on_behalf_of'; //here map your variable names which you dont want to copy
    var jData = JSON.parse(answer);
    for (var key in jData) {
        if (SkipFieldValue.indexOf('|' + key + '|') == -1) {
            g_form.setValue(key, jData[key], jData['dv_' + key]);
        }
    }
}

Thanks
Murthy

Thanks,
Murthy

This works! 

Thank you so much.

I have these same requirements , using this same script on an onChange catalog script, with the variable  name ritm as the refence for the ritm to look up, and having no luck,

 

Can you take a look to see if I'm missing something?

 

Any help is greatly apprciated.

 

Thanks!

 

 

Hi @ColinAngstadt1 

Please share your script. I can help you out.

Thanks,
Murthy

Thanks!

function onChange(control, oldValue, newValue, isLoading) {

    var ritm = g_form.getValue("ritm");

    var ajax = new GlideAjax('Newglidingabc');
    ajax.addParam('sysparm_name', 'getRITMDetails');
    ajax.addParam('sysparm_ritm', ritm);
    ajax.getXML(getRITMdata);
}

function getRITMdata(response) {
    var answer = response.responseXML.documentElement.getAttribute("answer");
    //alert(answer);
    var jData = JSON.parse(answer);

    for (var key in jData) {
        g_form.setValue(key, jData[key], jData['dv_' + key]);
    }
}
function getdata() {
    var ritm_number = this.getParameter('sysparm_ritm');
    var set = new GlideappVariablePoolQuestionSet();
    set.setRequestID(ritm_number);
    set.load();
    var vs = set.getFlatQuestions();
    var object = {};
    for (var i = 0; i < vs.size(); i++) {
        if (vs.get(i).getLabel() != '' && vs.get(i).getValue() != '') {
            object[vs.get(i).getName()] = vs.get(i).getValue();
            object['dv_' + vs.get(i).getName()] = vs.get(i).getDisplayValue();
        }
    }
    var data = JSON.stringify(object);
    return data;
}