I'm setting up a logic hook in suitecrm to allow nc case to emailed to the department the issue is raised to however; I keep getting the error message "Could not find Users within the department NC is issued to; indicating that dept_array is equivalent to zero. I'm to using getbeans and relationship tables. I created the relationship dept_department_nccas_nc_case in suitecrm but there's no data inside the table so I'm wondering if that's the reason or if my syntax is incorrect.
class nc_email_notification {
public function email_notification(&$bean, $events, $arguments){
/*define 'review_pending' as string constant */
/*Get sugar email engine*/
$email = new SugarPHPMailer();
$email->From = '[email protected]';
$email->FromName ='SuiteCRM';
/*Get the Department NC was Issued to */
$dept_array= $bean->get_linked_beans('dept_department_nccas_nc_case','dept_Department_sugar');
if(count($dept_array)==0){
/*log error*/
$GLOBALS['log']->fatal("Could not find the department NC was issued to: ". $bean->name);
}else{
/* Get email of users within the Department NC is issued to */
$user_array = $dept_array[0]->get_linked_beans('dept_department_users','User');
if(count($user_array)==0){
/*log error*/
$GLOBALS['log']->fatal("Could not find Users within the department NC is issued to: ". $bean->name);
}else{
$address=getDepartmentUsersEmail($user_array);
}
/*Get the Department NC was raised by */
$raised_dept_array= $bean->get_linked_beans('dept_department_nccas_nc_case_1','dept_Department_sugar');
if(count($raised_dept_array)==0){
/*log error*/
$GLOBALS['log']->fatal("Could not find the department NC was raised by: ". $bean->name);
}else {
/*Get email of users within the Department NC is raised by*/
$raised_user_array = $raised_dept_array[0]->get_linked_beans('dept_department_users','User');
if(count($raised_user_array)==0){
/*log error*/
$GLOBALS['log']->fatal("Could not find Users within the department NC is raised by: ". $bean->name);
}
else {
$r_user_address = getDepartmentUsersEmail($raised_user_array);
}
}
/*Get the Quality Systems Department*/
//$qual_dept=$dept_array[0]->retrieve)by)string_fields(array('name' => 'Quality Systems' ));
//$qual_dept->load_relationship('dept_department_email_addresses_primary');
/* Send email to Manager */
$rev_email = '[email protected]';
/*Get NC Action for the NC Case*/
$action_array = $bean->get_linked_beans('nccas_nc_case_ncact_nc_action','ncact_NC_Action_sugar');
/* Get sugar template engine */
$xtpl = new XTemplate("XTemplate/NCEmailTemplate.html");
/*GEt the URL for the NC Case */
$url = $GLOBALS['sugar_config']['site_url'].'index.php?module=ncase_NonConformance&action=DetailView&record='.$bean->id;
$xtpl -> assign('URL', $url);
/* Get NC Status */
$nc_status=trim($bean->getFieldValue('status'));
/* Get NC ID */
$id = $bean->getFieldValue('id');
if(empty($bean->fetched_row['id'])){
$email=createNCEmail($email,$rev_email,'New NC Email Notification',$bean,$xtpl);
/* Send email to Quality System Manager */
$email->addaddress($rev_email);
/* Send email to users of Issued to department */
foreach($address as $uemail){
$email->addAddress($uemail);
}
}else {
if (strcasecmp ($nc_status,'review_pending')==0){
/* Set Email Subject */
$email->Subject = 'NC Case: '. ''. $bean->name . ' '. ' is pending review';
/* Send email to users of Raised by department */
foreach($r_user_address as $uemail){
$email->addAddress($uemail);
}
/* Send email to Quality System Manager */
$email->addaddress($rev_email);
/* Create email message using email template */
$email=createNCEmailwithAction($email,$action_array,$bean,$xtpl);
} else if (strcasecmp ($nc_status,'Closed')==0){
/* Set Email Subject */
$email->Subject = 'NC Case: '. ''. $bean->name . ''. ' is Closed';
/* Send email to users of Raised by department */
foreach($r_user_address as $uemail){
$email->addAddress($uemail);
}
/* Send email to Issued to Department */
foreach($address as $iemail){
$email->addAddress($iemail);
}
/* Create email message using email template*/
$email=createNCEmailwithAction($email,$action_array,$bean,$xtpl);
} else{
If ($bean->fetched_row['description'] != $bean->description){
/* Set Email Subject */
$email->Subject = 'NC Case: ' .''. $bean->name .''. ' has been modified';
/* Create email message using email template */
$email=createNCEmailwithAction($email,$action_array,$bean,$xtpl);
/* Build appropriate email list */
foreach($address as $uemail){
$email->addAddress($uemail);
}
/* Send email to Quality System Manager */
$email->addaddress($rev_email);
}
}
}
Relationship names are tricky! I always get them wrong so here is a snippet that will let you find the exact name
$m1 = 'Users';
$m2 = 'ACLRoles';
print_r(getRelationshipByModules($m1, $m2));
$m2 = 'Users';
$m1 = 'ACLRoles';
print_r(getRelationshipByModules($m1, $m2));
Please note that the order matters so that's why I repeat the sentence twice but in different order.
Change m1/m2 for the module you want to know the relationship name and then do get_linked_beans