Ayant été confronté au problème récemment lors de la migration de la boutique ai-dev dans laquelle le module de suivi de version est actif, j’ai du modifier le moteur de Prestashop pour pouvoir supprimer d’un coup toutes les règles paniers pouvant être cumulées avec celle en cours.

Le module permet de gérer le suivi de version et créer à cet effet des coupons (règles paniers), mais depuis la version 1.6, les coupons sont automatiquement cumulables alors qu’auparavant il fallait explicitement le préciser, ce qui change tout.

En testant un peu, je me suis aperçu qu’il fallait cocher une case afin de définir les règles cumulables entre elles, et qu’il manquait un bouton de suppression de masse, mon module ayant créé plusieurs milliers de coupons suite aux différentes ventes réalisées sur la boutique, et la sélection multiple étant plutôt mal gérées, j’ai donc ajouté un bouton permettant de supprimer l’ensemble des règles sélectionnées par défaut.

Deux fichiers sont à modifier, un tpl afin d’ajouter le bouton et un js afin de gérer le clic.

Il est à noter que le répertoire peut changer en fonction de votre configuration, pour ma part j’utilise le thème par défaut.

Modification de admin/themes/default/template/controllers/cart_rules/conditions.tpl

Remplacer

<a id=”cart_rule_select_remove” class=”btn btn-default btn-block clearfix” ><i class=”icon-arrow-left”></i> {l s=’Remove’}</a>

Par

<a id=”cart_rule_select_remove” class=”btn btn-default btn-block clearfix” ><i class=”icon-arrow-left”></i> {l s=’Remove’}</a>

<a id=”cart_rule_select_remove_all” class=”btn btn-default btn-block clearfix” ><i class=”icon-arrow-left”></i> {l s=’Remove all’}</a>

 

Modification de admin/themes/default/template/controllers/cart_rules/form.js

Remplacer

$(‘#’ + restrictions[i] + ‘_select_remove’).click(function() {removeCartRuleOption(this);});

Par

    $(‘#’ + restrictions[i] + ‘_select_remove’).click(function() {removeCartRuleOption(this);});
$(‘#’ + restrictions[i] + ‘_select_remove_all’).click(function() {removeAllCartRuleOption(this);});

Ajouter

function removeAllCartRuleOption(item)
{
var id = $(item).attr(‘id’).replace(‘_remove_all’, ”);
$(‘#’ + id + ‘_2 option’).each(function() {
$(this).remove().appendTo(‘#’ + id + ‘_1’);
});
}

 

A partir de ce moment là, lors de la création d’une règle panier, sur l’onglet action après avoir coché l’option Compatibilité avec les autres règles paniers, un bouton de suppression de l’ensemble des règles sélectionnées apparaitra sous le bouton de suppression simple en dessous de la liste de droite.

Simple et efficace.

Répondre

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

Vous pouvez utiliser ces balises et attributs HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

+ 44 = cinquante quatre