/** * @param EventgalleryLibraryCart $cart * @return EventgalleryLibraryOrder */ public function createOrder($cart) { $db = JFactory::getDBO(); $data = $cart->_getInternalDataObject(); $uuid = uniqid("", true); $uuid = base_convert($uuid, 16, 10); $query = $db->getQuery(true); $query->insert("#__eventgallery_order"); $query->columns('id'); $query->values($db->quote($uuid)); $db->setQuery($query); $db->execute(); $user = JFactory::getUser(); $data['id'] = $uuid; if (!$user->guest) { $data['userid'] = $user->id; } /** * @var TableOrder $orderTable */ $orderTable = $this->store($data, 'Order'); /** * @var EventgalleryLibraryImagelineitem $lineitem * @var EventgalleryLibraryFactoryImagelineitem $imageLineItemFactory */ $imageLineItemFactory = EventgalleryLibraryFactoryImagelineitem::getInstance(); foreach ($cart->getLineItems() as $lineitem) { $imageLineItemFactory->copyLineItem($orderTable->id, $lineitem); } /** * @var EventgalleryLibraryServicelineitem $lineitem * @var EventgalleryLibraryFactoryServicelineitem $serviceLineItemFactory */ $serviceLineItemFactory = EventgalleryLibraryFactoryServicelineitem::getInstance(); foreach ($cart->getServiceLineItems() as $lineitem) { $serviceLineItemFactory->copyLineItem($orderTable->id, $lineitem); } /** * @var EventgalleryLibraryManagerOrderstatus $orderstatusMgr */ $orderstatusMgr = EventgalleryLibraryManagerOrderstatus::getInstance(); /** * @var EventgalleryLibraryOrder $order */ $order = new EventgalleryLibraryOrder($orderTable->id); $order->setOrderStatus($orderstatusMgr->getDefaultOrderStatus(EventgalleryLibraryOrderstatus::TYPE_ORDER)); $order->setPaymentStatus($orderstatusMgr->getDefaultOrderStatus(EventgalleryLibraryOrderstatus::TYPE_PAYMENT)); $order->setShippingStatus($orderstatusMgr->getDefaultOrderStatus(EventgalleryLibraryOrderstatus::TYPE_SHIPPING)); $order->setDocumentNumber(EventgalleryLibraryDatabaseSequence::generateNewId()); return $order; }
/** * sets a shipping * * @param EventgalleryLibraryMethodsShipping $shipping */ public function setShippingMethod($shipping) { $this->_deleteMethodByType(EventgalleryLibraryServicelineitem::TYPE_SHIPINGMETHOD); if ($shipping == null) { return; } /* @var EventgalleryLibraryFactoryServicelineitem $serviceLineItemFactory */ $serviceLineItemFactory = EventgalleryLibraryFactoryServicelineitem::getInstance(); $serviceLineItemFactory->createLineItem($this->getId(), $shipping); $this->_loadServiceLineItems(); }