Supprimer une commande dans Prestashop

Vous regardez le back-office de votre site Prestashop et vous désirez supprimer des commandes obsolètes ? Et bien non vous ne pouvez pas, car le bouton supprimer est absent et si on changeait ça ?

La problématique
Peut-être qu’au niveau légal on n’a pas le droit de « supprimer » une commande et qu’on devrait uniquement procéder à des annulations, mais franchement, si on utilise l’informatique, c’est bien pour annuler et supprimer des éléments. Si je suis un marchand, je veux avoir un back-office clean et supprimer les commandes obsolètes afin qu’elles n’apparaissent plus.

« C’est illégal ! »
Pas du tout, il faut bien comprendre aussi que parfois, on effectue aussi des commandes « factices » sur un site en production et qu’on n’a pas envie forcément de mettre 5 commandes avec un statut annulé. Esthétiquement dans le back-office je trouve que ça prête à confusion. Il faut bien se dire aussi que si le client « veut » supprimer sa commande, on ne va pas lui sortir une morale, mais on va mettre en oeuvre ce qu’il faut pour qu’il soit satisfait. A mon sens cela me semble logique de pouvoir exécuter cette action, on n’est pas au centre de la CIA de la comptabilité ;).

Quelles sont les alternatives pour supprimer les commandes ?
Soit on achète un module pour le faire comme par exemple Order Manager sur Prestashop Addons qui permet entre autre de supprimer les commandes de son choix, soit on est des fous et on va modifier une ligne de code dans Prestashop et on économise des CHF/ EUR, alors faites vos choix !

Allez va pour la ligne de code !
Dans votre fichier « AdminOrders.php » dans le répertoire « admin/tabs » ajoutez « $this->delete = true; »

class AdminOrders extends AdminTab
{
	public function __construct()
	{
		global $cookie, $currentIndex;

	 	$this->table = 'order';
	 	$this->className = 'Order';
	 	$this->view = true;
                $this->delete = true;
                ...

Allons à présent regarder dans le back-office et hop magie, on constate qu’une nouvelle icone est apparue et qu’on peut supprimer nos commandes.



Comment ça se fait ?

Prestashop a bien sûr intégré la fonctionnalité de suppression de commande, mais ne l’a pas rendue publique. Vous pouvez évidemment utiliser cette même méthode pour d’autres formulaire du back-office qui ne proposeraient pas la suppression.

Bilan
Voilà une petite astuce simple et rapide, qui permet d’activer la suppression de commandes. Les marchands à l’heure actuelle veulent être complètement maître de leur outil, de toute manière si l’option n’est pas fournie ils procéderont autrement quitte à supprimer les enregistrements via phpMyadmin. Finalement je trouverai pratique de pouvoir créer un compte utilisateur « super-user » dans Prestashop afin d’autoriser ce type d’opérations.

Notez mon billet, Google va adorer :
1 étoiles - J'aime pas !2 étoiles - Bof !3 étoiles - Bien !4 étoiles - Très bien !5 étoiles - Génial ! (Soyez le premier à noter ce billet)
Loading...

31 commentaires sur “Supprimer une commande dans Prestashop”

  1. Bonjour,

    la fonction derrière cet icône est elle propre pour effacer des commandes ?

    Efface t elle tout ce qui concerne la commande ou se contente t elle d’effacer la pauvre ligne de la commande dans la table ps_order ?

    Perso je ne suis pas pour l’effacement des commande obsolète dans le sens où si elle existe c’est qu’il y a une raison, alors pourquoi donc faire disparaitre cela ? Surtout que l’argument de l’esthétique lorsque l’on parle de comptabilité n’est pas très approprié car on sais bien que dans ce domaine là l’esthétisme n’est pas leur fort.

    Peut être qu’il serait plus intelligent de proposer une solution pour cacher l’affichage de certains statuts de commandes. Comme cela l’esthétisme est conservé et l’intégrité technique et comptable aussi.

    1. Je ne parviens pas non plus à réussir cette manip.
      Après avoir changer le code et transférer le fichier, qd je vais ds mon back office, à la page « commandes », la page commence à s’afficher mais s’arrête…. Il n’y a que les onglets des menus qui s’affichent, et le reste, page blanche….. De l’aide!!!!! MERCI

  2. Ca marche nickel (verion 1.4) et ca remet bien le chiffre d’affaire en place. Ca ne réinjecte pas les produits en stock mais on a qu’a le faire manuellement
    Merci pour l’astuce

  3. En attendant la création d’un compte « super administrateur » qui manque clairement, on peut quand même limiter l’usage de cette fonction delete à un utilisateur ou au seul groupe administrateur en la soumettant à condition :
    if( $cookie->profile == 1) { $this->delete = true; }

  4. Bonjour à toutes et tous,

    Ayant à diverses reprises, essayé de contacter Vincent DECAUX, qui reste muet à mes différents mails, je viens vous solliciter.

    J’ai acheté à Vincent DECAUX le module EBMOBILE pour PrestaShop, qui est censé rendre compatible les sites PrestaShop avec les mobiles, je l’ai installé, mais il me fait sauter les icônes sur la page catalogue.

    Quelqu’un à-t-il une idéee d’où vient ce problème ?

    Merci d’avance pour votre précieuse aide.

    Très cordialement.

    Jean-Pierre.

  5. Merci pour cette astuce qui fonctionne parfaitement.
    Je viens de faire la mise à jour vers Prestashop 1.5.1.0 et malheureusement cette astuce ne fonctionne plus sur la version 1.5.
    Dommage.

    Merci.

  6. Pour presta 1.5.X le même genre d’astuce semble fonctionner.
    Le fichier en question a changé de place c’est maintenant dans : /www/controllers/admin et il faut ajouter à la suite de public function __construct()
    {
    $this->table = ‘order’;
    $this->className = ‘Order’;
    $this->lang = false;
    $this->addRowAction(‘view’);
    $this->explicitSelect = true;

    /*@ACK @astuce Ajouter une colonne pour supprimer une commande une à une. Pratique pour faire disparaitre les tests. Attention! Ne remet pas à jour les stocks et le fisc français n’aime pas les trous dans les numéros d’index de commandes*/
    //$this->addRowAction(‘delete’);
    //$this->delete = true;

    Dé-commentez les deux lignes le temps de supprimer les commandes puis re-commentez les.

  7. après avoir tester j avais une page blanche

    mais en modifiant ainsi ça fonctionne

    au lieu de :

    public function __construct()
    {
    $this->table = ‘order’;
    $this->className = ‘Order’;
    $this->lang = false;

    $this->addRowAction(‘view’);
    $this->explicitSelect = true;

    $this->deleted = false;
    $this->context = Context::getContext();

    mettre :

    public function __construct()
    {
    $this->table = ‘order’;
    $this->className = ‘Order’;
    $this->lang = false;

    $this->addRowAction(‘edit’);
    $this->addRowAction(‘delete’);

    $this->context = Context::getContext();

    1. Difficile à dire comme ça… on dirait qu’il manque un champ dans ta base de données (problème lié à une mise à jour ?)

      Je vais regarder pour proposer une alternative « clean » à la suppression des commandes, car cette astuce n’est pas vraiment idéale… mais ça peut dépanner.

Laisser un commentaire

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