Jump to content

[RISOLTO]Soluzione al problema: prodotto non disponibile perchè già nel carrello


Recommended Posts

Avrò una clientela “particolare” ma è capitato più volte che mi chiamassero dicendo che un codice era esaurito quando invece era disponibile in quantità 1 .

Questo succede quando il cliente non si accorge di aver già il prodotto nel carrello ( possibile che lo abbia aggiunto due giorni prima ) e quindi il sistema gli fa vedere il prodotto non disponibile ( proprio perchè ha preso lui l’ultimo ).

qualche idea su come risolvere?

 

Io vorrei fare in modo tale che se il cliente ha già l’ultimo codice nel carrello viene avvisato che ha già nel carrello l’ultimo prodotto disponibile.

Non so se è possibile ma penso sia l’unica soluzione.

Edited by Ste-WD (see edit history)
Link to comment
Share on other sites

invece la soluzione più logica ( di un eCommerce serio ) è quella di azzerare i carrelli abbandonati alla mezzanotte di ogni giorno e ripristinare le quantità

Saluto

Link to comment
Share on other sites

1 hour ago, solved said:

invece la soluzione più logica ( di un eCommerce serio ) è quella di azzerare i carrelli abbandonati alla mezzanotte di ogni giorno e ripristinare le quantità

Saluto

Ciao,

quella è una cosa che potrebbe servire ma non risolve il mio problema.

Il problema è che subito dopo l'inserimento dell'ultimo articolo nel carrello. è in quel momento che il cliente si sente spaesato nel vedere il prodotto appena acquistato non più disponibile.

 

Link to comment
Share on other sites

Salve Ste_wd,

il problema é noto su Github e riguarda proprio shop che lavorano con piccole quantiá nei prodotti...é un problema in effetti é direi abbastanza comune negli e-commerce perché quante volte mettiamo  prodotti nel carrello eppoi li  lasciamo lí....dopo qualche giorno torniamo e naturalmente se ci troviamo il messaggio che il prodotto non é disponibile...e quindi bye bye cliente perché ovviamente abbandona.

Peró l'opzione re-desplay cart al login...non só in italiano come é scritta ( sono sempre su piattaforme inglesi). .l'ha attivata?La trova nella configurazione clienti  Perché in questo modo forse potrebbe aggiare il problema:-)..quando il cliente torna viene ridirezionato al carrello. 

 

ciao

 

 

Link to comment
Share on other sites

Oltre agli utili consigli ricevuti, potrei aggiungere la seguente implementazione per evitare che, appena dopo aver aggiunto l'ultimo prodotto nel carrello, l'utente veda nella pagina la dicitura "Prodotto esaurito".

Nota: è un'idea "rozza", con codice ottimizzabile  e non testata nei vari possibili scenari che uno shop online possa presentare.
In pratica un controllo provvede a nascondere all'utente che abbia appena inserito l'ultimo prodotto nel carrello, il messaggio "Prodotto non disponibile".

Sarà necessario modificare con un editor di testo il file product-add-to-cart.tpl che trovi in /themes/nome-del-tema-utilizzato/templates/catalog/_partials/  oppure  in /themes/classic/templates/catalog/_partials/  (dipende dai file che sono presenti o meno nella cartella del tema che stai utilizzando).

  1. Appena dopo il codice:
    {if !$configuration.is_catalog}

    aggiungere il seguente:

    {$in_cart = 0}
    {foreach from=$cart['products'] item='cart_product'}
      {if $cart_product['id_product'] == $product.id}
        {$in_cart = 1}
      {/if}
    {/foreach}
  2. Modificare il codice:
    {block name='product_availability'}
      <span id="product-availability">
        {if $product.show_availability && $product.availability_message}
          {if $product.availability == 'available'}
            <i class="material-icons rtl-no-flip product-available">&#xE5CA;</i>
          {elseif $product.availability == 'last_remaining_items'}
            <i class="material-icons product-last-items">&#xE002;</i>
          {else}
            <i class="material-icons product-unavailable">&#xE14B;</i>
          {/if}
          {$product.availability_message}
        {/if}
      </span>
    {/block}

    con il seguente:

    {block name='product_availability'}
      <span id="product-availability">
      {if $product.show_availability && $product.availability_message}
        {if $product.availability == 'available'}
          <i class="material-icons rtl-no-flip product-available">&#xE5CA;</i>
          {$product.availability_message}
        {elseif $product.availability == 'last_remaining_items'}
          <i class="material-icons product-last-items">&#xE002;</i>
          {$product.availability_message}
        {else}
          {if !$in_cart}
            <i class="material-icons product-unavailable">&#xE14B;</i>
          {/if}
        {/if}
        {if !$in_cart}
          {$product.availability_message}
        {/if}
      {/if}
      </span>
    {/block}

     

