Skip to content

#1436 [Ticket] feat: emails de création de ticket depuis un modèle d'email configurable#1437

Merged
nicolas-eoxia merged 1 commit into
Evarisk:developfrom
nicolas-eoxia:feat/1436-ticket-create-mail-model
Jul 3, 2026
Merged

#1436 [Ticket] feat: emails de création de ticket depuis un modèle d'email configurable#1437
nicolas-eoxia merged 1 commit into
Evarisk:developfrom
nicolas-eoxia:feat/1436-ticket-create-mail-model

Conversation

@nicolas-eoxia

Copy link
Copy Markdown
Contributor

Closes #1436

Problème

Les emails de création de ticket (notification interne « admin », confirmation client, notification à l'assigné) ont leur contenu codé en dur dans le trigger cœur Dolibarr htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php. Impossible de les personnaliser sans patcher le cœur (perdu aux mises à jour).

Solution

Nouveau trigger Saturne interface_10_modSaturne_TicketMailModel — préfixe 10 pour s'exécuter avant le trigger cœur _50 :

  1. Si disableticketemail est déjà posé (interface publique cœur) → ne fait rien.
  2. Sinon pose $object->context['disableticketemail'] = 1 (neutralise les 3 emails du cœur) et envoie lui-même admin / client / assigné.
  3. Chaque email : si un Modèle d'email (type ticket) est configuré → sujet + corps du modèle avec substitution (getEMailTemplate + make_substitutions). Sinon → contenu d'origine Dolibarr répliqué (aucune régression).

Configuration

Section « Modèles d'email pour la création de ticket » ajoutée dans la config Saturne, 3 sélecteurs :
SATURNE_TICKET_CREATE_MAIL_MODEL_ADMIN / _CUSTOMER / _ASSIGNEE.

Variables de substitution ticket disponibles : __TICKET_REF__, __TICKET_TRACK_ID__, __TICKET_SUBJECT__, __TICKET_MESSAGE__, __TICKET_TYPE__, __TICKET_CATEGORY__, __TICKET_SEVERITY__, __TICKET_PUBLIC_URL__, __TICKET_MANAGEMENT_URL__ (+ variables communes __REF__, __EXTRAFIELD_XXX__, ...).

Fichiers

  • core/triggers/interface_10_modSaturne_TicketMailModel.class.php (nouveau)
  • admin/setup.php (section config + action set_ticket_mail_models)
  • langs/fr_FR/saturne.lang, langs/en_US/saturne.lang

Tests

  • php -l OK sur tous les fichiers PHP
  • Mécanisme de chargement du trigger vérifié (classe InterfaceTicketMailModel, gate isModEnabled('saturne'), tri 10 < 50)
  • Test fonctionnel : créer un modèle d'email ticket, l'associer dans la config, créer un ticket et vérifier l'email

Notes

L'interface publique cœur htdocs/public/ticket/create_ticket.php reste un 2e chemin codé en dur (hors périmètre).

…dèle d'email configurable

Les emails de création de ticket (admin, client, assigné) sont codés en dur
dans le trigger cœur interface_50_modTicket_TicketEmail. On les rend pilotables
par un Modèle d'email choisi en configuration, sans patcher le cœur.

- Nouveau trigger interface_10_modSaturne_TicketMailModel (priorité 10, avant le
  trigger cœur _50) : pose disableticketemail pour neutraliser les emails du cœur
  puis envoie lui-même les 3 emails.
- Chaque email utilise le modèle configuré (getEMailTemplate + make_substitutions)
  ou, à défaut, reprend le contenu d'origine de Dolibarr (aucune régression).
- 3 réglages Saturne : SATURNE_TICKET_CREATE_MAIL_MODEL_ADMIN / _CUSTOMER / _ASSIGNEE.
- Variables de substitution ticket ajoutées (__TICKET_REF__, __TICKET_TRACK_ID__, ...).
- Traductions fr_FR / en_US.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@nicolas-eoxia nicolas-eoxia merged commit 066d8ac into Evarisk:develop Jul 3, 2026
1 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant