Help with a catalog item form

cicgordy
Tera Guru

The main form includes a reference type variable "user_submitted_software" that references to the software table "u_software".

If a user selects any software from the "user_submitted_software" variable list, it should then verify whether, on that particular software record in the "u_software" table, another checkbox field named "u_additional_justification" is set to true. If it is set to true, then another variable I created should be displayed on the form, named "additional_justification_requirements". If false, the form remains unchanged.

Please note that the "user_submitted_software" variable is empty by default on the form, and the "additional_justification_requirements" variable should be hidden by default(at moment is not). It should only become visible if the software selected in the "user_submitted_software" variable has the "u_additional_justification" checkbox set to true in the backend on the "u_software" table.

 

 

Thanks

1 ACCEPTED SOLUTION

@Anirudh Pathak Hi, I got it working by only using a catalog client script, thanks for your help anyway, here is what I did: 

 

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        g_form.setDisplay('additional_justification_requirements', false); 
        return;
    }
    g_form.getReference('user_submitted_software', callback);

    function callback(obj) {
        // Check if u_access_request is true on the referenced record
        if (obj.u_additional_justification == 'true') {
            // Show the access_request_info variable
            g_form.setDisplay('additional_justification_requirements', true);
        } else {
            // Hide the access_request_info variable
            g_form.setDisplay('additional_justification_requirements', false);
        }
    }
}

View solution in original post

15 REPLIES 15

@Anirudh Pathak I recreated it to get the generated code and still not working

 

cicgordy_0-1708614747277.png

 

Hi @cicgordy ,

It's still wrong. Please use the below code - 

 

 

var software_aditional_requirements = Class.create();
software_aditional_requirements.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    type: 'software_aditional_requirements',
	getData: function() {
		
		var id= this.getParameter('sysparm_software');
		var ans = 'no';
		var software= new GlideRecord('u_software');
		software.addQuery('sys_id',id);
		software.query();
		if(software.next()) {
			if(software.u_additional_justification== true) {
				ans = 'yes';
			}
		}
		return ans;
		
	},
});

 

 

 

 

@Anirudh Pathak updated with new script you provided and still no luck.

 

I was wondering, the u_additional_justification is a checkbox type field (true/false), could it be that the ans = yes is confusing it all?

Hi @cicgordy ,

The syntax you were using for script include was incorrect.

Can you share screenshot

cicgordy_0-1708616112934.png