Magento ha un bug piuttosto grande che consente al modulo di spedizione di calcolare i costi di spedizione senza sconti o regole di spedizione (se applicate).
Ho impiegato ore per trovare una soluzione alternativa, quindi se la utilizzi ti sarei davvero grato se facessi riferimento a questo blog.
Come l'ho risolto
Vai a:
/app/code/local/Mage/Shipping/Model/Carrier/Tablerate.php
Aggiungere il seguente codice intorno alla riga 77 (nella funzione collectRates):
$s_price = $request->getPackageValueWithDiscount();
$request->setPackageValue($s_price);
Ora, le tariffe di spedizione sono calcolate sul subtotale meno lo sconto. Spero che questo risolva il problema (lo fa nella versione 1.7)
Ultimo aggiornamento il 27 giugno 2013
In effetti, questo ha risolto il problema in Magento 1.7
Grazie, questo ha risolto il nostro problema con il calcolo delle spese di spedizione quando utilizzavamo i buoni sconto in Magento 1.6.1.
Grazie per questo. Funziona in 1.8.1.0
Sono rimasto sorpreso che questo genere di cose avesse davvero bisogno di un "hack"! 🙂
Salve, mi dispiace, ho qualche problema ad applicare quelle linee. Sto usando un'estensione gratuita per le tariffe di spedizione "MATRIXRATE". Potrebbe essere diverso a causa di questa estensione?
Ciao,
alla fine ha funzionato per me usando una matrice di tariffe di spedizione quando si modifica "PackageValue" per "PackageValueWithDiscount" e quando ho notato che è necessario avere attivo il metodo di spedizione \'tablerates\' (nel sistema - metodi di spedizione), anche se il foglio di calcolo è vuoto, il plugin \'matrixrates\' ottiene anche il subtotale corretto.
Grazie, cordiali saluti.
Fantastico, grazie per l'aiuto, questo piccolo stralcio sull'attivazione delle tariffe tabellari ha risolto i miei problemi.
Funziona alla grande.
Tante grazie amico.
Dove aggiungere ?????/
funzione pubblica collectRates(Mage_Shipping_Model_Rate_Request $request)
{
se (!$this->getConfigFlag('attivo')) {
restituisci falso;
}
// escludere il prezzo dei prodotti virtuali dal valore del pacchetto se preconfigurato
se (!$this->getConfigFlag('include_prezzo_virtuale') && $request->getAllItems()) {
foreach ($request->getAllItems() come $item) {
se ($item->getParentItem()) {
continuare;
}
se ($item->getHasChildren() && $item->isShipSeparately()) {
foreach ($item->getChildren() come $child) {
if ($child->getProduct()->isVirtual()) {
$request->setPackageValue($request->getPackageValue() – $child->getBaseRowTotal());
}
}
} elseif ($item->getProduct()->isVirtual()) {
$request->setPackageValue($request->getPackageValue() – $item->getBaseRowTotal());
}
Io... io ti amo. Tante ore passate a combattere con questo, grazie!
Tu sei il tizio!!! Grazie amico 🙂
funziona bene.
Grazie.
Sei riuscito a farlo funzionare nella versione 1.9?
Non ha funzionato per me in 1.9. Forse mi sfugge qualcosa? Se qualcuno lo ha fatto funzionare in 1.9, può postare come file e codice? Grazie
sostituisci getPackageValue con getPackageValueWithDiscount in tutti i file. Testato su 1.9 e funziona
Posso confermare che questa correzione funziona anche sulla versione 1.9.2.
CIAO.
Sto utilizzando una regola del carrello promozionale:
– Spedizione gratuita quando il paese è la Spagna
– Il subtotale è uguale o superiore a 49,59 euro.
Se le persone hanno 49,59 euro nel carrello, funziona bene.
Ho una regola per il carrello delle promozioni:
– Codice sconto 10%
Ma quando viene applicato un buono sconto di 10%, la spedizione è comunque gratuita e il subtotale è inferiore a 49,59 con il buono applicato.
Come posso risolverlo?
Grazie mille.
PD: Sto utilizzando 2 moduli con tablerates.csv configurato.
Ho creato questo thread. È esattamente ciò di cui hai bisogno.
Ho usato per magento 1.9.2
https://community.magento.com/t5/Admin-Configuration-Questions/How-to-setup-Free-Shipping-with-minimum-amount-for-selected/td-p/17674
Rispondi: Magento, Versand per Table-Rates & Rabattgutschein - alexander-steireif.com
Ottimo, funziona anche nella versione 1.5.1 🙂
CIAO ,
Ottimo Grazie, mi hai fatto risparmiare un sacco di tempo. Ha funzionato per me in magento 1.9.0.1. Grazie amico.
Ho sostituito getPackageValue con getPackageValueWithDiscount nel file Tablerate.php.
CIAO,
Quando invio l'ordine ricevo un messaggio di errore dopo aver modificato il codice: "Si è verificato un errore durante l'elaborazione dell'ordine... specificare l'errore del metodo di spedizione in Magento con la tariffa della tabella". Per favore aiutatemi a risolvere questo problema.
Sto impazzendo, faccio esattamente come sopra ma non funzionerà in 1.9.2.4
funzione pubblica collectRates(Mage_Shipping_Model_Rate_Request $request->getPackageValueWithDiscount())
{
se (!$this->getConfigFlag('attivo')) {
restituisci falso;
}
// escludere il prezzo dei prodotti virtuali dal valore del pacchetto se preconfigurato
se (!$this->getConfigFlag('include_prezzo_virtuale') && $request->getAllItems()) {
foreach ($request->getAllItems() come $item) {
se ($item->getParentItem()) {
continuare;
}
se ($item->getHasChildren() && $item->isShipSeparately()) {
foreach ($item->getChildren() come $child) {
if ($child->getProduct()->isVirtual()) {
$request->setPackageValue($request->getPackageValueWithDiscount() – $child->getBaseRowTotal());
}
}
} elseif ($item->getProduct()->isVirtual()) {
$request->setPackageValue($request->getPackageValueWithDiscount() – $item->getBaseRowTotal());
}
}
}
Solo per chiarire cosa ha detto Raul per Matrixrate.php, questo è un plugin webshopapps. Questo hack funziona perfettamente su Magento 1.9.2.4
aggiungi questo codice in cima alla funzione collectRates
$s_price = $request->getPackageValueWithDiscount();
$request->setPackageValue($s_price);
Quindi cambia tutto il codice "getPackageValue" in "getPackageValueWithDiscount"
Grazie per questa discussione.
-J
Grazie mille, questo problema mi ha risolto!
Funziona perfettamente in Magento 1.9.3.8
Grazie mille!!
Esiste una soluzione per Magento 2?