/**
  * get the quote address id for the address with the highest subtotal
  * amount
  *
  * @param Mage_Sales_Model_Quote
  * @return int
  */
 protected function getQuotePrimaryShippingAddressId(Mage_Sales_Model_Quote $quote)
 {
     $addresses = $quote->getAllShippingAddresses();
     $selected = array_reduce($addresses, function (Mage_Sales_Model_Quote_Address $current = null, Mage_Sales_Model_Quote_Address $address) {
         if (!$current) {
             $current = $address;
         }
         return $address->getBaseSubtotal() > $current->getBaseSubtotal() ? $address : $current;
     });
     return $selected->getAddressId();
 }
 /**
  * Extract quote amounts from each address.
  * @param  Mage_Sales_Model_Quote $quote
  * @return array
  */
 protected function _extractQuoteAmounts(Mage_Sales_Model_Quote $quote)
 {
     return array_map(function ($address) {
         return array('subtotal' => round($address->getSubtotal(), 4) ?: 0.0, 'discount' => round($address->getDiscountAmount(), 4) ?: 0.0, 'ship_amount' => round($address->getShippingAmount(), 4) ?: 0.0, 'ship_discount' => round($address->getShippingDiscountAmount(), 4) ?: 0.0, 'giftwrap_amount' => round($address->getGwPrice() + $address->getGwItemsPrice(), 4) ?: 0.0);
     }, $quote->getAllShippingAddresses());
 }
 /**
  * get the addresses to use for the request
  */
 protected function selectAddresses(Mage_Sales_Model_Quote $quote)
 {
     $addresses = $quote->getAllShippingAddresses();
     $addresses[] = $quote->getBillingAddress();
     return $addresses;
 }