Jump to content

[RESOLU] Problème affichage produit hors stock commandable


sylastenny

Recommended Posts

Bonjour,

Mon problème est le suivant :

Lorsque que j'indique dans la BO sur la fiche produit "quantité : 0"
Que je coche "Par défaut" si rupture de stock
Que j'indique mon message dans "Message lorsque hors-stock mais commandable".

Le produit se retrouve affiché en stock sur le site et la quantité passe à 1 dans la fiche produit. De plus mon message n'apparait nul part!

J'ai oublié de préciser que dans Préférence / Produits, "Autoriser la commande de produits hors stock" la coche est sur oui.

Merci de m'éclaircir sur ce point.

Link to comment
Share on other sites

Je viens d'analyser le code et voici ce que je trouve

Dans product-list.tpl ligne 19
{if ($product.allow_oosp OR $product.quantity > 0)}{l s='Available'}{else}{l s='Out of stock'}{/if}

allow_oosp est à 1 car j'ai cocher "Si rupture de stock : Accepter les commandes "
et quantity = 0

donc la j'ai "en stock" afficher ! hors j'en ai pas en stock et j'autorise quand même la commande !

le problème vient du moment ou le stock est à 0 (champ quantity) et qu'on autorise quand même la commande ! il considère donc qu'il y a un produit en stock ! mais les libellés affichés ne sont pas les bons ! et j'ai essayer plein de conbinaison jamais réussi à afficher "sur commande" que j'ai mis dans "Message lorsque hors-stock mais commandable :"

il existe de toute facon que deux possibilités !"en stock" et "hors stock d'après cette ligne
{if ($product.allow_oosp OR $product.quantity > 0)}{l s='Available'}{else}{l s='Out of stock'}{/if}

Pas encore trouver la solution

Link to comment
Share on other sites

Voici la solution que j'ai trouver pour la liste des produits :

C'est du smarty qui se trouve dans le fichier theme/votretheme/product-list.tpl

a la ligne 19 :

{if ($product.allow_oosp OR $product.quantity > 0)}{l s='Available'}{else}{l s='Out of stock'}{/if}



que j'ai remplacé par :

               {if ($product.quantity > 0)}{l s='Available'}
               {elseif ($product.quantity==0 AND $product.allow_oosp==0)}{l s='Out of stock'}
               {else}{l s=$product.available_later}
               {/if}



