Hello,
my before_save code is working right well:
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
class Generate {
function generateID(&$bean, $event, $arguments)
{
$logged_user_env = $GLOBALS['current_user']->emp_dirsource_c;
$GLOBALS['log']->fatal('The current envirorment: ' . ' ' . $logged_user_env);
$query = "SELECT MAX(dbgit_leadid_c) from leads_cstm ";
$results = $bean->db->query($query, true);
$row = $bean->db->fetchByAssoc($results);
$GLOBALS['log']->fatal('The max LeadCode is: ' . ' ' .$row['MAX(dbgit_leadid_c)']);
// Check if its empty...this will ensure that the update will be done everytime even if not necessary
if(empty($bean->dbgit_leadrefcode_c) || empty($bean->dbgit_leadid_c)) {
$bean->retrieve($bean->id);
$GLOBALS['log']->fatal('The LeadID is: ' . ' ' .$bean->id);
// Prepare Lead Number varchar
$newID = sprintf("%05d",$row['MAX(dbgit_leadid_c)']+1);
$prefix = "DBG";
$year = date("Y");
$type = "L";
$separator = "-";
// Merge all variables
$lead_ref_number = $prefix . $logged_user_env . $separator . $year . $separator . $newID . $separator . $type;
// Update the record with newly generated value
$bean->db->query("UPDATE leads_cstm SET dbgit_leadrefcode_c ='{$lead_ref_number}',dbgit_leadid_c ='{$newID}' WHERE id_c='{$bean->id}'");
$bean->save();
}
$GLOBALS['log']->fatal('The new LeaID is: ' . ' ' .$lead_ref_number);
}
}
?>
Editing records ther’s no problem but when i create a new one the log shows me “Duplicate Entry for database” and i can see that it runs twice.
I’ve also tried some loop prevents technique without luck.
What i have missing?
Thank you
Hi,
It seems issue in your code.
As I understood In before_save hook are trying to save bean again. There is no need to save again as crm will save it.
Yes…correct it was wrong…replaced with:
// Merge all variables
$lead_ref_number = $prefix . $logged_user_env . $separator . $year . $separator . $newID . $separator . $type;
// Update the record with newly generated value
//$bean->db->query("UPDATE leads_cstm SET dbgit_leadrefcode_c ='{$lead_ref_number}',dbgit_leadid_c ='{$newID}' WHERE id_c='{$bean->id}'");
$bean->dbgit_leadrefcode_c = $lead_ref_number;
$bean->dbgit_leadid_c = $newID;
Thank you