Vitalii Plodistov
Vitalii Plodistov

Reputation: 125

How to get carrier by "shipping method" in magento

Typical magento's order has shipping_method. For example, in my case, it is "flatrate_flatrate".

How to bind carrier ("flatrate") with shipping_method?

Thanks for response.

Upvotes: 1

Views: 9447

Answers (1)

Josua M C
Josua M C

Reputation: 3158

public function getShippingMethodsList($quoteId, $store=null)
{
    $quote = $this->_getQuote($quoteId, $store);

    $quoteShippingAddress = $quote->getShippingAddress();
    if (is_null($quoteShippingAddress->getId())) {
        $this->_fault("shipping_address_is_not_set");
    }

    try {
        $quoteShippingAddress->collectShippingRates()->save();
        $groupedRates = $quoteShippingAddress->getGroupedAllShippingRates();

        $ratesResult = array();
        foreach ($groupedRates as $carrierCode => $rates ) {
            $carrierName = $carrierCode;
            if (!is_null(Mage::getStoreConfig('carriers/'.$carrierCode.'/title'))) {
                $carrierName = Mage::getStoreConfig('carriers/'.$carrierCode.'/title');
            }

            foreach ($rates as $rate) {
                $rateItem = $this->_getAttributes($rate, "quote_shipping_rate");
                $rateItem['carrierName'] = $carrierName;
                $ratesResult[] = $rateItem;
                unset($rateItem);
            }
        }
    } catch (Mage_Core_Exception $e) {
        $this->_fault('shipping_methods_list_could_not_be_retrived', $e->getMessage());
    }

    return $ratesResult;
}

Upvotes: 4

Related Questions