Si la quantité >0 affichage "en stock"
Si la quantité = 0 et "Refuser les commandes" affichage "hors stock"
si la quantité = 0 et "Accepter les commandes" Affichage du champ available_later (champ Message lorsque hors-stock mais commandable :"

Voila reste à corrigé pour la fiche de détail d'un produit où la même si un produit quantité = 0 et refuser la commande, j'ai le bouton "ajouter au panier" d'actif !

Link to comment
Share on other sites

Voila pour la fichier détail, j'ai été au plus simple les infos étaient bien présente mais masquer

Dans le fichier theme\votretheme\product.tpl, ligne 204

j'ai viré

{if ($allow_oosp && $product->quantity == 0 && !$product->available_later) || (!$product->available_now && $display_qties != 1) } style="display:none;"{/if}



La disponibilité s'affiche tous les temps mais elle est correcte.

vous pouvez passer le premier message en résolu.

Link to comment
Share on other sites

Petite précision au passage, vu qu'on affiche constamment Disponibilité : il faut remplir le champ "Message quand en stock :" je regarderai plus tard pour pas le rentre obligatoire mais la je dois avanc", j'ai perdu déjà trop de temps sur ce prob

Après l'équipe prestashop est surement très prise et très sollicité mais bon y a quand même pas mal de bug et de petit problème ou des fonctionnalités ou j'aurai fait différement ! leur manque je pense un peu de recul ! mon problème d'accessoire lié a + 500 produits c'est pas normal, ils auraient à mon avis du pensé à ca des le départ! un site de e-commerce y a en général quelques centaines de produits.

Mon projet est trop avancé maintenant pour revenir en arrière mais je regrette un peu de choix de prestashop ! heureusement que je maitrise PHP et trouve des solutions mais en contre parti je perd bcp de temps. Heureusement que c'est pas trop mal coder même si je trouve qu'il y a trop de dépendance entre class et l'avantage de smarty et la gestion multilingue sont un bon plus pour moi. Ah la gestion des modules et le principe est aussi très bon !

Je ne peux encourager l'équipe à perséverer et peut être a sollicité plus les anciens (ceux qui ont pas mal d'année d'expérience en dev) pour les défaut de jeunesse.

Link to comment
Share on other sites

  • 6 months later...

Une petite correction qui affiche le texte personnalisé

\themes\tontheme\product-list.tpl ligne 7

{if ($product.allow_oosp OR $product.quantity > 0)}{l s='Available'}{else}{l s='Out of stock'}{/if}



à remplacer par


{if ($product.quantity > 0)}{l s=$product.available_now}
{elseif ($product.quantity==0 AND $product.allow_oosp==0)}{l s='Hors stock'}
{else}{l s=$product.available_later}
{/if}
 

Link to comment
Share on other sites

  • 1 year later...

Je déterre un vieux sujet mais qui est toujours d'actualité :)

En effet sous presta 1.4.3 le problème est toujours présent en cas de commande autorisée hors-stock. Donc la modif proposée ci-dessus fonctionne parfaitement sauf qu'il reste le problème du résumé de commande qui affiche toujours l'icone verte indiquant le produit disponible.
Je vous propose une petite modification dans shopping-cart-product-line.tpl:

Il suffit de remplacer:

    
       {if $product.active AND ($product.allow_oosp OR ($product.quantity <= $product.stock_quantity)) AND $product.available_for_order AND !$PS_CATALOG_MODE}

       {else}

                {/if}


par:

    
       {if $product.active AND ($product.quantity <= $product.stock_quantity) AND $product.available_for_order AND !$PS_CATALOG_MODE}

       {elseif $product.active AND ($product.allow_oosp && ($product.quantity > $product.stock_quantity)) AND $product.available_for_order AND !$PS_CATALOG_MODE}            

       {else}

       {/if}


Pensez à mettre une icone warning.gif dans votre dossier img/icons.

Pour info, les n° de ligne de code ont changé depuis le dernier post et la ligne à supprimer dans product.tpl se situe ligne 337 et celles à modifier dans product-list.tpl à la ligne 44.

Encore merci à Infovalis et Olecorre, cela rend bien service quand on vend des pièces réalisées à l'unité sans stocks énormes.

Link to comment
Share on other sites

  • 3 months later...

Bonjour,

 

Je fais ressortir le sujet également car confronté à ce souci également sur ma boutique je ne parviens pas à mes fins.

 

je suis sous la V1.4.4 et ai les options :

gestion des stock : oui

autoriser la commande de produits hors stock : oui

 

et dans mon thème sur le fichier shopping-cart-product-line.tpl j'ai fait lees modifs pour les icones available et unavailable, mais ce ne fonctionne pas, j'ai toujours les icones verts, alors que ca se met bien en rouge quand l'option autoriser la commande hors stock est à non.

 

pour ma part, c'est ce seul point qui m'intéresse.

 

code ci dessous :

 

    {if $product.active AND ($product.quantity <= $product.stock_quantity) AND $product.available_for_order AND !$PS_CATALOG_MODE}
  <img src="{$img_dir}icon/available.gif" alt="{l s='Available'}" width="14" height="14" />
    {elseif $product.active AND ($product.allow_oosp && ($product.quantity > $product.stock_quantity)) AND $product.available_for_order AND !$PS_CATALOG_MODE}		   
  <img src="{$img_dir}icon/unavailable.gif" alt="{l s='Delai de reassort'}" width="14" height="14" />
    {else}
  <img src="{$img_dir}icon/unavailable.gif" alt="{l s='Out of stock'}" width="14" height="14" />

Link to comment
Share on other sites

Avez-vous vidé vos caches (smarty et navigateur) ainsi que le répertoire /tools/smarty/compile (sauf le fichier index) ?

Ensuite rafraichissez votre page.

 

Toute modification d'un fichier tpl n'est prise en compte qu'après une recompilation (et comme "forcer la compilation"ne fonctionne pas toujours, autant vider le répertoire /compile pour forcer Presta à le faire)

Link to comment
Share on other sites

  • 4 months later...

Bonjour,

 

comment puis-je résoudre ce problème avec la version 1.4.0.17?

 

Le fichier product-list.tpl de cette version est différente:

 

 

{if isset($products)}

<!-- Products list -->

<ul id="product_list" class="clear">

{foreach from=$products item=product name=products}

<li class="ajax_block_product {if $smarty.foreach.products.first}first_item{elseif $smarty.foreach.products.last}last_item{/if} {if $smarty.foreach.products.index % 2}alternate_item{else}item{/if} clearfix">

<div class="center_block">

<a href="{$product.link|escape:'htmlall':'UTF-8'}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home')}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} /></a>

<h3>{if isset($product.new) && $product.new == 1}<span class="new">{l s='New'}</span>{/if}<a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}</a></h3>

<p class="product_desc"><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}">{$product.description_short|truncate:360:'...'|strip_tags:'UTF-8'}</a></p>

</div>

<div class="right_block">

