Prestashop : avoir des numéros de commande en chiffre

Prestashop fait des choses biens, et d’autres beaucoup moins biens comme les références des commandes. Par défaut, les références sont une suite de 9 lettres. Un client m’a récemment fait remarqué que ce n’est pas du tout évident de travailler avec des lettres. Imaginez l’un de ses clients lui téléphoner suite à un problème : « Oui bonjour, j’ai un soucis sur la commande R comme radis, K comme kiwi, D comme Daniel, … ». On en fini plus.

Voici la solution :

1/ Supprimez le fichier /www/cache/class_index.php. C’est un fichier qui liste les chemins de toutes les classes utilisées par Prestashop. Si le fichier n’est pas supprimé, la surcharge (override) de la classe ne fonctionnera pas.

class-index

2/ Créez le fichier /www/override/classes/order/Order.php avec le code ci-dessous :

<?php

class Order extends OrderCore
{
	/**
	 * Gennerate a unique reference for orders generated with the same cart id
	 * This references, is usefull for check payment
	 *
	 * @return String
	 */
	public static function generateReference()
	{
		return strtoupper(Tools::passwdGen(9, 'NUMERIC'));
	}
}
Override class Order.php

C’est la fonction generateReference() de la classe Order.php qui génère la référence de la commande. Le fait de passer le paramètre à NUMERIC va permettre d’avoir une ref. avec 9 chiffres.

3/ Rafraîchissez l’accueil du site pour générer le fichier class_index.php. Si vous est bon, vous devriez avoir la référence de l’override pour la classe Order :

override

Et voila !

reference-chiffre

Comment supprimer le /fr/ des urls de Prestashop
Modifier le formulaire de contact de Prestashop 1.6.x.x

10 Comments on “Prestashop : avoir des numéros de commande en chiffre”

  1. Hello,

    Complètement d’accord, il est bien plus facile de dicter un chiffre qu’une suite de lettres…

    Merci pour l’info je pense que c’est une bonne astuce !

  2. Bonjour,

    Merci pour cette astuce. Il pourrait aussi être intéressant d’avoir l’id de la commande (id_order) à la place transformé en chaîne, comme c’était le cas dans les anciennes versions de Prestashop. C’est souvent demandé par les clients.

    Cordialement

    1. Bonjour,
      D’un point de vue comptable, je ne comprends pas bien pourquoi on aurait des id sous forme de chaîne.
      L’id est de toute façon lié à la table SQL des commandes dans Prestashop.
      Elle restera auto-incrémentée et sous forme d’un nombre entier.
      Tu dois utiliser la référence pour une commande, pas son ID.

    1. Bonjour,
      Testé sur 1.6.1.7 et ça passe toujours.
      Je devais, de mon côté, supprimé le fichier class_index.php une nouvelle fois après upgrade.

  3. Ca roule, tout s’est bien mis :) Un grand merci.

    Savez-vous si il y a un moyen de forcer les numéros de commande et qu’ils commencent par, par exemple : 20161001 ? Et que ça se suive ensuite.

    Merci :)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *