Пример #1
0
 public function process()
 {
     if (!is_null($this->account)) {
         $this->requestExtraData['account'] = $this->account->getChildObject()->getServerHash();
     }
     parent::process();
 }
Пример #2
0
 public function process()
 {
     if (!is_null($this->account)) {
         $this->requestExtraData['account'] = $this->account->getChildObject()->getTranslationHash();
     }
     return parent::process();
 }
 public function __construct(Ess_M2ePro_Model_Account $account)
 {
     if (!$account->isComponentModeAmazon()) {
         throw new Ess_M2ePro_Model_Exception_Logic('Required Amazon Account.');
     }
     $this->account = $account;
 }
 private function isLockedAccount(Ess_M2ePro_Model_Account $account)
 {
     /** @var $lockItem Ess_M2ePro_Model_LockItem */
     $lockItem = Mage::getModel('M2ePro/LockItem');
     $lockItem->setNick(self::LOCK_ITEM_PREFIX . '_' . $account->getId());
     $lockItem->setMaxInactiveTime(Ess_M2ePro_Model_Processing_Request::MAX_LIFE_TIME_INTERVAL);
     return $lockItem->isExist();
 }
Пример #5
0
 private function getRelatedChanges(Ess_M2ePro_Model_Account $account)
 {
     /** @var Ess_M2ePro_Model_Mysql4_Order_Change_Collection $changesCollection */
     $changesCollection = Mage::getModel('M2ePro/Order_Change')->getCollection();
     $changesCollection->addAccountFilter($account->getId());
     $changesCollection->addProcessingAttemptDateFilter();
     $changesCollection->setPageSize(self::MAX_UPDATES_PER_TIME);
     $changesCollection->getSelect()->group(array('order_id'));
     return $changesCollection->getItems();
 }
Пример #6
0
 private function processAccount(Ess_M2ePro_Model_Account $account, $percentsForAccount)
 {
     //---------------------------
     $this->_profiler->addEol();
     $this->_profiler->addTitle('Starting account "' . $account->getTitle() . '"');
     // ->__('Task "%s" for eBay account: "%s" is started. Please wait...')
     $status = 'Task "%s" for eBay account: "%s" is started. Please wait...';
     $status = Mage::helper('M2ePro')->__($status, $this->name, $account->getTitle());
     $this->_lockItem->setStatus($status);
     $currentPercent = $this->_lockItem->getPercents();
     //---------------------------
     $collection = Mage::helper('M2ePro/Component_Ebay')->getCollection('Order')->addFieldToFilter('account_id', $account->getId())->addFieldToFilter('reservation_state', Ess_M2ePro_Model_Order_Reserve::STATE_PLACED);
     $reservationDays = (int) $account->getChildObject()->getQtyReservationDays();
     if ($reservationDays > 0) {
         $minReservationStartDate = new DateTime(Mage::helper('M2ePro')->getCurrentGmtDate(), new DateTimeZone('UTC'));
         $minReservationStartDate->modify('- ' . $reservationDays . ' days');
         $minReservationStartDate = $minReservationStartDate->format('Y-m-d H:i');
         $collection->addFieldToFilter('reservation_start_date', array('lteq' => $minReservationStartDate));
     }
     /** @var $reservedOrders Ess_M2ePro_Model_Order[] */
     $reservedOrders = $collection->getItems();
     //---------------------------
     $this->_profiler->addEol();
     $this->_profiler->addTitle('Total orders with expired reservation: ' . count($reservedOrders));
     $currentPercent = $currentPercent + $percentsForAccount * 0.1;
     $this->_lockItem->setPercents($currentPercent);
     $this->_lockItem->activate();
     //---------------------------
     if (count($reservedOrders) == 0) {
         return;
     }
     //---------------------------
     $this->_profiler->addTimePoint(__METHOD__ . 'process' . $account->getId(), 'Release qty for expired reservation');
     $status = 'Task "%s" for eBay account: "%s" is in data processing state. Please wait...';
     $status = Mage::helper('M2ePro')->__($status, $account->getTitle());
     $this->_lockItem->setStatus($status);
     //---------------------------
     $percentPerOrder = ($percentsForAccount - $currentPercent) / count($reservedOrders);
     $tempPercent = 0;
     foreach ($reservedOrders as $order) {
         $order->getReserve()->release();
         $tempPercent += $percentPerOrder;
         if (floor($tempPercent) > 0) {
             $currentPercent += floor($tempPercent);
             $tempPercent -= floor($tempPercent);
             $this->_lockItem->setPercents($currentPercent);
             $this->_lockItem->activate();
         }
     }
     //---------------------------
     $this->_profiler->saveTimePoint(__METHOD__ . 'process' . $account->getId());
     $this->_profiler->addEol();
     $this->_profiler->addTitle('End account "' . $account->getTitle() . '"');
     //---------------------------
 }
 private function getOrdersForRelease(Ess_M2ePro_Model_Account $account)
 {
     /** @var Ess_M2ePro_Model_Mysql4_Order_Collection $collection */
     $collection = Mage::helper('M2ePro/Component_Amazon')->getCollection('Order')->addFieldToFilter('account_id', $account->getId())->addFieldToFilter('reservation_state', Ess_M2ePro_Model_Order_Reserve::STATE_PLACED);
     $reservationDays = (int) $account->getChildObject()->getQtyReservationDays();
     $minReservationStartDate = new DateTime(Mage::helper('M2ePro')->getCurrentGmtDate(), new DateTimeZone('UTC'));
     $minReservationStartDate->modify('- ' . $reservationDays . ' days');
     $minReservationStartDate = $minReservationStartDate->format('Y-m-d H:i');
     $collection->addFieldToFilter('reservation_start_date', array('lteq' => $minReservationStartDate));
     return $collection->getItems();
 }
