Adding a team to a record through coding using after_save logic hook not working

Hi everyone,

I would like to add a team to a record through coding. I am using after_save logic hook but it is not add the team to the record. If I use before_save hook, then it’s working. I would like to use after_save hook as it is recommended by Sugar Documentation. I would appreciate if you can help. My Sugar version is Pro 7.9.20. Bellow is my coding:

sugarcrm\custom\Extension\modules\Accounts\Ext\LogicHooks\addTeam.ext.php

<?php

    $hook_array['after_save'][] = Array(
        //Processing index. For sorting the array.
        1,

        //Label. A string value to identify the hook.
        'Add Team value before_save',

        //The PHP file where your class is located.
        'custom/modules/Accounts/addTeam.php',

        //The class the method is in.
        'AddTeam_class',

        //The method to call.
        'add_team_method'
    );
?>

sugarcrm\custom\modules\Accounts\addTeam.php

<?php
    if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

    class AddTeam_class
    {
        function add_team_method($bean, $event, $arguments)
        {
            //loop prevention check
            if (!isset($bean->ignore_update_c) || $bean->ignore_update_c === false)
            {
                $bean->ignore_update_c = true;
                $module = $bean->module_dir;
                $record_id = $bean->id;

                $GLOBALS['log']->fatal(">>>> add teams executed >>>>>");

                //Retrieve the bean
                $bean = BeanFactory::getBean($module, $record_id);


                //Load the team relationship
                $bean->load_relationship('teams');

                $tl_team_id  = "a799aafc-d021-11e7-990a-00ff10f03434";
                $tcc_team_id = "b79db27c-d021-11e7-819e-00ff10f03434";
                $ft_team_id  = "d1f6ad5e-d021-11e7-a70e-00ff10f03434";

              
                //Add the teams
                $bean->teams->add(
                    array(
                        $ft_team_id,
                    )
                );
                $bean->save();
            }
        }
    }
?>

Sayfur Rahman, Francesca Shiekh, Ramana Raju SanthanaLori Arce

Parents
  • Hello,

    You don't need to releoad the bean and most of all you must not erase it like here where you use the same name as the variable name used as argument of your method.

    So remove the retrieve and the save from you code and keep only the team manipulation.

  • Hi Raymond Tham

    Try this code.

    if($bean->load_relationship('teams')){
          $bean->team_id = $primary_team_id;
          $bean->teams->replace(array(
              $primary_team_id,
              $another_team_id
            )
          );
    }

    Regards

    Mehul SB

  • hi Mehul  Bhandari,

    i tried the your code. it replaces the new team with old ones. for example, if i have team A and B in a record, and i use your code to add one more team (say it C), then it will remove team A & B and add team C. What i want is to keep the existing teams and add new team as well. bellow is my code:

    <?php

        if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

        class AddTeam_class
        {
            function add_team_method($bean, $event, $arguments)
            {
                 //loop prevention check
                 if (!isset($bean->ignore_update_c) || $bean->ignore_update_c === false)
                 {
                      $bean->ignore_update_c = true;
                      $module = $bean->module_dir;
                      $record_id = $bean->id;
                      

                      $GLOBALS['log']->fatal(">>>> add teams executed >>>>>");

                        //Retrieve the bean
                        //$bean = BeanFactory::getBean($module, $record_id);

                        //Load the team relationship
                        //$bean->load_relationship('teams');

                        $tl_team_id  = "a799aafc-d021-11e7-990a-00ff10f03434";
                        $tcc_team_id = "b79db27c-d021-11e7-819e-00ff10f03434";
                        $ft_team_id  = "d1f6ad5e-d021-11e7-a70e-00ff10f03434";
                        $primary_team_id = "b79db27c-d021-11e7-819e-00ff10f03434";
                        $another_team_id = $ft_team_id;
                        

                        

                        if($bean->load_relationship('teams')){
                              $bean->team_id = $primary_team_id;
                              $bean->teams->replace(array(
                                  $primary_team_id,
                                  $another_team_id
                                )
                              );
                        }

                        $bean->save();
                   }
            }
        }
    ?>
Reply Children