{if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="on_sale">{l s='On sale!'}</span>

{elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="discount">{l s='Reduced price!'}</span>{/if}

{if isset($product.online_only) && $product.online_only}<span class="online_only">{l s='Online only!'}</span>{/if}

{if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}

<div>

{if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price" style="display: inline;">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span><br />{/if}

{if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}<span class="availability">{if ($product.allow_oosp || $product.quantity > 0)}{l s='Available'}{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}{l s='Product available with different options'}{else}{l s='Out of stock'}{/if}</span>{/if}

</div>

{/if}

{if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE}

{if ($product.allow_oosp || $product.quantity > 0)}

<a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart.php')}?add&id_product={$product.id_product|intval}{if isset($static_token)}&token={$static_token}{/if}" title="{l s='Add to cart'}">{l s='Add to cart'}</a>

{else}

<span class="exclusive">{l s='Add to cart'}</span>

{/if}

{/if}

<a class="button" href="{$product.link|escape:'htmlall':'UTF-8'}" title="{l s='View'}">{l s='View'}</a>

{if isset($comparator_max_item) && $comparator_max_item}

<p class="compare"><input type="checkbox" class="comparator" id="comparator_item_{$product.id_product}" value="comparator_item_{$product.id_product}" {if isset($compareProducts) && in_array($product.id_product, $compareProducts)}checked{/if}/> <label for="comparator_item_{$product.id_product}">{l s='Select to compare'}</label></p>

{/if}

</div>

</li>

{/foreach}

</ul>

<!-- /Products list -->

{/if}

 

 

Merci

Link to comment
Share on other sites

  • 1 year later...
  • 3 years later...

Merci encore pour ce topic qui existe ! 

 

je vais mettre la solution pour prestashop 1.6.0.9 pour le product.tpl, ca pourrait servir à d'autres, débutants comme moi  :P

 

Objectif :

- afficher sur la fiche produit le message "Message si produit en rupture de stock mais précommande autorisée" 

lorsque l'on sélectionne une déclinaison qui n'est pas en stock. (car Prestashop considère que le produit est en stock si une des déclinaisons a du stock)

 

La solution de ce topic (merci  :wub: ) est de toujours afficher le message du stock, mais qui changera en fonction de la sélection. 

 

il faut donc remplir aussi Message si produit en stock mais un coup d'update en base de donnée pour tous les produits et c'est bon :) sinon c'est produit un par un... :unsure:

 

product.tpl de votre thème ou vers la ligne 210 du template par defaut

 

rechercher : 

<p id="availability_statut"{if ($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}>

remplacer par :

<p id="availability_statut">
Link to comment
Share on other sites

  • 7 months later...

J'ai un Probléme lorsque je crée un produit avec ce nom "ECRAN SAMSUNG LS24D300H LED 24’’ FHD 1920X1080" il s'affiche frontalement "ECRAN SAMSUNG LS24D300H LED 24’’ FHD..."

Pourquoi??

Merci d'ouvrir un nouveau sujet pour votre question. Celle-ci n'est pas en rapport avec le topic. La réponse est aussi bête que votre question...

  • Like 1
Link to comment
Share on other sites

Merci d'ouvrir un nouveau sujet pour votre question. Celle-ci n'est pas en rapport avec le topic. La réponse est aussi bête que votre question...

Bonjour

 

Soyez zen avec les nouveaux membres tous n'ont pas l’œil avertis comme vous semblez l'avoir. Tous n'ont pas le réflexe ou l'expérience pour trouver la réponse.

Tous ne sont pas féru de l'informatique, mais a tous on dit c'est facile c'est facile, oui c'est facile quand on sait :)

 

Si un membre pose une question qui vous semble bête regardez d'abord qui la pose, informez vous d'abord des compétences de la personne. Merci d'être compréhensif

Link to comment
Share on other sites

J'ai un Probléme lorsque je crée un produit avec ce nom "ECRAN SAMSUNG LS24D300H LED 24’’ FHD 1920X1080" il s'affiche frontalement "ECRAN SAMSUNG LS24D300H LED 24’’ FHD..."

Pourquoi??

Vous avez quel version ?

En général quand vous voyez des ... derrière et que la ligne n'est pas complète c'est un manque de place ou l'affichage pas assez large.

Vous avez mis cela comme nom du produit donc nom de la page ou comme description courte ?

 

par contre votre problème n'a pas de rapport avec le sujet merci de créer un sujet pour Vous pour Votre problème pour Votre site

et dans le forum adéquate.

 

pour éviter les mélanges et les postes remonter mille fois et vieux même si parfois c'est encore valide avec des version plus récente

je ferme le topic mais il reste visible et lisible

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...