public function setAccount(Ess_M2ePro_Model_Accounts $account) { if (!$account->getId()) { throw new Exception('Account does not exist.'); } $this->_account = $account; return $this; }
public function process() { if (!is_null($this->marketplace)) { $this->requestExtraData['marketplace'] = $this->marketplace->getId(); } if (!is_null($this->account)) { $this->requestExtraData['account'] = $this->account->getServerHash(); } if (!is_null($this->mode)) { $this->requestExtraData['mode'] = $this->mode; } return parent::process(); }
private function _prepareForInsert($item, Ess_M2ePro_Model_Accounts $account) { $result = array('id' => Mage::getModel('M2ePro/EbayListings')->load($item['id'], 'ebay_item')->getId(), 'account_id' => (int) $account->getId(), 'marketplace_id' => (int) Mage::getModel('M2ePro/Marketplaces')->load($item['marketplace'], "code")->getId(), 'ebay_item' => (double) $item['id'], 'ebay_price' => (double) $item['currentPrice'], 'ebay_currency' => (string) $item['currency'], 'ebay_title' => (string) $item['title'], 'ebay_qty' => (int) $item['quantity'], 'ebay_qty_sold' => (int) $item['quantitySold'], 'ebay_bids' => (int) $item['bidCount'], 'ebay_start_date' => (string) Mage::helper('M2ePro')->getDate($item['startTime']), 'ebay_end_date' => (string) Mage::helper('M2ePro')->getDate($item['endTime'])); if ($item['listingType'] == Ess_M2ePro_Model_SellingFormatTemplates::EBAY_LISTING_TYPE_AUCTION) { $result['ebay_qty'] = 1; } if (($item['listingStatus'] == self::EBAY_STATUS_COMPLETED || $item['listingStatus'] == self::EBAY_STATUS_ENDED) && $result['ebay_qty'] == $result['ebay_qty_sold']) { $result['status'] = Ess_M2ePro_Model_ListingsProducts::STATUS_SOLD; } else { if ($item['listingStatus'] == self::EBAY_STATUS_COMPLETED) { $result['status'] = Ess_M2ePro_Model_ListingsProducts::STATUS_STOPPED; } else { if ($item['listingStatus'] == self::EBAY_STATUS_ENDED) { $result['status'] = Ess_M2ePro_Model_ListingsProducts::STATUS_FINISHED; } else { if ($item['listingStatus'] == self::EBAY_STATUS_ACTIVE) { $result['status'] = Ess_M2ePro_Model_ListingsProducts::STATUS_LISTED; } } } } return $result; }
public static function receiveFeedbacks(Ess_M2ePro_Model_Accounts $account, array $paramsConnector = array()) { // Create connector //----------------------- $feedbacks = Mage::getModel('M2ePro/Connectors_Ebay_Dispatcher')->processVirtual('feedback', 'get', 'entity', $paramsConnector, 'feedbacks', NULL, $account->getId()); is_null($feedbacks) && ($feedbacks = array()); //----------------------- // Get and update feedbacks //----------------------- $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'] == self::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/Feedbacks')->getCollection()->addFieldToFilter('account_id', $account->getId())->addFieldToFilter('ebay_item_id', $feedback['item_id'])->addFieldToFilter('ebay_transaction_id', $feedback['transaction_id'])->getFirstItem(); if ($existFeedback->getId()) { if ($feedback['from_role'] == self::ROLE_BUYER && !$existFeedback->getData('buyer_feedback_id')) { $countNewFeedbacks++; } if ($feedback['from_role'] == self::ROLE_SELLER && !$existFeedback->getData('seller_feedback_id')) { $countNewFeedbacks++; } $existFeedback->addData($dbFeedback); } else { $existFeedback->setData($dbFeedback); $countNewFeedbacks++; } $existFeedback->save(); } //----------------------- return array('total' => count($feedbacks), 'new' => $countNewFeedbacks); }
private function getResponseBody(Ess_M2ePro_Model_Accounts $account) { if ($account->isFeedbacksAutoResponseCycled()) { $lastUsedId = 0; if ($account->getFeedbacksLastUsedId() != null) { $lastUsedId = (int) $account->getFeedbacksLastUsedId(); } $feedbackTemplatesIds = Mage::getModel('M2ePro/FeedbacksTemplates')->getCollection()->addFieldToFilter('account_id', $account->getId())->setOrder('id', 'ASC')->getAllIds(); if (!count($feedbackTemplatesIds)) { return ''; } $feedbackTemplate = Mage::getModel('M2ePro/FeedbacksTemplates'); if (max($feedbackTemplatesIds) > $lastUsedId) { foreach ($feedbackTemplatesIds as $templateId) { if ($templateId <= $lastUsedId) { continue; } $feedbackTemplate->load($templateId); break; } } else { $feedbackTemplate->load(min($feedbackTemplatesIds)); } if (!$feedbackTemplate->getId()) { return ''; } $account->setData('feedbacks_last_used_id', $feedbackTemplate->getId())->save(); return $feedbackTemplate->getBody(); } if ($account->isFeedbacksAutoResponseRandom()) { $feedbackTemplatesIds = Mage::getModel('M2ePro/FeedbacksTemplates')->getCollection()->addFieldToFilter('account_id', $account->getId())->getAllIds(); if (!count($feedbackTemplatesIds)) { return ''; } $index = rand(0, count($feedbackTemplatesIds) - 1); $feedbackTemplate = Mage::getModel('M2ePro/FeedbacksTemplates')->load($feedbackTemplatesIds[$index]); if (!$feedbackTemplate->getId()) { return ''; } return $feedbackTemplate->getBody(); } return ''; }
public static function receiveMessages(Ess_M2ePro_Model_Accounts $account, array $paramsConnector = array()) { // Create connector //----------------------- $messages = Mage::getModel('M2ePro/Connectors_Ebay_Dispatcher')->processVirtual('message', 'get', 'memberList', $paramsConnector, 'messages', NULL, $account->getId()); 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/Messages')->getCollection()->addFieldToFilter('message_id', $message['id'])->toArray(); $tempModel = Mage::getModel('M2ePro/Messages'); if (count($existMessage['items']) != 0) { $tempModel->setId($existMessage['items'][0]['id']); } else { $countNewMessages++; } $tempModel->addData($dbMessage)->save(); } //----------------------- return array('new' => $countNewMessages, 'total' => count($messages)); }
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; }