public function getOrdersContainingItemsFromOrder(Ess_M2ePro_Model_Order $order) { // Prepare item_id-transaction_id pairs for sql // ------------- $readConnection = $this->getReadConnection(); $whereSql = array(); foreach ($order->getItemsCollection()->getItems() as $orderItem) { $itemIdSql = $readConnection->quoteInto('?', $orderItem->getData('item_id')); $transactionIdSql = $readConnection->quoteInto('?', $orderItem->getData('transaction_id')); $whereSql[] = "(item_id = {$itemIdSql} AND transaction_id = {$transactionIdSql})"; } $whereSql = implode(' OR ', $whereSql); // ------------- // Find orders which contains at least one order item from current order // ------------- /** @var $collection Mage_Core_Model_Mysql4_Collection_Abstract */ $collection = Mage::helper('M2ePro/Component_Ebay')->getCollection('Order'); $collection->getSelect()->distinct(true)->join(array('moi' => Mage::getResourceModel('M2ePro/Order_Item')->getMainTable()), '(`moi`.`order_id` = `main_table`.`id`)', array())->join(array('meoi' => Mage::getResourceModel('M2ePro/Ebay_Order_Item')->getMainTable()), '(`meoi`.`order_item_id` = `moi`.`id`)', array())->where($whereSql)->where('`main_table`.`id` != ?', $order->getId())->where('`main_table`.`account_id` = ?', $order->getAccountId())->order(array('main_table.id ASC')); // ------------- return $collection->getItems(); }