Jump to content

Prodotti in negativo. carrelli ritardati 1.7.2.2


beginsnc

Recommended Posts

Ciao a tutti.

 

Ho un grosso problema. Cerco di descriverlo:

  • Un cliente mette un prodotto nel carrello ma non fa il checkout
  • Il giorno dopo apre il carrello e completa l'acquisto.
  • il prodotto, che nel mentre è andato a zero, passa in negativo.
  • A quel punto non si ha modo di esaurire la richiesta del cliente e si fa una pessima figura.

Possibile che non venga fatto nessun controllo sulle quantità in fase di checkout? Ma solo quando il prodotto viene aggiunto al carrello? Se così fosse è una cosa molto grave.

 

Aspetto che qualcuno di voi mi dia risposta. Grazie mille.

 

Link to comment
Share on other sites

Dipende dalla configurazione Quando fuori magazzino dell'articolo.

Se si seleziona Rifiuta gli ordini, il sistema ti blocca avvisandoti che uno o più articoli non sono più disponibili.

Per quanto detto faccio riferimento alla versione 1.6 di Prestashop, ma credo che questo comportamento avvenga anche nella 1.7.

Link to comment
Share on other sites

Dipende dalla configurazione Quando fuori magazzino dell'articolo.

Se si seleziona Rifiuta gli ordini, il sistema ti blocca avvisandoti che uno o più articoli non sono più disponibili.

Per quanto detto faccio riferimento alla versione 1.6 di Prestashop, ma credo che questo comportamento avvenga anche nella 1.7.

Ti ringrazio per la risposta.

Ho fatto anche un altra prova:

  • mi sono loggato come utente
  • ho messo un prodotto nel carrello
  • sono uscito e rientrato come amministratore
  • ho impostato il prodotto di prima a zero
  • rientrato come utente... mi faceva completare l'ordine.

Posso chiedertu cortesemente di fare la stessa prova? Per un eventuale verifica?

Grazie ancora per la disponibilità.

Link to comment
Share on other sites

  • 2 weeks later...

ciao, sarebbe opportuno secondo me aprire un segnalazione (forse è un bug) a questo link ti riporto quanto scritto

Segnalare un bug/Suggerire una funzionalità
Il Bug Tracker è l'unico luogo che prende in considerazione le segnalazioni di bug. Le segnalazioni devono essere redatte in inglese.
La piattaforma di feedback di PrestaShop è l'unico luogo in cui inserire suggerimenti per l'aggiunta di nuove funzioni alla soluzione PrestaShop. I suggerimenti devono essere redatti in inglese. 

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...
On 26/11/2017 at 8:41 PM, rancidio said:

Ciao a tutti, confermo che anche io con la versione 1.7.2.4 riscontro lo stesso identico problema, ho controllato tutte le impostazioni e fatto alcuni test, sembra proprio che sia un bug.

Qualcuno ha risolto in qualche modo?

Ciao.

Hai poi risolto questo problema??

Link to comment
Share on other sites

Ho dato un controllo ai file della versione 1.7.2.4 e mancano proprio le istruzioni per verificare se uno o più articoli nel carrello sono disponibili o meno, di conseguenza il sistema consente di effettuare l'ordine.

Bisogna attendere le prossime versioni e verificare se inseriscono questo controllo.

Per ovviare momentaneamente a questo problema ho buttato giù qualche riga di codice prendendo spunto dalla versione 1.6.

I file da aggiornare sono i controller del carrello e dell'ordine.

File OrderController.php

Metodo postProcess, appena prima dell'istruzione

 parent::postProcess();

Va inserito il seguente codice

    	/***** modifica per controllo disponibilità articoli nel carrello *****/
    	$product = $this->context->cart->checkQuantities(true);
    	
    	if ((int)$id_product = $this->context->cart->checkProductsAccess()) {
    		Tools::redirect('index.php?controller=cart&action=show');
    	}
    	 
    	// If some products have disappear
    	if (is_array($product)) {
    		Tools::redirect('index.php?controller=cart&action=show');
    	}
    	
    	/**********************************************************************/

File CartController.php

Metodo init, appena dopo l'istruzione 

parent::init();

Va inserito il seguente codice

        /***** modifica per controllo disponibilità articoli nel carrello *****/        
        $product = $this->context->cart->checkQuantities(true);
        
        if ((int)$id_product = $this->context->cart->checkProductsAccess()) {
        	$this->errors[] =  $this->trans(
        			'An item in your cart is no longer available (%1s). You cannot proceed with your order.', array(Product::getProductName((int)1)), 'Shop.Notifications.Error'
        			);
        }
         
        // If some products have disappear
        if (is_array($product)) {
        	$this->errors[] =  $this->trans(
        			'An item (%1s) in your cart is no longer available in this quantity. You cannot proceed with your order until the quantity is adjusted.', array( $product['name']), 'Shop.Notifications.Error'
        			);
        }
        /**********************************************************************/