Link to comment
Share on other sites

On 11/9/2019 at 7:49 PM, ThemeBooster.com said:

Oltre agli utili consigli ricevuti, potrei aggiungere la seguente implementazione per evitare che, appena dopo aver aggiunto l'ultimo prodotto nel carrello, l'utente veda nella pagina la dicitura "Prodotto esaurito".

Nota: è un'idea "rozza", con codice ottimizzabile  e non testata nei vari possibili scenari che uno shop online possa presentare.
In pratica un controllo provvede a nascondere all'utente che abbia appena inserito l'ultimo prodotto nel carrello, il messaggio "Prodotto non disponibile".

Sarà necessario modificare con un editor di testo il file product-add-to-cart.tpl che trovi in /themes/nome-del-tema-utilizzato/templates/catalog/_partials/  oppure  in /themes/classic/templates/catalog/_partials/  (dipende dai file che sono presenti o meno nella cartella del tema che stai utilizzando).

  1. Appena dopo il codice:
    
    {if !$configuration.is_catalog}

    aggiungere il seguente:

    
    {$in_cart = 0}
    {foreach from=$cart['products'] item='cart_product'}
      {if $cart_product['id_product'] == $product.id}
        {$in_cart = 1}
      {/if}
    {/foreach}
  2. Modificare il codice:
    
    {block name='product_availability'}
      <span id="product-availability">
        {if $product.show_availability && $product.availability_message}
          {if $product.availability == 'available'}
            <i class="material-icons rtl-no-flip product-available">&#xE5CA;</i>
          {elseif $product.availability == 'last_remaining_items'}
            <i class="material-icons product-last-items">&#xE002;</i>
          {else}
            <i class="material-icons product-unavailable">&#xE14B;</i>
          {/if}
          {$product.availability_message}
        {/if}
      </span>
    {/block}

    con il seguente:

    
    {block name='product_availability'}
      <span id="product-availability">
      {if $product.show_availability && $product.availability_message}
        {if $product.availability == 'available'}
          <i class="material-icons rtl-no-flip product-available">&#xE5CA;</i>
          {$product.availability_message}
        {elseif $product.availability == 'last_remaining_items'}
          <i class="material-icons product-last-items">&#xE002;</i>
          {$product.availability_message}
        {else}
          {if !$in_cart}
            <i class="material-icons product-unavailable">&#xE14B;</i>
          {/if}
        {/if}
        {if !$in_cart}
          {$product.availability_message}
        {/if}
      {/if}
      </span>
    {/block}

     

 

Grazie mille per i preziosi consigli !

Non so se fattibile ma ci provo:

Un'ultima cosa: Sarebbe possibile al posto di "nascondere all'utente che abbia appena inserito l'ultimo prodotto nel carrello, il messaggio "Prodotto non disponibile"" far comparire all'utente che abbia appena inserito l'ultimo prodotto nel carrello, il messaggio "Hai già l'ultimo prodotto nel carrello" ?

Link to comment
Share on other sites

1 hour ago, Ste-WD said:

 far comparire all'utente che abbia appena inserito l'ultimo prodotto nel carrello, il messaggio "Hai già l'ultimo prodotto nel carrello" ?

