diff --git a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php
index 4b155082453..0816657fa13 100644
--- a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php
+++ b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php
@@ -185,10 +185,65 @@ class InterfaceTicketEmail extends DolibarrTriggers
case 'TICKET_CLOSE':
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
+ $langs->load('ticket');
+
+ $subject_admin = 'TicketCloseEmailSubjectAdmin';
+ $body_admin = 'TicketCloseEmailBodyAdmin';
+ $subject_customer = 'TicketCloseEmailSubjectCustomer';
+ $body_customer = 'TicketCloseEmailBodyCustomer';
+ $see_ticket_customer = 'TicketCloseEmailBodyInfosTrackUrlCustomer';
+
+ // Send email to notification email
+ if (!empty($conf->global->TICKET_NOTIFICATION_EMAIL_TO) && empty($object->context['disableticketemail'])) {
+ $sendto = empty($conf->global->TICKET_NOTIFICATION_EMAIL_TO) ? '' : $conf->global->TICKET_NOTIFICATION_EMAIL_TO;
+ if ($sendto) {
+ $this->ComposeAndSendAdminMessage($sendto, $subject_admin, $body_admin, $object, $langs, $conf);
+ }
+ }
+
+ // Send email to customer.
+ if (empty($conf->global->TICKET_DISABLE_CUSTOMER_MAILS) && empty($object->context['disableticketemail'])) {
+ $linked_contacts = $object->listeContact(-1, 'thirdparty');
+ $linked_contacts = array_merge($linked_contacts, $object->listeContact(-1, 'internal'));
+ if (empty($linked_contacts) && !empty($conf->global->TICKET_NOTIFY_AT_CLOSING) && !empty($object->fk_soc)) {
+ $object->fetch_thirdparty();
+ $linked_contacts[] = $object->thirdparty->email;
+ }
+
+ $contactid = GETPOST('contactid', 'int');
+ if ($contactid > 0) {
+ $contact = new Contact($this->db);
+ $res = $contact->fetch($contactid);
+ if (! in_array($contact, $linked_contacts)) {
+ $error_msg = $langs->trans('Error'). ': ';
+ $error_msg .= $langs->transnoentities('TicketWrongContact');
+ setEventMessages($error_msg, [], 'errors');
+ $ok = 0;
+ break;
+ }
+ }
+
+ $sendto = '';
+ if ($res > 0 && !empty($contact->email) && !empty($contact->statut)) {
+ $sendto = $contact->email;
+ // if sending to all contacts or sending to contacts while mass closing
+ } elseif ( !empty($linked_contacts) && ($contactid == -2 || (GETPOST('massaction', 'alpha') == 'close' && GETPOST('confirm', 'alpha') == 'yes'))) {
+ $temp_emails = [];
+ foreach($linked_contacts as $contact) {
+ $temp_emails[] = $contact['email'];
+ }
+ $sendto = implode(", ", $temp_emails);
+ unset($temp_emails);
+ unset($linked_contacts);
+ }
+ if ($sendto) {
+ $this->ComposeAndSendCustomerMessage($sendto, $subject_customer, $body_customer, $see_ticket_customer, $object, $langs, $conf);
+ }
+ }
+ $ok = 1;
break;
}
-
return $ok;
}
@@ -200,8 +255,8 @@ class InterfaceTicketEmail extends DolibarrTriggers
$mimetype = array();
/* Send email to admin */
- $subject = '['.$conf->global->MAIN_INFO_SOCIETE_NOM.'] '.$langs->transnoentities($base_subject);
- $message_admin = $langs->transnoentities($body, $object->track_id).'
';
+ $subject = '['.$conf->global->MAIN_INFO_SOCIETE_NOM.'] '.$langs->transnoentities($base_subject, $object->ref, $object->track_id);
+ $message_admin = $langs->transnoentities($body, $object->track_id).'
';
$message_admin .= '
'.$langs->trans('Company').' : '.$object->thirdparty->name.'
'; + $message_admin .= ''.$langs->trans('Message').' :
'.$message.'
'.$langs->trans('Message').' :
'.$message.'
'.$langs->trans('SeeThisTicketIntomanagementInterface').'
'; $from = $conf->global->MAIN_INFO_SOCIETE_NOM.'<'.$conf->global->TICKET_NOTIFICATION_EMAIL_FROM.'>'; @@ -258,33 +312,35 @@ class InterfaceTicketEmail extends DolibarrTriggers $mimetype = array(); $subject = '['.$conf->global->MAIN_INFO_SOCIETE_NOM.'] '.$langs->transnoentities($base_subject); - $message_customer = $langs->transnoentities($body, $object->track_id).''.$langs->trans('Message').' :
'.$message.'
'.$langs->trans('Message').' :
'.$message.'
'.$langs->trans($see_ticket).' : '.$url_public_ticket.'
'; $message_customer .= ''.$langs->trans('TicketEmailPleaseDoNotReplyToThisEmail').'
'; @@ -315,6 +371,7 @@ class InterfaceTicketEmail extends DolibarrTriggers $result = $mailfile->sendfile(); if ($result) { // update last_msg_sent date + $object->fetch($object->id); $object->date_last_msg_sent = dol_now(); $object->update($user); }