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; }
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(); }
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(); }
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 ''; }
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(); }
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; } } }
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); }