Пример #8
0
 private function processAccount(Ess_M2ePro_Model_Account $account)
 {
     $fromDate = $this->prepareFromDate($account->getData('orders_last_synchronization'));
     $params = array('from_date' => $fromDate);
     if (is_null($account->getData('orders_last_synchronization'))) {
         $account->setData('orders_last_synchronization', $fromDate)->save();
     }
     $dispatcherObject = Mage::getModel('M2ePro/Connector_Amazon_Dispatcher');
     $connectorObj = $dispatcherObject->getConnector('orders', 'receive', 'requester', $params, $account, 'Ess_M2ePro_Model_Amazon_Synchronization');
     $dispatcherObject->process($connectorObj);
 }
Пример #9
0
 public function process()
 {
     if (!is_null($this->account) && !is_null($this->marketplace)) {
         /** @var $amazonAccount Ess_M2ePro_Model_Amazon_Account */
         $amazonAccount = $this->account->getChildObject();
         $marketplaceDataTemp = $amazonAccount->getMarketplaceItem($this->marketplace->getId());
         if (!is_null($marketplaceDataTemp)) {
             $this->requestExtraData['account'] = $marketplaceDataTemp['server_hash'];
         }
     }
     parent::process();
 }
Пример #10
0
 public function process()
 {
     if (!is_null($this->marketplace)) {
         $this->requestExtraData['marketplace'] = $this->marketplace->getNativeId();
     }
     if (!is_null($this->account)) {
         $this->requestExtraData['account'] = $this->account->getChildObject()->getServerHash();
     }
     if (!is_null($this->mode)) {
         $this->requestExtraData['mode'] = $this->mode;
     }
     parent::process();
 }
Пример #11
0
 private function processAccount(Ess_M2ePro_Model_Account $account)
 {
     $fromDate = $this->prepareFromDate($account->getData('orders_last_synchronization'));
     $params = array('from_date' => $fromDate);
     if (is_null($account->getData('orders_last_synchronization'))) {
         $account->setData('orders_last_synchronization', $fromDate)->save();
     }
     $entity = 'orders';
     $type = 'receive';
     $name = 'requester';
     $prefix = 'Ess_M2ePro_Model_Amazon_Synchronization';
     $dispatcherObject = Mage::getModel('M2ePro/Connector_Amazon_Dispatcher');
     $dispatcherObject->processConnector($entity, $type, $name, $params, $account, $prefix);
 }
