Как добавить скорость доставки при создании порядка программно

magento.stackexchange https://magento.stackexchange.com//questions/58767

Вопрос

Доставка способ добавления происходит как оно должно быть.Но, скорость доставки согласно способу доставки или пользовательская скорость доставки не добавляется в заказ.

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


Поиск по некоторым другим вопросам, я нашел решение, которое добавляет пользовательскую скорость доставки на заказ, но он не добавляет скорость доставки для Grand Total.

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

Введите описание изображения здесь

Это было полезно?

Решение

Попробуйте:

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

Другие советы

Вы получили это решено?

Для тех, кто работает в этом, вам нужно установить стоимость доставки в 2 места. Прежде всего, вам нужно установить способ доставки и в рамках метода доставки, который вам нужно установить вашу цену.Я сделал свой собственный setshippingmethod, как ниже:

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

Тогда внутри моей функции createorder я добавляю доставку, а затем позвоните моим методам, как это:

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

Тогда, конечно, мне все еще нужно добавить затраты на заказ, как упомянуто:

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

Я надеюсь, что это кто-нибудь поможет.

попробуйте это

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top