Ejemplo n.º 1
0
 /**
  * Return the last placed order meta data for the customer.
  *
  * @return Nosto_Tagging_Model_Meta_Order the order meta data model.
  */
 public function getLastOrder()
 {
     $orderId = Mage::getSingleton('checkout/session')->getLastOrderId();
     /** @var Mage_Sales_Model_Order $order */
     $order = Mage::getModel('sales/order')->load($orderId);
     $meta = new Nosto_Tagging_Model_Meta_Order();
     if ($order instanceof Mage_Sales_Model_Order) {
         $meta->loadData($order);
     }
     return $meta;
 }
Ejemplo n.º 2
0
 /**
  * Turns an order object into a JSON structure.
  *
  * @param Nosto_Tagging_Model_Meta_Order $order the order object.
  * @return string the JSON structure.
  */
 protected function getOrderAsJson(Nosto_Tagging_Model_Meta_Order $order)
 {
     /** @var NostoHelperDate $dateHelper */
     $dateHelper = Nosto::helper('date');
     $data = array('order_number' => $order->getOrderNumber(), 'external_order_ref' => $order->getExternalOrderRef(), 'buyer' => array(), 'created_at' => $dateHelper->format($order->getCreatedDate()), 'payment_provider' => $order->getPaymentProvider(), 'purchased_items' => array());
     if ($order->getOrderStatus()) {
         $data['order_status_code'] = $order->getOrderStatus()->getCode();
         $data['order_status_label'] = $order->getOrderStatus()->getLabel();
     }
     /** @var NostoHelperPrice $priceHelper */
     $priceHelper = Nosto::helper('price');
     foreach ($order->getPurchasedItems() as $item) {
         $data['purchased_items'][] = array('product_id' => $item->getProductId(), 'quantity' => $item->getQuantity(), 'name' => $item->getName(), 'unit_price' => $priceHelper->format($item->getUnitPrice()), 'price_currency_code' => strtoupper($item->getCurrencyCode()));
     }
     if ($order->getBuyerInfo()) {
         if ($order->getBuyerInfo()->getFirstName()) {
             $data['buyer']['first_name'] = $order->getBuyerInfo()->getFirstName();
         }
         if ($order->getBuyerInfo()->getLastName()) {
             $data['buyer']['last_name'] = $order->getBuyerInfo()->getLastName();
         }
         if ($order->getBuyerInfo()->getEmail()) {
             $data['buyer']['email'] = $order->getBuyerInfo()->getEmail();
         }
     }
     return json_encode($data);
 }
 /**
  * Exports completed orders from the current store.
  * Result can be limited by the `limit` and `offset` GET parameters.
  */
 public function orderAction()
 {
     if (Mage::helper('nosto_tagging')->isModuleEnabled()) {
         $pageSize = (int) $this->getRequest()->getParam('limit', 100);
         $currentOffset = (int) $this->getRequest()->getParam('offset', 0);
         $currentPage = $currentOffset / $pageSize + 1;
         $orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('store_id', Mage::app()->getStore()->getId())->setPageSize($pageSize)->setCurPage($currentPage);
         if ($currentPage > $orders->getLastPageNumber()) {
             $orders = array();
         }
         $collection = new NostoExportOrderCollection();
         foreach ($orders as $order) {
             $meta = new Nosto_Tagging_Model_Meta_Order();
             // We don't need special items like shipping cost and discounts.
             $meta->includeSpecialItems = false;
             $meta->loadData($order);
             $collection[] = $meta;
         }
         $this->export($collection);
     }
 }
 /**
  * Sends an order confirmation API request to Nosto if the order is completed.
  *
  * Event 'sales_order_save_commit_after'.
  *
  * @param Varien_Event_Observer $observer the event observer.
  *
  * @return Nosto_Tagging_Model_Observer
  */
 public function sendOrderConfirmation(Varien_Event_Observer $observer)
 {
     if (Mage::helper('nosto_tagging')->isModuleEnabled()) {
         try {
             /** @var Mage_Sales_Model_Order $mageOrder */
             $mageOrder = $observer->getEvent()->getOrder();
             $order = new Nosto_Tagging_Model_Meta_Order();
             $order->loadData($mageOrder);
             /** @var NostoAccount $account */
             $account = Mage::helper('nosto_tagging/account')->find($mageOrder->getStore());
             $customerId = Mage::helper('nosto_tagging/customer')->getNostoId($mageOrder);
             if ($account !== null && $account->isConnectedToNosto()) {
                 NostoOrderConfirmation::send($order, $account, $customerId);
             }
         } catch (NostoException $e) {
             Mage::log("\n" . $e->__toString(), Zend_Log::ERR, 'nostotagging.log');
         }
     }
     return $this;
 }