Пример #12
0
 public function setLocks($hash)
 {
     $this->listingProduct->addObjectLock(NULL, $hash);
     $this->listingProduct->addObjectLock('in_action', $hash);
     $this->listingProduct->addObjectLock('search_action', $hash);
     $this->listingProduct->getListing()->addObjectLock(NULL, $hash);
     $this->listingProduct->getListing()->addObjectLock('products_in_action', $hash);
     $this->listingProduct->getListing()->addObjectLock('products_search_action', $hash);
     $this->account->addObjectLock('products_in_action', $hash);
     $this->account->addObjectLock('products_search_action', $hash);
     $this->marketplace->addObjectLock('products_in_action', $hash);
     $this->marketplace->addObjectLock('products_search_action', $hash);
     $processingStatus = Ess_M2ePro_Model_Amazon_Listing_Product::GENERAL_ID_SEARCH_STATUS_PROCESSING;
     $this->listingProduct->getChildObject()->setData('general_id_search_status', $processingStatus)->save();
 }
Пример #13
0
 protected function setAccountByOtherListingProduct(Ess_M2ePro_Model_Listing_Other $otherListing)
 {
     if (!is_null($this->account) && $this->account->getId() == $otherListing->getAccountId()) {
         return;
     }
     $this->account = Mage::helper('M2ePro/Component_Buy')->getCachedObject('Account', $otherListing->getAccountId());
 }
Пример #14
0
 protected function setAccountByOtherListingProduct(Ess_M2ePro_Model_Listing_Other $otherListing)
 {
     if (!is_null($this->account) && $this->account->getId() == $otherListing->getAccountId()) {
         return;
     }
     $this->account = Mage::helper('M2ePro/Component_Amazon')->getObject('Account', $otherListing->getAccountId());
     $this->mappingSettings = NULL;
 }
Пример #15
0
 private function processPlayOrders($response, Ess_M2ePro_Model_Account $account)
 {
     $ordersLastSynchronization = $account->getData('orders_last_synchronization');
     $orders = array();
     foreach ($response as $orderData) {
         $currentOrderDate = $orderData['purchase_create_date'];
         if (strtotime($currentOrderDate) > strtotime($ordersLastSynchronization)) {
             $ordersLastSynchronization = $currentOrderDate;
         }
         /** @var $orderBuilder Ess_M2ePro_Model_Play_Order_Builder */
         $orderBuilder = Mage::getModel('M2ePro/Play_Order_Builder');
         $orderBuilder->initialize($account, $orderData);
         $order = $orderBuilder->process();
         $orders[] = $order;
     }
     $account->setData('orders_last_synchronization', $ordersLastSynchronization)->save();
     return $orders;
 }
 private function processAmazonOrders($response, Ess_M2ePro_Model_Account $account)
 {
     /** @var Ess_M2ePro_Model_Amazon_Account $amazonAccount */
     $amazonAccount = $account->getChildObject();
     $ordersLastSynchronization = $amazonAccount->getData('orders_last_synchronization');
     $orders = array();
     foreach ($response as $orderData) {
         $currentOrderUpdateDate = $orderData['purchase_update_date'];
         if (strtotime($currentOrderUpdateDate) > strtotime($ordersLastSynchronization)) {
             $ordersLastSynchronization = $currentOrderUpdateDate;
         }
         /** @var $orderBuilder Ess_M2ePro_Model_Amazon_Order_Builder */
         $orderBuilder = Mage::getModel('M2ePro/Amazon_Order_Builder');
         $orderBuilder->initialize($account, $orderData);
         $order = $orderBuilder->process();
         if (!$order) {
             continue;
         }
         $orders[] = $order;
     }
     $amazonAccount->setData('orders_last_synchronization', $ordersLastSynchronization)->save();
     return $orders;
 }
