Exemple #1
0
 protected function buildRequestInstance()
 {
     $request = parent::buildRequestInstance();
     $requestData = $request->getData();
     if (!is_null($this->account)) {
         $requestData['account'] = $this->account->getChildObject()->getServerHash();
     }
     $request->setData($requestData);
     return $request;
 }
Exemple #2
0
 public function getManagementUrl(Account $account)
 {
     /** @var AmazonAccount $amazonAccount */
     $amazonAccount = $account->getChildObject();
     if (!$amazonAccount->isRepricing()) {
         return false;
     }
     return $this->getBaseUrl() . self::COMMAND_GOTO_SERVICE . '?' . http_build_query(array('account_token' => $amazonAccount->getRepricing()->getToken()));
 }
 private function getOrdersForRelease(\Ess\M2ePro\Model\Account $account)
 {
     /** @var \Ess\M2ePro\Model\ResourceModel\Order\Collection $collection */
     $collection = $this->amazonFactory->getObject('Order')->getCollection()->addFieldToFilter('account_id', $account->getId())->addFieldToFilter('reservation_state', \Ess\M2ePro\Model\Order\Reserve::STATE_PLACED);
     $reservationDays = (int) $account->getChildObject()->getQtyReservationDays();
     $minReservationStartDate = new \DateTime($this->getHelper('Data')->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();
 }
Exemple #4
0
 private function getLicenseMessage(\Ess\M2ePro\Model\Account $account)
 {
     try {
         $dispatcherObject = $this->modelFactory->getObject('Connector\\Dispatcher');
         $connectorObj = $dispatcherObject->getVirtualConnector('account', 'get', 'info', array('account' => $account->getChildObject()->getServerHash(), 'channel' => \Ess\M2ePro\Helper\Component\Amazon::NICK));
         $dispatcherObject->process($connectorObj);
         $response = $connectorObj->getResponseData();
     } catch (\Exception $e) {
         return '';
     }
     if (!isset($response['info']['status']) || empty($response['info']['note'])) {
         return '';
     }
     $status = (bool) $response['info']['status'];
     $note = $response['info']['note'];
     if ($status) {
         return 'MagentoMessageObj.addNotice(\'' . $note . '\');';
     }
     $errorMessage = $this->__('Work with this Account is currently unavailable for the following reason: <br/> %error_message%', array('error_message' => $note));
     return 'MagentoMessageObj.addError(\'' . $errorMessage . '\');';
 }
 private function getUnpaidOrdersUpdates(\Ess\M2ePro\Model\Account $account)
 {
     $reservationDays = $account->getChildObject()->getMagentoOrdersReservationDays();
     list($startDate, $endDate) = $this->getDateRangeForUnpaidOrders($reservationDays);
     $ordersIds = $this->activeRecordFactory->getObject('Ebay\\Order')->getResource()->getCancellationCandidatesChannelIds($account->getId(), $startDate, $endDate);
     if (empty($ordersIds)) {
         return array();
     }
     $dispatcherObj = $this->modelFactory->getObject('Ebay\\Connector\\Dispatcher');
     $connectorObj = $dispatcherObj->getVirtualConnector('sales', 'get', 'orders', array('orders_ids' => $ordersIds), NULL, NULL, $account);
     $dispatcherObj->process($connectorObj);
     $response = $connectorObj->getResponseData();
     $this->processResponseMessages($connectorObj->getResponseMessages());
     return isset($response['orders']) ? $response['orders'] : array();
 }
Exemple #6
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 = $this->activeRecordFactory->getObject('Ebay\\Feedback\\Template')->getCollection()->addFieldToFilter('account_id', $account->getId())->setOrder('id', 'ASC')->getAllIds();
         if (!count($feedbackTemplatesIds)) {
             return '';
         }
         $feedbackTemplate = $this->activeRecordFactory->getObject('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 = $this->activeRecordFactory->getObject('Ebay\\Feedback\\Template')->getCollection()->addFieldToFilter('account_id', $account->getId())->getAllIds();
         if (!count($feedbackTemplatesIds)) {
             return '';
         }
         $index = rand(0, count($feedbackTemplatesIds) - 1);
         $feedbackTemplate = $this->activeRecordFactory->getObject('Ebay\\Feedback\\Template')->load($feedbackTemplatesIds[$index]);
         if (!$feedbackTemplate->getId()) {
             return '';
         }
         return $feedbackTemplate->getBody();
     }
     return '';
 }
Exemple #7
0
 private function saveLastUpdateTime(\Ess\M2ePro\Model\Account $account, $lastUpdateTime)
 {
     /** @var \Ess\M2ePro\Model\Ebay\Account $ebayAccount */
     $ebayAccount = $account->getChildObject();
     $ebayAccount->setData('orders_last_synchronization', $lastUpdateTime)->save();
 }
Exemple #8
0
 private function updateSkusForReceivedItems($listingOtherCollection, \Ess\M2ePro\Model\Account $account, array $items)
 {
     /** @var $mappingModel \Ess\M2ePro\Model\Ebay\Listing\Other\Mapping */
     $mappingModel = $this->modelFactory->getObject('Ebay\\Listing\\Other\\Mapping');
     foreach ($items as $item) {
         foreach ($listingOtherCollection->getItems() as $listingOther) {
             /** @var $listingOther \Ess\M2ePro\Model\Listing\Other */
             if ((double) $listingOther->getData('item_id') != $item['id']) {
                 continue;
             }
             $listingOther->getChildObject()->setData('sku', (string) $item['sku'])->save();
             if ($account->getChildObject()->isOtherListingsMappingEnabled()) {
                 $mappingModel->initialize($account);
                 $mappingModel->autoMapOtherListingProduct($listingOther);
             }
             break;
         }
     }
 }
Exemple #9
0
 private function processAccount(\Ess\M2ePro\Model\Account $account)
 {
     $fromDate = $this->prepareFromDate($account->getChildObject()->getData('orders_last_synchronization'));
     $toDate = $this->prepareToDate();
     if (strtotime($fromDate) >= strtotime($toDate)) {
         $fromDate = new \DateTime($toDate, new \DateTimeZone('UTC'));
         $fromDate->modify('- 5 minutes');
         $fromDate = $fromDate->format('Y-m-d H:i:s');
     }
     $params = array('from_date' => $fromDate, 'to_date' => $toDate);
     /** @var \Ess\M2ePro\Model\Amazon\Account $amazonAccount */
     $amazonAccount = $account->getChildObject();
     if (is_null($amazonAccount->getData('orders_last_synchronization'))) {
         $amazonAccount->setData('orders_last_synchronization', $fromDate)->save();
     }
     $dispatcherObject = $this->modelFactory->getObject('Amazon\\Connector\\Dispatcher');
     $connectorObj = $dispatcherObject->getCustomConnector('Amazon\\Synchronization\\Orders\\Receive\\Requester', $params, $account);
     $dispatcherObject->process($connectorObj);
 }