Bonjour @mathildeweb,
Les camarades ont mis le doigt sur le problème. Tenter de modifier la référence après l'ajout de la commande via actionObjectOrderAddAfter est une solution bancale car la référence est déjà fixée et le save() postérieur peut entraîner des effets de bord ou des conflits.
La méthode generateReference() de la classe OrderCore est le point d'entrée pour la création de la référence. Pour obtenir le format ORD-AAAA-NNNNN, la méthode la plus propre est de surcharger cette fonction dans votre propre fichier d'override override/classes/order/Order.php. Voici comment vous pourriez le faire :
class Order extends OrderCore
{
protected function generateReference()
{
$year = date('Y');
$prefix = Configuration::get('PS_ORDER_PREFIX', null, null, null, 'ORD');
$uniquePart = Tools::strtoupper(Tools::passwdGen(5)); // Génère 5 caractères aléatoires
$this->reference = $prefix . '-' . $year . '-' . $uniquePart;
// La classe OrderCore contient déjà la boucle do...while pour assurer l'unicité
// en appelant Order::referenceExists(), nous nous concentrons juste sur le format.
Après avoir ajouté ce fichier, n'oubliez pas de vider le cache de PrestaShop (rubrique 'Performances' dans les Paramètres avancés) pour que l'override soit pris en compte.
Attention, cette solution générera bien ORD-AAAA-RANDOM, où RANDOM est une suite unique de 5 caractères, mais pas un ID séquentiel global. Pour avoir un vrai ID séquentiel qui s'incrémente (comme 00452, 00453, etc.), cela demande une logique plus avancée (souvent avec un compteur en base de données) et un module dédié est souvent la meilleure approche pour la pérennité et les mises à jour. Notre module Générateur de référence commande PRO gère précisément ce type de besoin avec un contrôle total sur le format et la séquence.