How to update a field in an after_save logic hook?

Hello all,

I have created a custom field to hold an autoincrement value for each record in the module. This works ok.

I would like to use this number as a part of the name of the record. So, I have created a logic_hook based on the after_save event.

Unfortunately, it seems that $bean data is not available when after_save-ing.

It I test the logic_hook in before_save event, the code works ok and Name field is properly updated. However I can't use the code in before_save because it only would work when editing records not when creating them, because the logic hook would be fired before setting the autoincrement value.

Any ideas?

Here is my code, so simple. I'm on SugarCRM CE 6.5.11.
class my_class{
  public function my_function(&$bean, $event, $arguments){
    $bean->name = $bean->my_autoincrement_field_c;
  }
}
Parents Reply Children
  • Jaume,

    To add to eggsurplus's notes, in your after_save hook, you just need to :

    $bean->db->query(" UPDATE {$bean->table_name} SET name='{$bean->my_autoincrement_field_c}' WHERE id='{$bean->id}' ");

    This will update the name field in the bean's table with the value from the 'my_autoincrement_field_c'.

    But be careful whether you need the name to be set on EVERY save of the record as doing this without any checks/conditions will overwrite the "name" field if any other logic or users have updated it to something else.

    ie you might want to only update the name once and not everytime and/or based on certain checks/conditions.

    eg set it to the my_autoincrement_field_c value only if the name is empty

    class my_class{
      public function my_function(&$bean, $event, $arguments){        if(empty($bean->name)){
           $bean->db->query(" UPDATE {$bean->table_name} SET name='{$bean->my_autoincrement_field_c}' WHERE id='{$bean->id}' ");      }
      }
    }
    Cheers
    Kedar.