freuxbang Posted March 27, 2018 Share Posted March 27, 2018 (edited) Salve, ho voluto provare oggi la funzione del peso massimo che può gestire il corriere e purtroppo non penso funzioni corrette. Ho impostato il peso massimo che può gestire il corriere a 2kg e ho inserito un peso di 0.1kg ad un prodotto. Se provo ad inserire al carrello 100 prodotti con il peso di 0.1kg (100 x 0.1kg = 10kg), quindi un peso totale di 10kg al carrello, è possibile selezionare il corriere e procedere al pagamento, cosa che purtroppo non dovrebbe fare. Ho fatto la prova ad impostare il peso del prodotto a 3kg e in questo modo aggiungendo anche un prodotto al carrello il corriere non viene visualizzato. Praticamente prestashop non tiene conto della quantità del prodotto e qualsiasi quantità si inserisce il carrello pesa 0.1 kg. Posso anche mettere una quantità di 1000 prodotti al carrello, secondo prestashop ho un carrello che pesa 0.1kg, perchè quel prodotto pesa 0.1kg. La versione che utilizzo è Prestashop 1.5.6.2 Spero di ricevere un aiuto. Grazie. Edited March 27, 2018 by freuxbang (see edit history) Link to comment Share on other sites More sharing options...
fedesib Posted March 28, 2018 Share Posted March 28, 2018 Ciao, c'è un solo range di peso 0-2kg oppure tanti? Se sono tanti, i limiti devono coincidere (0-1;1-2) altrimenti il calcolo non funziona correttamente. Vedi se questa discussione può esserti utile: https://www.prestashop.com/forums/topic/229394-weight-based-shipping-not-disabling-carrier-when-adding-items-goes-over-carrier-limit/ Buona giornata, Federica Link to comment Share on other sites More sharing options...
freuxbang Posted March 28, 2018 Author Share Posted March 28, 2018 (edited) Ti ringrazio per la risposta Federica, ma è possibile che non sia stato chiaro. Questo corriere può spedire un pacco massimo di 2kg , quindi ho impostato un limite di peso utilizzando solo un range, da 0 a 2kg e impostando che il corriere viene visualizzato solo se il peso complessivo del carrello è inferiore o uguale a 2kg. Se inserisco un prodotto che pesa 3kg, il controllo funziona bene, il corriere non spunta e viene visualizzato il messaggio, che non c'è nessun corriere disponibile. Mentre se inserisco un prodotto inferiore a 2kg il corriere viene visualizzato correttamente. Fino a qui funziona tutto correttamente, infatti il problema nasce quando inserisco più unità dello stesso prodotto di 0,1kg, come se nella funziona non venisse applicata la quantità al peso: 0,1kg x 100 = 10kg. Il carrello in teoria dovrebbe pesare più di 2kg e quindi il corriere non dovrebbe spuntare, invece purtroppo viene visualizzato. Questo perchè per prestashop il carrello pesa sempre 0,1 kg nonostante ci siano 100 unità di quel prodotto. Pensavo di intervenire nella funzione del calcolo del peso se non esiste un impostazione da selezionare dal backoffice. Edited March 28, 2018 by freuxbang (see edit history) Link to comment Share on other sites More sharing options...
fedesib Posted March 28, 2018 Share Posted March 28, 2018 Ciao, ti consiglio di dare un'occhiata alla funzione getTotalWeight nella classe Cart (dovrebbe essere così anche in PS 1.5) che è quella che fa il calcolo del peso totale degli articoli nel carrello. Al limite prova a farti stampare il peso totale del carrello nel riassunto dell'ordine prima di fare delle modifiche (questo thread può darti una mano: https://www.prestashop.com/forums/topic/45353-solved-how-to-show-weight-of-the-order-in-shopping-cart/). Non ricordo se in PS 1.5 si possono fare gli override delle classi, se si possono fare te lo consiglio vivamente al posto di modificare direttamente il file della classe. Buona giornata, Federica Link to comment Share on other sites More sharing options...
freuxbang Posted April 9, 2018 Author Share Posted April 9, 2018 Dopo essermi accertato che fosse un bug di prestashop e non avendo trovato nessuno che ne parlasse ho dovuto lavorare direttamente sul codice. I file interessati sono: carrier.php e cart.php In cart.php ho modificato la funzione getPackageList, aggiungendo la variabile quantità di prodotti presenti sul carrello. $product['cart_quantity'] riga 1715 classes/cart.php $product['carrier_list'] = array_merge($product['carrier_list'], Carrier::getAvailableCarrierList(new Product($product['id_product']), $id_war, $product['id_address_delivery'], null, $this,$product['cart_quantity'])); Mentre su carrier.php ho richiamato la variabile quantità e l'ho inserita nel controllo del peso massimo che si trova all'interno della funzione getAvailableCarrierList() . Da cosi: foreach ($carrier_list as $key => $id_carrier) { $carrier = new Carrier($id_carrier); if (($carrier->max_width > 0 && $carrier->max_width < $product->width) || ($carrier->max_height > 0 && $carrier->max_height < $product->height) || ($carrier->max_depth > 0 && $carrier->max_depth < $product->depth) || ($carrier->max_weight > 0 && $carrier->max_weight < $product->weight )) unset($carrier_list[$key]); } a cosi: foreach ($carrier_list as $key => $id_carrier) { $carrier = new Carrier($id_carrier); if (($carrier->max_width > 0 && $carrier->max_width < $product->width) || ($carrier->max_height > 0 && $carrier->max_height < $product->height) || ($carrier->max_depth > 0 && $carrier->max_depth < $product->depth) || ($carrier->max_weight > 0 && $carrier->max_weight < ($product->weight * $product_quantity) )) unset($carrier_list[$key]); } Come puoi notare il $product->weight non veniva moltiplicato per la quantità. Adesso funziona correttamente Grazie Federica Link to comment Share on other sites More sharing options...
freuxbang Posted April 12, 2018 Author Share Posted April 12, 2018 Ho notato che il peso aggiuntivo che viene inserito negli attributi viene ignorato durante il controllo. Quindi se io inserisco un prodotto di 1kg al carrello con un attributo che aumenta il peso di un altro kg e il peso massimo che il corriere può trasportare è di 2, quando viene effettuato il controllo non calcola cosi (peso prodotto + peso attributo) * quantità ma calcola sempre(peso prodotto * quantità). 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