Jump to content

Texte erroné indiquant la disponibilité d'un produit sur la fiche produit suite à son déplcement


Recommended Posts

Bonjour,

 

Dans le cadre de la mise à jour de ma boutique de la version 1.5.6.1 vers la version 1.6.1.10 de prestashop, je réalise un nouveau thème en prenant comme base le thème par défaut Bootstrap.

 

Je souhaite modifier l'emplacement de certaines informations sur la fiche produit, et notamment le message de disponibilité d'un produit. Pour ce faire, j'ai éditer le fichier product.tpl de mon thème et fais tout simplement un copier/coller du code correspondant pour l'intégrer en dessous du bloc prix.

 

Voici le code que j'ai déplacé :

{if ($display_qties == 1 && !$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && $product->available_for_order)}
				<!-- number of item in stock -->
				<p id="pQuantityAvailable"{if $product->quantity <= 0} style="display: none;"{/if}>
					<span id="quantityAvailable">{$product->quantity|intval}</span>
					<span {if $product->quantity > 1} style="display: none;"{/if} id="quantityAvailableTxt">{l s='Item'}</span>
					<span {if $product->quantity == 1} style="display: none;"{/if} id="quantityAvailableTxtMultiple">{l s='Items'}</span>
				</p>
			{/if}
			<!-- availability or doesntExist -->
			<p id="availability_statut"{if !$PS_STOCK_MANAGEMENT || ($product->quantity <= 0 && !$product->available_later && $allow_oosp) || ($product->quantity > 0 && !$product->available_now) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}>
				{*<span id="availability_label">{l s='Availability:'}</span>*}
				<span id="availability_value" class="label{if $product->quantity <= 0 && !$allow_oosp} label-danger{elseif $product->quantity <= 0} label-warning{else} label-success{/if}">{if $product->quantity <= 0}{if $PS_STOCK_MANAGEMENT && $allow_oosp}{$product->available_later}{else}{l s='This product is no longer in stock'}{/if}{elseif $PS_STOCK_MANAGEMENT}{$product->available_now}{/if}</span>
			</p>
			{if $PS_STOCK_MANAGEMENT}
				{hook h="displayProductDeliveryTime" product=$product}
				<p class="warning_inline" id="last_quantities"{if ($product->quantity > $last_qties || $product->quantity <= 0) || $allow_oosp || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none"{/if} >{l s='Warning: Last items in stock!'}</p>
			{/if}
			<p id="availability_date"{if ($product->quantity > 0) || !$product->available_for_order || $PS_CATALOG_MODE || !isset($product->available_date) || $product->available_date < $smarty.now|date_format:'%Y-%m-%d'} style="display: none;"{/if}>
				<span id="availability_date_label">{l s='Availability date:'}</span>
				<span id="availability_date_value">{dateFormat date=$product->available_date full=false}</span>
			</p>
			<!-- Out of stock hook -->
			<div id="oosHook"{if $product->quantity > 0} style="display: none;"{/if}>
				{$HOOK_PRODUCT_OOS}
			</div>

Le problème que je rencontre, c'est que pour un produit qui possède des déclinaisons dont certaines sont indisponibles j'ai quand même le message "en stock" au lieu de "Ce produit n'est plus en stock avec ces options mais reste disponible avec d'autres options".

Ce qui me paraît encore plus étrange c'est que le message situé à l'emplacement initial, c'est à dire dans la colonne du centre sous la description courte est correct comme vous pouvez le voir sur la capture d'écran ci-jointe. post-520300-0-36149700-1483528888_thumb.jpg

 

 

 

Par avance, merci à la communauté.

Edited by Céline13240 (see edit history)
Link to comment
Share on other sites

Bonjour,

 

Je n'ai pas trouvé de solution mais je pense un peu mieux cerner le problème. En changeant de place le code concernant la mention de la disponibilité du produit, il semblerait que cela modifie la façon dont prestashop calcule la quantité des produits disponibles. 

 

Prestashop au lieu de prendre en compte uniquement la quantité disponible pour une déclinaison, il va prendre en compte la quantité total de produit disponible, additionnant ainsi les quantités de toutes les déclinaisons d'où la mention "en stock". Ce qui explique aussi pourquoi j'observe ce phénomène uniquement pour les produits avec déclinaisons (ce qui représente la plus grosse part des articles présents sur la boutique).

 

Par ailleurs, en cherchant dans les différents fichiers, j'ai repéré cette ligne de code dans le fichier Product.php que je suppose être responsable de ce mécanisme mais je n'en suis pas sûre du tout :

p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`,

Voilà où j'en suis dans mes investigations.

 

J'espère qu'une âme charitable saura m'aider.

 

Merci d'avance.

Link to comment
Share on other sites

Bonjour,

 

Ca y est j'ai trouvé la solution même si je comprends pas ce comportement de prestashop et c'était tout con.

 

J'avais uniquement fait un copier/coller. Autrement dit, je n'avais pas supprimer le code à son emplacement initial. Et c'est précisément ça qui posait souci.

 

En fait, j'ai fait un autre test en positionnant le même bout de code mais cette fois-ci sous la référence. Ainsi, sur ma fiche produit j'avais 3 fois l'info à des endroits différents. Seul le 1er label concernant la disponibilité du produit (ainsi que la quantité en stock) était correcte. C'est de cette façon que j'ai compris qu'il fallait supprimer le code initial (ce que je comptais faire au départ mais je voulais voir si ça fonctionnait correctement avant de supprimer le code à son emplacement initial ==>Grossière erreur).

 

Par contre, si quelqu'un est en capacité de m'expliquer pourquoi prestashop a eu ce comportement, je suis preneuse :).

 

J'espère que cette mésaventure sera utile pour d'autres.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...