Tabella tariffe di spedizione in base al prezzo DOPO SCONTO – Magento

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

26 commenti su “Table rates shipping based on price AFTER DISCOUNT – Magento”

  1. Grazie, questo ha risolto il nostro problema con il calcolo delle spese di spedizione quando utilizzavamo i buoni sconto in Magento 1.6.1.

  2. 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?

  3. 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.

  4. Dhanasekar, il nostro mentore

    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());
    }

  5. 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

  6. 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.

  7. Rispondi: Magento, Versand per Table-Rates & Rabattgutschein - alexander-steireif.com

  8. 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.

    1. 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.

  9. 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());
    }
    }
    }

  10. 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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

it_ITItaliano
Scorri verso l'alto