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); }
/** * @param Ess_M2ePro_Model_Order $order * @param Mage_Sales_Model_Order_Shipment $shipment * * @return null|Ess_M2ePro_Model_Order_Item */ private function getItemToShip(Ess_M2ePro_Model_Order $order, Mage_Sales_Model_Order_Shipment $shipment) { if ($order->isSingle()) { return null; } $shipmentItems = $shipment->getAllItems(); if (count($shipmentItems) != 1) { return null; } /** @var $shipmentItem Mage_Sales_Model_Order_Shipment_Item */ $shipmentItem = reset($shipmentItems); $additionalData = $shipmentItem->getOrderItem()->getAdditionalData(); $additionalData = is_string($additionalData) ? @unserialize($additionalData) : array(); $itemId = $transactionId = null; $orderItemDataIdentifier = Ess_M2ePro_Helper_Data::CUSTOM_IDENTIFIER; if (isset($additionalData['ebay_item_id']) && isset($additionalData['ebay_transaction_id'])) { // backward compatibility with versions 5.0.4 or less $itemId = $additionalData['ebay_item_id']; $transactionId = $additionalData['ebay_transaction_id']; } elseif (isset($additionalData[$orderItemDataIdentifier]['items'])) { if (!is_array($additionalData[$orderItemDataIdentifier]['items']) || count($additionalData[$orderItemDataIdentifier]['items']) != 1) { return null; } if (isset($additionalData[$orderItemDataIdentifier]['items'][0]['item_id'])) { $itemId = $additionalData[$orderItemDataIdentifier]['items'][0]['item_id']; } if (isset($additionalData[$orderItemDataIdentifier]['items'][0]['transaction_id'])) { $transactionId = $additionalData[$orderItemDataIdentifier]['items'][0]['transaction_id']; } } if (is_null($itemId) || is_null($transactionId)) { return null; } $item = Mage::helper('M2ePro/Component_Ebay')->getCollection('Order_Item')->addFieldToFilter('order_id', $order->getId())->addFieldToFilter('item_id', $itemId)->addFieldToFilter('transaction_id', $transactionId)->getFirstItem(); return $item->getId() ? $item : null; }