Пример #17
0
 public function setLocks($hash)
 {
     $tempListings = array();
     foreach ($this->listingsProducts as $listingProduct) {
         /** @var $listingProduct Ess_M2ePro_Model_Listing_Product */
         $listingProduct->addObjectLock(NULL, $hash);
         $listingProduct->addObjectLock('in_action', $hash);
         $listingProduct->addObjectLock('search_action', $hash);
         $processingStatus = Ess_M2ePro_Model_Amazon_Listing_Product::GENERAL_ID_SEARCH_STATUS_PROCESSING;
         $listingProduct->getChildObject()->setData('general_id_search_status', $processingStatus)->save();
         if (isset($tempListings[$listingProduct->getListingId()])) {
             continue;
         }
         $listingProduct->getListing()->addObjectLock(NULL, $hash);
         $listingProduct->getListing()->addObjectLock('products_in_action', $hash);
         $listingProduct->getListing()->addObjectLock('products_search_action', $hash);
         $tempListings[$listingProduct->getListingId()] = true;
     }
     $this->account->addObjectLock('products_in_action', $hash);
     $this->account->addObjectLock('products_search_action', $hash);
     $this->marketplace->addObjectLock('products_in_action', $hash);
     $this->marketplace->addObjectLock('products_search_action', $hash);
 }
Пример #18
0
 private function updateReceivedTitles(array $responseData, Ess_M2ePro_Model_Account $account)
 {
     if (!isset($responseData['items']) || !is_array($responseData['items'])) {
         return;
     }
     /** @var $connWrite Varien_Db_Adapter_Pdo_Mysql */
     $connWrite = Mage::getSingleton('core/resource')->getConnection('core_write');
     $aloTable = Mage::getResourceModel('M2ePro/Amazon_Listing_Other')->getMainTable();
     $lolTable = Mage::getResourceModel('M2ePro/Listing_Other_Log')->getMainTable();
     /** @var $mappingModel Ess_M2ePro_Model_Amazon_Listing_Other_Mapping */
     $mappingModel = Mage::getModel('M2ePro/Amazon_Listing_Other_Mapping');
     /** @var $movingModel Ess_M2ePro_Model_Amazon_Listing_Other_Moving */
     $movingModel = Mage::getModel('M2ePro/Amazon_Listing_Other_Moving');
     $receivedItems = array();
     foreach ($responseData['items'] as $generalId => $item) {
         if ($item == false) {
             continue;
         }
         $item = array_shift($item);
         $title = $item['title'];
         if (isset($receivedItems[$generalId]) || empty($title)) {
             continue;
         }
         $receivedItems[$generalId] = $title;
         $listingsOthersWithEmptyTitles = array();
         if ($account->getChildObject()->isOtherListingsMappingEnabled()) {
             /** @var $listingOtherCollection Mage_Core_Model_Mysql4_Collection_Abstract */
             $listingOtherCollection = Mage::helper('M2ePro/Component_Amazon')->getCollection('Listing_Other')->addFieldToFilter('main_table.account_id', (int) $account->getId())->addFieldToFilter('second_table.general_id', (int) $generalId)->addFieldToFilter('second_table.title', array('null' => true));
             $listingsOthersWithEmptyTitles = $listingOtherCollection->getItems();
         }
         $connWrite->update($aloTable, array('title' => (string) $title), array('general_id = ?' => (string) $generalId));
         $connWrite->update($lolTable, array('title' => (string) $title), array('identifier = ?' => (string) $generalId, 'component_mode = ?' => Ess_M2ePro_Helper_Component_Amazon::NICK));
         if (count($listingsOthersWithEmptyTitles) > 0) {
             foreach ($listingsOthersWithEmptyTitles as $listingOtherModel) {
                 $listingOtherModel->setData('title', (string) $title);
                 $listingOtherModel->getChildObject()->setData('title', (string) $title);
                 $mappingModel->initialize($account);
                 $mappingResult = $mappingModel->autoMapOtherListingProduct($listingOtherModel);
                 if ($mappingResult) {
                     if (!$account->getChildObject()->isOtherListingsMoveToListingsEnabled()) {
                         continue;
                     }
                     $movingModel->initialize($account);
                     $movingModel->autoMoveOtherListingProduct($listingOtherModel);
                 }
             }
         }
     }
 }
