biello Posted July 20, 2022 Share Posted July 20, 2022 Salve, sto cercando il modo di avere sempre disponibili i pulsanti di aggiunta e modifica dei prodotti negli ordini, per tutti gli stati d'ordine. Sono sicuro che sia un problema solamente di visualizzazione in quanto i pulsanti vengono caricati e come saprete già vengono inibiti dallo status dell'ordine. Se qualcuno sa come indirizzarmi, grazie in anticipo. Andrea Link to comment Share on other sites More sharing options...
biello Posted July 20, 2022 Author Share Posted July 20, 2022 Allora, ho trovato come far visualizzare i pulsanti di modifica e cancella del prodotto: /src/PrestaShopBundle/Resources/views/Admin/Sell/Order/Order/Blocks/View/product.html.twig Ma il problema rimane perchè un ordine a cui si visualizza la bolla di consegna ( o fattura) non può essere modificato. Quindi c'è un blocco. Sto provando a cercare il modo di modificare questo comportamento (assurdo a mio avviso). Qualcuno ha avuto lo stesso problema? Grazie, Andrea Link to comment Share on other sites More sharing options...
Codencode Posted July 21, 2022 Share Posted July 21, 2022 (edited) Questo comportamento è "gestito" dai metodi Order::hasBeenShipped() e Order::hasBeenDelivered(). Questi 2 metodi verificano se l'ordine è stato Spedito (hasBeenShipped) o Consegnato (hasBeenDelivered). Un ordine risulta spedito se ha assunto uno stato che ha il campo shipped su 1 (Segna l'ordine come spedito). Un ordine risulta spedito se ha assunto uno stato che ha il campo delivery su 1 (Mostra il PDF di consegna). I metodi in questione vengono richiamati nel metodo PrestaShop\PrestaShop\Adapter\Order\QueryHandler\GetOrderForViewingHandler::handle() qui infatti viene istanziata la classe OrderForViewingche che accetta nel costruttore, oltre ad altri parametri, $isDelivered e $isShipped. Spero che queste info possano darti uno spunto su come risolvere la questione. Edited July 21, 2022 by codencode (see edit history) Link to comment Share on other sites More sharing options...
biello Posted July 21, 2022 Author Share Posted July 21, 2022 Grazie, ci lavoro un po' su e ti farò sapere se riesco a risolvere, intanto ancora grazie! Link to comment Share on other sites More sharing options...
biello Posted July 21, 2022 Author Share Posted July 21, 2022 4 hours ago, codencode said: Questo comportamento è "gestito" dai metodi Order::hasBeenShipped() e Order::hasBeenDelivered(). Questi 2 metodi verificano se l'ordine è stato Spedito (hasBeenShipped) o Consegnato (hasBeenDelivered). Un ordine risulta spedito se ha assunto uno stato che ha il campo shipped su 1 (Segna l'ordine come spedito). Un ordine risulta spedito se ha assunto uno stato che ha il campo delivery su 1 (Mostra il PDF di consegna). I metodi in questione vengono richiamati nel metodo PrestaShop\PrestaShop\Adapter\Order\QueryHandler\GetOrderForViewingHandler::handle() qui infatti viene istanziata la classe OrderForViewingche che accetta nel costruttore, oltre ad altri parametri, $isDelivered e $isShipped. Spero che queste info possano darti uno spunto su come risolvere la questione. Allora, effettivamente settando a 0 i due stati, i pulsanti ci sono. Il problema è che andando a modificare l'ordine, poi, appare il messaggio "Non puoi modificare il carrello una volta che l'ordine è stato consegnato." mentre, stranamento, i prodotti possono essere aggiunti. Link to comment Share on other sites More sharing options...
Codencode Posted July 22, 2022 Share Posted July 22, 2022 Non so come hai implementato le modifiche, ma se io modifico i 2 metodi inserendo un banale return false return false; viene visualizzato il pulsante e l'aggiunta di un nuovo prodotto funziona correttamente. Ovviamente quello che ho fatto è una "prova", i metodi andrebbero modificati con un override mediante modulo, e questa cosa andrebbe fatto se si sta modificando un ordine dal back-office, non puoi semplicemente mettere l'istruzione che ho usato io altrimenti ti impatta su tutto il CMS. Link to comment Share on other sites More sharing options...
biello Posted July 22, 2022 Author Share Posted July 22, 2022 9 minutes ago, codencode said: Non so come hai implementato le modifiche, ma se io modifico i 2 metodi inserendo un banale return false return false; viene visualizzato il pulsante e l'aggiunta di un nuovo prodotto funziona correttamente. Ovviamente quello che ho fatto è una "prova", i metodi andrebbero modificati con un override mediante modulo, e questa cosa andrebbe fatto se si sta modificando un ordine dal back-office, non puoi semplicemente mettere l'istruzione che ho usato io altrimenti ti impatta su tutto il CMS. Scusami l'aggiunta funziona anche a me, i pulsanti di modifica e cancellazione del prodotto poi si fermano. Ho semplicemente aggiunto a mano i valori per vedere il funzionamento, poi l'implementazione l'avrei fatta con calma. Hai provato a modificare un prodotto e fare "salva"? Grazie ancora,, Andrea Link to comment Share on other sites More sharing options...
Codencode Posted July 22, 2022 Share Posted July 22, 2022 Si, ho provato l'aggiunta, la modifica e la cancellazione di un prodotto e funziona correttamente. Link to comment Share on other sites More sharing options...
biello Posted July 22, 2022 Author Share Posted July 22, 2022 1 hour ago, codencode said: Si, ho provato l'aggiunta, la modifica e la cancellazione di un prodotto e funziona correttamente. si anche a me ora! Non mi resta che implementare la cosa. Tu come lo implementeresti? Io fondamentalmente pensavo di legare questo comportamento ( di possibilità di modifica) ad alcuni "stati di ordine". Ti ringrazio per il tempo che mi hai dedicato, credo che comunque questo sia un problema che affligge molti shop, sopratutto chi gestisce molti ordini che hanno poi bisogno di essere modificati anche dopo la generazione. Non so perchè è stato pensato cosi, ma il fatto di stampare un DDT non dovrebbe essere legato poi alla possibilità di modificarlo e meno. Andrea Link to comment Share on other sites More sharing options...
Codencode Posted July 22, 2022 Share Posted July 22, 2022 Io credo che sia stato implementato in questo modo perché una volta che l'ordine risulta spedito, non "dovrebbe" essere più modificato, in linea teorica è corretto, ma praticamente può accadere di dover modificare un ordine in quello stato. Poi a monte potrebbe esserci qualche altra motivazione che mi sfugge. Per i nostri clienti che necessitano di questa cosa, utilizziamo un modulo ad hoc che, tra le altre cose, mostra un pulsante che permette di "forzare" la modifica dell'ordine, quindi se l'ordine risulta già spedito cliccando su questo pulsante "forza" il comportamento di base permettendo quindi le operazioni bloccate. Per poter capire se l'ordine si trova nella modalità "forzata" il modulo sfrutta la sessione, in questo modo nei metodi da modificare il modulo sa se deve utilizzare il funzionamento standard, oppure il comportamento che permette di forzare l'ordine. Sicuramente ci saranno altre soluzioni, magari mediante la decorazione dei servizi Symfony, ma questa è quella che ci è venuta in mente. Link to comment Share on other sites More sharing options...
biello Posted July 22, 2022 Author Share Posted July 22, 2022 42 minutes ago, codencode said: Io credo che sia stato implementato in questo modo perché una volta che l'ordine risulta spedito, non "dovrebbe" essere più modificato, in linea teorica è corretto, ma praticamente può accadere di dover modificare un ordine in quello stato. Poi a monte potrebbe esserci qualche altra motivazione che mi sfugge. Per i nostri clienti che necessitano di questa cosa, utilizziamo un modulo ad hoc che, tra le altre cose, mostra un pulsante che permette di "forzare" la modifica dell'ordine, quindi se l'ordine risulta già spedito cliccando su questo pulsante "forza" il comportamento di base permettendo quindi le operazioni bloccate. Per poter capire se l'ordine si trova nella modalità "forzata" il modulo sfrutta la sessione, in questo modo nei metodi da modificare il modulo sa se deve utilizzare il funzionamento standard, oppure il comportamento che permette di forzare l'ordine. Sicuramente ci saranno altre soluzioni, magari mediante la decorazione dei servizi Symfony, ma questa è quella che ci è venuta in mente. Allora, se io faccio un ordine e va in "attesa di bonifico bancario" ci sono due possibilità: 1) faccio stampare il ddt, ma allora li non si può più modificare nulla, al massimo si può aggiungere uno sconto. 2) non faccio stampare il ddt e allora posso modificare. Secondo me è fuori logica perchè io "devo" stampare l'ordine darlo al magazzino, poi se c'è una mancanza o il cliente mi fa un aggiunta, devo poterlo modificare. Quando tutto è ok e il pacco è stato chiuso e spedito, allora possiamo anche "bloccarlo". Ultima cosa, ma il modulo che utilizzate si può acquistare? Grazie, Andrea Link to comment Share on other sites More sharing options...
Codencode Posted July 23, 2022 Share Posted July 23, 2022 Non sviluppiamo moduli per il marketplace. Se hai un minimo di dimestichezza con il codice riesci ad implementarla, altrimenti devi fartela sviluppare ad hoc. Link to comment Share on other sites More sharing options...
biello Posted July 23, 2022 Author Share Posted July 23, 2022 5 hours ago, codencode said: Non sviluppiamo moduli per il marketplace. Se hai un minimo di dimestichezza con il codice riesci ad implementarla, altrimenti devi fartela sviluppare ad hoc. Grazie molte per tutte le info, sei stato prezioso. Se non riesco, posso contattarvi per lo sviluppo? grazie, Andrea Link to comment Share on other sites More sharing options...
Codencode Posted July 23, 2022 Share Posted July 23, 2022 Di nulla figurati, il forum serve proprio a questo. Certamente che ci puoi contattare. 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