How to copy attachments from defect (OOB UI Action)

sinu2
Tera Expert

Hi ,

 

I need to Modify out of the box UI action (create_story). Need to copy attachments from demand to story while creating story from demand. Below is the existing code.

 

function openFormDialog(){
	var sysId;
	if (typeof rowSysId == 'undefined')
		sysId = gel('sys_uniqueValue').value;
	else
		sysId = rowSysId;
	var gModalForm = new GlideModalForm(getMessage('Create Story'), 'rm_story');
	gModalForm.setPreference('sysparm_view',  'scrum');
	gModalForm.setPreference('sysparm_query', 'short_description=' + g_form.getValue('short_description') +
	'^description=' + g_form.getValue('description') +
	'^assigned_to=' + g_form.getValue('assigned_to') +
	'^cmdb_ci=' + g_form.getValue("cmdb_ci") +
	'^classification=Defect' +
	'^type=Development' +
	'^defect=' + sysId);
	gModalForm.render();
	gModalForm.setCompletionCallback(function(actionVerb, storySysId){
		var ga = new GlideAjax('AgileAjaxProcessor');
		ga.addParam('sysparm_name', 'updateStoryDefect');
 		ga.addParam('sysparm_defect_sys_id', sysId);
 		ga.addParam('sysparm_story_sys_id', storySysId);
		ga.getXML(function() {
			if (typeof GlideList2 !== 'undefined' && GlideList2.get("rm_defect.rm_story.defect")) {
				GlideList2.get("rm_defect.rm_story.defect").refresh();
			}
		});
	});
}

 

1 ACCEPTED SOLUTION

Ops sorry..we have to write that logic in script include..for the same function..also put some logs for debugging purpose ..

 

So in function copyAtt() put alert for parameters then-> use GlideAjax and in script include put some logs there and let me know where is the exact issue

View solution in original post

10 REPLIES 10

@sinu2 

function openFormDialog() {
    var sysId;
    if (typeof rowSysId == 'undefined')
        sysId = gel('sys_uniqueValue').value;
    else
        sysId = rowSysId;
    var gModalForm = new GlideModalForm(getMessage('Create Story'), 'rm_story');
    gModalForm.setPreference('sysparm_view', 'scrum');
    gModalForm.setPreference('sysparm_query', 'short_description=' + g_form.getValue('short_description') +
        '^description=' + g_form.getValue('description') +
        '^assigned_to=' + g_form.getValue('assigned_to') +
        '^cmdb_ci=' + g_form.getValue("cmdb_ci") +
        '^classification=Defect' +
        '^type=Development' +
        '^defect=' + sysId);
    gModalForm.render();
    gModalForm.setCompletionCallback(function(actionVerb, storySysId) {
        var ga = new GlideAjax('AgileAjaxProcessor');
        ga.addParam('sysparm_name', 'updateStoryDefect');
        ga.addParam('sysparm_defect_sys_id', sysId);
        ga.addParam('sysparm_story_sys_id', storySysId);
        ga.getXML(function() {
            if (typeof GlideList2 !== 'undefined' && GlideList2.get("rm_defect.rm_story.defect")) {
                GlideList2.get("rm_defect.rm_story.defect").refresh();
                copyAtt(sysId, storySysId);
            }
        });
    });


}

function copyAtt(sysId, storySysId) {


    var grStory = new GlideRecord('rm_story');
    if (grStory.get(storySysId))
    {
        var grAtt = new GlideRecord('sys_attachment');
        grAtt.addQuery('table_sys_id', sysId);
        grAtt.addQuery('table_name', 'rm_defect');
        grAtt.query();
        while (grAtt.next()) {

            var attachment = new GlideSysAttachment();
            var copiedAttachments = attachment.copy('rm_defect', sysId, 'rm_story', grStory.sys_id);
        }
    }
}

Thanks a lot  @Mani A . l;et me try and get back to you

HI @Mani A 

As suggested above i have tried below code but attachments are not attaching to rm_story record from defect

 

function openFormDialog() {	
    var sysId;
    if (typeof rowSysId == 'undefined')
        sysId = gel('sys_uniqueValue').value;
    else
        sysId = rowSysId;
    var gModalForm = new GlideModalForm(getMessage('Create Story'), 'rm_story');
    gModalForm.setPreference('sysparm_view', 'scrum');
    gModalForm.setPreference('sysparm_query', 'short_description=' + g_form.getValue('short_description') +
        '^description=' + g_form.getValue('description') +
        '^assigned_to=' + g_form.getValue('assigned_to') +
        '^cmdb_ci=' + g_form.getValue("cmdb_ci") +
        '^classification=Defect' +
        '^type=Development' +
        '^defect=' + sysId);
    gModalForm.render();
    gModalForm.setCompletionCallback(function(actionVerb, storySysId) {
        var ga = new GlideAjax('AgileAjaxProcessor');
        ga.addParam('sysparm_name', 'updateStoryDefect');
        ga.addParam('sysparm_defect_sys_id', sysId);
        ga.addParam('sysparm_story_sys_id', storySysId);
        ga.getXML(function() {
            if (typeof GlideList2 !== 'undefined' && GlideList2.get("rm_defect.rm_story.defect")) {
                GlideList2.get("rm_defect.rm_story.defect").refresh();
				copyAtt(sysId, storySysId);

            }
        });
    });
}

function copyAtt(sysId, storySysId) {


    var grStory = new GlideRecord('rm_story');
    if (grStory.get(storySysId))
    {
        var grAtt = new GlideRecord('sys_attachment');
        grAtt.addQuery('table_sys_id', sysId);
        grAtt.addQuery('table_name', 'rm_defect');
        grAtt.query();
        while (grAtt.next()) {

            var attachment = new GlideSysAttachment();
            var copiedAttachments = attachment.copy('rm_defect', sysId, 'rm_story', grStory.sys_id);
        }
    }
}

Ops sorry..we have to write that logic in script include..for the same function..also put some logs for debugging purpose ..

 

So in function copyAtt() put alert for parameters then-> use GlideAjax and in script include put some logs there and let me know where is the exact issue

Put alerts in ui action not logs as it's client side logic