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