private function processAccount(Ess_M2ePro_Model_Accounts $account, $percentsForAccount) { $this->_profiler->addTitle('Starting account "' . $account->getData('title') . '"'); $this->_profiler->addTimePoint(__METHOD__ . 'get' . $account->getData('id'), 'Get items from eBay'); $tempString = str_replace('%acc%', $account->getData('title'), Mage::helper('M2ePro')->__('Task "3rd Party Listings Synchronization" for eBay account: "%acc%" is started. Please wait...')); $this->_lockItem->setStatus($tempString); $currentPercent = $this->_lockItem->getPercents(); $currentPercent = $currentPercent + $percentsForAccount * 0.05; $this->_lockItem->setPercents($currentPercent); $this->_lockItem->activate(); // Get since time //--------------------------- $sinceTime = $account->getData('ebay_listings_last_synchronization'); //--------------------------- // Get all items from eBay //--------------------------- if (is_null($sinceTime)) { $tempSinceTime = new DateTime(); $tempSinceTime->modify("-118 days"); $tempSinceTime = strftime("%Y-%m-%d %H:%M:%S", (int) $tempSinceTime->format('U')); $responseData = Mage::getModel('M2ePro/Connectors_Ebay_Dispatcher')->processVirtual('item', 'get', 'all', array('since_time' => $tempSinceTime), NULL, NULL, $account->getId(), NULL); } else { $tempSinceTime = $this->prepareSinceTime($sinceTime); $responseData = Mage::getModel('M2ePro/Connectors_Ebay_Dispatcher')->processVirtual('item', 'get', 'changes', array('since_time' => $tempSinceTime), NULL, NULL, $account->getId(), NULL); } $currentPercent = $currentPercent + $percentsForAccount * 0.15; $this->_lockItem->setPercents($currentPercent); $this->_lockItem->activate(); $items = array(); $tempToTime = $sinceTime; if (isset($responseData['items']) && isset($responseData['to_time'])) { $items = (array) $responseData['items']; if (is_array($responseData['to_time']) && isset($responseData['to_time'][0])) { $tempToTime = (string) $responseData['to_time'][0]; } else { $tempToTime = (string) $responseData['to_time']; } } //--------------------------- $this->_profiler->saveTimePoint(__METHOD__ . 'get' . $account->getData('id')); $this->_profiler->addTitle('Total count items from eBay: ' . count($items)); $this->_profiler->addTimePoint(__METHOD__ . 'prepare' . $account['id'], 'Processing received items from eBay'); $tempString = str_replace('%acc%', $account['title'], Mage::helper('M2ePro')->__('Task "3rd Party Listings Synchronization" for eBay account: "%acc%" is in data processing state. Please wait...')); $this->_lockItem->setStatus($tempString); // Progress bar //--------------------------- $numberOfListings = count($items) > 0 ? count($items) : 1; $numberOfListingsToChangePercent = 1; $percentPerListing = ($percentsForAccount - $currentPercent) / $numberOfListings; if ($percentPerListing < 1) { $numberOfListingsToChangePercent = floor(1 / $percentPerListing); $percentPerListing = 1; } //--------------------------- // Save ebay listings //--------------------------- $newItems = 0; $totalItems = 0; foreach ($items as $item) { $totalItems++; $canChangePercent = $totalItems % $numberOfListingsToChangePercent == 0; if ($canChangePercent) { $currentPercent = $currentPercent + $percentPerListing; $this->_lockItem->setPercents($currentPercent); $this->_lockItem->activate(); } if ($this->_isOldPartOfExtensionRecord($item)) { continue; } if ($this->_isOldPartOfExistRecord($item)) { continue; } $item = $this->_prepareForInsert($item, $account); Mage::getModel('M2ePro/EbayListings')->setData($item)->save(); $newItems++; } //--------------------------- // Update since time //--------------------------- $account->addData(array('ebay_listings_last_synchronization' => $tempToTime))->save(); //--------------------------- $this->_profiler->addTitle('Count not related with M2ePro items: ' . $newItems); $this->_profiler->saveTimePoint(__METHOD__ . 'prepare' . $account->getData('id')); $this->_profiler->addEol(); }
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; }