예제 #1
0
 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();
 }
예제 #2
0
 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;
 }