- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-30-2022 10:22 PM
Hello Community,
I want to populate a field called total sum on a record producer form with a total sum of the fields inside an MRVS.
I was able to achieve this using an onSubmit catalog client script, but it only populates the data when user submits the form using submit button.
Is there any way that when user clicks on ADD button on MRVS then it populates the field outside MRVS.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2022 06:04 AM
hello
yes its possible .Follow the below steps to do it
1)Create simple widget like below and use the below code in client controller of the widget
In the if loop replace testing with your MVRS internal name and count with your variable back end name where you want to store the count
sum = parseInt(sum)+parseInt(rows[i].your_field_name_to be_summed)
in the above line just replace your_field_name_to be_summed with your field name where your count values to be summed are stored
api.controller=function($scope,$rootScope) {
/* widget controller */
var c = this;
$rootScope.$on("field.change", function(evt, parms) {
var g_form = $scope.page.g_form;
if(parms.field.name=="testing") // replace testing with the your MVRS internal name
{
var rows = JSON.parse(g_form.getValue('testing')); // replace testing with the your MVRS internal name
var sum=0;
for(var i=0; i<rows.length; i++)
{
sum = parseInt(sum)+parseInt(rows[i].your_field_name_to be_summed) // replace your_field_name_to be_summed with your field name where your numbers to be added are stored
}
g_form.setValue('count',parseInt(sum)); // replace count with the variable back end name where you want to store the count of the MVRS rows
}
});
};
2)Then go to your catalog item and create. variable type called "custom" and tag your widget like below in widget field
Then try adding the rows and giving the number in the field and see if its working
Hope this helps
please mark my answer correct if this helps you
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2022 05:35 AM
Hi Suryansh,
I don't think it is possible. Try onsubmit variable set catalog client script but not able to populates the field outside MVRS. You have to use OnSubmit client script like below code
var mrvsRows = g_form.getValue("mrvs_name");
//The above will return a string in the form of array and objects. Now you will have to parse it
var oMrvs = JSON.parse(mrvsRows);
var sum = 0;
for(var i in oMrvs) {
sum += oMrvs[i]["cost_field_name"]
}
g_form.setValue("total_cost_field_name", sum);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2022 06:04 AM
hello
yes its possible .Follow the below steps to do it
1)Create simple widget like below and use the below code in client controller of the widget
In the if loop replace testing with your MVRS internal name and count with your variable back end name where you want to store the count
sum = parseInt(sum)+parseInt(rows[i].your_field_name_to be_summed)
in the above line just replace your_field_name_to be_summed with your field name where your count values to be summed are stored
api.controller=function($scope,$rootScope) {
/* widget controller */
var c = this;
$rootScope.$on("field.change", function(evt, parms) {
var g_form = $scope.page.g_form;
if(parms.field.name=="testing") // replace testing with the your MVRS internal name
{
var rows = JSON.parse(g_form.getValue('testing')); // replace testing with the your MVRS internal name
var sum=0;
for(var i=0; i<rows.length; i++)
{
sum = parseInt(sum)+parseInt(rows[i].your_field_name_to be_summed) // replace your_field_name_to be_summed with your field name where your numbers to be added are stored
}
g_form.setValue('count',parseInt(sum)); // replace count with the variable back end name where you want to store the count of the MVRS rows
}
});
};
2)Then go to your catalog item and create. variable type called "custom" and tag your widget like below in widget field
Then try adding the rows and giving the number in the field and see if its working
Hope this helps
please mark my answer correct if this helps you
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2022 12:09 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2022 12:24 PM
it worked for me in my instance .Lets try to debug in your instance
with your code place the below alerts after this line
var rows = JSON.parse(g_form.getValue('testing')); // replace testing with the your MVRS internal name
alert('JSON'+rows);
alert('Length'+rows.length);
api.controller=function($scope,$rootScope) {
/* widget controller */
var c = this;
$rootScope.$on("field.change", function(evt, parms) {
var g_form = $scope.page.g_form;
if(parms.field.name=="testing") // replace testing with the your MVRS internal name
{
var rows = JSON.parse(g_form.getValue('testing')); // replace testing with the your MVRS internal name
alert('JSON'+rows);
alert('Length'+rows.length);
var sum=0;
for(var i=0; i<rows.length; i++)
{
sum = parseInt(sum)+parseInt(rows[i].your_field_name_to be_summed) // replace your_field_name_to be_summed with your field name where your numbers to be added are stored
}
alert(sum);
g_form.setValue('count',parseInt(sum)); // replace count with the variable back end name where you want to store the count of the MVRS rows
}
});
};