Пример #1
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);
 }
Пример #2
0
 /**
  * @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;
 }