In caso di aggiornamento bisognerà aggiornare nuovamente questi file.

In alternativa si può eseguire l'override dei 2 file che allego, da notare che probabilmente prima o poi il supporto degli override verrà eliminato.

Ovviamente poi vanno fatte le 2 traduzioni dei messaggi di errore.

Come al solito prima di apportare le modifiche consiglio di fare una copia di backup dei file e del database, inoltre consiglio di apportare le modifiche prima su una versione di test o in locale. 

Edited by codencode (see edit history)
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Ciao code,

non capisco questa forzatura...se nelle opzioni di configurazione avete la possibilitá di rifiutare gli ordini fuori magazzino un motivo c'é..per cui se non volete che i clienti ordinano prodotto F.Mag..abilitate questa funzionalitá. Ovvio che se é disabilitata il cliente che il giorno prima aveva un prodotto nel carrello il quale é andato a zero potrá fare l'ordine. Forse mi perdo qualcosa?:-).

Io invece ho trovato un bug noioso sul modulo Legal Compliance ( problema traduzione con sito multilingua e con smarty cache attivata) che riporteró appena possibile su forge ed anche quá...giá corretto ovviamente.

 

ciao

Link to comment
Share on other sites

Non è una forzatura, se l'articolo non è più disponibile (quantità = 0 e opzione "quando fuori magazzino" impostata su nega ordine) il sistema dovrebbe avvisare e non permettere l'ordine. Fino alla versione 1.6 il sistema funzionava mentre nella 1.7 non è stato inserito il controllo.

Link to comment
Share on other sites

Ok allora c'é qualche cosa che non quadra nelle vostre versioni, ma ci stá che mi possa sbagliare.

Io ho fatto il test descritto sopra su due 1.7.2.4 che ho e funziona regolarmente. Se imposto la funzione "permetti ordine di prodotti fuori mag"  su NO....ricevo correttamente il messaggio e non mi fá eseguire l'ordine in fase di checkout...provato anche con un modulo supercheckout..

Link to comment
Share on other sites

  • 3 years later...
On 12/1/2018 at 12:20 PM, codencode dice:

Ho dato un controllo ai file della versione 1.7.2.4 e mancano proprio le istruzioni per verificare se uno o più articoli nel carrello sono disponibili o meno, di conseguenza il sistema consente di effettuare l'ordine.

Bisogna attendere le prossime versioni e verificare se inseriscono questo controllo.

Per ovviare momentaneamente a questo problema ho buttato giù qualche riga di codice prendendo spunto dalla versione 1.6.

I file da aggiornare sono i controller del carrello e dell'ordine.

File OrderController.php

Metodo postProcess, appena prima dell'istruzione



 parent::postProcess();

Va inserito il seguente codice



    	/***** modifica per controllo disponibilità articoli nel carrello *****/
    	$product = $this->context->cart->checkQuantities(true);
    	
    	if ((int)$id_product = $this->context->cart->checkProductsAccess()) {
    		Tools::redirect('index.php?controller=cart&action=show');
    	}
    	 
    	// If some products have disappear
    	if (is_array($product)) {
    		Tools::redirect('index.php?controller=cart&action=show');
    	}
    	
    	/**********************************************************************/

File CartController.php

Metodo init, appena dopo l'istruzione 



parent::init();

Va inserito il seguente codice



        /***** modifica per controllo disponibilità articoli nel carrello *****/        
        $product = $this->context->cart->checkQuantities(true);
        
        if ((int)$id_product = $this->context->cart->checkProductsAccess()) {
        	$this->errors[] =  $this->trans(
        			'An item in your cart is no longer available (%1s). You cannot proceed with your order.', array(Product::getProductName((int)1)), 'Shop.Notifications.Error'
        			);
        }
         
        // If some products have disappear
        if (is_array($product)) {
        	$this->errors[] =  $this->trans(
        			'An item (%1s) in your cart is no longer available in this quantity. You cannot proceed with your order until the quantity is adjusted.', array( $product['name']), 'Shop.Notifications.Error'
        			);
        }
        /**********************************************************************/

In caso di aggiornamento bisognerà aggiornare nuovamente questi file.

In alternativa si può eseguire l'override dei 2 file che allego, da notare che probabilmente prima o poi il supporto degli override verrà eliminato.

Ovviamente poi vanno fatte le 2 traduzioni dei messaggi di errore.

Come al solito prima di apportare le modifiche consiglio di fare una copia di backup dei file e del database, inoltre consiglio di apportare le modifiche prima su una versione di test o in locale. 

Ho lo stesso bug, provo ad implementare questa soluzione... e: FUNZIONA!!!!!! Grazie Mille 

 

A presto

Edited by Marcella*M* (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...