b1000 Posted January 29, 2020 Share Posted January 29, 2020 (edited) Buonasera, ho notato un comportamento strano e problematico su prestashop (testo anche all'ultima release, 1.7.6.3). Se ordino con bonifico bancario un prodotto CHE HO IN MAGAZZINO tutto funziona correttamente, l'ordine va nello stato "In attesa di pagamento con bonifico bancario", in questo modo posso processare MANUALMENTE l'ordine non appena ricevo il bonifico. MA per gli ordini di articoli non in magazzino (per i quali ho abilitato comunque la possibilità di ordinare, quando acquistati con bonifico bancario il sistema li processa saltando la mia autorizzazione. in sostanza passa AUTOMATICAMENTE da "In attesa di pagamento con bonifico bancario" a "pagamento remoto accettato". Qualche idea? qualcuno può provare a simulare il problema? Ci sto impazzendo 😕 Edited April 22, 2020 by b1000 (see edit history) Link to comment Share on other sites More sharing options...
pierzale Posted April 6, 2020 Share Posted April 6, 2020 On 1/29/2020 at 3:49 AM, b1000 said: Buonasera, ho notato un comportamento strano e problematico su prestashop (testo anche all'ultima release, 1.7.6.3). Se ordino con bonifico bancario un prodotto CHE HO IN MAGAZZINO tutto funziona correttamente, l'ordine va nello stato "In attesa di pagamento con bonifico bancario", in questo modo posso processare MANUALMENTE l'ordine non appena ricevo il bonifico. MA per gli ordini di articoli non in magazzino (per i quali ho abilitato comunque la possibilità di ordinare, quando acquistati con bonifico bancario il sistema li processa saltando la mia autorizzazione. in sostanza passa AUTOMATICAMENTE da "In attesa di pagamento con bonifico bancario" a "pagamento remoto accettato". Qualche idea? qualcuno può provare a simulare il problema? Ci sto impazzendo 😕 Stesso identico problema. Link to comment Share on other sites More sharing options...
fedesib Posted April 10, 2020 Share Posted April 10, 2020 Ciao, sì è vero, lo stato dell'ordine viene automaticamente cambiato da PS nel caso in cui sia abilitata la gestione del magazzino, sia possibile ordinare i prodotti non in magazzino e la quantità disponibile del prodotto sia < 0 (e questo succede indipendentemente dal metodo di pagamento da quello che si vede nel codice). La funzione che vi interessa è validateOrder nella classe PaymentModule ed esattamente il codice che si trova dalla riga 551 (più o meno) e che inizia con il commento // Switch to back order if needed Commentando tutto l'if che segue questo commento si disabilita il cambio stato nel caso in cui la quantità sia <0. Attenzione! Qualsiasi modifica ad una classe di Prestashop va fatta con la massima attenzione e usando un override, non modificando direttamente la classe in questione, altrimenti la modifica andrà persa al primo aggiornamento di PS (oltre al fatto che un qualsiasi errore potrebbe impallare completamente l'ecommerce). Buona giornata, Federica 1 1 Link to comment Share on other sites More sharing options...
b1000 Posted April 21, 2020 Author Share Posted April 21, 2020 Grazie mille Federica! Scusa i tempi assurdi per il mio reply, non mi era arrivata notifica e son tornato sul forum solo oggi, grazie ancora! Link to comment Share on other sites More sharing options...
fedesib Posted April 22, 2020 Share Posted April 22, 2020 Ciao, nulla, figurati! Sono contenta che abbiate risolto. Magari metti [risolto] al titolo del thread così possiamo aiutare altri utenti che avessero lo stesso problema. Buona giornata, Federica Link to comment Share on other sites More sharing options...
b1000 Posted April 22, 2020 Author Share Posted April 22, 2020 5 hours ago, fedesib said: Ciao, nulla, figurati! Sono contenta che abbiate risolto. Magari metti [risolto] al titolo del thread così possiamo aiutare altri utenti che avessero lo stesso problema. Buona giornata, Federica Fatto, grazie ancora Link to comment Share on other sites More sharing options...
MOMOD Posted April 13, 2021 Share Posted April 13, 2021 Ciao Federica, premetto che leggendo i tuoi post ho risolto diversi problemi. Ho letto il tuo post e sto cercando di risolvere questo problema ma proprio non capisco cosa devo fare ;-P Ho trovato il file PaymentModule.php Qui di seguito riporto quello che mi compare al punto da te indicato. // Set the order status $new_history = new OrderHistory(); $new_history->id_order = (int) $order->id; $new_history->changeIdOrderState((int) $id_order_state, $order, true); $new_history->addWithemail(true, $extra_vars); // Switch to back order if needed if (Configuration::get('PS_STOCK_MANAGEMENT') && ($order_detail->getStockState() || $order_detail->product_quantity_in_stock < 0)) { $history = new OrderHistory(); $history->id_order = (int) $order->id; $history->changeIdOrderState(Configuration::get($order->hasBeenPaid() ? 'PS_OS_OUTOFSTOCK_PAID' : 'PS_OS_OUTOFSTOCK_UNPAID'), $order, true); $history->addWithemail(); } Saresti così gentile da dirmi cosa devo correggere? Altra domanda banale da principiante: Per l'override mi basta copiare il file modificato nella cartella Override-Classes? Grazie in anticipo. Federico Link to comment Share on other sites More sharing options...
MOMOD Posted April 14, 2021 Share Posted April 14, 2021 Ho fatto una prova sostituendo il codice presente nel file PaymentModule.php con il seguente e tutto sembra funzionare correttamente // Switch to back order if needed /* if (Configuration::get('PS_STOCK_MANAGEMENT') && ($order_detail->getStockState() || $order_detail->product_quantity_in_stock < 0)) { $history = new OrderHistory(); $history->id_order = (int) $order->id; $history->changeIdOrderState(Configuration::get($order->hasBeenPaid() ? 'PS_OS_OUTOFSTOCK_PAID' : 'PS_OS_OUTOFSTOCK_UNPAID'), $order, true); $history->addWithemail(); }*/ Spero che questo suggerimento possa aiutare qualcuno. Adesso mi manca lo step dell' Override per evitare che al prossimo aggiornamento la modifica venga persa. Se qualcuno sapesse darmi delle indicazioni gli e ne sarei grato. Link to comment Share on other sites More sharing options...
fedesib Posted April 15, 2021 Share Posted April 15, 2021 Ciao, se stai lavorando con la versione 1.6 di PS ti basta creare un file nella cartella override/classes che instanzia una nuova classe così: class PaymentModule extends PaymentModuleCore { ... qui metti la funzione che fa l'override ... public function validateOrder() {...} } Se stai lavorando con la versione 1.7 di PS devi sviluppare un modulo per fare l'override, non è più possibile farlo direttamente. Istruzioni qui: https://devdocs.prestashop.com/1.7/modules/concepts/overrides/ Buona giornata, Federica Link to comment Share on other sites More sharing options...
MOMOD Posted April 16, 2021 Share Posted April 16, 2021 Buongiorno Federica, grazie per la risposta. Sto lavorando sulla 1.7. Ho letto la documentazione ma credo sia un pò fuori dalla mia portata! 🙂 Grazie comunque! Federico Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now