Add the total cost in multirow variable set

William Dalogdo
Kilo Contributor

How can I multiply 'Unit Price'   and  'Quantity' then display it on 'Price' Field and then  display the sum in  'total cost'.

find_real_file.png

1 ACCEPTED SOLUTION

Kartik Sethi
Tera Guru
Tera Guru

Hi @William Dalogdog 

 

You can follow the community reply by @Aldwin --> "MRVS detect when a row is removed or deleted". On the same ground, I have prepared an Update Set which you can import in your PDI and check the results.

find_real_file.png
Please find step by step solution below:

  1. Create a Widget and add the below-provided script:
    api.controller = function($scope) {
        /* widget controller */
        var c = this;
        $scope.$watch(function() {
            //Internal Name of Variable Set 'item_details'
            return $scope.page.g_form.getValue('item_details');
        }, function(value) {
            if (value) {
                var mrvsData = JSON.parse(value.replace(/'/g, ''));
                console.log(value);
                var totalCost = 0;
    
                for (var i = 0; i < mrvsData.length; i++) {
                    var mrvs = mrvsData[i];
                    totalCost += parseInt(mrvs.price);
                    alert('Calculating: ' + totalCost + ' for --> ' + mrvs.price);
                }
    
                //Set Value in the Total Cost
                alert(totalCost);
                $scope.page.g_form.setValue('total_cost', totalCost);
            }
        });
    };
  2. Create a Variable of type Custom and add the Widget created in Step 1
  3. Variable details are provided below:
    • item_details: Internal Name of the MRVS Variable Set
    • total_cost: Variable on the Catalog Item (not inside MRVS variable Set)

Please follow the above steps and import the Update set provided in the attachment.


Please mark my answer as correct if this solves your issues!

If it helped you in any way then please mark helpful!

 

Thanks and regards,

Kartik

View solution in original post

14 REPLIES 14

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

you can observer the Add button and based on that populate the value

https://community.servicenow.com/community?id=community_question&sys_id=8a612681db8d64103daa1ea66896...

OR

you can use onSubmit catalog client script on the Catalog Item

1) get the mrvs json

2) parse it

3) calculate and set the Total cost

Solution shared by me here

Calculating totals from mult-row variable set rows in to a variable on a record producer?

Regards
Ankur

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

@William Dalogdog 

Thank you for marking my response as helpful.

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards
Ankur

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

@William Dalogdog 

Did you mistakenly marked other response as correct?

The answer marked as correct has the link which I already shared first.

You can mark only 1 response as correct.

Please mark appropriate response as correct based on timely response.

Regards
Ankur

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

Kartik Sethi
Tera Guru
Tera Guru

Hi @William Dalogdog 

 

You can follow the community reply by @Aldwin --> "MRVS detect when a row is removed or deleted". On the same ground, I have prepared an Update Set which you can import in your PDI and check the results.

find_real_file.png
Please find step by step solution below:

  1. Create a Widget and add the below-provided script:
    api.controller = function($scope) {
        /* widget controller */
        var c = this;
        $scope.$watch(function() {
            //Internal Name of Variable Set 'item_details'
            return $scope.page.g_form.getValue('item_details');
        }, function(value) {
            if (value) {
                var mrvsData = JSON.parse(value.replace(/'/g, ''));
                console.log(value);
                var totalCost = 0;
    
                for (var i = 0; i < mrvsData.length; i++) {
                    var mrvs = mrvsData[i];
                    totalCost += parseInt(mrvs.price);
                    alert('Calculating: ' + totalCost + ' for --> ' + mrvs.price);
                }
    
                //Set Value in the Total Cost
                alert(totalCost);
                $scope.page.g_form.setValue('total_cost', totalCost);
            }
        });
    };
  2. Create a Variable of type Custom and add the Widget created in Step 1
  3. Variable details are provided below:
    • item_details: Internal Name of the MRVS Variable Set
    • total_cost: Variable on the Catalog Item (not inside MRVS variable Set)

Please follow the above steps and import the Update set provided in the attachment.


Please mark my answer as correct if this solves your issues!

If it helped you in any way then please mark helpful!

 

Thanks and regards,

Kartik

Hi @William Dalogdog 

Did you get a chance to check the reply provided by me?

If yes and if my answer helped you out then please mark my answer as correct/helpful, so that other community members facing similar issues might get help.

Thanks and regards,

Kartik