Si vous êtes sous Prestashop 1.5.x, vous avez peut-être déjà constaté un problème (pour ne pas dire un bug) qui touche le panier d’achat. En cas de rupture de stock soudaine sur un produit, un client sur le point d’acheter  ne pourra pas valider sa commande. Jusque là logique, puisque un produit de son panier n’est plus disponible, le système bloque.

Le hic, c’est que le message d’erreur affiché par Prestashop est très peu explicatif. Il se contente de signaler qu’un produit est en rupture de stock et que la commande est bloquée. Charge au visiteur du site de découvrir lequel pour le supprimer du panier. SI son panier contient 15 produits, il devra les tester et les supprimer un par un jusqu’à trouver le produit en rupture.

Autant dire que votre client aura quitté votre site bien avant ça et que vous l’aurez perdu pour toujours.

La solution ? Afficher dans le panier les produits en rupture de stock en les surlignant en rouge. Pour ce faire suivez le guide :

1- Ouvrez (et faites-en une sauvegarde au préalable) le fichier fichier shopping-cart-product-line.tpl situé à la racine du dossier de votre thème prestashop

2- Commentez la ligne 27 de cette façon :

code php prestashop corrigé

3- et ajoutez la ligne suivante :

<tr id=”product_{$product.id_product}_{$product.id_product_attribute}_{if $quantityDisplayed > 0}nocustom{else}0{/if}_{$product.id_address_delivery|intval}{if !empty($product.gift)}_gift{/if}” class=”cart_item{if isset($productLast) && $productLast && (!isset($ignoreProductLast) || !$ignoreProductLast)} last_item{/if}{if isset($productFirst) && $productFirst} first_item{/if}{if isset($customizedDatas.$productId.$productAttributeId) AND $quantityDisplayed == 0} alternate_item{/if} address_{$product.id_address_delivery|intval} {if $odd}odd{else}even{/if}{if (!$product.active || !$product.available_for_order || (!$product.allow_oosp && $product.stock_quantity < $product[‘cart_quantity’]))} cart-line-attention{/if}”>

4- Ouvrez ensuite le fichier global.css situé dans le dossier CSS du thème et ajoutez le code suivant à la fin :

table#cart_summary tr.cart-line-attention td.cart_description a, table#cart_summary tr.cart-line-attention td.cart_unit span, table#cart_summary tr.cart-line-attention td.cart_cond,
table#cart_summary tr.cart-line-attention td.cart_quantity span, table#cart_summary tr.cart-line-attention td.cart_total span, table#cart_summary tr.cart-line-attention td.cart_quantity input.cart_quantity_input
{
color: red;
}

Et le tour est joué !