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());
 }
Esempio n. 2
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);
 }
Esempio n. 3
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;
 }
Esempio n. 4
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);
 }
 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();
 }
Esempio n. 6
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();
 }
 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();
 }
Esempio n. 8
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));
 }
Esempio n. 9
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));
 }
Esempio n. 10
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();
 }
Esempio n. 11
0
 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;
 }
Esempio n. 14
0
 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();
 }
Esempio n. 15
0
 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;
 }
Esempio n. 17
0
 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();
 }
Esempio n. 20
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 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();
 }
Esempio n. 21
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();
 }
 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;
 }
Esempio n. 23
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();
 }
Esempio n. 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();
 }
Esempio n. 25
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');
     $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);
                 }
             }
         }
     }
 }
Esempio n. 26
0
 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();
 }
Esempio n. 27
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();
 }
Esempio n. 28
0
 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 '';
 }
Esempio n. 29
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();
 }
Esempio n. 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(), '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();
 }