Пример #19
0
 public static function receiveFromEbay(Ess_M2ePro_Model_Account $account, array $paramsConnector = array())
 {
     // Create connector
     //-----------------------
     $messages = Mage::getModel('M2ePro/Connector_Server_Ebay_Dispatcher')->processVirtualAbstract('message', 'get', 'memberList', $paramsConnector, 'messages', NULL, $account->getId(), NULL);
     is_null($messages) && ($messages = array());
     //-----------------------
     // Get new messages
     //-----------------------
     $countNewMessages = 0;
     foreach ($messages as $message) {
         $dbMessage = array('account_id' => $account->getId(), 'ebay_item_id' => $message['item_id'], 'ebay_item_title' => $message['item_title'], 'sender_name' => $message['sender_name'], 'message_id' => $message['id'], 'message_subject' => $message['subject'], 'message_text' => $message['body'], 'message_date' => $message['creation_date'], 'message_type' => $message['type']);
         if (isset($message['responses'])) {
             $dbMessage['message_responses'] = json_encode($message['responses'], JSON_FORCE_OBJECT);
         }
         $existMessage = Mage::getModel('M2ePro/Ebay_Message')->getCollection()->addFieldToFilter('account_id', $account->getId())->addFieldToFilter('message_id', $message['id'])->getFirstItem();
         if (is_null($existMessage->getId())) {
             $countNewMessages++;
         }
         $existMessage->addData($dbMessage)->save();
     }
     //-----------------------
     return array('new' => $countNewMessages, 'total' => count($messages));
 }
Пример #20
0
 public function setLocks($hash)
 {
     /** @var $lockItem Ess_M2ePro_Model_LockItem */
     $lockItem = Mage::getModel('M2ePro/LockItem');
     $lockItemPrefix = Ess_M2ePro_Model_Play_Synchronization_Tasks_Orders_Receive::LOCK_ITEM_PREFIX;
     $nick = $lockItemPrefix . '_' . $this->account->getId() . '_' . $this->marketplace->getId();
     $lockItem->setNick($nick);
     $lockItem->create();
     $this->account->addObjectLock(NULL, $hash);
     $this->account->addObjectLock('synchronization', $hash);
     $this->account->addObjectLock('synchronization_play', $hash);
     $this->account->addObjectLock($lockItemPrefix, $hash);
     $this->marketplace->addObjectLock(NULL, $hash);
     $this->marketplace->addObjectLock('synchronization', $hash);
     $this->marketplace->addObjectLock('synchronization_play', $hash);
     $this->marketplace->addObjectLock($lockItemPrefix, $hash);
 }
Пример #21
0
 public function setLocks($hash)
 {
     /** @var $lockItem Ess_M2ePro_Model_LockItem */
     $lockItem = Mage::getModel('M2ePro/LockItem');
     $tempNick = Ess_M2ePro_Model_Buy_Synchronization_Tasks_Defaults_UpdateListingsProducts::LOCK_ITEM_PREFIX;
     $tempNick .= '_' . $this->account->getId() . '_' . $this->marketplace->getId();
     $lockItem->setNick($tempNick);
     $lockItem->create();
     $this->account->addObjectLock(NULL, $hash);
     $this->account->addObjectLock('synchronization', $hash);
     $this->account->addObjectLock('synchronization_buy', $hash);
     $this->account->addObjectLock(Ess_M2ePro_Model_Buy_Synchronization_Tasks_Defaults_UpdateListingsProducts::LOCK_ITEM_PREFIX, $hash);
     $this->marketplace->addObjectLock(NULL, $hash);
     $this->marketplace->addObjectLock('synchronization', $hash);
     $this->marketplace->addObjectLock('synchronization_buy', $hash);
     $this->marketplace->addObjectLock(Ess_M2ePro_Model_Buy_Synchronization_Tasks_Defaults_UpdateListingsProducts::LOCK_ITEM_PREFIX, $hash);
 }
