Jump to content

Afficher délai de livraison dans le panier


Recommended Posts

Bonjour à tous, 
je cherche à afficher le délai de livraison dans le panier pour chaque produit sous prestashop 1.7 (Voir PJ).
Pour reprendre le délai d'expédition qui est indiqué dans la fiche produit.
L'un d'entre vous a t-il déjà fait cette modification ? Où modifier le code ?

Merci d'avancecart.thumb.png.2698d60a98b0b73f46a7053072280205.png

Link to comment
Share on other sites

  • 5 months later...

Bonjour,

il faut faire un override de la classe classes/Cart.php dans la méthode getProducts() dans le premier select SQL il faut ajouter :

, pl.`delivery_in_stock`

puis dans le template themes/votretheme/templates/checkout/_partials/cart-detailed-prodct-line.tpl ajouter la ligne suivante où vous voulez afficher le délai

{$product.delivery_in_stock}

Et voilà 🙂

Link to comment
Share on other sites

  • 4 months later...

Bonjour,

je suis en version 1.7.5.0

Merci pour cette piste, mais la correction du Cart.php ne m'a pas permis d'afficher la données contenue dans la table ps_product_lang champ "delivery-out-stock"

J'ai bien conscience que le problème se situe entre la chaise et le clavier, mais je cherche depuis 2 jours et c'est pénible

J'ai tenté, sur la version de dev, de corriger directement le cart.php (sans override) , sans résultat.

Le select que j'ai corrigé se trouve vers la ligne 663

// Build SELECT
        $sql->select('cp.`id_product_attribute`, cp.`id_product`, cp.`quantity` AS cart_quantity, cp.id_shop, cp.`id_customization`, pl.`name`, p.`is_virtual`,
                        pl.`description_short`, pl.`available_now`, pl.`available_later`, , pl.`delivery_in_stock`, pl.`delivery_out_stock`,
                        product_shop.`id_category_default`, p.`id_supplier`, p.`id_manufacturer`, m.`name` AS manufacturer_name, product_shop.`on_sale`, product_shop.`ecotax`, product_shop.`additional_shipping_cost`,
                        product_shop.`available_for_order`, product_shop.`show_price`, product_shop.`price`, product_shop.`active`, product_shop.`unity`, product_shop.`unit_price_ratio`,
                        stock.`quantity` AS quantity_available, p.`width`, p.`height`, p.`depth`, stock.`out_of_stock`, p.`weight`,
                        p.`available_date`, p.`date_add`, p.`date_upd`, IFNULL(stock.quantity, 0) as quantity, pl.`link_rewrite`, cl.`link_rewrite` AS category,
                        CONCAT(LPAD(cp.`id_product`, 10, 0), LPAD(IFNULL(cp.`id_product_attribute`, 0), 10, 0), IFNULL(cp.`id_address_delivery`, 0), IFNULL(cp.`id_customization`, 0)) AS unique_id, cp.id_address_delivery,
                        product_shop.advanced_stock_management, ps.product_supplier_reference supplier_reference');

 

La variable {$product.delivery_out_stock} n'est pas récupérée dans

\themes\classic\templates\checkout\_partials\cart-detailed-product-line.tpl

Merci d'avance de l'aide que pourrez m'apporter

 

 

 

Edited by Gta2019 (see edit history)
Link to comment
Share on other sites

  • 3 months later...

Oui, j'ai fini par trouver une solution.

Dans "cart.php" ajout de pl.delivery_in_stock, pl.delivery_out_stock dans la requête (ligne 664 chez moi)

Dans src\Core\Filter\FrontEndObject

dans "ProductFilter.php" , il faut ajouter 'delivery_out_stock', dans la whitelist

il suffit ensuite d'ajouter ou on veux "{$product.delivery_out_stock}" dans cart-detailed-product-line.tpl

 

 

  • Like 1
Link to comment
Share on other sites

19 minutes ago, Gta2019 said:

Oui, j'ai fini par trouver une solution.

Dans "cart.php" ajout de pl.delivery_in_stock, pl.delivery_out_stock dans la requête (ligne 664 chez moi)

Dans src\Core\Filter\FrontEndObject

dans "ProductFilter.php" , il faut ajouter 'delivery_out_stock', dans la whitelist

il suffit ensuite d'ajouter ou on veux "{$product.delivery_out_stock}" dans cart-detailed-product-line.tpl

 

 

Merci, ça marche du tonnerre ! 

Link to comment
Share on other sites

  • 6 months later...

Ca ne marche pas pour moi. Pourriez vous m'aider ?

 

PS 1.7.7.8

 

Here is my ../classes/Cart.php :

 

// Build SELECT
        $sql->select('cp.`id_product_attribute`, cp.`id_product`, cp.`quantity` AS cart_quantity, cp.id_shop, cp.`id_customization`, pl.`name`, p.`is_virtual`,
                        pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`delivery_in_stock`, pl.`delivery_out_stock`, product_shop.`id_category_default`, p.`id_supplier`,
                        p.`id_manufacturer`, m.`name` AS manufacturer_name, [..]

 

/httpdocs/src/Core/Filter/FrontEndObject/ProductFilter.php

  [..]
            'unit_price_full',
            'up_quantity_url',
            'upc',
            'update_quantity_url',
            'url',
            'weight_unit',
            'seo_availability',
            'delivery_out_stock',
        ];

        $this->whitelist($whitelist);
    }
}

 

