Link a Lead record to a Project record using logic hook

I have created a one-to-many relationship between Project and Lead records. (called 'project_leads_1' in Studio)

I would like it so that when a new Lead record is created that meets certain criteria (last name = '@Incoming Email Sales Lead'), the Lead record is linked to a specific Project Record ('Incoming Email Sales' Project).

However, it's not working.  What am I missing?

I'm using 'before_save' logic hook on the Leads module

.....

$rel_name = 'project_leads_1';  // name of the relationship in Studio

$incoming_sales_leads_proj = [hard coded ID];

$incoming_service_leads_proj = [hard coded ID];
if($bean->last_name == '@Incoming Email Sales Lead')
{
$bean->load_relationship($rel_name);
$bean->$rel_name->add($incoming_sales_leads_proj);

}
else if($bean->last_name == '@Incoming Email Service Lead')
{
 $bean->load_relationship($rel_name);
 $bean->$rel_name->add($incoming_service_leads_proj);
}

......

Sugar 13.0

Parents
  • I created a logic_hook in custom\Extension\modules\Leads\Ext\LogicHooks\setLinkLead.php:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    $hook_version = 1;
    if (!isset($hook_array)) {
    $hook_array = array();
    }
    if (!isset($hook_array['after_save'])) {
    $hook_array['after_save'] = array();
    }
    $hook_array['after_save'][] = array(
    200,
    'after Lead is saved',
    'custom/modules/Leads/linkLeadHook.php',
    'linkLeadHook',
    'linkLead'
    );
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    and the implementation of the hook in custom\modules\Leads\linkLeadHook.php:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
    class linkLeadHook
    {
    public function linkLead($bean, $event, $arguments)
    {
    //// $GLOBALS['log']->fatal("LEAD HOOK A = ".print_r($arguments,true));
    if (($arguments['isUpdate'] != 1)&&($bean->deleted == 0)) {
    if ($bean->last_name == "TEST") {
    $rel = "project_leads_1";
    $p1 = "1770f528-26d5-11ee-98a0-54ee7593936c";
    $GLOBALS['log']->fatal("LEAD HOOK SHOULD DO STH.");
    if($bean->load_relationship($rel))
    {
    $bean->$rel->add($p1);
    }
    }
    }
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    If the Lead is new and if its last_name is "TEST" a relationship to Project P1 with id "1770f528-26d5-11ee-98a0-54ee7593936c" is created.

Reply
  • I created a logic_hook in custom\Extension\modules\Leads\Ext\LogicHooks\setLinkLead.php:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    $hook_version = 1;
    if (!isset($hook_array)) {
    $hook_array = array();
    }
    if (!isset($hook_array['after_save'])) {
    $hook_array['after_save'] = array();
    }
    $hook_array['after_save'][] = array(
    200,
    'after Lead is saved',
    'custom/modules/Leads/linkLeadHook.php',
    'linkLeadHook',
    'linkLead'
    );
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    and the implementation of the hook in custom\modules\Leads\linkLeadHook.php:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
    class linkLeadHook
    {
    public function linkLead($bean, $event, $arguments)
    {
    //// $GLOBALS['log']->fatal("LEAD HOOK A = ".print_r($arguments,true));
    if (($arguments['isUpdate'] != 1)&&($bean->deleted == 0)) {
    if ($bean->last_name == "TEST") {
    $rel = "project_leads_1";
    $p1 = "1770f528-26d5-11ee-98a0-54ee7593936c";
    $GLOBALS['log']->fatal("LEAD HOOK SHOULD DO STH.");
    if($bean->load_relationship($rel))
    {
    $bean->$rel->add($p1);
    }
    }
    }
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    If the Lead is new and if its last_name is "TEST" a relationship to Project P1 with id "1770f528-26d5-11ee-98a0-54ee7593936c" is created.

Children
  • This is only a snippet to show that the logic_hook works fine.

    I used the hard coded $p1 just as an example. Much better would be to have a local flag or string in projects which declares a dedicated project as the collector project. Searching this local field could return the id of the dedicated project into $p1.

    Thanks  for reviewing!