Come aggiungere la tariffa di spedizione durante la creazione dell'ordine a livello di programmazione
-
12-12-2019 - |
Domanda
L'aggiunta del metodo di spedizione sta accadendo come dovrebbe essere.Ma, la tariffa di spedizione secondo il metodo di spedizione o, la velocità di spedizione personalizzata non viene aggiunta all'ordine.
$address = $quoteObj->getShippingAddress ();
$address->setCollectShippingRates ( true )->collectShippingRates()
->setShippingMethod('flatrate_flatrate');
$quoteObj->collectTotals ()->save ();
.
.
Ricerca di alcune altre domande Ho trovato una soluzione che aggiunge un tasso di spedizione personalizzato all'ordine, ma non aggiunge le tariffe di spedizione a Grand Total.
$shippingprice = 0.9;
$orderObj->setShippingAmount($shippingprice);
$orderObj->setBaseShippingAmount($shippingprice);
.
Soluzione
Prova questo:
$shippingprice = 0.9;
$orderObj->setShippingAmount($shippingprice);
$orderObj->setBaseShippingAmount($shippingprice);
$orderObj->setGrandTotal($orderObj->getGrandTotal() + $shippingprice); //adding shipping price to grand total
$orderObj->save();
. Altri suggerimenti
Hai risolto questo risolto?
Per chiunque sia in esecuzione, è necessario impostare i costi di spedizione in 2 posti. Prima di tutto è necessario impostare il metodo di spedizione e all'interno del metodo di spedizione è necessario impostare il prezzo.Ho creato la mia funzione setShippingMethod come sotto:
public function setMyShippingMethod($shippingPrice = 0)
{
$result = Mage::getModel('shipping/rate_result');
// Add carrier
$method = Mage::getModel('shipping/rate_result_method');
if ($shippingPrice > 0) {
// use my custom shipping method but you can use another shipment method here
$method->setCarrier('dpdelivery');
$method->setMethod('dpdelivery');
$method->setCarrierTitle('Shipping');
$method->setMethodTitle('outside the Netherlands');
$method->setPrice($shippingPrice);
$method->setCost($shippingPrice);
} else {
$method->setCarrier('flatrate');
$method->setMethod('flatrate');
$method->setCarrierTitle('Freeshipping');
$method->setMethodTitle('within the Netherlands');
$method->setPrice($shippingPrice);
$method->setCost($shippingPrice);
}
$result->append($method);
return $result;
}
.
Poi all'interno della mia funzione CreatherOrder aggiungo i spedizione e chiamano il mio metodo come questo:
$shippingMethod = $this->setMyShippingMethod($shippingCost);
$this->_order->setShippingAddress($shippingAddress)
->setShippingMethod($shippingMethod);
$this->_order->setShippingDescription('My shipping description');
.
Allora, naturalmente, ho ancora bisogno di aggiungere i costi all'ordine come menzionato:
$this->order->setIsVirtual(0)
....
->setShippingAmount($shippingCost)
->setShippingTaxAmount($shippingCostTax)
.
Spero che aiuti qualcuno.
Prova questo
$order->setShippingAmount($shippingprice);
$order->setBaseShippingAmount($shippingprice);
$order->save();
.