Example #1
0
 public function handle(Ess_M2ePro_Model_Order $order, Mage_Sales_Model_Order_Shipment $shipment)
 {
     if (!$order->isComponentModeEbay()) {
         throw new InvalidArgumentException('Invalid component mode.');
     }
     $trackingDetails = $this->getTrackingDetails($shipment);
     if (!$order->getChildObject()->canUpdateShippingStatus($trackingDetails)) {
         return self::HANDLE_RESULT_SKIPPED;
     }
     // collect change params
     //------------------------------
     $item = $this->getItemToShip($order, $shipment);
     $params = array('tracking_details' => $trackingDetails, 'item_id' => null);
     if (!is_null($item)) {
         $params['item_id'] = $item->getId();
     }
     //------------------------------
     $this->createChange($order, $params);
     if (!is_null($item)) {
         $succeeded = $item->getChildObject()->updateShippingStatus($trackingDetails);
     } else {
         $succeeded = $order->getChildObject()->updateShippingStatus($trackingDetails);
     }
     return $succeeded ? self::HANDLE_RESULT_SUCCEEDED : self::HANDLE_RESULT_FAILED;
 }
Example #2
0
 public function handle(Ess_M2ePro_Model_Order $order, Mage_Sales_Model_Order_Shipment $shipment)
 {
     if (!$order->isComponentModeEbay()) {
         throw new InvalidArgumentException('Invalid component mode.');
     }
     $trackingDetails = $this->getTrackingDetails($shipment);
     if (!$order->getChildObject()->canUpdateShippingStatus($trackingDetails)) {
         return self::HANDLE_RESULT_SKIPPED;
     }
     if (empty($trackingDetails)) {
         return $this->processOrder($order) ? self::HANDLE_RESULT_SUCCEEDED : self::HANDLE_RESULT_FAILED;
     }
     $itemsToShip = $this->getItemsToShip($order, $shipment);
     if (empty($itemsToShip) || count($itemsToShip) == $order->getItemsCollection()->getSize()) {
         return $this->processOrder($order, $trackingDetails) ? self::HANDLE_RESULT_SUCCEEDED : self::HANDLE_RESULT_FAILED;
     }
     $succeeded = true;
     foreach ($itemsToShip as $item) {
         if ($this->processOrderItem($item, $trackingDetails)) {
             continue;
         }
         $succeeded = false;
     }
     return $succeeded ? self::HANDLE_RESULT_SUCCEEDED : self::HANDLE_RESULT_FAILED;
 }
Example #3
0
 private function processOrder(Ess_M2ePro_Model_Order $order, Mage_Sales_Model_Order_Shipment $shipment, array $trackingDetails = array())
 {
     if ($order->isSingle() || !$order->isComponentModeEbay() || count($shipment->getAllItems()) != 1) {
         return $order->getChildObject()->updateShippingStatus($trackingDetails);
     }
     // combined eBay orders only
     $shipmentItems = $shipment->getAllItems();
     $shipmentItem = reset($shipmentItems);
     /** @var $shipmentItem Mage_Sales_Model_Order_Shipment_Item */
     $additionalData = $shipmentItem->getOrderItem()->getAdditionalData();
     $additionalData = is_string($additionalData) ? @unserialize($additionalData) : array();
     if (empty($additionalData['ebay_item_id']) || empty($additionalData['ebay_transaction_id'])) {
         return $order->getChildObject()->updateShippingStatus($trackingDetails);
     }
     $itemToShip = null;
     foreach ($order->getItemsCollection()->getItems() as $item) {
         /** @var $item Ess_M2ePro_Model_Order_Item */
         if ($item->getChildObject()->getItemId() == $additionalData['ebay_item_id'] || $item->getChildObject()->getTransactionId() == $additionalData['ebay_transaction_id']) {
             $itemToShip = $item;
             break;
         }
     }
     if (is_null($itemToShip)) {
         return $order->getChildObject()->updateShippingStatus($trackingDetails);
     }
     $params = array();
     if (count($trackingDetails) > 0) {
         $params['tracking_number'] = $trackingDetails['tracking_number'];
         $params['carrier_code'] = Mage::helper('M2ePro/Component_Ebay')->getCarrierTitle($trackingDetails['carrier_code'], $trackingDetails['carrier_title']);
     }
     /** @var $dispatcher Ess_M2ePro_Model_Connector_Server_Ebay_OrderItem_Dispatcher */
     $dispatcher = Mage::getModel('M2ePro/Connector_Server_Ebay_OrderItem_Dispatcher');
     $action = Ess_M2ePro_Model_Connector_Server_Ebay_OrderItem_Dispatcher::ACTION_UPDATE_STATUS;
     return $dispatcher->process($action, $itemToShip, $params);
 }
Example #4
0
 private function addSessionErrorMessage(Ess_M2ePro_Model_Order $order)
 {
     if ($order->isComponentModeEbay()) {
         $url = Mage::helper('adminhtml')->getUrl('M2ePro/adminhtml_ebay_log/order', array('order_id' => $order->getId()));
     } else {
         $url = Mage::helper('adminhtml')->getUrl('M2ePro/adminhtml_common_log/order', array('order_id' => $order->getId()));
     }
     $channel = $order->getComponentTitle();
     // M2ePro_TRANSLATIONS
     // Shipping Status for %chanel_title% Order was not updated. View <a href="%url%" target="_blank" >order log</a> for more details.
     $message = Mage::helper('M2ePro')->__('Shipping Status for %chanel_title% Order was not updated.' . ' View <a href="%url% target="_blank" >order log</a>' . ' for more details.', $channel, $url);
     Mage::getSingleton('adminhtml/session')->addError($message);
 }
Example #5
0
 private function addSessionErrorMessage(Ess_M2ePro_Model_Order $order)
 {
     if ($order->isComponentModeEbay()) {
         $url = Mage::helper('adminhtml')->getUrl('M2ePro/adminhtml_ebay_log/order', array('order_id' => $order->getId()));
     } else {
         $url = Mage::helper('adminhtml')->getUrl('M2ePro/adminhtml_common_log/order', array('order_id' => $order->getId()));
     }
     $startLink = '<a href="' . $url . '" target="_blank">';
     $endLink = '</a>';
     $channel = $order->getComponentTitle();
     $message = Mage::helper('M2ePro')->__('Shipping Status for %s Order was not updated. View %sorder log%s for more details.', $channel, $startLink, $endLink);
     Mage::getSingleton('adminhtml/session')->addError($message);
 }