J'ai essayé modifier le fichier themes/at_auros/templates/checkout/_partials/cart-detailed-prodct-line.tpl comme cela :

 

<div class="product-line-info">
  <a class="label" href="{$product.url}" data-id_customization="{$product.id_customization|intval}">{$product.name}</a>
  <a class="label" href="{$product.url}" data-id_customization="{$product.id_customization|intval}">{$product.delivery_out_stock}</a>
</div>

 

Je n'arrive pas a utiliser la variable {$product.delivery_out_stock}.  Ca marche pas ;( Rien de s'affiche dans mon panier.

 

Link to comment
Share on other sites

Bonjour Michero,

si vous ne mettez que delivery_out_stock dans cart-detailed-prodct-line.tpl , vous ne pourrez afficher que le délai spécifique de rupture de stock

que vous aurez indiqué dans la fiche produit "Délai de livraison des produits épuisés avec commande autorisée:" (voir pièce jointe)

Je vous conseilles donc de mettre un "if"

        <div class="texte">
          Sur commande
          {if $product.delivery_out_stock}
          , Délai: {$product.delivery_out_stock}
          {else}
          , Délai: 8/10 jours
          {/if}
        </div>

 

delai.jpg

  • Like 1
Link to comment
Share on other sites

En fait, je n'ai pas tout à fait compris ce que je faisais :) J'ai reproduit un peu bêtement ce que j'ai lu dans ce post et d'autres. Grace a vous @Gta2019 j'ai commencé à réfléchir hahaha 

Du coup - C'est pas uniquement des variables {$product.delivery_out_stock} et {$product.delivery_in_stock} dont j'ai besoin mais aussi de ... {$product.delivery_information} !!

 

 

"Délai de livraison spécifique pour ce produit" => {$product.delivery_in_stock}

"Délai de livraison des produits épuisés avec commande autorisée:" => {$product.delivery_out_stock}

"Délai de livraison par défaut" => {$product.delivery_information}

 

 

Afin de rajouter le délai de livraison Par Defaut au niveau de mon panier j'ai modifié uniquement le fichier themes/le_nom_de_mon_theme/templates/checkout/_partials/cart-detailed-prodct-line.tpl :

 

[..]

      <a class="label" href="{$product.url}" data-id_customization="{$product.id_customization|intval}">{$product.name}</a>
      <a class="delivery-information">{$product.delivery_information}</a>   <===== ICI

[..]

 

avec un bon class. Voila, j'ai mon "Délai de livraison par défaut" . Par contre mtn je bloque sur un IF :


 

      {If "Délai de livraison spécifique pour ce produit" } //si cette valeur exist

        <a class="delivery-information">{$product.delivery_in_stock}</a>

      {elseif "Délai de livraison des produits épuisés avec commande autorisée:"} //si cette valeur exist

            <a class="delivery-information">{$product.delivery_out_stock}</a>

      {else}

     <a class="delivery-information">{$product.delivery_information}</a>

       {/if}


J'ai pensé a un truc comme cela :

 

{if $product.additional_delivery_times == 1}
    {if $product.delivery_information}
        <span class="delivery-information">{$product.delivery_information}</span>
    {/if}
{elseif $product.additional_delivery_times == 2}
    {if $product.quantity > 0}
        <span class="delivery-information">{$product.delivery_in_stock}</span>
    {elseif $product.quantity <= 0 && $product.add_to_cart_url}
        <span class="delivery-information">{$product.delivery_out_stock}</span>
    {/if}
{/if}


 

Mais la  variable $product.additional_delivery_times n'est pas définie alors je ne sais pas comment faire... des idées ?

Edited by michero (see edit history)
Link to comment
Share on other sites

Merci pour compliments.

Je ne suis pas développeur. J'ai juste quelques notions en php/mysql et à force de bricoler et de chercher comme vous, je

commence à comprendre le merveilleux monde de prestashop.

J'y passe parfois du temps, mais c'est beaucoup moins cher que de passer par une agence

La dernière fois, ils m'ont fait un devis à plus de 3000€ pour une simple MAJ de module !

Pour en revenir à votre demande, j'ai pour ma part mis le texte en dur (Délai: 8/10 jours), à la place de $product.delivery_information

et je ne me sert pas de $product.additional_delivery_times

le délai par défaut et $product.delivery_out_stock me suffisent pour informer mes clients.

Le texte en dur n'est pas la façon la plus propre, j'en ai conscience, mais ça fonctionne bien.

Bon courage

 

 

Link to comment
Share on other sites

Malheureusement pour moi c'est plus compliqué que ca, car j'ai deux Délais d'envoi dans ma boutique et chaque produit a son propre Délais. Voici la solution :

    <div class="delivery-information">
      {if $product.delivery_in_stock}
        <p>{$product.delivery_in_stock}</p>
      {else}
        <p>{$product.delivery_information}</p>
      {/if}
    </div>
 

...tout simplement :) 

Edited by michero (see edit history)
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...