Activating Trigger only on condition - Forum - Rollbase - Progress Community

Activating Trigger only on condition

 Forum

Activating Trigger only on condition

This question is not answered

Hello RB Gurus

I would like to know is there a way to activate the trigger / Mail only when particular field values are added or modified.

I have around 70 fields in one page, so I would like to send a mail to the record owner that the values of only specific mentioned field [SAY 15 FIELDS]  changed.

It can be all the 15 fields or just 1 field of those 15.


I don't want the system to send any notification or activate trigger if  they are doing anything beyond those 15 fields.

Currently what is happening is my system sends mail  even though I open the record and save other details, so i end up getting tons of mails even though they are not valid.

Regards
SR

All Replies
  • Hi Mysteryminds

    You can proceed as follows;

    1- Create a "Send email" trigger

    2- On the trigger properties page, set On field change to "Any update"

    > Thay way the below code will evaluate for any of the fields updated on the page

    2- Write the following validation code inside that trigger;

    var count = 0;
    
    if ({!field1} != {!field1#before})
    
    count ++;
    
    //...etc.. til field 15,
    
    if ({!field15} != {!field15#before})
    
    count ++;
    
    if (count > 0){
    
    return true;
    
    } else {
    
    return false;
    
    }
    
    
    /*** ... #before suffix retrieves the value prior to edition so the code verifies whether the current field value is different from the value prior to edition, if this is the case we increment the counter returning the total number of modified fields ***/

  • Dear maison

    This is what is in our Send Trigger as I'm novice to RB, I'm just trying to figure out if there is something wrong in the below code.

    if("{!R52185052.lock_status#value}"=="Locked" || "{!R52185052.lock_status#value}"=="Expired"||"{!R52185052.lock_status#value}"=="Cancelled")

    {

    if(("{!ficouw}"!="{!R77816268.before_fico}" || "{!co_borrower_ficouw}"!="{!R77816268.before_co_borrower_fico}" || "{!special_program#id}"!="{!R77816268.before_special_program#value}"))

    {

    return true;

    }

    else {return false;}

    }

  • {!R52185052.lock_status#value} : do you want to retrieve the value of lock_status before the user change of after the user change?

    Here you are retrieveing the before value.

  • its before the user change. if you are suggesting something which can really make the code work properly I would be happy to get your suggestions.

    All I wanted is the code to activate only when my values of particular fields are changed  and nothing else

  • Try to run your code in the debugger printing out the evaluated values

    if(("{!ficouw}"!="{!R77816268.before_fico}" || "{!co_borrower_ficouw}"!="{!R77816268.before_co_borrower_fico}" || "{!special_program#id}"!="{!R77816268.before_special_program#value}"))

    {

    rbv_api.println("ficouw: " + {!ficouw});

    rbv_api.println("R77816268.before_fico: " + {!R77816268.before_fico});

    rbv_api.println("coborrower_ficouw: " + {!coborrower_ficouw});

    rbv_api.println("R77816268.before_co_borrower_fico: " + {!R77816268.before_co_borrower_fico});

    rbv_api.println("special_program#id: " + {!special_program#id});

    rbv_api.println("R77816268.before_special_program: " +!R77816268.before_special_program#value});

    return true

    } else { return false; }

  • I suppose it parses error with the before_special_program value

    Syntax Error (line #11) in formula:

    var rbv_api = new Packages.com.rb.core.services.api.ServerSideAPI(51684403, 81315135);

    function wrapper() {

    if(("478"!="0" || "32"!="0" || "81502150"!=""))

    {

    rbv_api.println("ficouw: " + 478);

    rbv_api.println("R77816268.before_fico: " + 0);

    rbv_api.println("co_borrower_ficouw: " + 32);

    rbv_api...

    PARSED FORMULA

    001 var rbv_api = new Packages.com.rb.core.services.api.ServerSideAPI(51684403, 81315135);

    002

    003 function wrapper() {

    004 if(("478"!="0" || "32"!="0" || "81502150"!=""))

    005 {

    006 rbv_api.println("ficouw: " + 478);

    007 rbv_api.println("R77816268.before_fico: " + 0);

    008 rbv_api.println("co_borrower_ficouw: " + 32);

    009 rbv_api.println("R77816268.before_co_borrower_fico: " + 0);

    010 rbv_api.println("special_program#id: " + 81502150);

    011 rbv_api.println("R77816268.before_special_program#value : " + );

    012

    013 return true

    014

    015 } else { return false; }

    016 }

    017 wrapper();

  • What is the cardinality of Relationship R77816268. It looks like no value is returned from the related fields.

  • I haven't received any feedback since my last post. Please let me know if you require further assistance on this issue.

    Regards