Пример #22
0
 public function setLocks($hash)
 {
     /** @var $lockItem Ess_M2ePro_Model_LockItem */
     $lockItem = Mage::getModel('M2ePro/LockItem');
     $tempNick = Ess_M2ePro_Model_Play_Synchronization_Tasks_Defaults_UpdateListingsProducts::LOCK_ITEM_PREFIX;
     $tempNick .= '_' . $this->account->getId() . '_' . $this->marketplace->getId();
     $lockItem->setNick($tempNick);
     $lockItem->create();
     $this->account->addObjectLock(NULL, $hash);
     $this->account->addObjectLock('synchronization', $hash);
     $this->account->addObjectLock('synchronization_play', $hash);
     $this->account->addObjectLock(Ess_M2ePro_Model_Play_Synchronization_Tasks_Defaults_UpdateListingsProducts::LOCK_ITEM_PREFIX, $hash);
     $this->marketplace->addObjectLock(NULL, $hash);
     $this->marketplace->addObjectLock('synchronization', $hash);
     $this->marketplace->addObjectLock('synchronization_play', $hash);
     $this->marketplace->addObjectLock(Ess_M2ePro_Model_Play_Synchronization_Tasks_Defaults_UpdateListingsProducts::LOCK_ITEM_PREFIX, $hash);
     /** @var $connWrite Varien_Db_Adapter_Pdo_Mysql */
     $connWrite = Mage::getSingleton('core/resource')->getConnection('core_write');
     $tempTable = Mage::getSingleton('core/resource')->getTableName('m2epro_play_processed_inventory');
     $connWrite->delete($tempTable, array('`hash` = ?' => (string) $hash));
 }
Пример #23
0
 private function updateAccountMarketplace(Ess_M2ePro_Model_Account $accountObj, Ess_M2ePro_Model_Marketplace $marketplaceObj)
 {
     $this->_profiler->addTitle('Starting account "' . $accountObj->getTitle() . '" and marketplace "' . $marketplaceObj->getTitle() . '"');
     $this->_profiler->addTimePoint(__METHOD__ . 'send' . $accountObj->getId(), 'Get inventory from Amazon');
     $tempString = 'Task "3rd Party Listings Synchronization" for Amazon account: ';
     $tempString .= '"%s" and marketplace "%s" is started. Please wait...';
     $this->_lockItem->setStatus(Mage::helper('M2ePro')->__($tempString, $accountObj->getTitle(), $marketplaceObj->getTitle()));
     // Get all changes on Amazon for account
     //---------------------------
     $dispatcherObject = Mage::getModel('M2ePro/Connector_Server_Amazon_Dispatcher');
     $dispatcherObject->processConnector('tasks', 'otherListings', 'requester', array(), $marketplaceObj, $accountObj, 'Ess_M2ePro_Model_Amazon_Synchronization');
     //---------------------------
     $this->_profiler->saveTimePoint(__METHOD__ . 'send' . $accountObj->getId());
     $this->_profiler->addEol();
 }
Пример #24
0
 /**
  * @param Ess_M2ePro_Model_Account $account
  * @return Ess_M2ePro_Model_Order_Change
  */
 private function getRelatedChanges(Ess_M2ePro_Model_Account $account)
 {
     /** @var Ess_M2ePro_Model_Mysql4_Order_Change_Collection $changesCollection */
     $changesCollection = Mage::getModel('M2ePro/Order_Change')->getCollection();
     $changesCollection->addAccountFilter($account->getId());
     $changesCollection->addProcessingAttemptDateFilter(10);
     $changesCollection->addFieldToFilter('component', Ess_M2ePro_Helper_Component_Amazon::NICK);
     $changesCollection->addFieldToFilter('action', Ess_M2ePro_Model_Order_Change::ACTION_REFUND);
     $changesCollection->setPageSize(self::MAX_UPDATES_PER_TIME);
     $changesCollection->getSelect()->group(array('order_id'));
     return $changesCollection->getItems();
 }
Пример #25
0
 private function updateAccount(Ess_M2ePro_Model_Account $account)
 {
     $this->_profiler->addTitle('Starting account "' . $account->getTitle() . '"');
     $this->_profiler->addTimePoint(__METHOD__ . 'send' . $account->getId(), 'Get orders from Amazon');
     //->__('Task "%s" for Amazon account: "%s" is started. Please wait...')
     $status = 'Task "%s" for Amazon account: "%s" is started. Please wait...';
     $status = Mage::helper('M2ePro')->__($status, $this->name, $account->getTitle());
     $this->_lockItem->setStatus($status);
     // Get orders from Amazon for account
     //---------------------------
     $fromDate = $this->prepareFromDate($account->getData('orders_last_synchronization'));
     $params = array('from_date' => $fromDate);
     if (is_null($account->getData('orders_last_synchronization'))) {
         $account->setData('orders_last_synchronization', $fromDate)->save();
     }
     $entity = 'tasks';
     $type = 'orders';
     $name = 'requester';
     $prefix = 'Ess_M2ePro_Model_Amazon_Synchronization';
     $dispatcherObject = Mage::getModel('M2ePro/Connector_Amazon_Dispatcher');
     $dispatcherObject->processConnector($entity, $type, $name, $params, $account, $prefix);
     //---------------------------
     $this->_profiler->saveTimePoint(__METHOD__ . 'send' . $account->getId());
     $this->_profiler->addEol();
 }
 private function receiveChangesFromEbay(Ess_M2ePro_Model_Account $account, array $paramsConnector = array())
 {
     $dispatcherObj = Mage::getModel('M2ePro/Connector_Ebay_Dispatcher');
     $connectorObj = $dispatcherObj->getVirtualConnector('item', 'get', 'changes', $paramsConnector, NULL, NULL, $account->getId(), NULL);
     $response = $dispatcherObj->process($connectorObj);
     $this->processResponseMessages($connectorObj);
     if (!isset($response['items']) || !isset($response['to_time'])) {
         return NULL;
     }
     return $response;
 }
