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; }
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; }
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); }
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); }
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); }