Question

La méthode d'expédition, l'addition se produit comme elle devrait être.Mais, le taux d'expédition selon la méthode d'expédition ou, la vitesse d'expédition personnalisée ne s'ajoute pas à la commande.

$address = $quoteObj->getShippingAddress ();
$address->setCollectShippingRates ( true )->collectShippingRates()
        ->setShippingMethod('flatrate_flatrate');
$quoteObj->collectTotals ()->save ();


Recherche dans d'autres questions J'ai trouvé une solution qui ajoute une vitesse d'expédition personnalisée à la commande, mais elle n'ajoute pas les tarifs d'expédition au total du total.

$shippingprice = 0.9;
$orderObj->setShippingAmount($shippingprice);
$orderObj->setBaseShippingAmount($shippingprice);

Entrez la description de l'image ici

Était-ce utile?

La solution

Essayez ceci:

$shippingprice = 0.9;
$orderObj->setShippingAmount($shippingprice);
$orderObj->setBaseShippingAmount($shippingprice);
$orderObj->setGrandTotal($orderObj->getGrandTotal() + $shippingprice); //adding shipping price to grand total
$orderObj->save();

Autres conseils

Avez-vous été résolu?

Pour que quiconque se heurte à cela, vous devez définir les frais d'expédition en 2 places. Tout d'abord, vous devez définir la méthode d'expédition et dans la méthode d'expédition dont vous avez besoin pour définir votre prix.J'ai fait ma propre fonction SetShippingMethod, comme ci-dessous:

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

Ensuite, dans ma fonction de CreateOrderOrder, j'ajoute la livraisonAddress et appelez ma méthode comme celle-ci:

$shippingMethod = $this->setMyShippingMethod($shippingCost);
$this->_order->setShippingAddress($shippingAddress)
  ->setShippingMethod($shippingMethod);
$this->_order->setShippingDescription('My shipping description');

Puis, bien sûr, j'ai encore besoin d'ajouter les coûts à l'ordre comme mentionné:

$this->order->setIsVirtual(0)
    ....    
    ->setShippingAmount($shippingCost)
    ->setShippingTaxAmount($shippingCostTax)

J'espère que cela aide n'importe qui.

Essayez ceci

$order->setShippingAmount($shippingprice);
$order->setBaseShippingAmount($shippingprice);
$order->save();

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top