Пример #27
0
 private function processAccount(Ess_M2ePro_Model_Account $account)
 {
     $title = 'Starting account "%s"';
     $title = sprintf($title, $account->getTitle());
     $this->_profiler->addTitle($title);
     $this->_profiler->addTimePoint(__METHOD__ . 'send' . $account->getId(), 'Update orders on eBay');
     $status = 'Task "%s" for eBay "%s" Account is started. Please wait...';
     $status = Mage::helper('M2ePro')->__($status, $this->name, $account->getTitle());
     $this->_lockItem->setStatus($status);
     $changesCollection = Mage::getModel('M2ePro/Order_Change')->getCollection();
     $changesCollection->addAccountFilter($account->getId());
     $changesCollection->addProcessingAttemptDateFilter();
     $changesCollection->setPageSize(200);
     $changesCollection->getSelect()->group(array('order_id'));
     if ($changesCollection->getSize() == 0) {
         return;
     }
     // Update orders status on eBay
     //---------------------------
     foreach ($changesCollection as $change) {
         Mage::getResourceModel('M2ePro/Order_Change')->incrementAttemptCount(array($change->getId()));
         $this->processChange($change);
     }
     //---------------------------
     $this->_profiler->saveTimePoint(__METHOD__ . 'send' . $account->getId());
     $this->_profiler->addEol();
 }
Пример #28
0
 private function updateAccountMarketplace(Ess_M2ePro_Model_Account $accountObj, Ess_M2ePro_Model_Marketplace $marketplaceObj)
 {
     $this->_profiler->addTitle('Starting account "' . $accountObj->getTitle() . '" and marketplace "' . $marketplaceObj->getTitle() . '"');
     $this->_profiler->addTimePoint(__METHOD__ . 'send' . $accountObj->getId(), 'Get orders from Amazon');
     //->__('Task "Orders Synchronization" for Amazon account: "%s" and marketplace "%s" is started. Please wait...')
     $tempString = 'Task "Orders Synchronization" for Amazon account: ';
     $tempString .= '"%s" and marketplace "%s" is started. Please wait...';
     $this->_lockItem->setStatus(Mage::helper('M2ePro')->__($tempString, $accountObj->getTitle(), $marketplaceObj->getTitle()));
     // Get orders from Amazon for account
     //---------------------------
     $fromDate = $this->prepareFromDate($accountObj->getData('orders_last_synchronization'));
     $params = array('from_date' => $fromDate);
     if (is_null($accountObj->getData('orders_last_synchronization'))) {
         $accountObj->setData('orders_last_synchronization', $fromDate)->save();
     }
     $dispatcherObject = Mage::getModel('M2ePro/Amazon_Connector')->getDispatcher();
     $dispatcherObject->processConnector('tasks', 'orders', 'requester', $params, $marketplaceObj, $accountObj, 'Ess_M2ePro_Model_Amazon_Synchronization');
     //---------------------------
     $this->_profiler->saveTimePoint(__METHOD__ . 'send' . $accountObj->getId());
     $this->_profiler->addEol();
 }
