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
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+'';
			
        }
		
    }




})();