How to calculate the sum of the value in MRVS (multi row variable set)

Si Min
Giga Expert

Hi,

Coming across using the MRVS and wish to calculate the total amount for the number of books as shown in the pic.

Appreciate if anyone can enlighten me. I did do a checkup from this post but can't really get the idea. find_real_file.png

1 ACCEPTED SOLUTION

Hi Si Min,

 

The Client Script used in a widget is different than an on submit client script for a record / record producer / catalog item. It needs to use $scope to get access to g_form. However client scripts on Catalog Item, Record Producer and Ticket record have access to the GlideForm (g_form) client side API. 

Try the following for your onSubmit client script:

function onSubmit() {
	
	var totalEstimatedAmount = parseFloat(g_form.getValue('total_estimated_amount_sgd'));
	var jsonStr = g_form.getValue("book_details");
	var objList = JSON.parse(jsonStr);
	var calculatedAmount = 0;
	for (var i = 0; i < objList.length; i++) {
		
		calculatedAmount += parseFloat(objList[i].estimated_price_sgd);
		
	}
	calculatedAmount = calculatedAmount.toFixed(2);
	
	if (calculatedAmount != totalEstimatedAmount) {
		g_form.addErrorMessage('Total estimated amount does not match with entered Book Details info. Please click the Calculate Total Estimated Price again before submission.');
		return false;
	}
}

Hope this helps!

Cheers,

Manish

View solution in original post

20 REPLIES 20

Hi Manish,

Isn't that onSubmit is not apply for MRVS?

I try with this code but when I try to save my catalog item prompted an error mentioning something to do with the onSubmit script.

function onSubmit() {
	
	var reCal = g_form.getValue('total_estimated_amount_sgd');
	
	calculateTotal = function() {
		try {
			var totalEstimatedPriceSGD = 'total_estimated_amount_sgd';
			//Replace mrvs with your variable set name
			var jsonStr = $scope.page.g_form.getValue("book_details");
			var objList = JSON.parse(jsonStr);
			var result = 0;
			for (var i = 0; i < objList.length; i++) {
				//Replace variable_name with your variable's name
				result += parseFloat(objList[i].estimated_price_sgd);
				
			}
			If (result!= reCal) {
				$scope.page.g_form.addErrorMessage('Total estimated amount is not matches with Book Details info. Please click the Calculate Total Estimated Price again.');
				}
				
			} catch (e) {
				console.log("Error in the UI Macro Client Script");
			}
		}
	}

Thanks.

Hi Si Min,

 

The Client Script used in a widget is different than an on submit client script for a record / record producer / catalog item. It needs to use $scope to get access to g_form. However client scripts on Catalog Item, Record Producer and Ticket record have access to the GlideForm (g_form) client side API. 

Try the following for your onSubmit client script:

function onSubmit() {
	
	var totalEstimatedAmount = parseFloat(g_form.getValue('total_estimated_amount_sgd'));
	var jsonStr = g_form.getValue("book_details");
	var objList = JSON.parse(jsonStr);
	var calculatedAmount = 0;
	for (var i = 0; i < objList.length; i++) {
		
		calculatedAmount += parseFloat(objList[i].estimated_price_sgd);
		
	}
	calculatedAmount = calculatedAmount.toFixed(2);
	
	if (calculatedAmount != totalEstimatedAmount) {
		g_form.addErrorMessage('Total estimated amount does not match with entered Book Details info. Please click the Calculate Total Estimated Price again before submission.');
		return false;
	}
}

Hope this helps!

Cheers,

Manish

Hi Manish,


Thanks for your help.
Really appreciate.

Do you come across on how to display the MRVS in the approval screen and hide the add & remove button as well as set the whole MRVS as read-only in catalog task?


Thanks.

Hi Si Min,

I am not sure about displaying the MRVS in the approval screen. But you can create a catalog UI Policy on that Catalog Item to make the MRVS read only, and you can check only "Applies to Catalog Task".

Thanks,

Manish

Hi Manish,

I'm actually looking more in the Service Portal as shown here;

find_real_file.pngfind_real_file.png

The side panel and approval screen not able to display the MRVS table.

Thanks.