We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

Please check below marco script and please let me know my mistake

mani55
Tera Contributor

Hello everyone

 

i am writting some marco code for catalog form and we are facing one issue when new_installation is yes and  find my computer is false on that time we need to set provising mode to automatic but why it's going to register. i checked my end but no luck please check anyone and let me know my mistake.

else if(parms.field.name== 'new_installation'){
	if (parms.newValue == 'Yes') {
	alert('the test '+parms.newValue);
		$scope.page.g_form.setValue('regularization','false');
			if ($scope.page.g_form.getValue('find_computer')=='false')
					$scope.page.g_form.setValue('provisioning_mode','automatic');
		else
				$scope.page.g_form.setValue('provisioning_mode','manual');
		
	} else {
		$scope.page.g_form.setValue('regularization','true');
		$scope.page.g_form.setValue('provisioning_mode','register');
	}
2 REPLIES 2

Maik Skoddow
Tera Patron

Hi @mani55 

sorry, bot nothing makes sense here. You write anything about "macros" but your code is weird as it is not Jelly code and seems to be a mixture of server-side and client-side AngularJS code in a Service Portal.

And only providing a small piece of the code without the context is not helpful.

Maik

Yeah it's widget script and mixture of both server side and client side code

 

client controller

function($scope,$rootScope,$window) {
	var c = this;
	var field;
	
	
	$scope.onLoad=function(){
		
	$scope.data.cat_sys_id = $scope.page.g_form.getUniqueValue();
	$scope.data.user = $scope.page.g_form.getValue('requested_for');
	$scope.data.hostname = $scope.page.g_form.getValue('hostname');
		
	$scope.data.userDisplay = $scope.page.g_form.getDisplayValue('requested_for');
	//$scope.page.g_form.setValue('hostname',$scope.page.g_form.getValue('computers'));
	$scope.page.g_form.setValue('did_found_computer','true');
	if ($scope.page.g_form.getValue('provisioning_mode')!='register')
	$scope.page.g_form.setValue('provisioning_mode','automatic');
	
	
	c.server.update().then(function(res){debugger
		$scope.message($scope.data.found);
		
		//checking if user already has an active item
		/*if(res.hasUserActiveItem) {
			$scope.page.g_form.clearValue('hostname');
			var exisitngItemMsg ='This request cannot be processed because '+$scope.data.userDisplay+ ' already has an active ' + res.asset;
			$scope.page.g_form.showFieldMsg('hostname', exisitngItemMsg, 'error', true);
			//$scope.page.g_form.setValue('requested_for', '');
		}*/
		
				
		$rootScope.$on("field.change", function(evt, parms) {
			if (parms.field.name== 'hostname') {		
			$scope.check(parms.newValue);
			}
			else if (parms.field.name=='computers'){
					//$scope.page.g_form.setValue('hostname',$scope.page.g_form.getValue('computers'));
				$scope.page.g_form.setValue('hostname',$scope.page.g_form.getDisplayValue('computers'));
				}
			
			else if(parms.field.name== 'new_installation'){
	if (parms.newValue == 'Yes') {
	alert('the test '+parms.newValue);
		$scope.page.g_form.setValue('regularization','false');
			if ($scope.page.g_form.getValue('find_computer')=='false')
					$scope.page.g_form.setValue('provisioning_mode','automatic');
		else
				$scope.page.g_form.setValue('provisioning_mode','manual');
		
	} else {
		$scope.page.g_form.setValue('regularization','true');
		$scope.page.g_form.setValue('provisioning_mode','register');
	}
				
			}	
			else if(parms.field.name == 'find_computer'){

	if (parms.newValue == 'false') {
		$scope.page.g_form.setValue('did_found_computer','true');
		if ($scope.page.g_form.getValue('provisioning_mode')!='register')
		$scope.page.g_form.setValue('provisioning_mode','automatic');
	} else {
		$scope.page.g_form.setValue('did_found_computer','false');
		if ($scope.page.g_form.getValue('provisioning_mode')!='register')
		$scope.page.g_form.setValue('provisioning_mode','manual');
	}
		} else if(parms.field.name == 'requested_for') {
				$scope.check(parms.newValue);
		}
			else if(parms.field.name =='i_accept_and_agree') {
				var check_box = $scope.page.g_form.getValue('i_accept_and_agree');
				if(check_box == 'false') {
					$scope.page.g_form.setMandatory('i_accept_and_agree','true');
					$scope.page.g_form.addErrorMessage('Please accept Terms of Agreement to proceed');
					
				}
				else if(check_box == 'true') {
					$scope.page.g_form.setMandatory('i_accept_and_agree','false');
				}
			}
				
		});
			/*var check_box = $scope.page.g_form.getValue('i_accept_and_agree');
				if(check_box == 'false') {
					$scope.page.g_form.addErrorMessage('Please accept Terms of Agreement to proceed');
				}	*/						 
										 
	  })
		
}
	
	
	$scope.check=function(newvalue){
	c.server.get({
		hostname: $scope.page.g_form.getValue('hostname'),
		cat_sys_id : $scope.data.cat_sys_id,
		user : $scope.page.g_form.getValue('requested_for')
	}).then(function(response){
		$scope.data.found = response.data.found;
		$scope.data.type = response.data.type;
		$scope.data.query = response.data.query;
		$scope.data.ciquery = response.data.ciquery;
		$scope.data.service = response.data.service;
		$scope.data.hostname = $scope.page.g_form.getValue('hostname');
		$scope.data.curHost = response.data.curHost;
		$scope.data.base_url = response.data.base_url;
		$scope.data.hasUserActiveItem = response.data.hasUserActiveItem;
		$scope.data.asset = response.data.asset;
		$scope.data.userDisplay = $scope.page.g_form.getDisplayValue('requested_for');
		$scope.message($scope.data.found, $scope.data.type);
		var hostname = $scope.data.hostname;
		
		if($scope.data.hasUserActiveItem) {
			$scope.page.g_form.setValue('hostname','');
			$scope.page.g_form.setValue('computers','');
			var exisitngItemMsg = 'This request cannot be processed because user already has an active item';
			//var exisitngItemMsg = 'This request cannot be processed because the hostname '+ hostname + ' already as an active ' + $scope.data.asset;
			$scope.page.g_form.showFieldMsg('hostname', exisitngItemMsg, 'error');
		}
														 
		$window.setTimeout(function(){
			var sys_id_of_kb = gs.getProperty('cap.kb.sys_id');
			if($scope.showLink){
				//var element = $scope.page.g_form.getFormElement("bg-danger")[0];
			var element = $window.document.getElementsByClassName("bg-danger")[0];
				
			var newEl = $window.document.createElement("a");
			var link = $window.document.createTextNode("To know more about Move/Deploy Software KB0010374");
			newEl.appendChild(link);
			newEl.title = "To know more about Move/Deploy Software (KB0010374)"; 
			newEl.href = "https://"+ $scope.data.base_url +".service-now.com"+ "/kb_view.do?sys_kb_id=" + sys_id_of_kb;
			newEl.target = '_blank';
			newEl.style.color = 'blue';
			$window.console.log('new element', newEl);
			element.appendChild(newEl);
				 }
			
		}, 10);
				
	});
}
	
	
	
	$scope.message = function(bool, type)
	{
		if (bool && type) {
			var msg1 ='This request cannot be processed because '+$scope.data.userDisplay+ ' already has an active ' +$scope.data.service+ ' with hostname : '+$scope.data.hostname;
			var msg2 = $scope.data.userDisplay + " already has an active " +$scope.data.service+ " with hostname: "+$scope.data.curHost+ " if you do not want 2 services you can use Move/Deploy software. ";
			
			var message = type == 'sameHostName' ? msg1 : msg2;
			$scope.showLink = message == msg2 ? true : false;
		  $window.document.getElementById('submit').disabled = (type == 'sameHostName') ? true : false;
			$scope.page.g_form.showFieldMsg('hostname', message, 'error');
			$scope.page.g_form.setValue('asset_service_already', 'true');
			

		} else {
				$scope.page.g_form.hideFieldMsg('hostname', true);
					$scope.page.g_form.setValue('asset_service_already', 'false');
					
			}
		
	}
	
}

 

 

server side:

 

(function() {

    data.found = false;
    data.base_url = gs.getProperty('instance_name');

    var grItem = new GlideRecord('sc_cat_item');
    grItem.get(input.cat_sys_id);
    var sd = grItem.short_description.getDisplayValue();

    //var query = 'install_status!=7^install_status!=11^model=' + grItem.model + '^assigned_to=' + input.user;
    var queryproject = 'install_status!=7^install_status!=11^model.short_descriptionINSFW031,SFW034,SFW043,SFW088,SFW098,SFW099' + '^assigned_to=' + input.user;
    //data.query = query;
    if (sd == 'SFW031' || sd == 'SFW034' || sd == 'SFW043' || sd == 'SFW088' || sd == 'SFW098' || sd == 'SFW099') {
        queryAlmService(queryproject);
    } else if (sd == 'SFW053') {
        queryproject = 'install_status!=7^install_status!=11^model.short_descriptionINSFW053' + '^assigned_to=' + input.user;
        queryAlmService(queryproject);
    } else if (sd == 'SFW003') {
        queryproject = 'install_status!=7^install_status!=11^model.short_descriptionINSFW003' + '^assigned_to=' + input.user;
        queryAlmService(queryproject);
    }
	else if (sd == 'SFW091') {
        queryproject = 'install_status!=7^install_status!=11^model.short_descriptionINSFW003' + '^assigned_to=' + input.user;
        queryAlmService(queryproject);
    }else if (sd == 'SFW031' || sd == 'SFW030' || sd == 'SFW036' || sd == 'SFW106') {
        queryproject = 'install_status!=7^install_status!=11^model.short_descriptionINSFW030,SFW036,SFW106' + '^assigned_to=' + input.user;
        queryAlmService(queryproject);
    } else if (sd == 'SFW104' || sd == 'SFW105' || sd == 'SFW028' || sd == 'SFW029') {
        queryproject = 'install_status!=7^install_status!=11^model.short_descriptionINSFW104,SFW105,SFW028,SFW029' + '^assigned_to=' + input.user;
        queryAlmService(queryproject);
    } else if (sd == 'SFW130') {
        //queryproject = 'install_status!=7^install_status!=11^model.short_description=SFW130' + '^assigned_to=' + input.user;
		queryproject = 'u_itaas_asset_number.model.short_description=SFW130^u_itaas_asset_number.install_statusNOT IN11,7' + '^u_hostname=' + input.hostname;
        checkIfUserHasActiveItem(queryproject);
    }

    data.query = queryproject;

    /**
     *query u_alm_service @Param queryproject
     */
    function queryAlmService(queryproject) {
        var grService = new GlideRecord('u_alm_service');
        grService.addEncodedQuery(queryproject);
        grService.query();
        while (grService.next()) {
            var ciquery_1 = 'asset=' + grService.sys_id + '^u_hostname=' + input.hostname;
            queryCiTable(ciquery_1, 'sameHostName', grService);

            var ciquery_2 = 'asset=' + grService.sys_id + '^u_hostname!=' + input.hostname;
            queryCiTable(ciquery_2, 'diffHostName', grService);
        }
    }

    function queryCiTable(query, type, grService) {
        //var ciquery = 'asset=' + grService.sys_id + '^u_hostname!=' + input.hostname;
        var grCI = new GlideRecord('u_cmdb_ci_service_spkg');
        data.ciquery = query;
        grCI.addEncodedQuery(query);
        grCI.query();
        while (grCI.next()) {
            data.found = true;
            data.type = type;
            data.curHost = grCI.u_hostname + '';
            data.service = grService.u_number + '';
            data.userDisplay = grService.getDisplayValue('assigned_to');
            break;
        }
    }

    /*function checkIfUserHasActiveItem(queryproject) {
    	var grService = new GlideRecord('u_alm_service');
    	grService.addEncodedQuery(queryproject);
    	grService.query();
    	while (grService.next()) {
    		data.hasUserActiveItem = true;
    		data.asset = grService.u_number +'';
    	}
    }*/
    function checkIfUserHasActiveItem(queryproject) {
        var grService = new GlideRecord('u_cmdb_ci_service_spkg');
        grService.addEncodedQuery(queryproject);
        grService.query();
        while (grService.next()) {
            data.hasUserActiveItem = true;
            data.host = grService.u_hostname+'';
            data.asset = grService.u_itaas_asset_number.u_number+'';
			
        }
		
    }




})();