Пример #29
0
 protected function receiveFromEbay(Ess_M2ePro_Model_Account $account, array $paramsConnector = array())
 {
     $dispatcherObj = Mage::getModel('M2ePro/Connector_Ebay_Dispatcher');
     $connectorObj = $dispatcherObj->getVirtualConnector('feedback', 'get', 'entity', $paramsConnector, 'feedbacks', NULL, $account->getId(), NULL);
     $feedbacks = $dispatcherObj->process($connectorObj);
     $this->processResponseMessages($connectorObj);
     is_null($feedbacks) && ($feedbacks = array());
     $countNewFeedbacks = 0;
     foreach ($feedbacks as $feedback) {
         $dbFeedback = array('account_id' => $account->getId(), 'ebay_item_id' => $feedback['item_id'], 'ebay_transaction_id' => $feedback['transaction_id']);
         if ($feedback['item_title'] != '') {
             $dbFeedback['ebay_item_title'] = $feedback['item_title'];
         }
         if ($feedback['from_role'] == Ess_M2ePro_Model_Ebay_Feedback::ROLE_BUYER) {
             $dbFeedback['buyer_name'] = $feedback['user_sender'];
             $dbFeedback['buyer_feedback_id'] = $feedback['id'];
             $dbFeedback['buyer_feedback_text'] = $feedback['info']['text'];
             $dbFeedback['buyer_feedback_date'] = $feedback['info']['date'];
             $dbFeedback['buyer_feedback_type'] = $feedback['info']['type'];
         } else {
             $dbFeedback['seller_feedback_id'] = $feedback['id'];
             $dbFeedback['seller_feedback_text'] = $feedback['info']['text'];
             $dbFeedback['seller_feedback_date'] = $feedback['info']['date'];
             $dbFeedback['seller_feedback_type'] = $feedback['info']['type'];
         }
         $existFeedback = Mage::getModel('M2ePro/Ebay_Feedback')->getCollection()->addFieldToFilter('account_id', $account->getId())->addFieldToFilter('ebay_item_id', $feedback['item_id'])->addFieldToFilter('ebay_transaction_id', $feedback['transaction_id'])->getFirstItem();
         if (!is_null($existFeedback->getId())) {
             if ($feedback['from_role'] == Ess_M2ePro_Model_Ebay_Feedback::ROLE_BUYER && !$existFeedback->getData('buyer_feedback_id')) {
                 $countNewFeedbacks++;
             }
             if ($feedback['from_role'] == Ess_M2ePro_Model_Ebay_Feedback::ROLE_SELLER && !$existFeedback->getData('seller_feedback_id')) {
                 $countNewFeedbacks++;
             }
         } else {
             $countNewFeedbacks++;
         }
         $existFeedback->addData($dbFeedback)->save();
     }
     return array('total' => count($feedbacks), 'new' => $countNewFeedbacks);
 }
Пример #30
0
 private function processAccount(Ess_M2ePro_Model_Account $account)
 {
     $title = 'Starting account "%s"';
     $title = sprintf($title, $account->getTitle());
     $this->_profiler->addTitle($title);
     $this->_profiler->addTimePoint(__METHOD__ . 'send' . $account->getId(), 'Get orders from Play');
     $status = 'Task "%s" for Play.com "%s" Account is started. Please wait...';
     $status = Mage::helper('M2ePro')->__($status, $this->name, $account->getTitle());
     $this->_lockItem->setStatus($status);
     //------------------------------
     $fromDate = $this->prepareFromDate($account->getData('orders_last_synchronization'));
     $params = array('from_date' => $fromDate);
     if (is_null($account->getData('orders_last_synchronization'))) {
         $account->setData('orders_last_synchronization', $fromDate)->save();
     }
     //------------------------------
     // Get open orders from Play.com for account
     //---------------------------
     /** @var $dispatcherObject Ess_M2ePro_Model_Connector_Play_Dispatcher */
     $dispatcherObject = Mage::getModel('M2ePro/Connector_Play_Dispatcher');
     $prefix = 'Ess_M2ePro_Model_Play_Synchronization';
     $dispatcherObject->processConnector('tasks', 'orders_receive', 'requester', $params, $account, $prefix);
     //---------------------------
     $this->_profiler->saveTimePoint(__METHOD__ . 'send' . $account->getId());
     $this->_profiler->addEol();
 }