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 Cédric Mourizard, i did as you said, but still its not working. It is working when use before_save hook. but i want to do it in after_save hook.

    here is my code:

        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;
                      $old_teams = array();

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


                        //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(
                                $tcc_team_id,
                            )
                        );
                   }
            }
        }
    ?>
Reply
  • hi Cédric Mourizard, i did as you said, but still its not working. It is working when use before_save hook. but i want to do it in after_save hook.

    here is my code:

        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;
                      $old_teams = array();

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


                        //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(
                                $tcc_team_id,
                            )
                        );
                   }
            }
        }
    ?>
Children
No Data