public static function setOrder(CustomerOrder $order) { $session = new Session(); $session->set('CustomerOrder', $order->getID()); $currency = $order->getCurrency(); $currID = $currency->getID(); $total = $order->getTotal(); $orderArray = array('total' => array($currID => $total)); $orderArray['formattedTotal'] = array($currID => $currency->getFormattedPrice($orderArray['total'][$currID])); $orderArray['basketCount'] = $order->getShoppingCartItemCount(); $orderArray['currencyID'] = $currID; $isOrderable = $order->isOrderable(); $orderArray['isOrderable'] = is_bool($isOrderable) ? $isOrderable : false; $items = array(); foreach ($order->getPurchasedItems() as $item) { $items[] = $item->toArray(); } $orderArray['items'] = new RuleOrderContainer($items); $orderArray['items']->setCoupons($order->getCoupons()); $orderArray['items']->setTotal($total); $session->set('orderData', $orderArray); }
/** * Update product quantities */ public function update() { // TOS if ($this->isTosInCartPage()) { $this->session->set('tos', $this->request->get('tos')); } // coupon code if ($this->request->get('coupon')) { $code = $this->request->get('coupon'); if ($condition = DiscountCondition::getInstanceByCoupon($code)) { if (!$this->order->hasCoupon($code)) { $coupon = OrderCoupon::getNewInstance($this->order, $code); $coupon->save(); $this->order->getCoupons(true); if ($this->order->hasCoupon($code)) { $this->setMessage($this->makeText('_coupon_added', array($code))); } } } else { $this->setErrorMessage($this->makeText('_coupon_not_found', array($code))); } $this->order->getCoupons(true); } $this->updateEstimateAddress(); $this->order->loadItemData(); $validator = $this->buildCartValidator($this->order, $this->getItemOptions()); if (!$validator->isValid()) { return new ActionRedirectResponse('order', 'index'); } $this->order->loadRequestData($this->request); foreach ($this->order->getOrderedItems() as $item) { if ($this->request->isValueSet('item_' . $item->getID())) { foreach ($item->getProduct()->getOptions(true) as $option) { $this->modifyItemOption($item, $option, $this->request, $this->getFormFieldName($item, $option)); } $item->save(); $this->order->updateCount($item, $this->request->get('item_' . $item->getID(), 0)); } } if ($this->order->isMultiAddress->get()) { $addresses = $this->user->getShippingAddressSet(); $this->order->getShipments(); foreach ($this->order->getOrderedItems() as $item) { if ($addressId = $this->request->get('address_' . $item->getID())) { if (!$item->shipment->get() || !$item->shipment->get()->shippingAddress->get() || $item->shipment->get()->shippingAddress->get()->getID() != $addressId) { foreach ($this->order->getShipments() as $shipment) { if ($shipment->shippingAddress->get() && $shipment->shippingAddress->get()->getID() == $addressId) { if (!$item->shipment->get() || $item->shipment->get()->getID() != $shipment->getID()) { if ($item->shipment->get()) { $item->shipment->get()->removeItem($item); } $shipment->addItem($item); break; } } $shipment = null; } if (!isset($shipment) || !$shipment) { $address = ActiveRecordModel::getInstanceById('UserAddress', $addressId, true); $shipment = Shipment::getNewInstance($this->order); $shipment->shippingAddress->set($address); $shipment->save(); $this->order->addShipment($shipment); $shipment->addItem($item); } $item->save(); } } if ($item->shipment->get()) { $item->shipment->get()->shippingAmount->set(0); $item->shipment->get()->shippingServiceData->set(null); $item->shipment->get()->save(); } } } $this->order->mergeItems(); SessionOrder::save($this->order); // proceed with the checkout if ($this->request->get('proceed')) { return new ActionRedirectResponse('checkout', 'index'); } // redirect to payment gateway if ($url = $this->request->get('redirect')) { return new RedirectResponse($url); } return new ActionRedirectResponse('order', 'index', array('query' => 'return=' . $this->request->get('return'))); }