public function process() { if (!is_null($this->account)) { $this->requestExtraData['account'] = $this->account->getChildObject()->getServerHash(); } parent::process(); }
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(); }
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(); }
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(); }
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); }
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(); }
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(); }
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); }
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(); }
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()); }
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; }
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; }
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); }
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); } } } } }
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)); }
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); }
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); }
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)); }
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(); }
/** * @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(); }
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; }
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(); }
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(); }
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); }
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(); }