Restrict in RITM level

Chaithu3
Tera Contributor

Hello Experts,

I have a catalog item, When i submit a request ten it should create a user record in a custom table.

the requirement is not to create a duplicate user in that custom table, So i have written a script that should throw an error message comparing the first name and the last name from table and catalog item.

Now i need help about after approval of RITM then the record insert in the custom table, So different users should not able to create RITM's for same user.

EX : i have submitted a request for a user through the catalog item and it is ready for approval, Then again my colleauge/manager trying to submit a request for the same user. Then it should get restrict saying that an request has been already raised for this user.

 

Please help ASAP.

Looping @Ankur Bawiskar @Allen Andreas @Dan H @Mark Roethof 

 

Thanks in advance

 

 

1 ACCEPTED SOLUTION

Hi,

yes in script include function add this query

So here is your final code

Script Include:

var check_for_users = Class.create();
check_for_users.prototype = Object.extendsObject(AbstractAjaxProcessor, {

	getUserDetails: function() {

		var firstName = this.getParameter('sysparm_old_first_name');
		var lastName = this.getParameter('sysparm_old_last_name');
		var catItemSysId = this.getParameter('sysparm_catItemSysId');

		var che = "";
		var oldUser = new GlideRecord('u_contractors_onboarding');
		oldUser.addQuery('u_first_name', firstName);
		oldUser.addQuery('u_last_name', lastName);
		oldUser.query();
		if (oldUser.hasNext())
			che = "exist";

		var found = this.checkExistingRITM(firstName,lastName,catItemSysId);

		if(che == 'exist' || found == 'exist'){
			return 'exist';
		}

		return '';
	},

	checkExistingRITM: function(firstName,lastName,catItemSysId) {

		var found = 'not exist';
		var ritm = new GlideRecord('sc_req_item');
		ritm.addQuery('cat_item', catItemSysId);
		ritm.addEncodedQuery('stateIN-5,1,2'); // work in progress or open or Pending
		ritm.query();
		while(ritm.next()){
			if(ritm.variables.u_first_name == firstName && ritm.variables.u_last_name == lastName){
				found = 'exist';
				break;
			}
		}
		return found;
	},

	type: 'check_for_users'
});

onSubmit:

function onSubmit() {

	if (!g_form.ajaxComplete) {
		ajaxCall();
		return false;
	}

	function ajaxCall(){

		//Type appropriate comment here, and begin script below
		var gr = new GlideAjax("check_for_users");
		gr.addParam("sysparm_name", "getUserDetails");
		gr.addParam("sysparm_old_first_name", g_form.getValue('u_first_name'));
		gr.addParam("sysparm_old_last_name", g_form.getValue('u_last_name'));
		gr.addParam("sysparm_catItemSysId", g_form.getUniqueValue());
		gr.getXML(ajaxResponse);

		function ajaxResponse(answers) {
			var answer = answers.responseXML.documentElement.getAttribute("answer");
			if (answer == 'exist') {
				g_form.addErrorMessage('The user is already available in Contractor onboarding table');
				return false;
			} else {
				g_form.ajaxComplete = true;
				g_form.submit();
			}
		}
	}
}

Please mark my response as correct and helpful to close the thread

Regards
Ankur

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

View solution in original post

16 REPLIES 16

@Chaithu 

I believe I have provided enough support, help and guidance for your question.

I could see you marked my response as helpful.

Please mark my response as correct and close the thread.

Regards
Ankur

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

@Chaithu 

I believe I have provided enough support, help and guidance for your question.

I could see you marked my response as helpful.

Please mark my response as correct and close the thread.

Regards
Ankur

 

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