protected function processAccount(Ess_M2ePro_Model_Accounts $account, $percentsForAccount) { $this->_profiler->addEol(); $this->_profiler->addTitle('Starting account "' . $account->getData('title') . '"'); $this->_profiler->addEol(); $this->_profiler->addTimePoint(__METHOD__ . 'get' . $account->getData('id'), 'Get orders from eBay'); $tempString = str_replace('%acc%', $account->getTitle(), Mage::helper('M2ePro')->__('Task "Orders Synchronization" for eBay account: "%acc%" is started. Please wait...')); $this->_lockItem->setStatus($tempString); $currentPercent = $this->_lockItem->getPercents(); // Get since time //--------------------------- $lastSinceTime = $this->_getEbayCheckSinceTime(); //--------------------------- // Get orders from ebay //--------------------------- $request = array('account' => $account->getServerHash(), 'last_update' => $lastSinceTime); $response = Mage::getModel('M2ePro/Connectors_Ebay_Dispatcher')->processVirtual('sales', 'get', 'list', $request); $ebayOrders = array(); $lastSuccessTime = $lastSinceTime; if (isset($response['sales']) && isset($response['updated_to'])) { $ebayOrders = $response['sales']; $lastSuccessTime = $response['updated_to']; } if (count($ebayOrders) <= 0) { return $lastSuccessTime; } //--------------------------- $currentPercent = $currentPercent + $percentsForAccount * 0.15; $this->_lockItem->setPercents($currentPercent); $this->_lockItem->activate(); $this->_profiler->saveTimePoint(__METHOD__ . 'get' . $account->getData('id')); $this->_profiler->addTitle('Total count orders received from eBay: ' . count($ebayOrders)); $this->_profiler->addTimePoint(__METHOD__ . 'process' . $account['id'], 'Processing received orders from eBay'); $tempString = str_replace('%acc%', $account['title'], Mage::helper('M2ePro')->__('Task "Orders Synchronization" for eBay account: "%acc%" is in data processing state. Please wait...')); $this->_lockItem->setStatus($tempString); // Save eBay orders //--------------------------- $orders = array(); foreach ($ebayOrders as $ebayOrderData) { /** @var $ebayOrder Ess_M2ePro_Model_Orders_Ebay_Order */ $ebayOrder = Mage::getModel('M2ePro/Orders_Ebay_Order'); $ebayOrder->setAccount($account); $ebayOrder->initialize($ebayOrderData); $result = $ebayOrder->process(); if ($result) { $orders[] = $result; } } //--------------------------- if (!count($orders)) { return $lastSuccessTime; } $currentPercent = $currentPercent + $percentsForAccount * 0.05; $this->_lockItem->setPercents($currentPercent); $this->_lockItem->activate(); $this->_profiler->saveTimePoint(__METHOD__ . 'process' . $account->getData('id')); $this->_profiler->addEol(); $this->_profiler->addTimePoint(__METHOD__ . 'magento_orders_process' . $account['id'], 'Creating magento orders'); $tempString = str_replace('%acc%', $account['title'], Mage::helper('M2ePro')->__('Task "Orders Synchronization" for eBay account: "%acc%" is in order creation state.. Please wait...')); $this->_lockItem->setStatus($tempString); // Create magento orders //--------------------------- $magentoOrders = 0; $paymentTransactions = 0; $invoices = 0; $shipments = 0; $percentPerOrder = floor(($percentsForAccount - $currentPercent) / count($orders)); foreach ($orders as $order) { /** @var $order Ess_M2ePro_Model_Orders_Order */ $order->createMagentoOrder() && $magentoOrders++; $order->createPaymentTransactionForMagentoOrder() && $paymentTransactions++; $order->createInvoiceForMagentoOrder() && $invoices++; $order->createShipmentForMagentoOrder() && $shipments++; $currentPercent = $currentPercent + $percentPerOrder; $this->_lockItem->setPercents($currentPercent); $this->_lockItem->activate(); } //--------------------------- $this->_profiler->saveTimePoint(__METHOD__ . 'magento_orders_process' . $account->getData('id')); $this->_profiler->addTitle('Total count magento orders created: ' . $magentoOrders); $this->_profiler->addTitle('Total count payment transactions created: ' . $paymentTransactions); $this->_profiler->addTitle('Total count invoices created: ' . $invoices); $this->_profiler->addTitle('Total count shipments created: ' . $shipments); $this->_profiler->addEol(); $this->_profiler->addTitle('End account "' . $account->getData('title') . '"'); return $lastSuccessTime; }