LogicHooks

What is the subquery to assigned user id in child object same as parents object through logic hooks?

Parents
  • If I understand correctly, when on a given record you change the assigned user, you want to update all related records to have the same assigned user.

    The tricky part will be finding all the related records unless you list them explicitly in your logic hook.

    If you don't want to hardcode which children are reassigned you may have to iterate through all the "link" fields as suggested by  here:

    https://sugarclub.sugarcrm.com/dev-club/f/questions-answers/423/find-all-records-related-to-a-specific-call-or-meeting

    Once you know the names of each link you can load the relationship between the $bean (your parent) and the linked module via the $link

        if($bean->load_relationship($link)){ //check the relationship exists
          foreach($bean->$link->getBeans() as $linkedBean){ //get the linked bean
            $linkedBean->assigned_user_id = $bean->assigned_user_id; //change the assigned user
            $linkedBean->save(); //save the linked bean
          }
        }

    You may need to check the teams as well to make sure they are consistent with the new assignment.

    FrancescaS

  • I have created a building object and in Building object i have created Flat object . I have assigned a building to "km". my question is how to write logichooks through after_relationship_add ,  all flats of building assigned to same name km.

  • What Dmytro is proposing to you is to sell you a third party visual tool that builds the code of the logic hook for you. If you are not keen on coding that may be a solution for you.

    So, let's assume that you are looking for a code solution, which in this case is not hard to do.

    the trick with after_relationship_add logic hooks is that they provide you all the information for both the current bean (the record you are on when the the hook is triggered) and the related bean (the record to which you are relating your current record)

    As you can see here:
    https://support.sugarcrm.com/Documentation/Sugar_Developer/Sugar_Developer_Guide_11.0/Architecture/Logic_Hooks/Module_Hooks/after_relationship_add/
    the related_module will tell you what type of record you are relating the current record to

    and the related_id will tell you the ID of that record.

    This means you can use the BeanFactory 

    support.sugarcrm.com/.../

    to get the full bean, which will contain the information you need: the assigned_user_id, and use it to assign the Flat to the correct user.

    In your logic hooks on the Flat module, in the after_relationship_add you can do as follows:

    function flatAssignedUser($bean, $event, $arguments){
    
      //check if the Flat was just related to a Building by checking the related module name
    
      if($arguments['related_module'] == 'Buildings'){
    
        //get the Building information
    
        $buildingBean = BeanFactory::retireveBean('Buildings', $arguments['related_id']);
    
         //double check that you have a building bean
    
         if(!empty($buildingBean)){
            //copy the assigned user from the buildingBean to the bean (the Flat) and save
    
            $bean->assigned_user_id = $buildingBean->assigned_user_id;
    
            $bean->save();
    
         }
    
      }
    
    }

    I hope you find this helpful.

    FrancescaS

Reply
  • What Dmytro is proposing to you is to sell you a third party visual tool that builds the code of the logic hook for you. If you are not keen on coding that may be a solution for you.

    So, let's assume that you are looking for a code solution, which in this case is not hard to do.

    the trick with after_relationship_add logic hooks is that they provide you all the information for both the current bean (the record you are on when the the hook is triggered) and the related bean (the record to which you are relating your current record)

    As you can see here:
    https://support.sugarcrm.com/Documentation/Sugar_Developer/Sugar_Developer_Guide_11.0/Architecture/Logic_Hooks/Module_Hooks/after_relationship_add/
    the related_module will tell you what type of record you are relating the current record to

    and the related_id will tell you the ID of that record.

    This means you can use the BeanFactory 

    support.sugarcrm.com/.../

    to get the full bean, which will contain the information you need: the assigned_user_id, and use it to assign the Flat to the correct user.

    In your logic hooks on the Flat module, in the after_relationship_add you can do as follows:

    function flatAssignedUser($bean, $event, $arguments){
    
      //check if the Flat was just related to a Building by checking the related module name
    
      if($arguments['related_module'] == 'Buildings'){
    
        //get the Building information
    
        $buildingBean = BeanFactory::retireveBean('Buildings', $arguments['related_id']);
    
         //double check that you have a building bean
    
         if(!empty($buildingBean)){
            //copy the assigned user from the buildingBean to the bean (the Flat) and save
    
            $bean->assigned_user_id = $buildingBean->assigned_user_id;
    
            $bean->save();
    
         }
    
      }
    
    }

    I hope you find this helpful.

    FrancescaS

Children