{block name='product_availability'}
      <span id="product-availability">
        {if $product.show_availability && $product.availability_message}
          {if $product.availability == 'available'}
            <i class="material-icons rtl-no-flip product-available">&#xE5CA;</i>
			{$product.availability_message}
          {elseif $product.availability == 'last_remaining_items'}
            <i class="material-icons product-last-items">&#xE002;</i>
			{$product.availability_message}
          {else}
            {if !$in_cart}
			  <i class="material-icons product-unavailable">&#xE14B;</i>
            {/if}
          {/if}
		  {if !$in_cart}
            {$product.availability_message}
		  {/if}
		  {if $product.quantity == 0}
		    {l s='You already have the latest product in the cart!' d='Shop.Theme.Global'}
		  {/if}
        {/if}
      </span>
    {/block}

Note: il codice suggerito andrebbe testato approfonditamente, soprattutto per i prodotti con combinazioni.
Inoltre, nel caso tu stessi utilizzando una Prestashop 1.7.6.x, il valore d='Shop.Theme.Global' andrebbe sostituito con d='Shop.Nomedeltuotema'

Link to comment
Share on other sites

  • 11 months later...
  • 3 weeks later...
  • 7 months later...

Se può essere utile a qualcuno modificando la seconda parte del codice (ho evidenziato in neretto quello che ho cambiato) sono riuscito a risolvere il problema della scritta "Disponibile Disponibile" (due volte) sotto al prodotto:

{block name='product_availability'}
  <span id="product-availability">
  {if $product.show_availability && $product.availability_message}
    {if $product.availability == 'available'}
      <i class="material-icons rtl-no-flip product-available">&#xE5CA;</i>
      {$product.availability_message}
    {elseif $product.availability == 'last_remaining_items'}
      <i class="material-icons product-last-items">&#xE002;</i>
      {$product.availability_message}
    {else}
      {if !$in_cart}
        <i class="material-icons product-unavailable">&#xE14B;</i>
        {$product.availability_message}
      {/if}
    {/if}
    {if !$in_cart}
      {$product.availability_message}
    {/if}

  {/if}
  </span>
{/block}

Ciao,
Fabrizio.

Link to comment
Share on other sites

  • 4 months later...
5 hours ago, ietax said:

Non riesco a trovare la sezione

 

{block name='product_availability'}

 

all'interno del mio file product-add-to-cart.tpl

 

qualcuno ha un suggerimento? grazie

Strano che non riesci a trovarlo... che versione di Prestashop stai usando? Nella 1.7.7.8 questa sezione risulta presente nel file product-add-to-cart.tpl

Saluti,
Fabrizio Carloni.

Link to comment
Share on other sites

  • 3 months later...

Ho la verisone 1.7.7.3 con warehouse  theme ed il contenuto del file è questo

 

<div class="product-add-to-cart pt-3">

    {if !$configuration.is_catalog}
        {block name='product_quantity'}
            <div class="row extra-small-gutters product-quantity ">
                <div class="col col-12 col-sm-auto col-add-qty">
                    <div class="qty ">
                        <input
                                type="number"
                                name="qty"
                                id="quantity_wanted"
                                value="{$product.quantity_wanted}"
                                class="input-group "
                                min="{$product.minimal_quantity}"
                        >
                    </div>
                </div>
                <div class="col col-12 col-sm-auto col-add-btn ">
                    <div class="add">
                        <button
                                class="btn btn-primary btn-lg add-to-cart"
                                data-button-action="add-to-cart"
                                type="submit"
                                {if !$product.add_to_cart_url}
                                    disabled
                                {/if}
                        >
                            <i class="fa fa-shopping-bag fa-fw bag-icon" aria-hidden="true"></i>
                            <i class="fa fa-circle-o-notch fa-spin fa-fw spinner-icon" aria-hidden="true"></i>
                            {l s='Add to cart' d='Shop.Theme.Actions'}
                        </button>

                    </div>
                </div>
                {hook h='displayAfterProductAddCartBtn' product=$product}
            </div>
            {hook h='displayProductActions' product=$product}
        {/block}

        {block name='product_minimal_quantity'}
            <p class="product-minimal-quantity">
                {if $product.minimal_quantity > 1}
                    <i class="fa fa-info-circle" aria-hidden="true"></i>
                    {l
                    s='The minimum purchase order quantity for the product is %quantity%.'
                    d='Shop.Theme.Checkout'
                    sprintf=['%quantity%' => $product.minimal_quantity]
                    }
                {/if}
            </p>
        {/block}
    {/if}

</div>

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...