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()); }
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); }
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; }
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); }
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 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(); }
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)); }
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)); }
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(); }
private function associateAndUpdateOrder(Ess_M2ePro_Model_Account $account, array $orderData) { /** @var $order Ess_M2ePro_Model_Order */ $order = Mage::helper('M2ePro/Component_Ebay')->getCollection('Order')->addFieldToFilter('account_id', $account->getId())->addFieldToFilter('ebay_order_id', $orderData['ebay_order_id'])->getFirstItem(); if (!$order->getId()) { return null; } $order->setAccount($account); /** @var $helper Ess_M2ePro_Model_Ebay_Order_Helper */ $helper = Mage::getSingleton('M2ePro/Ebay_Order_Helper'); $checkoutStatus = $helper->getCheckoutStatus($orderData['checkout_status']); $paymentStatus = $helper->getPaymentStatus($orderData['payment_method'], $orderData['payment_date'], $orderData['payment_status_ebay']); $shippingStatus = $helper->getShippingStatus($orderData['shipping_date'], $orderData['shipping_method_selected']); if ($paymentStatus == Ess_M2ePro_Model_Ebay_Order::PAYMENT_STATUS_COMPLETED) { $paymentMethodName = $helper->getPaymentMethodNameByCode($orderData['payment_method'], $order->getMarketplaceId()); $order->setData('payment_status', $paymentStatus); $order->setData('payment_method', $paymentMethodName); } if (!$order->getChildObject()->isCheckoutCompleted() && $checkoutStatus == Ess_M2ePro_Model_Ebay_Order::CHECKOUT_STATUS_COMPLETED) { $shippingMethodName = $helper->getShippingMethodNameByCode($orderData['shipping_method'], $order->getMarketplaceId()); $order->setData('tax_rate', (double) $orderData['tax_rate']); $order->setData('tax_state', $orderData['tax_state']); $order->setData('tax_amount', (double) $orderData['tax_amount']); $order->setData('tax_includes_shipping', (int) $orderData['tax_includes_shipping']); $order->setData('shipping_address', json_encode($orderData['shipping_address'])); $order->setData('shipping_status', $shippingStatus); $order->setData('shipping_method', $shippingMethodName); $order->setData('shipping_price', (double) $orderData['shipping_price']); } $order->save(); return $order; }
protected function receiveFromEbay(Ess_M2ePro_Model_Marketplace $marketplace, Ess_M2ePro_Model_Account $account) { $policies = Mage::getModel('M2ePro/Connector_Ebay_Dispatcher')->processVirtual('account', 'get', 'policies', array(), 'policies', $marketplace->getId(), $account->getId(), NULL); is_null($policies) && ($policies = array()); $this->getActualOperationHistory()->addText('Total received policies from eBay: ' . count($policies)); return $policies; }
private function receiveFromEbay(Ess_M2ePro_Model_Account $account, array $paramsConnector = array()) { $response = Mage::getModel('M2ePro/Connector_Ebay_Dispatcher')->processVirtual('item', 'get', 'changes', $paramsConnector, NULL, NULL, $account->getId(), NULL); if (!isset($response['items']) || !isset($response['to_time'])) { return NULL; } return $response; }
private function processAccountMarketplace(Ess_M2ePro_Model_Account $account, Ess_M2ePro_Model_Marketplace $marketplace) { $title = 'Starting account "' . $account->getTitle() . '" and marketplace "' . $marketplace->getTitle() . '"'; $this->_profiler->addTitle($title); $this->_profiler->addTimePoint(__METHOD__ . 'send' . $account->getId(), 'Update orders on Buy'); $statusString = 'Task "Orders Update Synchronization" for Rakuten.com "%s" Account and "%s" marketplace '; $statusString .= 'is started. Please wait...'; $status = Mage::helper('M2ePro')->__($statusString, $account->getTitle(), $marketplace->getTitle()); $this->_lockItem->setStatus($status); $changesCollection = Mage::getModel('M2ePro/Order_Change')->getCollection(); $changesCollection->addAccountFilter($account->getId()); $changesCollection->addFieldToFilter('action', Ess_M2ePro_Model_Order_Change::ACTION_UPDATE_SHIPPING); if ($changesCollection->getSize() == 0) { return; } // Update orders shipping status on Rakuten.com //--------------------------- $params = array(); foreach ($changesCollection as $change) { $changeParams = $change->getParams(); $params[] = array('order_id' => $change->getOrderId(), 'buy_order_id' => $changeParams['buy_order_id'], 'buy_order_item_id' => $changeParams['buy_order_item_id'], 'qty' => $changeParams['qty'], 'tracking_type' => $changeParams['tracking_type'], 'tracking_number' => $changeParams['tracking_number'], 'ship_date' => $changeParams['ship_date']); } /** @var $dispatcherObject Ess_M2ePro_Model_Connector_Server_Buy_Dispatcher */ $dispatcherObject = Mage::getModel('M2ePro/Buy_Connector')->getDispatcher(); $dispatcherObject->processConnector('orders', 'update', 'shipping', $params, $marketplace, $account); $changesCollection->walk('delete'); //--------------------------- $this->_profiler->saveTimePoint(__METHOD__ . 'send' . $account->getId()); $this->_profiler->addEol(); }
private function receiveSkusFromEbay(Ess_M2ePro_Model_Account $account, $sinceTime) { $sinceTime = new DateTime($sinceTime, new DateTimeZone('UTC')); $sinceTime->modify('-1 minute'); $sinceTime = $sinceTime->format('Y-m-d H:i:s'); $inputData = array('since_time' => $sinceTime, 'only_one_page' => true); $dispatcherObj = Mage::getModel('M2ePro/Connector_Ebay_Dispatcher'); $connectorObj = $dispatcherObj->getVirtualConnector('item', 'get', 'all', $inputData, NULL, NULL, $account->getId(), NULL); $responseData = $dispatcherObj->process($connectorObj); if (!isset($responseData['items']) || !is_array($responseData['items'])) { return array(); } return $responseData; }
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 processAccountInventorySku(Ess_M2ePro_Model_Account $account) { $this->_profiler->addTitle('Starting account "' . $account->getData('title') . '"'); /** @var $listingOtherCollection Mage_Core_Model_Mysql4_Collection_Abstract */ $listingOtherCollection = Mage::helper('M2ePro/Component_Ebay')->getCollection('Listing_Other'); $listingOtherCollection->addFieldToFilter('`main_table`.account_id', (int) $account->getId()); $listingOtherCollection->getSelect()->where('`second_table`.`sku` IS NULL'); $listingOtherCollection->getSelect()->order('second_table.start_date ASC'); $listingOtherCollection->getSelect()->limit(200); if (!$listingOtherCollection->getSize()) { $this->_profiler->addEol(); return; } /** @var $tempListingOther Ess_M2ePro_Model_Listing_Other */ $tempListingOther = $listingOtherCollection->getFirstItem(); $sinceTime = new DateTime($tempListingOther->getData('start_date'), new DateTimeZone('UTC')); $sinceTime->modify('-5 minutes'); $sinceTime = $sinceTime->format('Y-m-d H:i:s'); $inputData = array('since_time' => $sinceTime, 'getting_inventory_part' => true, 'only_one_page' => true); $responseData = Mage::getModel('M2ePro/Connector_Server_Ebay_Dispatcher')->processVirtualAbstract('item', 'get', 'all', $inputData, NULL, NULL, $account->getId(), NULL); if (!isset($responseData['items']) || !is_array($responseData['items'])) { $this->_profiler->addEol(); return; } if (count($responseData['items']) <= 0) { foreach ($listingOtherCollection->getItems() as $listingOther) { $listingOther->getChildObject()->setData('sku', new Zend_Db_Expr("''"))->save(); } $this->_profiler->addEol(); return; } /** @var $mappingModel Ess_M2ePro_Model_Ebay_Listing_Other_Mapping */ $mappingModel = Mage::getModel('M2ePro/Ebay_Listing_Other_Mapping'); foreach ($responseData['items'] as $receivedItem) { foreach ($listingOtherCollection->getItems() as $listingOther) { /** @var $listingOther Ess_M2ePro_Model_Listing_Other */ if ((double) $listingOther->getData('item_id') != $receivedItem['id']) { continue; } if ($receivedItem['sku'] == '') { $listingOther->getChildObject()->setData('sku', new Zend_Db_Expr("''"))->save(); } else { $listingOther->getChildObject()->setData('sku', (string) $receivedItem['sku'])->save(); } if ($account->getChildObject()->isOtherListingsMappingEnabled()) { $mappingModel->initialize($account); $mappingModel->autoMapOtherListingProduct($listingOther); } break; } } $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 updateAccount(Ess_M2ePro_Model_Account $accountObj) { $this->_profiler->addTitle('Starting account "' . $accountObj->getTitle() . '"'); $this->_profiler->addTimePoint(__METHOD__ . 'send' . $accountObj->getId(), 'Get inventory from Amazon'); $status = 'Task "Update Listings Products" for Amazon account: "%s" is started. Please wait...'; $this->_lockItem->setStatus(Mage::helper('M2ePro')->__($status, $accountObj->getTitle())); // Get all changes on Amazon for account //--------------------------- $dispatcherObject = Mage::getModel('M2ePro/Connector_Amazon_Dispatcher'); $dispatcherObject->processConnector('defaults', 'updateListingsProducts', 'requester', array(), $accountObj, 'Ess_M2ePro_Model_Amazon_Synchronization_Tasks'); //--------------------------- $this->_profiler->saveTimePoint(__METHOD__ . 'send' . $accountObj->getId()); $this->_profiler->addEol(); }
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 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); Mage::getResourceModel('M2ePro/Order_Change')->deleteByProcessingAttemptCount(Ess_M2ePro_Model_Order_Change::MAX_ALLOWED_PROCESSING_ATTEMPTS); $changesCollection = Mage::getModel('M2ePro/Order_Change')->getCollection(); $changesCollection->addAccountFilter($account->getId()); $changesCollection->addProcessingAttemptDateFilter(); $changesCollection->addFieldToFilter('action', Ess_M2ePro_Model_Order_Change::ACTION_UPDATE_SHIPPING); $changesCollection->getSelect()->group(array('order_id')); if ($changesCollection->getSize() == 0) { return; } Mage::getResourceModel('M2ePro/Order_Change')->incrementAttemptCount($changesCollection->getAllIds()); // Update orders shipping status on Rakuten.com //--------------------------- $params = array(); foreach ($changesCollection as $change) { $changeParams = $change->getParams(); $params[] = array('change_id' => $change->getId(), 'order_id' => $change->getOrderId(), 'play_order_id' => $changeParams['play_order_id'], 'carrier_name' => $changeParams['carrier_name'], 'tracking_number' => $changeParams['tracking_number']); } /** @var $dispatcherObject Ess_M2ePro_Model_Connector_Play_Dispatcher */ $dispatcherObject = Mage::getModel('M2ePro/Connector_Play_Dispatcher'); $dispatcherObject->processConnector('orders', 'update', 'shipping', $params, $account); //--------------------------- $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(); }
private function getListingsOtherForUpdate(Ess_M2ePro_Model_Account $accountObj) { /** @var $listingsOtherCollection Mage_Core_Model_Mysql4_Collection_Abstract */ $listingsOtherCollection = Mage::helper('M2ePro/Component_Play')->getCollection('Listing_Other'); $listingsOtherCollection->addFieldToFilter('`main_table`.account_id', (int) $accountObj->getId()); $listingsOtherCollection->getSelect()->where('`second_table`.`link_info` IS NULL'); $listingsOtherCollection->getSelect()->where('`second_table`.`play_listing_id` IS NOT NULL'); $listingsOtherCollection->getSelect()->limit(3); return $listingsOtherCollection; }
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(); }
/** * @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 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'); $bloTable = Mage::getResourceModel('M2ePro/Buy_Listing_Other')->getMainTable(); $lolTable = Mage::getResourceModel('M2ePro/Listing_Other_Log')->getMainTable(); /** @var $mappingModel Ess_M2ePro_Model_Buy_Listing_Other_Mapping */ $mappingModel = Mage::getModel('M2ePro/Buy_Listing_Other_Mapping'); /** @var $movingModel Ess_M2ePro_Model_Buy_Listing_Other_Moving */ $movingModel = Mage::getModel('M2ePro/Buy_Listing_Other_Moving'); $receivedItems = array(); foreach ($responseData['items'] as $generalId => $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_Buy')->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($bloTable, array('title' => (string) $title), array('general_id = ?' => (int) $generalId)); $connWrite->update($lolTable, array('title' => (string) $title), array('identifier = ?' => (int) $generalId, 'component_mode = ?' => Ess_M2ePro_Helper_Component_Buy::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); } } } } }
private function getRelatedChanges(Ess_M2ePro_Model_Account $account) { $changesCollection = Mage::getModel('M2ePro/Order_Change')->getCollection(); $changesCollection->addAccountFilter($account->getId()); $changesCollection->addProcessingAttemptDateFilter(); $changesCollection->addFieldToFilter('component', Ess_M2ePro_Helper_Component_Play::NICK); $changesCollection->addFieldToFilter('action', Ess_M2ePro_Model_Order_Change::ACTION_UPDATE_SHIPPING); $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 getResponseBody(Ess_M2ePro_Model_Account $account) { if ($account->getChildObject()->isFeedbacksAutoResponseCycled()) { $lastUsedId = 0; if ($account->getChildObject()->getFeedbacksLastUsedId() != null) { $lastUsedId = (int) $account->getChildObject()->getFeedbacksLastUsedId(); } $feedbackTemplatesIds = Mage::getModel('M2ePro/Ebay_Feedback_Template')->getCollection()->addFieldToFilter('account_id', $account->getId())->setOrder('id', 'ASC')->getAllIds(); if (!count($feedbackTemplatesIds)) { return ''; } $feedbackTemplate = Mage::getModel('M2ePro/Ebay_Feedback_Template'); 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->getChildObject()->isFeedbacksAutoResponseRandom()) { $feedbackTemplatesIds = Mage::getModel('M2ePro/Ebay_Feedback_Template')->getCollection()->addFieldToFilter('account_id', $account->getId())->getAllIds(); if (!count($feedbackTemplatesIds)) { return ''; } $index = rand(0, count($feedbackTemplatesIds) - 1); $feedbackTemplate = Mage::getModel('M2ePro/Ebay_Feedback_Template')->load($feedbackTemplatesIds[$index]); if (!$feedbackTemplate->getId()) { return ''; } return $feedbackTemplate->getBody(); } return ''; }
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(); }
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 Rakuten.com'); $status = 'Task "%s" for Rakuten.com "%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->addFieldToFilter('component', Ess_M2ePro_Helper_Component_Buy::NICK); $changesCollection->addFieldToFilter('action', Ess_M2ePro_Model_Order_Change::ACTION_UPDATE_SHIPPING); $changesCollection->getSelect()->group(array('order_id')); if ($changesCollection->getSize() == 0) { return; } // Update orders shipping status on Rakuten.com //--------------------------- $params = array(); foreach ($changesCollection as $change) { $changeParams = $change->getParams(); $params[] = array('change_id' => $change->getId(), 'order_id' => $change->getOrderId(), 'buy_order_id' => $changeParams['buy_order_id'], 'buy_order_item_id' => $changeParams['buy_order_item_id'], 'qty' => $changeParams['qty'], 'tracking_type' => $changeParams['tracking_type'], 'tracking_number' => $changeParams['tracking_number'], 'ship_date' => $changeParams['ship_date']); } if (count($params) == 0) { return; } Mage::getResourceModel('M2ePro/Order_Change')->incrementAttemptCount($changesCollection->getAllIds()); $entity = 'orders'; $type = 'update'; $name = 'shipping'; /** @var $dispatcherObject Ess_M2ePro_Model_Connector_Buy_Dispatcher */ $dispatcherObject = Mage::getModel('M2ePro/Connector_Buy_Dispatcher'); $dispatcherObject->processConnector($entity, $type, $name, $params, $account); //--------------------------- $this->_profiler->saveTimePoint(__METHOD__ . 'send' . $account->getId()); $this->_profiler->addEol(); }