/** * Save and set the given addresses to the current cart/order * * @param Market_OrderModel $order * @param Market_AddressModel $shippingAddress * @param Market_AddressModel $billingAddress * * @return bool * @throws \Exception */ public function setAddresses(Market_OrderModel $order, Market_AddressModel $shippingAddress, Market_AddressModel $billingAddress) { MarketDbHelper::beginStackedTransaction(); try { $result1 = craft()->market_customer->saveAddress($shippingAddress); if ($billingAddress->id && $billingAddress->id == $shippingAddress->id) { $result2 = true; } else { $result2 = craft()->market_customer->saveAddress($billingAddress); } $order->setShippingAddress($shippingAddress); $order->setBillingAddress($billingAddress); if ($result1 && $result2) { $order->shippingAddressId = $shippingAddress->id; $order->billingAddressId = $billingAddress->id; $this->save($order); MarketDbHelper::commitStackedTransaction(); return true; } } catch (\Exception $e) { MarketDbHelper::rollbackStackedTransaction(); throw $e; } MarketDbHelper::rollbackStackedTransaction(); return false; }