';
- $html .=''.$payment.' | ';
- $html .='';
- $html .='';
diff --git a/Block/Adminhtml/System/Config/Form/Field/Shipping.php b/Block/Adminhtml/System/Config/Form/Field/Shipping.php
index 6cdb525..48780ea 100644
--- a/Block/Adminhtml/System/Config/Form/Field/Shipping.php
+++ b/Block/Adminhtml/System/Config/Form/Field/Shipping.php
@@ -3,29 +3,27 @@
namespace Retailcrm\Retailcrm\Block\Adminhtml\System\Config\Form\Field;
use Magento\Framework\Data\Form\Element\AbstractElement;
-use Retailcrm\Retailcrm\Helper\Proxy as ApiClient;
class Shipping extends \Magento\Config\Block\System\Config\Form\Field
{
- protected $_apiUrl;
- protected $_apiKey;
- protected $_systemStore;
- protected $_formFactory;
- protected $_logger;
- protected $_objectManager;
+ private $systemStore;
+ private $formFactory;
+ private $config;
+ private $shippingConfig;
+ private $client;
public function __construct(
\Magento\Framework\Data\FormFactory $formFactory,
- \Magento\Store\Model\System\Store $systemStore
+ \Magento\Store\Model\System\Store $systemStore,
+ \Magento\Framework\App\Config\ScopeConfigInterface $config,
+ \Magento\Shipping\Model\Config $shippingConfig,
+ \Retailcrm\Retailcrm\Helper\Proxy $client
) {
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $config = $objectManager->get('\Magento\Framework\App\Config\ScopeConfigInterface');
- $this->_apiUrl = $config->getValue('retailcrm/general/api_url');
- $this->_apiKey = $config->getValue('retailcrm/general/api_key');
- $this->_apiVersion = $config->getValue('retailcrm/general/api_version');
- $this->_systemStore = $systemStore;
- $this->_formFactory = $formFactory;
- $this->_objectManager = $objectManager;
+ $this->systemStore = $systemStore;
+ $this->formFactory = $formFactory;
+ $this->config = $config;
+ $this->shippingConfig = $shippingConfig;
+ $this->client = $client;
}
public function render(AbstractElement $element)
@@ -33,13 +31,9 @@ class Shipping extends \Magento\Config\Block\System\Config\Form\Field
$html = '';
$htmlError = ' Please check your API Url & API Key ';
- if (!empty($this->_apiUrl) && !empty($this->_apiKey)) {
- $shipConfig = $this->_objectManager->get('Magento\Shipping\Model\Config');
- $deliveryMethods = $shipConfig->getActiveCarriers();
-
- $client = new ApiClient($this->_apiUrl, $this->_apiKey, $this->_apiVersion);
-
- $response = $client->deliveryTypesList();
+ if ($this->client->isConfigured()) {
+ $deliveryMethods = $this->shippingConfig->getActiveCarriers();
+ $response = $this->client->deliveryTypesList();
if ($response === false) {
return $htmlError;
@@ -51,33 +45,29 @@ class Shipping extends \Magento\Config\Block\System\Config\Form\Field
return $htmlError;
}
- $config = \Magento\Framework\App\ObjectManager::getInstance()->get(
- 'Magento\Framework\App\Config\ScopeConfigInterface'
- );
-
foreach (array_keys($deliveryMethods) as $k => $delivery) {
- $html .='';
- $html .='';
- $html .=''.$delivery.' | ';
- $html .='';
- $html .='';
+ $html .= ' | ';
+ $html .= ' ';
+ $html .= ' ';
}
return $html;
diff --git a/Block/Adminhtml/System/Config/Form/Field/Status.php b/Block/Adminhtml/System/Config/Form/Field/Status.php
index f02d7f3..d5c28e2 100644
--- a/Block/Adminhtml/System/Config/Form/Field/Status.php
+++ b/Block/Adminhtml/System/Config/Form/Field/Status.php
@@ -3,29 +3,27 @@
namespace Retailcrm\Retailcrm\Block\Adminhtml\System\Config\Form\Field;
use Magento\Framework\Data\Form\Element\AbstractElement;
-use Retailcrm\Retailcrm\Helper\Proxy as ApiClient;
class Status extends \Magento\Config\Block\System\Config\Form\Field
{
- protected $_apiUrl;
- protected $_apiKey;
- protected $_systemStore;
- protected $_formFactory;
- protected $_logger;
- protected $_objectManager;
+ private $systemStore;
+ private $formFactory;
+ private $config;
+ private $statusCollection;
+ private $client;
public function __construct(
\Magento\Framework\Data\FormFactory $formFactory,
- \Magento\Store\Model\System\Store $systemStore
+ \Magento\Store\Model\System\Store $systemStore,
+ \Magento\Framework\App\Config\ScopeConfigInterface $config,
+ \Magento\Sales\Model\ResourceModel\Order\Status\Collection $statusCollection,
+ \Retailcrm\Retailcrm\Helper\Proxy $client
) {
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $config = $objectManager->get('\Magento\Framework\App\Config\ScopeConfigInterface');
- $this->_apiUrl = $config->getValue('retailcrm/general/api_url');
- $this->_apiKey = $config->getValue('retailcrm/general/api_key');
- $this->_apiVersion = $config->getValue('retailcrm/general/api_version');
- $this->_systemStore = $systemStore;
- $this->_formFactory = $formFactory;
- $this->_objectManager = $objectManager;
+ $this->systemStore = $systemStore;
+ $this->formFactory = $formFactory;
+ $this->config = $config;
+ $this->statusCollection = $statusCollection;
+ $this->client = $client;
}
public function render(AbstractElement $element)
@@ -33,13 +31,9 @@ class Status extends \Magento\Config\Block\System\Config\Form\Field
$html = '';
$htmlError = 'Please check your API Url & API Key ';
- if ((!empty($this->_apiUrl)) && (!empty($this->_apiKey))) {
- $statusCollection = $this->_objectManager->create('Magento\Sales\Model\ResourceModel\Order\Status\Collection');
- $statuses = $statusCollection->toOptionArray();
-
- $client = new ApiClient($this->_apiUrl, $this->_apiKey, $this->_apiVersion);
-
- $response = $client->statusesList();
+ if ($this->client->isConfigured()) {
+ $statuses = $this->statusCollection->toOptionArray();
+ $response = $this->client->statusesList();
if ($response === false) {
return $htmlError;
@@ -50,25 +44,22 @@ class Status extends \Magento\Config\Block\System\Config\Form\Field
} else {
return $htmlError;
}
-
- $config = $this->_objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface');
- foreach ($statuses as $k => $status){
+ foreach ($statuses as $k => $status) {
$html .= '';
$html .= '';
$html .= '' . $status['label'] . ' | ';
$html .= '';
$html .= '';
- $selected = $config->getValue('retailcrm/Status/' . $status['value']);
+ $selected = $this->config->getValue('retailcrm/Status/' . $status['value']);
$html .= '';
- foreach ($statusTypes as $k => $value){
- if (
- (!empty($selected))
- && (($selected == $value['name']))
- || (($selected == $value['code']))
+ foreach ($statusTypes as $k => $value) {
+ if ((!empty($selected)
+ && $selected == $value['name'])
+ || $selected == $value['code']
) {
$select = 'selected="selected"';
} else {
@@ -76,7 +67,7 @@ class Status extends \Magento\Config\Block\System\Config\Form\Field
}
$html .= '';
- }
+ }
$html .= '';
$html .= ' | ';
$html .= ' ';
diff --git a/Block/Display.php b/Block/Display.php
index 507ce62..9740a75 100644
--- a/Block/Display.php
+++ b/Block/Display.php
@@ -4,13 +4,8 @@ namespace Retailcrm\Retailcrm\Block;
class Display extends \Magento\Framework\View\Element\Template
{
- public function __construct(\Magento\Framework\View\Element\Template\Context $context)
- {
- parent::__construct($context);
- }
-
public function sayHello()
{
- return __('Hello World');
+ return __('Hello World');
}
}
diff --git a/Controller/Adminhtml/System/Config/Button.php b/Controller/Adminhtml/System/Config/Button.php
index e8debd5..39a85d4 100644
--- a/Controller/Adminhtml/System/Config/Button.php
+++ b/Controller/Adminhtml/System/Config/Button.php
@@ -7,7 +7,8 @@ class Button extends \Magento\Backend\App\Action
/**
* @var \Psr\Log\LoggerInterface
*/
- protected $_logger;
+ private $logger;
+ private $order;
/**
* @param \Magento\Backend\App\Action\Context $context
@@ -15,16 +16,16 @@ class Button extends \Magento\Backend\App\Action
*/
public function __construct(
\Magento\Backend\App\Action\Context $context,
- \Psr\Log\LoggerInterface $logger
+ \Psr\Log\LoggerInterface $logger,
+ \Retailcrm\Retailcrm\Model\Order\OrderNumber $order
) {
- $this->_logger = $logger;
+ $this->order = $order;
+ $this->logger = $logger;
parent::__construct($context);
}
-
public function execute()
{
- $order = new \Retailcrm\Retailcrm\Model\Order\OrderNumber();
- $order->ExportOrderNumber();
+ $this->order->exportOrderNumber();
}
-}
\ No newline at end of file
+}
diff --git a/Controller/Index/Display.php b/Controller/Index/Display.php
index 0156cfd..7b0a6df 100644
--- a/Controller/Index/Display.php
+++ b/Controller/Index/Display.php
@@ -4,18 +4,18 @@ namespace Retailcrm\Retailcrm\Controller\Index;
class Display extends \Magento\Framework\App\Action\Action
{
- protected $_pageFactory;
+ private $pageFactory;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $pageFactory
) {
- $this->_pageFactory = $pageFactory;
- return parent::__construct($context);
+ $this->pageFactory = $pageFactory;
+ parent::__construct($context);
}
public function execute()
{
- return $this->_pageFactory->create();
+ return $this->pageFactory->create();
}
-}
\ No newline at end of file
+}
diff --git a/Controller/Index/Test.php b/Controller/Index/Test.php
deleted file mode 100644
index 9ef79ef..0000000
--- a/Controller/Index/Test.php
+++ /dev/null
@@ -1,36 +0,0 @@
-logger = $logger;
-
- $api_url = $config->getValue('retailcrm/general/api_url');
- $api_key = $config->getValue('retailcrm/general/api_key');
-
- var_dump($api_key);
- var_dump($api_url);
-
- //$this->logger->debug($api_url);
-
- parent::__construct($context);
- }
-
- public function execute()
- {
- //
- exit;
- }
-}
diff --git a/Cron/Icml.php b/Cron/Icml.php
index c526cef..70cc5e0 100644
--- a/Cron/Icml.php
+++ b/Cron/Icml.php
@@ -2,18 +2,21 @@
namespace Retailcrm\Retailcrm\Cron;
-class Icml {
- protected $_logger;
+class Icml
+{
+ private $logger;
+ private $icml;
- public function __construct() {
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $logger = new \Retailcrm\Retailcrm\Model\Logger\Logger($objectManager);
- $this->_logger = $logger;
+ public function __construct(
+ \Retailcrm\Retailcrm\Model\Logger\Logger $logger,
+ \Retailcrm\Retailcrm\Model\Icml\Icml $icml
+ ) {
+ $this->logger = $logger;
+ $this->icml = $icml;
}
-
+
public function execute()
{
- $Icml = new \Retailcrm\Retailcrm\Model\Icml\Icml();
- $Icml->generate();
+ $this->icml->generate();
}
}
diff --git a/Cron/OrderHistory.php b/Cron/OrderHistory.php
index f46615f..d968d71 100644
--- a/Cron/OrderHistory.php
+++ b/Cron/OrderHistory.php
@@ -4,20 +4,20 @@ namespace Retailcrm\Retailcrm\Cron;
class OrderHistory
{
- protected $_logger;
+ private $logger;
+ private $history;
- public function __construct()
- {
- $om = \Magento\Framework\App\ObjectManager::getInstance();
- $logger = new \Retailcrm\Retailcrm\Model\Logger\Logger($om);
- $this->_logger = $logger;
+ public function __construct(
+ \Retailcrm\Retailcrm\Model\Logger\Logger $logger,
+ \Retailcrm\Retailcrm\Model\History\Exchange $history
+ ) {
+ $this->logger = $logger;
+ $this->history = $history;
}
public function execute()
{
- $history = new \Retailcrm\Retailcrm\Model\History\Exchange();
- $history->ordersHistory();
-
- $this->_logger->writeRow('Cron Works: OrderHistory');
+ $this->history->ordersHistory();
+ $this->logger->writeRow('Cron Works: OrderHistory');
}
}
diff --git a/Helper/Data.php b/Helper/Data.php
index d3e27ea..745dc34 100644
--- a/Helper/Data.php
+++ b/Helper/Data.php
@@ -10,12 +10,13 @@ use Magento\Store\Model\ScopeInterface;
class Data extends AbstractHelper
{
- protected $storeManager;
- protected $objectManager;
+ private $storeManager;
+ private $objectManager;
const XML_PATH_RETAILCRM = 'retailcrm/';
- public function __construct(Context $context,
+ public function __construct(
+ Context $context,
ObjectManagerInterface $objectManager,
StoreManagerInterface $storeManager
) {
@@ -27,7 +28,9 @@ class Data extends AbstractHelper
public function getConfigValue($field, $storeId = null)
{
return $this->scopeConfig->getValue(
- $field, ScopeInterface::SCOPE_STORE, $storeId
+ $field,
+ ScopeInterface::SCOPE_STORE,
+ $storeId
);
}
@@ -37,25 +40,25 @@ class Data extends AbstractHelper
}
/**
- * Recursive array filter
- *
- * @param array $haystack input array
- *
- * @SuppressWarnings(PHPMD.StaticAccess)
- * @SuppressWarnings(PHPMD.ElseExpression)
- *
- * @return array
- */
- public function filterRecursive($haystack)
+ * Recursive array filter
+ *
+ * @param array $haystack input array
+ *
+ * @SuppressWarnings(PHPMD.StaticAccess)
+ * @SuppressWarnings(PHPMD.ElseExpression)
+ *
+ * @return array
+ */
+ public static function filterRecursive($haystack)
{
foreach ($haystack as $key => $value) {
if (is_array($value)) {
$haystack[$key] = self::filterRecursive($haystack[$key]);
}
- if (is_null($haystack[$key])
+ if ($haystack[$key] === null
|| $haystack[$key] === ''
- || count($haystack[$key]) == 0
+ || (is_array($haystack[$key]) && empty($haystack[$key]))
) {
unset($haystack[$key]);
} elseif (!is_array($value)) {
@@ -65,4 +68,4 @@ class Data extends AbstractHelper
return $haystack;
}
-}
\ No newline at end of file
+}
diff --git a/Helper/Proxy.php b/Helper/Proxy.php
index 0ab24e0..1ea3ceb 100644
--- a/Helper/Proxy.php
+++ b/Helper/Proxy.php
@@ -2,24 +2,48 @@
namespace Retailcrm\Retailcrm\Helper;
-use RetailCrm\ApiClient;
-use Magento\Framework\App\ObjectManager;
use Retailcrm\Retailcrm\Model\Logger\Logger;
+use Retailcrm\Retailcrm\Model\Service\ConfigManager;
+use Retailcrm\Retailcrm\ApiClient\ApiClientFactory;
class Proxy
{
- protected $logger;
- protected $apiClient;
-
+ private $logger;
+ private $apiClient;
+ private $url;
+ private $apiKey;
+ private $version;
+ private $apiClientFactory;
private $errorAccount = 'Account does not exist.';
private $errorNotFound = 'Not found';
private $errorApiKey = 'Wrong "apiKey" value.';
- public function __construct ($url, $key, $apiVersion)
- {
- $objectManager = ObjectManager::getInstance();
- $this->logger = new Logger($objectManager);
- $this->apiClient = new ApiClient($url, $key, $apiVersion);
+ /**
+ * Proxy constructor.
+ * @param string $pathUrl
+ * @param string $pathKey
+ * @param string $pathVersion
+ * @param ConfigManager $config
+ * @param Logger $logger
+ * @param ApiClientFactory $apiClientFactory
+ */
+ public function __construct(
+ $pathUrl,
+ $pathKey,
+ $pathVersion,
+ ConfigManager $config,
+ Logger $logger,
+ ApiClientFactory $apiClientFactory
+ ) {
+ $this->logger = $logger;
+ $this->url = $config->getConfigValue($pathUrl);
+ $this->apiKey = $config->getConfigValue($pathKey);
+ $this->version = $config->getConfigValue($pathVersion);
+ $this->apiClientFactory = $apiClientFactory;
+
+ if ($this->isConfigured()) {
+ $this->init();
+ }
}
public function __call($method, $arguments)
@@ -53,6 +77,50 @@ class Proxy
return $response;
}
+ /**
+ * Init retailcrm api client
+ */
+ public function init()
+ {
+ $this->apiClient = $this->apiClientFactory->create(
+ $this->url,
+ $this->apiKey,
+ $this->version
+ );
+ }
+
+ /**
+ * @param $url
+ */
+ public function setUrl($url)
+ {
+ $this->url = $url;
+ }
+
+ /**
+ * @param $apiKey
+ */
+ public function setApiKey($apiKey)
+ {
+ $this->apiKey = $apiKey;
+ }
+
+ /**
+ * @param $version
+ */
+ public function setVersion($version)
+ {
+ $this->version = $version;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isConfigured()
+ {
+ return $this->url && $this->apiKey;
+ }
+
/**
* Get API version
*
@@ -69,9 +137,9 @@ class Proxy
/**
* Get error text message
- *
+ *
* @param string $property
- *
+ *
* @return string
*/
public function getErrorText($property)
diff --git a/Log/.gitkeep b/Log/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/Model/ApiClient/ApiClient.php b/Model/ApiClient/ApiClient.php
deleted file mode 100644
index 49c7674..0000000
--- a/Model/ApiClient/ApiClient.php
+++ /dev/null
@@ -1,1843 +0,0 @@
-
- * @license https://opensource.org/licenses/MIT MIT License
- * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
- */
-
-namespace Retailcrm\Retailcrm\Model\ApiClient;
-
-use Retailcrm\Retailcrm\Model\ApiClient\Http\Client;
-use Retailcrm\Retailcrm\Model\ApiClient\Response\ApiResponse;
-
-/**
- * PHP version 5.3
- *
- * API client class
- *
- * @category RetailCrm
- * @package RetailCrm
- * @author RetailCrm
- * @license https://opensource.org/licenses/MIT MIT License
- * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
- */
-class ApiClient
-{
-
- const VERSION = 'v4';
-
- protected $client;
-
- /**
- * Site code
- */
- protected $siteCode;
-
- /**
- * Client creating
- *
- * @param string $url api url
- * @param string $apiKey api key
- * @param string $site site code
- *
- * @throws \InvalidArgumentException
- */
- public function __construct($url, $apiKey, $site = null)
- {
- if ('/' !== $url[strlen($url) - 1]) {
- $url .= '/';
- }
-
- $url = $url . 'api/' . self::VERSION;
-
- $this->client = new Client($url, array('apiKey' => $apiKey));
- $this->siteCode = $site;
- }
-
- /**
- * Returns users list
- *
- * @param array $filter
- * @param null $page
- * @param null $limit
- *
- * @throws \RetailCrm\Exception\InvalidJsonException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \InvalidArgumentException
- *
- * @return ApiResponse
- */
- public function usersList(array $filter = array(), $page = null, $limit = null)
- {
- $parameters = array();
-
- if (count($filter)) {
- $parameters['filter'] = $filter;
- }
- if (null !== $page) {
- $parameters['page'] = (int) $page;
- }
- if (null !== $limit) {
- $parameters['limit'] = (int) $limit;
- }
-
- return $this->client->makeRequest(
- '/users',
- Client::METHOD_GET,
- $parameters
- );
- }
-
- /**
- * Get user groups
- *
- * @param null $page
- * @param null $limit
- *
- * @throws \RetailCrm\Exception\InvalidJsonException
- * @throws \RetailCrm\Exception\CurlException
- *
- * @return ApiResponse
- */
- public function usersGroups($page = null, $limit = null)
- {
- $parameters = array();
-
- if (null !== $page) {
- $parameters['page'] = (int) $page;
- }
- if (null !== $limit) {
- $parameters['limit'] = (int) $limit;
- }
-
- return $this->client->makeRequest(
- '/user-groups',
- Client::METHOD_GET,
- $parameters
- );
- }
-
- /**
- * Returns user data
- *
- * @param integer $id user ID
- *
- * @throws \RetailCrm\Exception\InvalidJsonException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \InvalidArgumentException
- *
- * @return ApiResponse
- */
- public function usersGet($id)
- {
- return $this->client->makeRequest("/users/$id", Client::METHOD_GET);
- }
-
- /**
- * Returns filtered orders list
- *
- * @param array $filter (default: array())
- * @param int $page (default: null)
- * @param int $limit (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function ordersList(array $filter = array(), $page = null, $limit = null)
- {
- $parameters = array();
-
- if (count($filter)) {
- $parameters['filter'] = $filter;
- }
- if (null !== $page) {
- $parameters['page'] = (int) $page;
- }
- if (null !== $limit) {
- $parameters['limit'] = (int) $limit;
- }
-
- return $this->client->makeRequest(
- '/orders',
- Client::METHOD_GET,
- $parameters
- );
- }
-
- /**
- * Create a order
- *
- * @param array $order order data
- * @param string $site (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function ordersCreate(array $order, $site = null)
- {
- if (!count($order)) {
- throw new \InvalidArgumentException(
- 'Parameter `order` must contains a data'
- );
- }
-
- return $this->client->makeRequest(
- '/orders/create',
- Client::METHOD_POST,
- $this->fillSite($site, array('order' => json_encode($order)))
- );
- }
-
- /**
- * Save order IDs' (id and externalId) association in the CRM
- *
- * @param array $ids order identificators
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function ordersFixExternalIds(array $ids)
- {
- if (! count($ids)) {
- throw new \InvalidArgumentException(
- 'Method parameter must contains at least one IDs pair'
- );
- }
-
- return $this->client->makeRequest(
- '/orders/fix-external-ids',
- Client::METHOD_POST,
- array('orders' => json_encode($ids)
- )
- );
- }
-
- /**
- * Returns statuses of the orders
- *
- * @param array $ids (default: array())
- * @param array $externalIds (default: array())
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function ordersStatuses(array $ids = array(), array $externalIds = array())
- {
- $parameters = array();
-
- if (count($ids)) {
- $parameters['ids'] = $ids;
- }
- if (count($externalIds)) {
- $parameters['externalIds'] = $externalIds;
- }
-
- return $this->client->makeRequest(
- '/orders/statuses',
- Client::METHOD_GET,
- $parameters
- );
- }
-
- /**
- * Upload array of the orders
- *
- * @param array $orders array of orders
- * @param string $site (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function ordersUpload(array $orders, $site = null)
- {
- if (!count($orders)) {
- throw new \InvalidArgumentException(
- 'Parameter `orders` must contains array of the orders'
- );
- }
-
- return $this->client->makeRequest(
- '/orders/upload',
- Client::METHOD_POST,
- $this->fillSite($site, array('orders' => json_encode($orders)))
- );
- }
-
- /**
- * Get order by id or externalId
- *
- * @param string $id order identificator
- * @param string $by (default: 'externalId')
- * @param string $site (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function ordersGet($id, $by = 'externalId', $site = null)
- {
- $this->checkIdParameter($by);
-
- return $this->client->makeRequest(
- "/orders/$id",
- Client::METHOD_GET,
- $this->fillSite($site, array('by' => $by))
- );
- }
-
- /**
- * Edit a order
- *
- * @param array $order order data
- * @param string $by (default: 'externalId')
- * @param string $site (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function ordersEdit(array $order, $by = 'externalId', $site = null)
- {
- if (!count($order)) {
- throw new \InvalidArgumentException(
- 'Parameter `order` must contains a data'
- );
- }
-
- $this->checkIdParameter($by);
-
- if (!array_key_exists($by, $order)) {
- throw new \InvalidArgumentException(
- sprintf('Order array must contain the "%s" parameter.', $by)
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/orders/%s/edit', $order[$by]),
- Client::METHOD_POST,
- $this->fillSite(
- $site,
- array('order' => json_encode($order), 'by' => $by)
- )
- );
- }
-
- /**
- * Get orders history
- * @param array $filter
- * @param null $page
- * @param null $limit
- *
- * @return ApiResponse
- */
- public function ordersHistory(array $filter = array(), $page = null, $limit = null)
- {
- $parameters = array();
-
- if (count($filter)) {
- $parameters['filter'] = $filter;
- }
- if (null !== $page) {
- $parameters['page'] = (int) $page;
- }
- if (null !== $limit) {
- $parameters['limit'] = (int) $limit;
- }
-
- return $this->client->makeRequest(
- '/orders/history',
- Client::METHOD_GET,
- $parameters
- );
- }
-
- /**
- * Returns filtered customers list
- *
- * @param array $filter (default: array())
- * @param int $page (default: null)
- * @param int $limit (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function customersList(array $filter = array(), $page = null, $limit = null)
- {
- $parameters = array();
-
- if (count($filter)) {
- $parameters['filter'] = $filter;
- }
- if (null !== $page) {
- $parameters['page'] = (int) $page;
- }
- if (null !== $limit) {
- $parameters['limit'] = (int) $limit;
- }
-
- return $this->client->makeRequest(
- '/customers',
- Client::METHOD_GET,
- $parameters
- );
- }
-
- /**
- * Create a customer
- *
- * @param array $customer customer data
- * @param string $site (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function customersCreate(array $customer, $site = null)
- {
- if (! count($customer)) {
- throw new \InvalidArgumentException(
- 'Parameter `customer` must contains a data'
- );
- }
-
- return $this->client->makeRequest(
- '/customers/create',
- Client::METHOD_POST,
- $this->fillSite($site, array('customer' => json_encode($customer)))
- );
- }
-
- /**
- * Save customer IDs' (id and externalId) association in the CRM
- *
- * @param array $ids ids mapping
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function customersFixExternalIds(array $ids)
- {
- if (! count($ids)) {
- throw new \InvalidArgumentException(
- 'Method parameter must contains at least one IDs pair'
- );
- }
-
- return $this->client->makeRequest(
- '/customers/fix-external-ids',
- Client::METHOD_POST,
- array('customers' => json_encode($ids))
- );
- }
-
- /**
- * Upload array of the customers
- *
- * @param array $customers array of customers
- * @param string $site (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function customersUpload(array $customers, $site = null)
- {
- if (! count($customers)) {
- throw new \InvalidArgumentException(
- 'Parameter `customers` must contains array of the customers'
- );
- }
-
- return $this->client->makeRequest(
- '/customers/upload',
- Client::METHOD_POST,
- $this->fillSite($site, array('customers' => json_encode($customers)))
- );
- }
-
- /**
- * Get customer by id or externalId
- *
- * @param string $id customer identificator
- * @param string $by (default: 'externalId')
- * @param string $site (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function customersGet($id, $by = 'externalId', $site = null)
- {
- $this->checkIdParameter($by);
-
- return $this->client->makeRequest(
- "/customers/$id",
- Client::METHOD_GET,
- $this->fillSite($site, array('by' => $by))
- );
- }
-
- /**
- * Edit a customer
- *
- * @param array $customer customer data
- * @param string $by (default: 'externalId')
- * @param string $site (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function customersEdit(array $customer, $by = 'externalId', $site = null)
- {
- if (!count($customer)) {
- throw new \InvalidArgumentException(
- 'Parameter `customer` must contains a data'
- );
- }
-
- $this->checkIdParameter($by);
-
- if (!array_key_exists($by, $customer)) {
- throw new \InvalidArgumentException(
- sprintf('Customer array must contain the "%s" parameter.', $by)
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/customers/%s/edit', $customer[$by]),
- Client::METHOD_POST,
- $this->fillSite(
- $site,
- array('customer' => json_encode($customer), 'by' => $by)
- )
- );
- }
-
- /**
- * Get customers history
- * @param array $filter
- * @param null $page
- * @param null $limit
- *
- * @return ApiResponse
- */
- public function customersHistory(array $filter = array(), $page = null, $limit = null)
- {
- $parameters = array();
-
- if (count($filter)) {
- $parameters['filter'] = $filter;
- }
- if (null !== $page) {
- $parameters['page'] = (int) $page;
- }
- if (null !== $limit) {
- $parameters['limit'] = (int) $limit;
- }
-
- return $this->client->makeRequest(
- '/customers/history',
- Client::METHOD_GET,
- $parameters
- );
- }
-
- /**
- * Get orders assembly list
- *
- * @param array $filter (default: array())
- * @param int $page (default: null)
- * @param int $limit (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function ordersPacksList(array $filter = array(), $page = null, $limit = null)
- {
- $parameters = array();
-
- if (count($filter)) {
- $parameters['filter'] = $filter;
- }
- if (null !== $page) {
- $parameters['page'] = (int) $page;
- }
- if (null !== $limit) {
- $parameters['limit'] = (int) $limit;
- }
-
- return $this->client->makeRequest(
- '/orders/packs',
- Client::METHOD_GET,
- $parameters
- );
- }
-
- /**
- * Create orders assembly
- *
- * @param array $pack pack data
- * @param string $site (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function ordersPacksCreate(array $pack, $site = null)
- {
- if (!count($pack)) {
- throw new \InvalidArgumentException(
- 'Parameter `pack` must contains a data'
- );
- }
-
- return $this->client->makeRequest(
- '/orders/packs/create',
- Client::METHOD_POST,
- $this->fillSite($site, array('pack' => json_encode($pack)))
- );
- }
-
- /**
- * Get orders assembly history
- *
- * @param array $filter (default: array())
- * @param int $page (default: null)
- * @param int $limit (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function ordersPacksHistory(array $filter = array(), $page = null, $limit = null)
- {
- $parameters = array();
-
- if (count($filter)) {
- $parameters['filter'] = $filter;
- }
- if (null !== $page) {
- $parameters['page'] = (int) $page;
- }
- if (null !== $limit) {
- $parameters['limit'] = (int) $limit;
- }
-
- return $this->client->makeRequest(
- '/orders/packs/history',
- Client::METHOD_GET,
- $parameters
- );
- }
-
- /**
- * Get orders assembly by id
- *
- * @param string $id pack identificator
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function ordersPacksGet($id)
- {
- if (empty($id)) {
- throw new \InvalidArgumentException('Parameter `id` must be set');
- }
-
- return $this->client->makeRequest(
- "/orders/packs/$id",
- Client::METHOD_GET
- );
- }
-
- /**
- * Delete orders assembly by id
- *
- * @param string $id pack identificator
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function ordersPacksDelete($id)
- {
- if (empty($id)) {
- throw new \InvalidArgumentException('Parameter `id` must be set');
- }
-
- return $this->client->makeRequest(
- sprintf('/orders/packs/%s/delete', $id),
- Client::METHOD_POST
- );
- }
-
- /**
- * Edit orders assembly
- *
- * @param array $pack pack data
- * @param string $site (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function ordersPacksEdit(array $pack, $site = null)
- {
- if (!count($pack) || empty($pack['id'])) {
- throw new \InvalidArgumentException(
- 'Parameter `pack` must contains a data & pack `id` must be set'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/orders/packs/%s/edit', $pack['id']),
- Client::METHOD_POST,
- $this->fillSite($site, array('pack' => json_encode($pack)))
- );
- }
-
- /**
- * Get purchace prices & stock balance
- *
- * @param array $filter (default: array())
- * @param int $page (default: null)
- * @param int $limit (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function storeInventories(array $filter = array(), $page = null, $limit = null)
- {
- $parameters = array();
-
- if (count($filter)) {
- $parameters['filter'] = $filter;
- }
- if (null !== $page) {
- $parameters['page'] = (int) $page;
- }
- if (null !== $limit) {
- $parameters['limit'] = (int) $limit;
- }
-
- return $this->client->makeRequest(
- '/store/inventories',
- Client::METHOD_GET,
- $parameters
- );
- }
-
- /**
- * Get store settings
- *
- * @param string $code get settings code
- *
- * @return ApiResponse
- * @throws \RetailCrm\Exception\InvalidJsonException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \InvalidArgumentException
- *
- * @return ApiResponse
- */
- public function storeSettingsGet($code)
- {
- if (empty($code)) {
- throw new \InvalidArgumentException('Parameter `code` must be set');
- }
-
- return $this->client->makeRequest(
- "/store/setting/$code",
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit store configuration
- *
- * @param array $configuration
- *
- * @throws \RetailCrm\Exception\InvalidJsonException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \InvalidArgumentException
- *
- * @return ApiResponse
- */
- public function storeSettingsEdit(array $configuration)
- {
- if (!count($configuration) || empty($configuration['code'])) {
- throw new \InvalidArgumentException(
- 'Parameter `configuration` must contains a data & configuration `code` must be set'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/store/setting/%s/edit', $configuration['code']),
- Client::METHOD_POST,
- array('configuration' => json_encode($configuration))
- );
- }
-
- /**
- * Upload store inventories
- *
- * @param array $offers offers data
- * @param string $site (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function storeInventoriesUpload(array $offers, $site = null)
- {
- if (!count($offers)) {
- throw new \InvalidArgumentException(
- 'Parameter `offers` must contains array of the offers'
- );
- }
-
- return $this->client->makeRequest(
- '/store/inventories/upload',
- Client::METHOD_POST,
- $this->fillSite($site, array('offers' => json_encode($offers)))
- );
- }
-
- /**
- * Upload store prices
- *
- * @param array $prices prices data
- * @param string $site default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function storePricesUpload(array $prices, $site = null)
- {
- if (!count($prices)) {
- throw new \InvalidArgumentException(
- 'Parameter `prices` must contains array of the prices'
- );
- }
-
- return $this->client->makeRequest(
- '/store/prices/upload',
- Client::METHOD_POST,
- $this->fillSite($site, array('prices' => json_encode($prices)))
- );
- }
-
- /**
- * Get products
- *
- * @param array $filter (default: array())
- * @param int $page (default: null)
- * @param int $limit (default: null)
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function storeProducts(array $filter = array(), $page = null, $limit = null)
- {
- $parameters = array();
-
- if (count($filter)) {
- $parameters['filter'] = $filter;
- }
- if (null !== $page) {
- $parameters['page'] = (int) $page;
- }
- if (null !== $limit) {
- $parameters['limit'] = (int) $limit;
- }
-
- return $this->client->makeRequest(
- '/store/products',
- Client::METHOD_GET,
- $parameters
- );
- }
-
- /**
- * Get delivery settings
- *
- * @param string $code
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function deliverySettingsGet($code)
- {
- if (empty($code)) {
- throw new \InvalidArgumentException('Parameter `code` must be set');
- }
-
- return $this->client->makeRequest(
- "/delivery/generic/setting/$code",
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit delivery configuration
- *
- * @param array $configuration
- *
- * @throws \RetailCrm\Exception\InvalidJsonException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \InvalidArgumentException
- *
- * @return ApiResponse
- */
- public function deliverySettingsEdit(array $configuration)
- {
- if (!count($configuration) || empty($configuration['code'])) {
- throw new \InvalidArgumentException(
- 'Parameter `configuration` must contains a data & configuration `code` must be set'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/delivery/generic/setting/%s/edit', $configuration['code']),
- Client::METHOD_POST,
- array('configuration' => json_encode($configuration))
- );
- }
-
- /**
- * Delivery tracking update
- *
- * @param string $code
- * @param array $statusUpdate
- *
- * @throws \RetailCrm\Exception\InvalidJsonException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \InvalidArgumentException
- *
- * @return ApiResponse
- */
- public function deliveryTracking($code, array $statusUpdate)
- {
- if (empty($code)) {
- throw new \InvalidArgumentException('Parameter `code` must be set');
- }
-
- if (!count($statusUpdate)) {
- throw new \InvalidArgumentException(
- 'Parameter `statusUpdate` must contains a data'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/delivery/generic/%s/tracking', $code),
- Client::METHOD_POST,
- $statusUpdate
- );
- }
-
- /**
- * Returns available county list
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function countriesList()
- {
- return $this->client->makeRequest(
- '/reference/countries',
- Client::METHOD_GET
- );
- }
-
- /**
- * Returns deliveryServices list
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function deliveryServicesList()
- {
- return $this->client->makeRequest(
- '/reference/delivery-services',
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit deliveryService
- *
- * @param array $data delivery service data
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function deliveryServicesEdit(array $data)
- {
- if (!array_key_exists('code', $data)) {
- throw new \InvalidArgumentException(
- 'Data must contain "code" parameter.'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/reference/delivery-services/%s/edit', $data['code']),
- Client::METHOD_POST,
- array('deliveryService' => json_encode($data))
- );
- }
-
- /**
- * Returns deliveryTypes list
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function deliveryTypesList()
- {
- return $this->client->makeRequest(
- '/reference/delivery-types',
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit deliveryType
- *
- * @param array $data delivery type data
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function deliveryTypesEdit(array $data)
- {
- if (!array_key_exists('code', $data)) {
- throw new \InvalidArgumentException(
- 'Data must contain "code" parameter.'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/reference/delivery-types/%s/edit', $data['code']),
- Client::METHOD_POST,
- array('deliveryType' => json_encode($data))
- );
- }
-
- /**
- * Returns orderMethods list
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function orderMethodsList()
- {
- return $this->client->makeRequest(
- '/reference/order-methods',
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit orderMethod
- *
- * @param array $data order method data
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function orderMethodsEdit(array $data)
- {
- if (!array_key_exists('code', $data)) {
- throw new \InvalidArgumentException(
- 'Data must contain "code" parameter.'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/reference/order-methods/%s/edit', $data['code']),
- Client::METHOD_POST,
- array('orderMethod' => json_encode($data))
- );
- }
-
- /**
- * Returns orderTypes list
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function orderTypesList()
- {
- return $this->client->makeRequest(
- '/reference/order-types',
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit orderType
- *
- * @param array $data order type data
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function orderTypesEdit(array $data)
- {
- if (!array_key_exists('code', $data)) {
- throw new \InvalidArgumentException(
- 'Data must contain "code" parameter.'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/reference/order-types/%s/edit', $data['code']),
- Client::METHOD_POST,
- array('orderType' => json_encode($data))
- );
- }
-
- /**
- * Returns paymentStatuses list
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function paymentStatusesList()
- {
- return $this->client->makeRequest(
- '/reference/payment-statuses',
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit paymentStatus
- *
- * @param array $data payment status data
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function paymentStatusesEdit(array $data)
- {
- if (!array_key_exists('code', $data)) {
- throw new \InvalidArgumentException(
- 'Data must contain "code" parameter.'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/reference/payment-statuses/%s/edit', $data['code']),
- Client::METHOD_POST,
- array('paymentStatus' => json_encode($data))
- );
- }
-
- /**
- * Returns paymentTypes list
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function paymentTypesList()
- {
- return $this->client->makeRequest(
- '/reference/payment-types',
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit paymentType
- *
- * @param array $data payment type data
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function paymentTypesEdit(array $data)
- {
- if (!array_key_exists('code', $data)) {
- throw new \InvalidArgumentException(
- 'Data must contain "code" parameter.'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/reference/payment-types/%s/edit', $data['code']),
- Client::METHOD_POST,
- array('paymentType' => json_encode($data))
- );
- }
-
- /**
- * Returns productStatuses list
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function productStatusesList()
- {
- return $this->client->makeRequest(
- '/reference/product-statuses',
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit productStatus
- *
- * @param array $data product status data
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function productStatusesEdit(array $data)
- {
- if (!array_key_exists('code', $data)) {
- throw new \InvalidArgumentException(
- 'Data must contain "code" parameter.'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/reference/product-statuses/%s/edit', $data['code']),
- Client::METHOD_POST,
- array('productStatus' => json_encode($data))
- );
- }
-
- /**
- * Returns sites list
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function sitesList()
- {
- return $this->client->makeRequest(
- '/reference/sites',
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit site
- *
- * @param array $data site data
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function sitesEdit(array $data)
- {
- if (!array_key_exists('code', $data)) {
- throw new \InvalidArgumentException(
- 'Data must contain "code" parameter.'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/reference/sites/%s/edit', $data['code']),
- Client::METHOD_POST,
- array('site' => json_encode($data))
- );
- }
-
- /**
- * Returns statusGroups list
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function statusGroupsList()
- {
- return $this->client->makeRequest(
- '/reference/status-groups',
- Client::METHOD_GET
- );
- }
-
- /**
- * Returns statuses list
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function statusesList()
- {
- return $this->client->makeRequest(
- '/reference/statuses',
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit order status
- *
- * @param array $data status data
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function statusesEdit(array $data)
- {
- if (!array_key_exists('code', $data)) {
- throw new \InvalidArgumentException(
- 'Data must contain "code" parameter.'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/reference/statuses/%s/edit', $data['code']),
- Client::METHOD_POST,
- array('status' => json_encode($data))
- );
- }
-
- /**
- * Returns stores list
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function storesList()
- {
- return $this->client->makeRequest(
- '/reference/stores',
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit store
- *
- * @param array $data site data
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function storesEdit(array $data)
- {
- if (!array_key_exists('code', $data)) {
- throw new \InvalidArgumentException(
- 'Data must contain "code" parameter.'
- );
- }
-
- if (!array_key_exists('name', $data)) {
- throw new \InvalidArgumentException(
- 'Data must contain "name" parameter.'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/reference/stores/%s/edit', $data['code']),
- Client::METHOD_POST,
- array('store' => json_encode($data))
- );
- }
-
- /**
- * Get prices types
- *
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function pricesTypes()
- {
- return $this->client->makeRequest(
- '/reference/price-types',
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit price type
- *
- * @param array $data
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function pricesEdit(array $data)
- {
- if (!array_key_exists('code', $data)) {
- throw new \InvalidArgumentException(
- 'Data must contain "code" parameter.'
- );
- }
-
- if (!array_key_exists('name', $data)) {
- throw new \InvalidArgumentException(
- 'Data must contain "name" parameter.'
- );
- }
-
- return $this->client->makeRequest(
- sprintf('/reference/price-types/%s/edit', $data['code']),
- Client::METHOD_POST,
- array('priceType' => json_encode($data))
- );
- }
-
- /**
- * Get telephony settings
- *
- * @param string $code
- *
- * @throws \RetailCrm\Exception\InvalidJsonException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \InvalidArgumentException
- *
- * @return ApiResponse
- */
- public function telephonySettingsGet($code)
- {
- if (empty($code)) {
- throw new \InvalidArgumentException('Parameter `code` must be set');
- }
-
- return $this->client->makeRequest(
- "/telephony/setting/$code",
- Client::METHOD_GET
- );
- }
-
- /**
- * Edit telephony settings
- *
- * @param string $code symbolic code
- * @param string $clientId client id
- * @param boolean $active telephony activity
- * @param mixed $name service name
- * @param mixed $makeCallUrl service init url
- * @param mixed $image service logo url(svg file)
- *
- * @param array $additionalCodes
- * @param array $externalPhones
- * @param bool $allowEdit
- * @param bool $inputEventSupported
- * @param bool $outputEventSupported
- * @param bool $hangupEventSupported
- * @param bool $changeUserStatusUrl
- *
- * @return ApiResponse
- */
- public function telephonySettingsEdit(
- $code,
- $clientId,
- $active = false,
- $name = false,
- $makeCallUrl = false,
- $image = false,
- $additionalCodes = array(),
- $externalPhones = array(),
- $allowEdit = false,
- $inputEventSupported = false,
- $outputEventSupported = false,
- $hangupEventSupported = false,
- $changeUserStatusUrl = false
- )
- {
- if (!isset($code)) {
- throw new \InvalidArgumentException('Code must be set');
- }
-
- $parameters['code'] = $code;
-
- if (!isset($clientId)) {
- throw new \InvalidArgumentException('client id must be set');
- }
-
- $parameters['clientId'] = $clientId;
-
- if (!isset($active)) {
- $parameters['active'] = false;
- } else {
- $parameters['active'] = $active;
- }
-
- if (!isset($name)) {
- throw new \InvalidArgumentException('name must be set');
- }
-
- if (isset($name)) {
- $parameters['name'] = $name;
- }
-
- if (isset($makeCallUrl)) {
- $parameters['makeCallUrl'] = $makeCallUrl;
- }
-
- if (isset($image)) {
- $parameters['image'] = $image;
- }
-
- if (isset($additionalCodes)) {
- $parameters['additionalCodes'] = $additionalCodes;
- }
-
- if (isset($externalPhones)) {
- $parameters['externalPhones'] = $externalPhones;
- }
-
- if (isset($allowEdit)) {
- $parameters['allowEdit'] = $allowEdit;
- }
-
- if (isset($inputEventSupported)) {
- $parameters['inputEventSupported'] = $inputEventSupported;
- }
-
- if (isset($outputEventSupported)) {
- $parameters['outputEventSupported'] = $outputEventSupported;
- }
-
- if (isset($hangupEventSupported)) {
- $parameters['hangupEventSupported'] = $hangupEventSupported;
- }
-
- if (isset($changeUserStatusUrl)) {
- $parameters['changeUserStatusUrl'] = $changeUserStatusUrl;
- }
-
- return $this->client->makeRequest(
- "/telephony/setting/$code/edit",
- Client::METHOD_POST,
- array('configuration' => json_encode($parameters))
- );
- }
-
- /**
- * Call event
- *
- * @param string $phone phone number
- * @param string $type call type
- * @param array $codes
- * @param string $hangupStatus
- * @param string $externalPhone
- * @param array $webAnalyticsData
- *
- * @return ApiResponse
- * @internal param string $code additional phone code
- * @internal param string $status call status
- *
- */
- public function telephonyCallEvent(
- $phone,
- $type,
- $codes,
- $hangupStatus,
- $externalPhone = null,
- $webAnalyticsData = array()
- )
- {
- if (!isset($phone)) {
- throw new \InvalidArgumentException('Phone number must be set');
- }
-
- if (!isset($type)) {
- throw new \InvalidArgumentException('Type must be set (in|out|hangup)');
- }
-
- if (empty($codes)) {
- throw new \InvalidArgumentException('Codes array must be set');
- }
-
- $parameters['phone'] = $phone;
- $parameters['type'] = $type;
- $parameters['codes'] = $codes;
- $parameters['hangupStatus'] = $hangupStatus;
- $parameters['callExternalId'] = $externalPhone;
- $parameters['webAnalyticsData'] = $webAnalyticsData;
-
-
- return $this->client->makeRequest(
- '/telephony/call/event',
- Client::METHOD_POST,
- array('event' => json_encode($parameters))
- );
- }
-
- /**
- * Upload calls
- *
- * @param array $calls calls data
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function telephonyCallsUpload(array $calls)
- {
- if (!count($calls)) {
- throw new \InvalidArgumentException(
- 'Parameter `calls` must contains array of the calls'
- );
- }
-
- return $this->client->makeRequest(
- '/telephony/calls/upload',
- Client::METHOD_POST,
- array('calls' => json_encode($calls))
- );
- }
-
- /**
- * Get call manager
- *
- * @param string $phone phone number
- * @param bool $details detailed information
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function telephonyCallManager($phone, $details)
- {
- if (!isset($phone)) {
- throw new \InvalidArgumentException('Phone number must be set');
- }
-
- $parameters['phone'] = $phone;
- $parameters['details'] = isset($details) ? $details : 0;
-
- return $this->client->makeRequest(
- '/telephony/manager',
- Client::METHOD_GET,
- $parameters
- );
- }
-
- /**
- * Update CRM basic statistic
- *
- * @throws \InvalidArgumentException
- * @throws \RetailCrm\Exception\CurlException
- * @throws \RetailCrm\Exception\InvalidJsonException
- *
- * @return ApiResponse
- */
- public function statisticUpdate()
- {
- return $this->client->makeRequest(
- '/statistic/update',
- Client::METHOD_GET
- );
- }
-
- /**
- * Return current site
- *
- * @return string
- */
- public function getSite()
- {
- return $this->siteCode;
- }
-
- /**
- * Set site
- *
- * @param string $site site code
- *
- * @return void
- */
- public function setSite($site)
- {
- $this->siteCode = $site;
- }
-
- /**
- * Check ID parameter
- *
- * @param string $by identify by
- *
- * @throws \InvalidArgumentException
- *
- * @return bool
- */
- protected function checkIdParameter($by)
- {
- $allowedForBy = array(
- 'externalId',
- 'id'
- );
-
- if (!in_array($by, $allowedForBy, false)) {
- throw new \InvalidArgumentException(
- sprintf(
- 'Value "%s" for "by" param is not valid. Allowed values are %s.',
- $by,
- implode(', ', $allowedForBy)
- )
- );
- }
-
- return true;
- }
-
- /**
- * Fill params by site value
- *
- * @param string $site site code
- * @param array $params input parameters
- *
- * @return array
- */
- protected function fillSite($site, array $params)
- {
- if ($site) {
- $params['site'] = $site;
- } elseif ($this->siteCode) {
- $params['site'] = $this->siteCode;
- }
-
- return $params;
- }
-}
diff --git a/Model/ApiClient/Exception/CurlException.php b/Model/ApiClient/Exception/CurlException.php
deleted file mode 100644
index d52de1d..0000000
--- a/Model/ApiClient/Exception/CurlException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- * @license https://opensource.org/licenses/MIT MIT License
- * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
- */
-
-namespace Retailcrm\Retailcrm\Model\ApiClient\Exception;
-
-/**
- * PHP version 5.3
- *
- * Class CurlException
- *
- * @category RetailCrm
- * @package RetailCrm
- * @author RetailCrm
- * @license https://opensource.org/licenses/MIT MIT License
- * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
- */
-class CurlException extends \RuntimeException
-{
-}
diff --git a/Model/ApiClient/Exception/InvalidJsonException.php b/Model/ApiClient/Exception/InvalidJsonException.php
deleted file mode 100644
index cb9437a..0000000
--- a/Model/ApiClient/Exception/InvalidJsonException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-
- * @license https://opensource.org/licenses/MIT MIT License
- * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
- */
-
-namespace Retailcrm\Retailcrm\Model\ApiClient\Exception;
-
-/**
- * PHP version 5.3
- *
- * Class InvalidJsonException
- *
- * @category RetailCrm
- * @package RetailCrm
- * @author RetailCrm
- * @license https://opensource.org/licenses/MIT MIT License
- * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
- */
-class InvalidJsonException extends \DomainException
-{
-}
diff --git a/Model/ApiClient/Http/Client.php b/Model/ApiClient/Http/Client.php
deleted file mode 100644
index 4cd3b6a..0000000
--- a/Model/ApiClient/Http/Client.php
+++ /dev/null
@@ -1,128 +0,0 @@
-
- * @license https://opensource.org/licenses/MIT MIT License
- * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
- */
-
-namespace Retailcrm\Retailcrm\Model\ApiClient\Http;
-
-use Retailcrm\Retailcrm\Model\ApiClient\Exception\CurlException;
-use Retailcrm\Retailcrm\Model\ApiClient\Exception\InvalidJsonException;
-use Retailcrm\Retailcrm\Model\ApiClient\Response\ApiResponse;
-
-/**
- * PHP version 5.3
- *
- * HTTP client
- *
- * @category RetailCrm
- * @package RetailCrm
- * @author RetailCrm
- * @license https://opensource.org/licenses/MIT MIT License
- * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
- */
-class Client
-{
- const METHOD_GET = 'GET';
- const METHOD_POST = 'POST';
-
- protected $url;
- protected $defaultParameters;
-
- /**
- * Client constructor.
- *
- * @param string $url api url
- * @param array $defaultParameters array of parameters
- *
- * @throws \InvalidArgumentException
- */
- public function __construct($url, array $defaultParameters = array())
- {
- if (false === stripos($url, 'https://')) {
- throw new \InvalidArgumentException(
- 'API schema requires HTTPS protocol'
- );
- }
-
- $this->url = $url;
- $this->defaultParameters = $defaultParameters;
- }
-
- /**
- * Make HTTP request
- *
- * @param string $path request url
- * @param string $method (default: 'GET')
- * @param array $parameters (default: array())
- *
- * @SuppressWarnings(PHPMD.ExcessiveParameterList)
- *
- * @throws \InvalidArgumentException
- * @throws CurlException
- * @throws InvalidJsonException
- *
- * @return ApiResponse
- */
- public function makeRequest(
- $path,
- $method,
- array $parameters = array()
- ) {
- $allowedMethods = array(self::METHOD_GET, self::METHOD_POST);
-
- if (!in_array($method, $allowedMethods, false)) {
- throw new \InvalidArgumentException(
- sprintf(
- 'Method "%s" is not valid. Allowed methods are %s',
- $method,
- implode(', ', $allowedMethods)
- )
- );
- }
-
- $parameters = array_merge($this->defaultParameters, $parameters);
-
- $url = $this->url . $path;
-
- if (self::METHOD_GET === $method && count($parameters)) {
- $url .= '?' . http_build_query($parameters, '', '&');
- }
-
- $curlHandler = curl_init();
- curl_setopt($curlHandler, CURLOPT_URL, $url);
- curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curlHandler, CURLOPT_FOLLOWLOCATION, 1);
- curl_setopt($curlHandler, CURLOPT_FAILONERROR, false);
- curl_setopt($curlHandler, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($curlHandler, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt($curlHandler, CURLOPT_TIMEOUT, 30);
- curl_setopt($curlHandler, CURLOPT_CONNECTTIMEOUT, 30);
-
- if (self::METHOD_POST === $method) {
- curl_setopt($curlHandler, CURLOPT_POST, true);
- curl_setopt($curlHandler, CURLOPT_POSTFIELDS, $parameters);
- }
-
- $responseBody = curl_exec($curlHandler);
- $statusCode = curl_getinfo($curlHandler, CURLINFO_HTTP_CODE);
- $errno = curl_errno($curlHandler);
- $error = curl_error($curlHandler);
-
- curl_close($curlHandler);
-
- if ($errno) {
- throw new CurlException($error, $errno);
- }
-
- return new ApiResponse($statusCode, $responseBody);
- }
-}
diff --git a/Model/ApiClient/Response/ApiResponse.php b/Model/ApiClient/Response/ApiResponse.php
deleted file mode 100644
index f62b2f6..0000000
--- a/Model/ApiClient/Response/ApiResponse.php
+++ /dev/null
@@ -1,180 +0,0 @@
-
- * @license https://opensource.org/licenses/MIT MIT License
- * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
- */
-
-namespace Retailcrm\Retailcrm\Model\ApiClient\Response;
-
-use Retailcrm\Retailcrm\Model\ApiClient\Exception\InvalidJsonException;
-
-/**
- * PHP version 5.3
- *
- * Response from retailCRM API
- *
- * @category RetailCrm
- * @package RetailCrm
- * @author RetailCrm
- * @license https://opensource.org/licenses/MIT MIT License
- * @link http://www.retailcrm.ru/docs/Developers/ApiVersion4
- */
-class ApiResponse implements \ArrayAccess
-{
- // HTTP response status code
- protected $statusCode;
-
- // response assoc array
- protected $response;
-
- /**
- * ApiResponse constructor.
- *
- * @param int $statusCode HTTP status code
- * @param mixed $responseBody HTTP body
- *
- * @throws InvalidJsonException
- */
- public function __construct($statusCode, $responseBody = null)
- {
- $this->statusCode = (int) $statusCode;
-
- if (!empty($responseBody)) {
- $response = json_decode($responseBody, true);
-
- if (!$response && JSON_ERROR_NONE !== ($error = json_last_error())) {
- throw new InvalidJsonException(
- "Invalid JSON in the API response body. Error code #$error",
- $error
- );
- }
-
- $this->response = $response;
- }
- }
-
- /**
- * Return HTTP response status code
- *
- * @return int
- */
- public function getStatusCode()
- {
- return $this->statusCode;
- }
-
- /**
- * HTTP request was successful
- *
- * @return bool
- */
- public function isSuccessful()
- {
- return $this->statusCode < 400;
- }
-
- /**
- * Allow to access for the property throw class method
- *
- * @param string $name method name
- * @param mixed $arguments method parameters
- *
- * @throws \InvalidArgumentException
- *
- * @return mixed
- */
- public function __call($name, $arguments)
- {
- // convert getSomeProperty to someProperty
- $propertyName = strtolower(substr($name, 3, 1)) . substr($name, 4);
-
- if (!isset($this->response[$propertyName])) {
- throw new \InvalidArgumentException("Method \"$name\" not found");
- }
-
- return $this->response[$propertyName];
- }
-
- /**
- * Allow to access for the property throw object property
- *
- * @param string $name property name
- *
- * @throws \InvalidArgumentException
- *
- * @return mixed
- */
- public function __get($name)
- {
- if (!isset($this->response[$name])) {
- throw new \InvalidArgumentException("Property \"$name\" not found");
- }
-
- return $this->response[$name];
- }
-
- /**
- * Offset set
- *
- * @param mixed $offset offset
- * @param mixed $value value
- *
- * @throws \BadMethodCallException
- * @return void
- */
- public function offsetSet($offset, $value)
- {
- throw new \BadMethodCallException('This activity not allowed');
- }
-
- /**
- * Offset unset
- *
- * @param mixed $offset offset
- *
- * @throws \BadMethodCallException
- * @return void
- */
- public function offsetUnset($offset)
- {
- throw new \BadMethodCallException('This call not allowed');
- }
-
- /**
- * Check offset
- *
- * @param mixed $offset offset
- *
- * @return bool
- */
- public function offsetExists($offset)
- {
- return isset($this->response[$offset]);
- }
-
- /**
- * Get offset
- *
- * @param mixed $offset offset
- *
- * @throws \InvalidArgumentException
- *
- * @return mixed
- */
- public function offsetGet($offset)
- {
- if (!isset($this->response[$offset])) {
- throw new \InvalidArgumentException("Property \"$offset\" not found");
- }
-
- return $this->response[$offset];
- }
-}
diff --git a/Model/Config/Backend/ApiUrl.php b/Model/Config/Backend/ApiUrl.php
index e5e8b73..f61234a 100644
--- a/Model/Config/Backend/ApiUrl.php
+++ b/Model/Config/Backend/ApiUrl.php
@@ -6,15 +6,17 @@ use Retailcrm\Retailcrm\Helper\Proxy as ApiClient;
class ApiUrl extends \Magento\Framework\App\Config\Value
{
+ private $api;
+
/**
+ * ApiUrl constructor.
* @param \Magento\Framework\Model\Context $context
* @param \Magento\Framework\Registry $registry
* @param \Magento\Framework\App\Config\ScopeConfigInterface $config
* @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
- * @param \Magento\Framework\App\Config\ValueFactory $configValueFactory
- * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
- * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
- * @param string $runModelPath
+ * @param \Magento\Framework\Model\ResourceModel\AbstractResource|null $resource
+ * @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection
+ * @param ApiClient $api
* @param array $data
*/
public function __construct(
@@ -22,68 +24,62 @@ class ApiUrl extends \Magento\Framework\App\Config\Value
\Magento\Framework\Registry $registry,
\Magento\Framework\App\Config\ScopeConfigInterface $config,
\Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
+ ApiClient $api,
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
array $data = []
) {
+ $this->api = $api;
parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
}
/**
* Call before save api url
- *
+ *
+ * @throws \Magento\Framework\Exception\ValidatorException
+ *
* @return void
*/
public function beforeSave()
{
- $apiUrl = $this->getValue();
- $apiKey = $this->getFieldsetDataValue('api_key');
- $apiVersion = $this->getFieldsetDataValue('api_version');
+ $this->setParams([
+ 'url' => $this->getValue(),
+ 'apiKey' => $this->getFieldsetDataValue('api_key'),
+ 'version' => $this->getFieldsetDataValue('api_version')
+ ]);
- if (!$this->isUrl($apiUrl)) {
+ if (!$this->isUrl($this->getValue())) {
throw new \Magento\Framework\Exception\ValidatorException(__('Invalid CRM url'));
}
- if (!$this->isHttps($apiUrl)) {
- $this->schemeEdit($apiUrl);
+ if (!$this->isHttps($this->getValue())) {
+ $this->schemeEdit($this->getValue());
}
- $api = new ApiClient($apiUrl, $apiKey, $apiVersion);
-
- if ($this->validateApiUrl($api)) {
- $this->setValue($apiUrl);
+ if ($this->validateApiUrl($this->api)) {
+ $this->setValue($this->getValue());
}
parent::beforeSave();
}
- /**
- * Call after save api url
- *
- * @return void
- */
- public function afterSave()
- {
- return parent::afterSave();
- }
-
/**
* Validate selected api url
- *
+ *
* @param ApiClient $api
* @param string $apiVersion
- *
+ *
* @throws \Magento\Framework\Exception\ValidatorException
- *
+ *
* @return boolean
*/
- protected function validateApiUrl(ApiClient $api)
+ private function validateApiUrl(ApiClient $api)
{
$response = $api->availableVersions();
if ($response === false) {
throw new \Magento\Framework\Exception\ValidatorException(__('Verify that the data entered is correct'));
- } elseif (!$response->isSuccessful() && $response['errorMsg'] == $api->getErrorText ('errorApiKey')) {
+ } elseif (!$response->isSuccessful() && $response['errorMsg'] == $api->getErrorText('errorApiKey')) {
throw new \Magento\Framework\Exception\ValidatorException(__('Invalid CRM api key'));
} elseif (isset($response['errorMsg']) && $response['errorMsg'] == $api->getErrorText('errorAccount')) {
throw new \Magento\Framework\Exception\ValidatorException(__('Invalid CRM api url'));
@@ -94,12 +90,12 @@ class ApiUrl extends \Magento\Framework\App\Config\Value
/**
* Check url scheme
- *
+ *
* @param string $url
- *
+ *
* @return boolean
*/
- protected function isHttps($url)
+ private function isHttps($url)
{
$url_array = parse_url($url);
@@ -112,12 +108,12 @@ class ApiUrl extends \Magento\Framework\App\Config\Value
/**
* Edit scheme from http to https
- *
+ *
* @param string $url
- *
+ *
* @return string
*/
- protected function schemeEdit(&$url)
+ private function schemeEdit(&$url)
{
$url_array = parse_url($url);
@@ -126,13 +122,24 @@ class ApiUrl extends \Magento\Framework\App\Config\Value
/**
* Check url
- *
+ *
* @param string $url
- *
+ *
* @return type
*/
public function isUrl($url)
{
return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url);
}
+
+ /**
+ * @param array $data
+ */
+ private function setParams(array $data)
+ {
+ $this->api->setUrl($data['url']);
+ $this->api->setApiKey($data['apiKey']);
+ $this->api->setVersion($data['version']);
+ $this->api->init();
+ }
}
diff --git a/Model/Config/Backend/ApiVersion.php b/Model/Config/Backend/ApiVersion.php
index d294f63..d99e1a1 100644
--- a/Model/Config/Backend/ApiVersion.php
+++ b/Model/Config/Backend/ApiVersion.php
@@ -6,15 +6,17 @@ use Retailcrm\Retailcrm\Helper\Proxy as ApiClient;
class ApiVersion extends \Magento\Framework\App\Config\Value
{
+ private $api;
+
/**
+ * ApiVersion constructor.
* @param \Magento\Framework\Model\Context $context
* @param \Magento\Framework\Registry $registry
* @param \Magento\Framework\App\Config\ScopeConfigInterface $config
* @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
- * @param \Magento\Framework\App\Config\ValueFactory $configValueFactory
- * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
- * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
- * @param string $runModelPath
+ * @param \Magento\Framework\Model\ResourceModel\AbstractResource|null $resource
+ * @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection
+ * @param ApiClient $api
* @param array $data
*/
public function __construct(
@@ -22,52 +24,44 @@ class ApiVersion extends \Magento\Framework\App\Config\Value
\Magento\Framework\Registry $registry,
\Magento\Framework\App\Config\ScopeConfigInterface $config,
\Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
+ ApiClient $api,
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
array $data = []
) {
+ $this->api = $api;
parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
}
/**
* Call before save api version
- *
+ *
* @return void
*/
public function beforeSave()
{
- $apiUrl = $this->getFieldsetDataValue('api_url');
- $apiKey = $this->getFieldsetDataValue('api_key');
- $apiVersion = $this->getValue();
+ $this->setParams([
+ 'url' => $this->getFieldsetDataValue('api_url'),
+ 'apiKey' => $this->getFieldsetDataValue('api_key'),
+ 'version' => $this->getValue()
+ ]);
- $api = new ApiClient($apiUrl, $apiKey, $apiVersion);
-
- $this->validateApiVersion($api, $apiVersion);
+ $this->validateApiVersion($this->api, $this->getValue());
parent::beforeSave();
}
- /**
- * Call after save api version
- *
- * @return void
- */
- public function afterSave()
- {
- return parent::afterSave();
- }
-
/**
* Validate selected api version
- *
+ *
* @param ApiClient $api
* @param string $apiVersion
- *
+ *
* @throws \Magento\Framework\Exception\ValidatorException
- *
+ *
* @return void
*/
- protected function validateApiVersion(ApiClient $api, $apiVersion)
+ private function validateApiVersion(ApiClient $api, $apiVersion)
{
$apiVersions = [
'v4' => '4.0',
@@ -90,4 +84,15 @@ class ApiVersion extends \Magento\Framework\App\Config\Value
}
}
}
+
+ /**
+ * @param array $data
+ */
+ private function setParams(array $data)
+ {
+ $this->api->setUrl($data['url']);
+ $this->api->setApiKey($data['apiKey']);
+ $this->api->setVersion($data['version']);
+ $this->api->init();
+ }
}
diff --git a/Model/History/Exchange.php b/Model/History/Exchange.php
index 2a7da17..eea1a7f 100644
--- a/Model/History/Exchange.php
+++ b/Model/History/Exchange.php
@@ -2,102 +2,100 @@
namespace Retailcrm\Retailcrm\Model\History;
-use Retailcrm\Retailcrm\Helper\Proxy as ApiClient;
-
class Exchange
{
- protected $_api;
- protected $_config;
- protected $_helper;
- protected $_logger;
- protected $_resourceConfig;
- protected $_customerFactory;
- protected $_quote;
- protected $_customerRepository;
- protected $_product;
- protected $_shipconfig;
- protected $_quoteManagement;
- protected $_registry;
- protected $_cacheTypeList;
- protected $_order;
- protected $_orderManagement;
- //protected $_transaction;
- //protected $_invoiceService;
- protected $_eventManager;
- protected $_objectManager;
+ private $api;
+ private $config;
+ private $helper;
+ private $logger;
+ private $resourceConfig;
+ private $customerFactory;
+ private $quote;
+ private $customerRepository;
+ private $product;
+ private $shipconfig;
+ private $quoteManagement;
+ private $registry;
+ private $cacheTypeList;
+ private $order;
+ private $orderManagement;
+ private $eventManager;
+ private $objectManager;
+ private $orderInterface;
+ private $storeManager;
+ private $regionFactory;
- public function __construct()
- {
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $helper = $objectManager->get('\Retailcrm\Retailcrm\Helper\Data');
- $config = $objectManager->get('\Magento\Framework\App\Config\ScopeConfigInterface');
- $resourceConfig = $objectManager->get('Magento\Config\Model\ResourceModel\Config');
- $customerFactory = $objectManager->get('\Magento\Customer\Model\CustomerFactory');
- $quote = $objectManager->get('\Magento\Quote\Model\QuoteFactory');
- $customerRepository = $objectManager->get('\Magento\Customer\Api\CustomerRepositoryInterface');
- $product = $objectManager->get('\Magento\Catalog\Model\Product');
- $shipconfig = $objectManager->get('\Magento\Shipping\Model\Config');
- $quoteManagement = $objectManager->get('\Magento\Quote\Model\QuoteManagement');
- $registry = $objectManager->get('\Magento\Framework\Registry');
- $cacheTypeList = $objectManager->get('\Magento\Framework\App\Cache\TypeListInterface');
- $order = $objectManager->get('\Magento\Sales\Api\Data\OrderInterface');
- $orderManagement = $objectManager->get('\Magento\Sales\Api\OrderManagementInterface');
- //$invoiceService = $objectManager->get('\Magento\Sales\Model\Service\InvoiceService');
- //$transaction = $objectManager->get('\Magento\Framework\DB\Transaction');
- $eventManager = $objectManager->get('\Magento\Framework\Event\Manager');
- $logger = new \Retailcrm\Retailcrm\Model\Logger\Logger($objectManager);
-
- $this->_shipconfig = $shipconfig;
- $this->_logger = $logger;
- $this->_helper = $helper;
- $this->_config = $config;
- $this->_resourceConfig = $resourceConfig;
- $this->_customerFactory = $customerFactory;
- $this->_quote = $quote;
- $this->_customerRepository = $customerRepository;
- $this->_product = $product;
- $this->_quoteManagement = $quoteManagement;
- $this->_registry = $registry;
- $this->_cacheTypeList = $cacheTypeList;
- $this->_order = $order;
- $this->_orderManagement = $orderManagement;
- //$this->_transaction = $transaction;
- //$this->_invoiceService = $invoiceService;
- $this->_eventManager = $eventManager;
- $this->_objectManager = $objectManager;
-
- $url = $config->getValue('retailcrm/general/api_url');
- $key = $config->getValue('retailcrm/general/api_key');
- $version = $config->getValue('retailcrm/general/api_version');
-
- if (!empty($url) && !empty($key)) {
- $this->_api = new ApiClient($url, $key, $version);
- }
+ public function __construct(
+ \Magento\Framework\App\ObjectManager $objectManager,
+ \Retailcrm\Retailcrm\Helper\Data $helper,
+ \Magento\Framework\App\Config\ScopeConfigInterface $config,
+ \Magento\Config\Model\ResourceModel\Config $resourceConfig,
+ \Magento\Customer\Model\CustomerFactory $customerFactory,
+ \Magento\Quote\Model\QuoteFactory $quote,
+ \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository,
+ \Magento\Catalog\Model\Product $product,
+ \Magento\Shipping\Model\Config $shipconfig,
+ \Magento\Quote\Model\QuoteManagement $quoteManagement,
+ \Magento\Framework\Registry $registry,
+ \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
+ \Magento\Sales\Api\Data\OrderInterface $orderInterface,
+ \Magento\Sales\Api\OrderManagementInterface $orderManagement,
+ \Magento\Framework\Event\Manager $eventManager,
+ \Retailcrm\Retailcrm\Model\Logger\Logger $logger,
+ \Magento\Sales\Model\Order $order,
+ \Magento\Store\Model\StoreManagerInterface $storeManager,
+ \Magento\Directory\Model\RegionFactory $regionFactory,
+ \Retailcrm\Retailcrm\Helper\Proxy $api
+ ) {
+ $this->shipconfig = $shipconfig;
+ $this->logger = $logger;
+ $this->helper = $helper;
+ $this->config = $config;
+ $this->resourceConfig = $resourceConfig;
+ $this->customerFactory = $customerFactory;
+ $this->quote = $quote;
+ $this->customerRepository = $customerRepository;
+ $this->product = $product;
+ $this->quoteManagement = $quoteManagement;
+ $this->registry = $registry;
+ $this->cacheTypeList = $cacheTypeList;
+ $this->orderInterface = $orderInterface;
+ $this->orderManagement = $orderManagement;
+ $this->eventManager = $eventManager;
+ $this->objectManager = $objectManager;
+ $this->order = $order;
+ $this->storeManager = $storeManager;
+ $this->regionFactory = $regionFactory;
+ $this->api = $api;
}
/**
* Get orders history from CRM
- *
+ *
* @return boolean
*/
public function ordersHistory()
{
- $this->_registry->register('RETAILCRM_HISTORY', true);
+ if (!$this->api->isConfigured()) {
+ return false;
+ }
+
+ $this->registry->register('RETAILCRM_HISTORY', true);
$historyFilter = [];
$historyOrder = [];
- $historyStart = $this->_config->getValue('retailcrm/general/filter_history');
+ $historyStart = $this->config->getValue('retailcrm/general/filter_history');
if ($historyStart && $historyStart > 0) {
$historyFilter['sinceId'] = $historyStart;
}
while (true) {
- $response = $this->_api->ordersHistory($historyFilter);
+ $response = $this->api->ordersHistory($historyFilter);
if ($response === false) {
- return;
+ return false;
}
if (!$response->isSuccessful()) {
@@ -106,7 +104,7 @@ class Exchange
$orderH = isset($response['history']) ? $response['history'] : [];
- if (count($orderH) == 0) {
+ if (empty($orderH)) {
return true;
}
@@ -115,32 +113,37 @@ class Exchange
$historyFilter['sinceId'] = $end['id'];
if ($response['pagination']['totalPageCount'] == 1) {
- $this->_resourceConfig->saveConfig('retailcrm/general/filter_history', $historyFilter['sinceId'], 'default', 0);
- $this->_cacheTypeList->cleanType('config');
+ $this->resourceConfig->saveConfig(
+ 'retailcrm/general/filter_history',
+ $historyFilter['sinceId'],
+ 'default',
+ 0
+ );
+ $this->cacheTypeList->cleanType('config');
$orders = self::assemblyOrder($historyOrder);
- $this->_logger->writeDump($orders,'OrderHistory');
+ $this->logger->writeDump($orders, 'OrderHistory');
$this->processOrders($orders);
return true;
}
- }//endwhile
+ }
- $this->_registry->register('RETAILCRM_HISTORY', false);
+ $this->registry->register('RETAILCRM_HISTORY', false);
}
/**
* Process orders
- *
+ *
* @param array $orders
- *
+ *
* @return void
*/
private function processOrders($orders)
{
- $this->_logger->writeDump($orders,'processOrders');
+ $this->logger->writeDump($orders, 'processOrders');
if (!empty($orders)) {
foreach ($orders as $order) {
@@ -155,24 +158,23 @@ class Exchange
/**
* Create new order from CRM
- *
+ *
* @param array $order
- *
+ *
* @return void
*/
private function doCreate($order)
{
- $this->_logger->writeDump($order,'doCreate');
+ $this->logger->writeDump($order, 'doCreate');
- $payments = $this->_config->getValue('retailcrm/Payment');
- $shippings = $this->_config->getValue('retailcrm/Shipping');
+ $payments = $this->config->getValue('retailcrm/Payment');
+ $shippings = $this->config->getValue('retailcrm/Shipping');
- $manager = $this->_objectManager->get('Magento\Store\Model\StoreManagerInterface');
- $region = $this->_objectManager->get('Magento\Directory\Model\RegionFactory')->create();
- $store = $manager->getStore();
- $websiteId = $manager->getStore()->getWebsiteId();
+ $region = $this->regionFactory->create();
+ $store = $this->storeManager->getStore();
+ $websiteId = $this->storeManager->getStore()->getWebsiteId();
- $customer = $this->_customerFactory->create();
+ $customer = $this->customerFactory->create();
$customer->setWebsiteId($websiteId);
if (isset($order['customer']['externalId'])) {
@@ -190,10 +192,10 @@ class Exchange
try {
$customer->save();
} catch (\Exception $exception) {
- $this->_logger->writeRow($exception->getMessage());
+ $this->logger->writeRow($exception->getMessage());
}
- $this->_api->customersFixExternalIds(
+ $this->api->customersFixExternalIds(
[
[
'id' => $order['customer']['id'],
@@ -204,23 +206,23 @@ class Exchange
}
//Create object of quote
- $quote = $this->_quote->create();
+ $quote = $this->quote->create();
//set store for which you create quote
- $quote->setStore($store);
+ $quote->setStore($store);
// if you have allready buyer id then you can load customer directly
- $customer = $this->_customerRepository->getById($customer->getId());
+ $customer = $this->customerRepository->getById($customer->getId());
$quote->setCurrency();
$quote->assignCustomer($customer); //Assign quote to customer
//add items in quote
- foreach($order['items'] as $item){
- $product = $this->_product->load($item['offer']['externalId']);
+ foreach ($order['items'] as $item) {
+ $product = $this->product->load($item['offer']['externalId']);
$product->setPrice($item['initialPrice']);
$quote->addProduct(
$product,
- intval($item['quantity'])
+ (int)$item['quantity']
);
}
@@ -231,7 +233,7 @@ class Exchange
}
$orderData = [
- 'currency_id' => $manager->getStore()->getCurrentCurrency()->getCode(),
+ 'currency_id' => $this->storeManager->getStore()->getCurrentCurrency()->getCode(),
'email' => $order['email'],
'shipping_address' => [
'firstname' => $order['firstName'],
@@ -267,9 +269,9 @@ class Exchange
->collectShippingRates()
->setShippingMethod($ShippingMethods);
- if ($this->_api->getVersion() == 'v4') {
+ if ($this->api->getVersion() == 'v4') {
$paymentType = $order['paymentType'];
- } elseif ($this->_api->getVersion() == 'v5') {
+ } elseif ($this->api->getVersion() == 'v5') {
if ($order['payments']) {
$paymentType = $this->getPaymentMethod($order['payments']);
}
@@ -287,11 +289,11 @@ class Exchange
$quote->collectTotals()->save();
// Create Order From Quote
- $magentoOrder = $this->_quoteManagement->submit($quote);
+ $magentoOrder = $this->quoteManagement->submit($quote);
$increment_id = $magentoOrder->getId();
- $this->_api->ordersFixExternalIds(
+ $this->api->ordersFixExternalIds(
[
[
'id' => $order['id'],
@@ -303,16 +305,16 @@ class Exchange
/**
* Create old edited order
- *
+ *
* @param array $order
- *
+ *
* @return void
*/
private function doCreateUp($order)
{
- $this->_logger->writeDump($order,'doCreateUp');
+ $this->logger->writeDump($order, 'doCreateUp');
- $response = $this->_api->ordersGet($order['id'], $by = 'id');
+ $response = $this->api->ordersGet($order['id'], $by = 'id');
if (!$response->isSuccessful()) {
return;
@@ -322,15 +324,14 @@ class Exchange
$order = $response['order'];
}
- $payments = $this->_config->getValue('retailcrm/Payment');
- $shippings = $this->_config->getValue('retailcrm/Shipping');
+ $payments = $this->config->getValue('retailcrm/Payment');
+ $shippings = $this->config->getValue('retailcrm/Shipping');
- $manager = $this->_objectManager->get('Magento\Store\Model\StoreManagerInterface');
- $region = $this->_objectManager->get('Magento\Directory\Model\RegionFactory')->create();
- $store = $manager->getStore();
- $websiteId = $manager->getStore()->getWebsiteId();
+ $region = $this->regionFactory->create();
+ $store = $this->storeManager->getStore();
+ $websiteId = $this->storeManager->getStore()->getWebsiteId();
- $customer = $this->_customerFactory->create();
+ $customer = $this->customerFactory->create();
$customer->setWebsiteId($websiteId);
if (isset($order['customer']['externalId'])) {
@@ -338,7 +339,7 @@ class Exchange
}
//Create object of quote
- $quote = $this->_quote->create();
+ $quote = $this->quote->create();
//set store for which you create quote
$quote->setStore($store);
@@ -346,7 +347,7 @@ class Exchange
// if you have allready buyer id then you can load customer directly
if ($customer->getId()) {
- $customer = $this->_customerRepository->getById($customer->getId());
+ $customer = $this->customerRepository->getById($customer->getId());
$quote->assignCustomer($customer); //Assign quote to customer
} else {
$quote->setCustomerEmail($order['email']);
@@ -354,12 +355,12 @@ class Exchange
}
//add items in quote
- foreach($order['items'] as $item){
- $product = $this->_product->load($item['offer']['externalId']);
+ foreach ($order['items'] as $item) {
+ $product = $this->product->load($item['offer']['externalId']);
$product->setPrice($item['initialPrice']);
$quote->addProduct(
$product,
- intval($item['quantity'])
+ (int)$item['quantity']
);
}
@@ -370,9 +371,9 @@ class Exchange
}
$orderData = [
- 'currency_id' => $manager->getStore()->getCurrentCurrency()->getCode(),
+ 'currency_id' => $this->storeManager->getStore()->getCurrentCurrency()->getCode(),
'email' => $order['email'],
- 'shipping_address' =>array(
+ 'shipping_address' => [
'firstname' => $order['firstName'],
'lastname' => $order['lastName'],
'street' => $order['delivery']['address']['street'],
@@ -382,7 +383,7 @@ class Exchange
'postcode' => $order['delivery']['address']['index'],
'telephone' => $order['phone'],
'save_in_address_book' => 1
- ),
+ ],
'items'=> $products
];
@@ -406,18 +407,17 @@ class Exchange
->collectShippingRates()
->setShippingMethod($ShippingMethods);
- if ($this->_api->getVersion() == 'v4') {
+ if ($this->api->getVersion() == 'v4') {
$paymentType = $order['paymentType'];
- } elseif ($this->_api->getVersion() == 'v5') {
+ } elseif ($this->api->getVersion() == 'v5') {
$paymentType = $this->getPaymentMethod($order['payments'], false);
}
$quote->setPaymentMethod($payments[$paymentType]);
$quote->setInventoryProcessed(false);
-
$originalId = $order['externalId'];
- $oldOrder = $this->_order->load($originalId);
+ $oldOrder = $this->orderInterface->load($originalId);
$orderDataUp = [
'original_increment_id' => $oldOrder->getIncrementId(),
@@ -437,11 +437,11 @@ class Exchange
$quote->collectTotals()->save();
// Create Order From Quote
- $magentoOrder = $this->_quoteManagement->submit($quote,$orderDataUp);
+ $magentoOrder = $this->quoteManagement->submit($quote, $orderDataUp);
$oldOrder->setStatus('canceled')->save();
$increment_id = $magentoOrder->getId();
- $this->_api->ordersFixExternalIds(
+ $this->api->ordersFixExternalIds(
[
[
'id' => $order['id'],
@@ -453,23 +453,23 @@ class Exchange
/**
* Edit order
- *
+ *
* @param array $order
- *
+ *
* @return void
*/
private function doUpdate($order)
{
- $this->_logger->writeDump($order,'doUpdate');
+ $this->logger->writeDump($order, 'doUpdate');
- $Status = $this->_config->getValue('retailcrm/Status');
+ $Status = $this->config->getValue('retailcrm/Status');
$Status = array_flip(array_filter($Status));
- $magentoOrder = $this->_order->load($order['externalId']);
+ $magentoOrder = $this->order->load($order['externalId']);
$magentoOrderArr = $magentoOrder->getData();
- $this->_logger->writeDump($magentoOrderArr, 'magentoOrderArr');
- $this->_logger->writeDump($Status, 'status');
+ $this->logger->writeDump($magentoOrderArr, 'magentoOrderArr');
+ $this->logger->writeDump($Status, 'status');
if ((!empty($order['order_edit'])) && ($order['order_edit'] == 1)) {
$this->doCreateUp($order);
@@ -478,88 +478,21 @@ class Exchange
if (!empty($order['status'])) {
$change = $Status[$order['status']];
- if($change == 'canceled'){
- $this->_orderManagement->cancel($magentoOrderArr['entity_id']);
+ if ($change == 'canceled') {
+ $this->orderManagement->cancel($magentoOrderArr['entity_id']);
}
- if($change == 'holded'){
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $order_status = $objectManager->get('Magento\Sales\Model\Order')->load($magentoOrder->getId());
- $order_status->setStatus('holded');
- $order_status->save();
- }
-
- if(($change == 'complete')||($order['status']== 'complete')){
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $order_status = $objectManager->get('Magento\Sales\Model\Order')->load($magentoOrder->getId());
- $order_status->setStatus('complete');
- $order_status->save();
- }
-
- if($change == 'closed'){
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $order_status = $objectManager->get('Magento\Sales\Model\Order')->load($magentoOrder->getId());
- $order_status->setStatus('closed');
- $order_status->save();
- }
-
- if($change == 'processing'){
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $order_status = $objectManager->get('Magento\Sales\Model\Order')->load($magentoOrder->getId());
- $order_status->setStatus('processing');
- $order_status->save();
-
- }
-
- if($change == 'fraud'){
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $order_status = $objectManager->get('Magento\Sales\Model\Order')->load($magentoOrder->getId());
- $order_status->setStatus('fraud');
- $order_status->save();
- }
-
- if($change == 'payment_review'){
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $order_status = $objectManager->get('Magento\Sales\Model\Order')->load($magentoOrder->getId());
- $order_status->setStatus('payment_review');
- $order_status->save();
- }
-
- if($change == 'paypal_canceled_reversal'){
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $order_status = $objectManager->get('Magento\Sales\Model\Order')->load($magentoOrder->getId());
- $order_status->setStatus('paypal_canceled_reversal');
- $order_status->save();
- }
-
- if($change == 'paypal_reversed'){
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $order_status = $objectManager->get('Magento\Sales\Model\Order')->load($magentoOrder->getId());
- $order_status->setStatus('paypal_reversed');
- $order_status->save();
- }
-
- if($change == 'pending_payment'){
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $order_status = $objectManager->get('Magento\Sales\Model\Order')->load($magentoOrder->getId());
- $order_status->setStatus('pending_payment');
- $order_status->save();
- }
-
- if($change == 'pending_paypal'){
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $order_status = $objectManager->get('Magento\Sales\Model\Order')->load($magentoOrder->getId());
- $order_status->setStatus('pending_paypal');
- $order_status->save();
- }
+ $order_status = $this->order->load($magentoOrder->getId());
+ $order_status->setStatus($change);
+ $order_status->save();
}
}
/**
* Assembly orders from history
- *
+ *
* @param array $orderHistory
- *
+ *
* @return array $orders
*/
public static function assemblyOrder($orderHistory)
@@ -567,6 +500,7 @@ class Exchange
$orders = [];
foreach ($orderHistory as $change) {
+ $orderId = $change['order']['id'];
$change['order'] = self::removeEmpty($change['order']);
if (isset($change['order']['items'])) {
@@ -610,10 +544,13 @@ class Exchange
if (isset($change['item'])) {
if (isset($orders[$change['order']['id']]['items'])
- && $orders[$change['order']['id']]['items'][$change['item']['id']]
+ && $orders[$change['order']['id']]['items'][$change['item']['id']]
) {
- $orders[$change['order']['id']]['items'][$change['item']['id']] = array_merge($orders[$change['order']['id']]['items'][$change['item']['id']], $change['item']);
- } else{
+ $orders[$change['order']['id']]['items'][$change['item']['id']] = array_merge(
+ $orders[$change['order']['id']]['items'][$change['item']['id']],
+ $change['item']
+ );
+ } else {
$orders[$change['order']['id']]['items'][$change['item']['id']] = $change['item'];
}
@@ -631,33 +568,41 @@ class Exchange
if (!empty($change['newValue']) && $change['field'] == 'order_product.quantity') {
$orders[$change['order']['id']]['order_edit'] = 1;
}
-
- if (!$orders[$change['order']['id']]['items'][$change['item']['id']]['create'] && $fields['item'][$change['field']]) {
- $orders[$change['order']['id']]['items'][$change['item']['id']][$fields['item'][$change['field']]] = $change['newValue'];
- }
} else {
- if ((isset($fields['delivery'][$change['field']]))&&($fields['delivery'][$change['field']] == 'service')) {
- $orders[$change['order']['id']]['delivery']['service']['code'] = self::newValue($change['newValue']);
+ if (isset($fields['delivery'][$change['field']])
+ && $fields['delivery'][$change['field']] == 'service'
+ ) {
+ $orders[$orderId]['delivery']['service']['code'] = self::newValue($change['newValue']);
} elseif (isset($fields['delivery'][$change['field']])) {
- $orders[$change['order']['id']]['delivery'][$fields['delivery'][$change['field']]] = self::newValue($change['newValue']);
+ $field = $fields['delivery'][$change['field']];
+ $orders[$orderId]['delivery'][$field] = self::newValue($change['newValue']);
+ unset($field);
} elseif (isset($fields['orderAddress'][$change['field']])) {
- $orders[$change['order']['id']]['delivery']['address'][$fields['orderAddress'][$change['field']]] = $change['newValue'];
+ $field = $fields['orderAddress'][$change['field']];
+ $orders[$orderId]['delivery']['address'][$field] = self::newValue($change['newValue']);
+ unset($field);
} elseif (isset($fields['integrationDelivery'][$change['field']])) {
- $orders[$change['order']['id']]['delivery']['service'][$fields['integrationDelivery'][$change['field']]] = self::newValue($change['newValue']);
+ $field = $fields['integrationDelivery'][$change['field']];
+ $orders[$orderId]['delivery']['service'][$field] = self::newValue($change['newValue']);
+ unset($field);
} elseif (isset($fields['customerContragent'][$change['field']])) {
- $orders[$change['order']['id']][$fields['customerContragent'][$change['field']]] = self::newValue($change['newValue']);
+ $field = $fields['customerContragent'][$change['field']];
+ $orders[$orderId][$field] = self::newValue($change['newValue']);
+ unset($field);
} elseif (strripos($change['field'], 'custom_') !== false) {
- $orders[$change['order']['id']]['customFields'][str_replace('custom_', '', $change['field'])] = self::newValue($change['newValue']);
+ $field = str_replace('custom_', '', $change['field']);
+ $orders[$orderId]['customFields'][$field] = self::newValue($change['newValue']);
+ unset($field);
} elseif (isset($fields['order'][$change['field']])) {
- $orders[$change['order']['id']][$fields['order'][$change['field']]] = self::newValue($change['newValue']);
+ $orders[$orderId][$fields['order'][$change['field']]] = self::newValue($change['newValue']);
}
if (isset($change['created'])) {
- $orders[$change['order']['id']]['create'] = 1;
+ $orders[$orderId]['create'] = 1;
}
if (isset($change['deleted'])) {
- $orders[$change['order']['id']]['deleted'] = 1;
+ $orders[$orderId]['deleted'] = 1;
}
}
}
@@ -667,9 +612,9 @@ class Exchange
/**
* Remove empty elements
- *
+ *
* @param array $inputArray
- *
+ *
* @return array $outputArray
*/
public static function removeEmpty($inputArray)
@@ -678,7 +623,7 @@ class Exchange
if (!empty($inputArray)) {
foreach ($inputArray as $key => $element) {
- if(!empty($element) || $element === 0 || $element === '0') {
+ if (!empty($element) || $element === 0 || $element === '0') {
if (is_array($element)) {
$element = self::removeEmpty($element);
}
@@ -700,26 +645,26 @@ class Exchange
*/
public static function newValue($value)
{
- if(isset($value['code'])) {
+ if (isset($value['code'])) {
return $value['code'];
- } else{
+ } else {
return $value;
}
}
/**
* Get shipping methods
- *
+ *
* @param string $mcode
- *
+ *
* @return string
*/
public function getAllShippingMethodsCode($mcode)
{
- $activeCarriers = $this->_shipconfig->getActiveCarriers();
+ $activeCarriers = $this->shipconfig->getActiveCarriers();
$storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORE;
- foreach($activeCarriers as $carrierCode => $carrierModel) {
+ foreach ($activeCarriers as $carrierCode => $carrierModel) {
$options = [];
if ($carrierMethods = $carrierModel->getAllowedMethods()) {
@@ -738,13 +683,13 @@ class Exchange
/**
* Get payment type for api v5
- *
+ *
* @param array $payments
* @param boolean $newOrder
- *
+ *
* @return mixed
*/
- protected function getPaymentMethod($payments, $newOrder = true)
+ private function getPaymentMethod($payments, $newOrder = true)
{
if (count($payments) == 1 || $newOrder) {
$payment = reset($payments);
diff --git a/Model/Icml/Icml.php b/Model/Icml/Icml.php
index c16adc2..d884b19 100644
--- a/Model/Icml/Icml.php
+++ b/Model/Icml/Icml.php
@@ -4,309 +4,391 @@ namespace Retailcrm\Retailcrm\Model\Icml;
class Icml
{
- protected $_dd;
- protected $_eCategories;
- protected $_eOffers;
- protected $_shop;
- protected $_manager;
- protected $_category;
- protected $_product;
- protected $_storeManager;
- protected $_StockState;
- protected $_configurable;
- protected $_config;
-
- public function __construct()
- {
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $manager = $objectManager->get('Magento\Store\Model\StoreManagerInterface');
- $categoryCollectionFactory = $objectManager->get('\Magento\Catalog\Model\ResourceModel\Category\CollectionFactory');
- $product = $objectManager->get('\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory');
- $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface');
- $StockState = $objectManager->get('\Magento\CatalogInventory\Api\StockStateInterface');
- $configurable = $objectManager->get('Magento\ConfigurableProduct\Model\Product\Type\Configurable');
- $config = $objectManager->get('\Magento\Framework\App\Config\ScopeConfigInterface');
+ private $dd;
+ private $eCategories;
+ private $eOffers;
+ private $shop;
+ private $manager;
+ private $category;
+ private $product;
+ private $storeManager;
+ private $StockState;
+ private $configurable;
+ private $config;
+ private $dirList;
+ private $ddFactory;
- $this->_configurable = $configurable;
- $this->_StockState = $StockState;
- $this->_storeManager = $storeManager;
- $this->_product = $product;
- $this->_category = $categoryCollectionFactory;
- $this->_manager = $manager;
- $this->_config = $config;
+ public function __construct(
+ \Magento\Store\Model\StoreManagerInterface $manager,
+ \Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $categoryCollectionFactory,
+ \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $product,
+ \Magento\Store\Model\StoreManagerInterface $storeManager,
+ \Magento\CatalogInventory\Api\StockStateInterface $StockState,
+ \Magento\ConfigurableProduct\Model\Product\Type\Configurable $configurable,
+ \Magento\Framework\App\Config\ScopeConfigInterface $config,
+ \Magento\Framework\DomDocument\DomDocumentFactory $ddFactory,
+ \Magento\Framework\Filesystem\DirectoryList $dirList
+ ) {
+ $this->configurable = $configurable;
+ $this->StockState = $StockState;
+ $this->storeManager = $storeManager;
+ $this->product = $product;
+ $this->category = $categoryCollectionFactory;
+ $this->manager = $manager;
+ $this->config = $config;
+ $this->ddFactory = $ddFactory;
+ $this->dirList = $dirList;
}
-
+
+ /**
+ * Generate icml catelog
+ *
+ * @return void
+ */
public function generate()
{
- $this->_shop = $this->_manager->getStore()->getId();
-
+ $this->shop = $this->manager->getStore()->getId();
+
$string = '
- '.$this->_manager->getStore()->getName().'
+ '.$this->manager->getStore()->getName().'
';
- $xml = new \SimpleXMLElement(
+ $xml = simplexml_load_string(
$string,
+ '\Magento\Framework\Simplexml\Element',
LIBXML_NOENT | LIBXML_NOCDATA | LIBXML_COMPACT | LIBXML_PARSEHUGE
);
-
- $this->_dd = new \DOMDocument();
- $this->_dd->preserveWhiteSpace = false;
- $this->_dd->formatOutput = true;
- $this->_dd->loadXML($xml->asXML());
- $this->_eCategories = $this->_dd->
- getElementsByTagName('categories')->item(0);
- $this->_eOffers = $this->_dd
+ $this->dd = $this->ddFactory->create();
+ $this->dd->preserveWhiteSpace = false;
+ $this->dd->formatOutput = true;
+ $this->dd->loadXML($xml->asXML());
+
+ $this->eCategories = $this->dd
+ ->getElementsByTagName('categories')->item(0);
+ $this->eOffers = $this->dd
->getElementsByTagName('offers')->item(0);
-
+
$this->addCategories();
$this->addOffers();
- $this->_dd->saveXML();
- $dirlist = new \Magento\Framework\Filesystem\DirectoryList('');
- $baseDir = $dirlist->getRoot();
- $shopCode = $this->_manager->getStore()->getCode();
- $this->_dd->save($baseDir . 'retailcrm_' . $shopCode . '.xml');
+ $this->dd->saveXML();
+ $shopCode = $this->manager->getStore()->getCode();
+ $this->dd->save($this->dirList->getRoot() . '/retailcrm_' . $shopCode . '.xml');
}
+ /**
+ * Add product categories in icml catalog
+ *
+ * @return void
+ */
private function addCategories()
{
- $collection = $this->_category->create();
+ $collection = $this->category->create();
$collection->addAttributeToSelect('*');
foreach ($collection as $category) {
- if ($category->getId() > 1){
- $e = $this->_eCategories->appendChild(
- $this->_dd->createElement('category')
+ if ($category->getId() > 1) {
+ $e = $this->eCategories->appendChild(
+ $this->dd->createElement('category')
);
- $e->appendChild($this->_dd->createTextNode($category->getName()));
+ $e->appendChild($this->dd->createTextNode($category->getName()));
$e->setAttribute('id', $category->getId());
if ($category->getParentId() > 1) {
$e->setAttribute('parentId', $category->getParentId());
- }
+ }
}
- }
+ }
}
+ /**
+ * Write products in icml catalog
+ *
+ * @return void
+ */
private function addOffers()
+ {
+ $offers = $this->buildOffers();
+
+ foreach ($offers as $offer) {
+ $this->addOffer($offer);
+ }
+ }
+
+ /**
+ * Write product in icml catalog
+ *
+ * @param array $offer
+ *
+ * @return void
+ */
+ private function addOffer($offer)
+ {
+ $e = $this->eOffers->appendChild(
+ $this->dd->createElement('offer')
+ );
+
+ $e->setAttribute('id', $offer['id']);
+ $e->setAttribute('productId', $offer['productId']);
+
+ if (!empty($offer['quantity'])) {
+ $e->setAttribute('quantity', (int) $offer['quantity']);
+ } else {
+ $e->setAttribute('quantity', 0);
+ }
+
+ if (!empty($offer['categoryId'])) {
+ foreach ($offer['categoryId'] as $categoryId) {
+ $e->appendChild(
+ $this->dd->createElement('categoryId')
+ )->appendChild(
+ $this->dd->createTextNode($categoryId)
+ );
+ }
+ } else {
+ $e->appendChild($this->dd->createElement('categoryId', 1));
+ }
+
+ $e->appendChild($this->dd->createElement('productActivity'))
+ ->appendChild(
+ $this->dd->createTextNode($offer['productActivity'])
+ );
+
+ $e->appendChild($this->dd->createElement('name'))
+ ->appendChild(
+ $this->dd->createTextNode($offer['name'])
+ );
+
+ $e->appendChild($this->dd->createElement('productName'))
+ ->appendChild(
+ $this->dd->createTextNode($offer['productName'])
+ );
+
+ $e->appendChild($this->dd->createElement('price'))
+ ->appendChild(
+ $this->dd->createTextNode($offer['initialPrice'])
+ );
+
+ if (!empty($offer['purchasePrice'])) {
+ $e->appendChild($this->dd->createElement('purchasePrice'))
+ ->appendChild(
+ $this->dd->createTextNode($offer['purchasePrice'])
+ );
+ }
+
+ if (!empty($offer['picture'])) {
+ $e->appendChild($this->dd->createElement('picture'))
+ ->appendChild(
+ $this->dd->createTextNode($offer['picture'])
+ );
+ }
+
+ if (!empty($offer['url'])) {
+ $e->appendChild($this->dd->createElement('url'))
+ ->appendChild(
+ $this->dd->createTextNode($offer['url'])
+ );
+ }
+
+ if (!empty($offer['vendor'])) {
+ $e->appendChild($this->dd->createElement('vendor'))
+ ->appendChild(
+ $this->dd->createTextNode($offer['vendor'])
+ );
+ }
+
+ if (!empty($offer['params'])) {
+ foreach ($offer['params'] as $param) {
+ $paramNode = $this->dd->createElement('param');
+ $paramNode->setAttribute('name', $param['name']);
+ $paramNode->setAttribute('code', $param['code']);
+ $paramNode->appendChild(
+ $this->dd->createTextNode($param['value'])
+ );
+ $e->appendChild($paramNode);
+ }
+ }
+ }
+
+ /**
+ * Build offers array
+ *
+ * @return array $offers
+ */
+ private function buildOffers()
{
$offers = [];
- $collection = $this->_product->create();
+ $collection = $this->product->create();
$collection->addFieldToFilter('visibility', 4);//catalog, search visible
$collection->addAttributeToSelect('*');
-
- $picUrl = $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
- $baseUrl = $this->_storeManager->getStore()->getBaseUrl();
-
- $customAdditionalAttributes = [];
- $customAdditionalAttributes = $this->_config->getValue('retailcrm/Misc/attributes_to_export_into_icml');
+ $picUrl = $this->storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
+ $customAdditionalAttributes = $this->config->getValue('retailcrm/Misc/attributes_to_export_into_icml');
foreach ($collection as $product) {
if ($product->getTypeId() == 'simple') {
- $offer['id'] = $product->getId();
- $offer['productId'] = $product->getId();
- $offer['productActivity'] = $product->isAvailable() ? 'Y' : 'N';
- $offer['name'] = $product->getName();
- $offer['productName'] = $product->getName();
- $offer['initialPrice'] = $product->getFinalPrice();
- $offer['url'] = $product->getProductUrl();
- $offer['picture'] = $picUrl.'catalog/product'.$product->getImage();
- $offer['quantity'] = $this->_StockState->getStockQty($product->getId(), $product->getStore()->getWebsiteId());
- $offer['categoryId'] = $product->getCategoryIds();
- $offer['vendor'] = $product->getAttributeText('manufacturer');
- $offer['params'] = [];
-
- $article = $product->getSku();
-
- if(!empty($article)) {
- $offer['params'][] = [
- 'name' => 'Article',
- 'code' => 'article',
- 'value' => $article
- ];
- }
-
- $weight = $product->getWeight();
-
- if(!empty($weight)) {
- $offer['params'][] = [
- 'name' => 'Weight',
- 'code' => 'weight',
- 'value' => $weight
- ];
- }
-
- if(!empty($customAdditionalAttributes)) {
- //var_dump($customAdditionalAttributes);
- }
-
- $offers[] = $offer;
+ $offers[] = $this->buildOffer($product);
}
if ($product->getTypeId() == 'configurable') {
- $associated_products = $this->_configurable
- ->getUsedProductCollection($product)
- ->addAttributeToSelect('*')
- ->addFilterByRequiredOptions();
+ $associated_products = $this->getAssociatedProducts($product);
foreach ($associated_products as $associatedProduct) {
- $offer['id'] = $associatedProduct->getId();
- $offer['productId'] = $product->getId();
- $offer['productActivity'] = $associatedProduct->isAvailable() ? 'Y' : 'N';
- $offer['name'] = $associatedProduct->getName();
- $offer['productName'] = $product->getName();
- $offer['initialPrice'] = $associatedProduct->getFinalPrice();
- $offer['url'] = $product->getProductUrl();
- $offer['picture'] = $picUrl.'catalog/product'.$associatedProduct->getImage();
- $offer['quantity'] = $this->_StockState->getStockQty($associatedProduct->getId(), $associatedProduct->getStore()->getWebsiteId());
- $offer['categoryId'] = $associatedProduct->getCategoryIds();
- $offer['vendor'] = $associatedProduct->getAttributeText('manufacturer');
- $offer['params'] = [];
-
- $article = $associatedProduct->getSku();
-
- if ($associatedProduct->getResource()->getAttribute('color')) {
- $colorAttribute = $associatedProduct->getResource()->getAttribute('color');
- $color = $colorAttribute->getSource()->getOptionText($associatedProduct->getColor());
- }
-
- if (isset($color)) {
- $offer['params'][] = [
- 'name' => 'Color',
- 'code' => 'color',
- 'value' => $color
- ];
- }
-
- if ($associatedProduct->getResource()->getAttribute('size')) {
- $sizeAttribute = $associatedProduct->getResource()->getAttribute('size');
- $size = $sizeAttribute->getSource()->getOptionText($associatedProduct->getSize());
- }
-
- if (isset($size)) {
- $offer['params'][] = [
- 'name' => 'Size',
- 'code' => 'size',
- 'value' => $size
- ];
- }
-
- if (!empty($article)) {
- $offer['params'][] = [
- 'name' => 'Article',
- 'code' => 'article',
- 'value' => $article
- ];
- }
-
- $weight = $associatedProduct->getWeight();
-
- if(!empty($weight)) {
- $offer['params'][] = [
- 'name' => 'Weight',
- 'code' => 'weight',
- 'value' => $weight
- ];
- }
-
- $offers[] = $offer;
+ $offers[] = $this->buildOffer($product, $associatedProduct);
}
}
}
- foreach ($offers as $offer) {
- $e = $this->_eOffers->appendChild(
- $this->_dd->createElement('offer')
- );
+ return $offers;
+ }
- $e->setAttribute('id', $offer['id']);
- $e->setAttribute('productId', $offer['productId']);
+ /**
+ * Build offer array
+ *
+ * @param object $product
+ * @param object $associatedProduct
+ * @return array $offer
+ */
+ private function buildOffer($product, $associatedProduct = null)
+ {
+ $offer = [];
- if (!empty($offer['quantity'])) {
- $e->setAttribute('quantity', (int) $offer['quantity']);
- } else {
- $e->setAttribute('quantity', 0);
+ $picUrl = $this->storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
+
+ $offer['id'] = $associatedProduct === null ? $product->getId() : $associatedProduct->getId();
+ $offer['productId'] = $product->getId();
+
+ if ($associatedProduct === null) {
+ $offer['productActivity'] = $product->isAvailable() ? 'Y' : 'N';
+ } else {
+ $offer['productActivity'] = $associatedProduct->isAvailable() ? 'Y' : 'N';
+ }
+
+ $offer['name'] = $associatedProduct === null ? $product->getName() : $associatedProduct->getName();
+ $offer['productName'] = $product->getName();
+ $offer['initialPrice'] = $associatedProduct === null
+ ? $product->getFinalPrice()
+ : $associatedProduct->getFinalPrice();
+ $offer['url'] = $product->getProductUrl();
+
+ if ($associatedProduct === null) {
+ $offer['picture'] = $picUrl . 'catalog/product' . $product->getImage();
+ } else {
+ $offer['picture'] = $picUrl . 'catalog/product' . $associatedProduct->getImage();
+ }
+
+ $offer['quantity'] = $associatedProduct === null
+ ? $this->getStockQuantity($product)
+ : $this->getStockQuantity($associatedProduct);
+ $offer['categoryId'] = $associatedProduct === null
+ ? $product->getCategoryIds()
+ : $associatedProduct->getCategoryIds();
+ $offer['vendor'] = $associatedProduct === null
+ ? $product->getAttributeText('manufacturer')
+ : $associatedProduct->getAttributeText('manufacturer');
+
+ $offer['params'] = $this->getOfferParams($product, $associatedProduct);
+
+ return $offer;
+ }
+
+ /**
+ * Get parameters offers
+ *
+ * @param object $product
+ * @param object $associatedProduct
+ * @return array $params
+ */
+ private function getOfferParams($product, $associatedProduct = null)
+ {
+ $params = [];
+
+ if ($associatedProduct !== null) {
+ if ($associatedProduct->getResource()->getAttribute('color')) {
+ $colorAttribute = $associatedProduct->getResource()->getAttribute('color');
+ $color = $colorAttribute->getSource()->getOptionText($associatedProduct->getColor());
}
- if (!empty($offer['categoryId'])) {
- foreach ($offer['categoryId'] as $categoryId) {
- $e->appendChild(
- $this->_dd->createElement('categoryId')
- )->appendChild(
- $this->_dd->createTextNode($categoryId)
- );
- }
- } else {
- $e->appendChild($this->_dd->createElement('categoryId', 1));
+ if (isset($color)) {
+ $params[] = [
+ 'name' => 'Color',
+ 'code' => 'color',
+ 'value' => $color
+ ];
}
- $e->appendChild($this->_dd->createElement('productActivity'))
- ->appendChild(
- $this->_dd->createTextNode($offer['productActivity'])
- );
-
- $e->appendChild($this->_dd->createElement('name'))
- ->appendChild(
- $this->_dd->createTextNode($offer['name'])
- );
-
- $e->appendChild($this->_dd->createElement('productName'))
- ->appendChild(
- $this->_dd->createTextNode($offer['productName'])
- );
-
- $e->appendChild($this->_dd->createElement('price'))
- ->appendChild(
- $this->_dd->createTextNode($offer['initialPrice'])
- );
-
- if (!empty($offer['purchasePrice'])) {
- $e->appendChild($this->_dd->createElement('purchasePrice'))
- ->appendChild(
- $this->_dd->createTextNode($offer['purchasePrice'])
- );
+ if ($associatedProduct->getResource()->getAttribute('size')) {
+ $sizeAttribute = $associatedProduct->getResource()->getAttribute('size');
+ $size = $sizeAttribute->getSource()->getOptionText($associatedProduct->getSize());
}
- if (!empty($offer['picture'])) {
- $e->appendChild($this->_dd->createElement('picture'))
- ->appendChild(
- $this->_dd->createTextNode($offer['picture'])
- );
+ if (isset($size)) {
+ $params[] = [
+ 'name' => 'Size',
+ 'code' => 'size',
+ 'value' => $size
+ ];
}
+ }
- if (!empty($offer['url'])) {
- $e->appendChild($this->_dd->createElement('url'))
- ->appendChild(
- $this->_dd->createTextNode($offer['url'])
- );
- }
+ $article = $associatedProduct === null ? $product->getSku() : $associatedProduct->getSku();
- if (!empty($offer['vendor'])) {
- $e->appendChild($this->_dd->createElement('vendor'))
- ->appendChild(
- $this->_dd->createTextNode($offer['vendor'])
- );
- }
+ if (!empty($article)) {
+ $params[] = [
+ 'name' => 'Article',
+ 'code' => 'article',
+ 'value' => $article
+ ];
+ }
- if(!empty($offer['params'])) {
- foreach($offer['params'] as $param) {
- $paramNode = $this->_dd->createElement('param');
- $paramNode->setAttribute('name', $param['name']);
- $paramNode->setAttribute('code', $param['code']);
- $paramNode->appendChild(
- $this->_dd->createTextNode($param['value'])
- );
- $e->appendChild($paramNode);
- }
- }
- }
- }
+ $weight = $associatedProduct === null ? $product->getWeight() : $associatedProduct->getWeight();
+
+ if (!empty($weight)) {
+ $params[] = [
+ 'name' => 'Weight',
+ 'code' => 'weight',
+ 'value' => $weight
+ ];
+ }
+
+ return $params;
+ }
+
+ /**
+ * Get associated products
+ *
+ * @param object $product
+ *
+ * @return object
+ */
+ private function getAssociatedProducts($product)
+ {
+ return $this->configurable
+ ->getUsedProductCollection($product)
+ ->addAttributeToSelect('*')
+ ->addFilterByRequiredOptions();
+ }
+
+ /**
+ * Get product stock quantity
+ *
+ * @param object $offer
+ * @return int $quantity
+ */
+ private function getStockQuantity($offer)
+ {
+ $quantity = $this->StockState->getStockQty(
+ $offer->getId(),
+ $offer->getStore()->getWebsiteId()
+ );
+
+ return $quantity;
+ }
}
diff --git a/Model/Logger/Logger.php b/Model/Logger/Logger.php
index a89c4e5..2ae50ba 100644
--- a/Model/Logger/Logger.php
+++ b/Model/Logger/Logger.php
@@ -6,18 +6,18 @@ class Logger
{
private $logDir;
- public function __construct(\Magento\Framework\ObjectManagerInterface $objectManager)
- {
- $directory = $objectManager->get('\Magento\Framework\Filesystem\DirectoryList');
+ public function __construct(
+ \Magento\Framework\Filesystem\DirectoryList $directory
+ ) {
$this->logDir = $directory->getPath('log');
}
/**
* Write data in log file
- *
+ *
* @param array $data
- * @param str $fileName
- *
+ * @param string $fileName
+ *
* @return void
*/
public function writeDump($data, $fileName)
@@ -40,10 +40,10 @@ class Logger
/**
* Write data in log file
- *
- * @param str $data
- * @param str $fileName
- *
+ *
+ * @param string $data
+ * @param string $fileName
+ *
* @return void
*/
public function writeRow($data, $fileName = 'retailcrm')
@@ -64,24 +64,24 @@ class Logger
/**
* Clear file
- *
- * @param str $file
- *
+ *
+ * @param string $file
+ *
* @return void
*/
- protected function clear($file)
+ private function clear($file)
{
file_put_contents($file, '');
}
/**
* Check file size
- *
- * @param str $file
- *
+ *
+ * @param string $file
+ *
* @return boolean
*/
- protected function checkSize($file)
+ private function checkSize($file)
{
if (!file_exists($file)) {
return true;
diff --git a/Model/Observer/Customer.php b/Model/Observer/Customer.php
index 0ec8209..8fdfa79 100644
--- a/Model/Observer/Customer.php
+++ b/Model/Observer/Customer.php
@@ -6,39 +6,22 @@ use Retailcrm\Retailcrm\Helper\Proxy as ApiClient;
class Customer implements \Magento\Framework\Event\ObserverInterface
{
- protected $_api;
- protected $_config;
- protected $_helper;
- protected $_logger;
- protected $_objectManager;
- protected $registry;
+ private $api;
+ private $registry;
public function __construct(
- \Magento\Framework\ObjectManagerInterface $objectManager,
- \Magento\Framework\App\Config\ScopeConfigInterface $config,
- \Magento\Framework\Registry $registry
+ \Magento\Framework\Registry $registry,
+ ApiClient $api
) {
- $helper = $objectManager->get('\Retailcrm\Retailcrm\Helper\Data');
- $logger = $objectManager->get('\Retailcrm\Retailcrm\Model\Logger\Logger');
-
- $this->_logger = $logger;
- $this->_helper = $helper;
- $this->_config = $config;
- $this->_objectManager = $objectManager;
+ $this->api = $api;
$this->registry = $registry;
-
- $url = $config->getValue('retailcrm/general/api_url');
- $key = $config->getValue('retailcrm/general/api_key');
- $version = $config->getValue('retailcrm/general/api_version');
-
- if (!empty($url) && !empty($key)) {
- $this->_api = new ApiClient($url, $key, $version);
- }
}
public function execute(\Magento\Framework\Event\Observer $observer)
{
- if ($this->registry->registry('RETAILCRM_HISTORY') === true) {
+ if ($this->registry->registry('RETAILCRM_HISTORY') === true
+ || !$this->api->isConfigured()
+ ) {
return;
}
@@ -53,14 +36,14 @@ class Customer implements \Magento\Framework\Event\ObserverInterface
'createdAt' => date('Y-m-d H:i:s', strtotime($data->getCreatedAt()))
];
- $response = $this->_api->customersEdit($customer);
+ $response = $this->api->customersEdit($customer);
if ($response === false) {
return;
}
- if (!$response->isSuccessful() && $response->errorMsg == $this->_api->getErrorText('errorNotFound')) {
- $this->_api->customersCreate($customer);
+ if (!$response->isSuccessful() && $response->errorMsg == $this->api->getErrorText('errorNotFound')) {
+ $this->api->customersCreate($customer);
}
}
}
diff --git a/Model/Observer/OrderCreate.php b/Model/Observer/OrderCreate.php
index fe8b597..28805e7 100644
--- a/Model/Observer/OrderCreate.php
+++ b/Model/Observer/OrderCreate.php
@@ -7,52 +7,45 @@ use Retailcrm\Retailcrm\Helper\Proxy as ApiClient;
class OrderCreate implements \Magento\Framework\Event\ObserverInterface
{
- protected $_api;
- protected $_objectManager;
- protected $_config;
- protected $_helper;
- protected $_logger;
- protected $_registry;
+ private $api;
+ private $config;
+ private $logger;
+ private $registry;
+ private $product;
/**
* Constructor
- *
- * @param \Magento\Framework\ObjectManagerInterface $objectManager
+ *
* @param \Magento\Framework\App\Config\ScopeConfigInterface $config
* @param \Retailcrm\Retailcrm\Model\Logger\Logger $logger
* @param \Magento\Framework\Registry $registry
*/
public function __construct(
- \Magento\Framework\ObjectManagerInterface $objectManager,
\Magento\Framework\App\Config\ScopeConfigInterface $config,
- \Magento\Framework\Registry $registry
+ \Magento\Framework\Registry $registry,
+ \Retailcrm\Retailcrm\Model\Logger\Logger $logger,
+ \Magento\Catalog\Model\ProductRepository $product,
+ ApiClient $api
) {
- $helper = $objectManager->get('\Retailcrm\Retailcrm\Helper\Data');
- $this->_logger = $objectManager->get('\Retailcrm\Retailcrm\Model\Logger\Logger');
- $this->_helper = $helper;
- $this->_objectManager = $objectManager;
- $this->_config = $config;
- $this->_registry = $registry;
-
- $url = $config->getValue('retailcrm/general/api_url');
- $key = $config->getValue('retailcrm/general/api_key');
- $apiVersion = $config->getValue('retailcrm/general/api_version');
-
- if (!empty($url) && !empty($key)) {
- $this->_api = new ApiClient($url, $key, $apiVersion);
- }
+ $this->logger = $logger;
+ $this->config = $config;
+ $this->registry = $registry;
+ $this->product = $product;
+ $this->api = $api;
}
/**
* Execute send order in CRM
- *
+ *
* @param Observer $observer
- *
+ *
* @return $this
*/
public function execute(Observer $observer)
{
- if ($this->_registry->registry('RETAILCRM_HISTORY') === true) {
+ if ($this->registry->registry('RETAILCRM_HISTORY') === true
+ || !$this->api->isConfigured()
+ ) {
return;
}
@@ -62,36 +55,8 @@ class OrderCreate implements \Magento\Framework\Event\ObserverInterface
return;
}
- $items = [];
$addressObj = $order->getBillingAddress();
- foreach ($order->getAllItems() as $item) {
- if ($item->getProductType() == "simple") {
- $price = $item->getPrice();
-
- if ($price == 0) {
- $omproduct = $this->_objectManager->get('Magento\Catalog\Model\ProductRepository')
- ->getById($item->getProductId());
- $price = $omproduct->getPrice();
- }
-
- $product = [
- 'productId' => $item->getProductId(),
- 'productName' => $item->getName(),
- 'quantity' => $item->getQtyOrdered(),
- 'initialPrice' => $price,
- 'offer' => [
- 'externalId' => $item->getProductId()
- ]
- ];
-
- unset($omproduct);
- unset($price);
-
- $items[] = $product;
- }
- }
-
$shippingCode = $this->getShippingCode($order->getShippingMethod());
$preparedOrder = [
@@ -99,15 +64,21 @@ class OrderCreate implements \Magento\Framework\Event\ObserverInterface
'externalId' => $order->getId(),
'number' => $order->getRealOrderId(),
'createdAt' => $order->getCreatedAt(),
- 'lastName' => $order->getCustomerLastname() ? $order->getCustomerLastname() : $addressObj->getLastname(),
- 'firstName' => $order->getCustomerFirstname() ? $order->getCustomerFirstname() : $addressObj->getFirstname(),
- 'patronymic' => $order->getCustomerMiddlename() ? $order->getCustomerMiddlename() : $addressObj->getMiddlename(),
+ 'lastName' => $order->getCustomerLastname()
+ ? $order->getCustomerLastname()
+ : $addressObj->getLastname(),
+ 'firstName' => $order->getCustomerFirstname()
+ ? $order->getCustomerFirstname()
+ : $addressObj->getFirstname(),
+ 'patronymic' => $order->getCustomerMiddlename()
+ ? $order->getCustomerMiddlename()
+ : $addressObj->getMiddlename(),
'email' => $order->getCustomerEmail(),
'phone' => $addressObj->getTelephone(),
- 'status' => $this->_config->getValue('retailcrm/Status/' . $order->getStatus()),
- 'items' => $items,
+ 'status' => $this->config->getValue('retailcrm/Status/' . $order->getStatus()),
+ 'items' => $this->getOrderItems($order),
'delivery' => [
- 'code' => $this->_config->getValue('retailcrm/Shipping/' . $shippingCode),
+ 'code' => $this->config->getValue('retailcrm/Shipping/' . $shippingCode),
'cost' => $order->getShippingAmount(),
'address' => [
'index' => $addressObj->getData('postcode'),
@@ -133,14 +104,18 @@ class OrderCreate implements \Magento\Framework\Event\ObserverInterface
$preparedOrder['countryIso'] = $addressObj->getData('country_id');
}
- if ($this->_api->getVersion() == 'v4') {
- $preparedOrder['paymentType'] = $this->_config->getValue('retailcrm/Payment/'.$order->getPayment()->getMethodInstance()->getCode());
+ if ($this->api->getVersion() == 'v4') {
+ $preparedOrder['paymentType'] = $this->config->getValue(
+ 'retailcrm/Payment/' . $order->getPayment()->getMethodInstance()->getCode()
+ );
$preparedOrder['discount'] = abs($order->getDiscountAmount());
- } elseif ($this->_api->getVersion() == 'v5') {
+ } elseif ($this->api->getVersion() == 'v5') {
$preparedOrder['discountManualAmount'] = abs($order->getDiscountAmount());
$payment = [
- 'type' => $this->_config->getValue('retailcrm/Payment/' . $order->getPayment()->getMethodInstance()->getCode()),
+ 'type' => $this->config->getValue(
+ 'retailcrm/Payment/' . $order->getPayment()->getMethodInstance()->getCode()
+ ),
'externalId' => $order->getId(),
'order' => [
'externalId' => $order->getId(),
@@ -166,13 +141,37 @@ class OrderCreate implements \Magento\Framework\Event\ObserverInterface
unset($preparedOrder['status']);
}
+ $this->setCustomer(
+ $order,
+ $addressObj,
+ $preparedOrder
+ );
+
+ \Retailcrm\Retailcrm\Helper\Data::filterRecursive($preparedOrder);
+
+ $this->logger->writeDump($preparedOrder, 'CreateOrder');
+
+ $this->api->ordersCreate($preparedOrder);
+
+ return $this;
+ }
+
+ /**
+ * @param $order
+ * @param $addressObj
+ * @param $preparedOrder
+ */
+ private function setCustomer($order, $addressObj, &$preparedOrder)
+ {
if ($order->getCustomerIsGuest() == 1) {
$customer = $this->getCustomerByEmail($order->getCustomerEmail());
if ($customer !== false) {
$preparedOrder['customer']['id'] = $customer['id'];
}
- } elseif ($order->getCustomerIsGuest() == 0) {
+ }
+
+ if ($order->getCustomerIsGuest() == 0) {
if ($this->existsInCrm($order->getCustomerId(), 'customersGet')) {
$preparedOrder['customer']['externalId'] = $order->getCustomerId();
} else {
@@ -189,29 +188,61 @@ class OrderCreate implements \Magento\Framework\Event\ObserverInterface
];
}
- if ($this->_api->customersCreate($preparedCustomer)) {
+ if ($this->api->customersCreate($preparedCustomer)) {
$preparedOrder['customer']['externalId'] = $order->getCustomerId();
}
}
}
+ }
- $this->_helper->filterRecursive($preparedOrder);
+ /**
+ * Get order products
+ *
+ * @param object $order
+ *
+ * @return array $items
+ */
+ private function getOrderItems($order)
+ {
+ $items = [];
- $this->_logger->writeDump($preparedOrder,'CreateOrder');
+ foreach ($order->getAllItems() as $item) {
+ if ($item->getProductType() == "simple") {
+ $price = $item->getPrice();
- $this->_api->ordersCreate($preparedOrder);
+ if ($price == 0) {
+ $magentoProduct = $this->product->getById($item->getProductId());
+ $price = $magentoProduct->getPrice();
+ }
- return $this;
- }
+ $product = [
+ 'productId' => $item->getProductId(),
+ 'productName' => $item->getName(),
+ 'quantity' => $item->getQtyOrdered(),
+ 'initialPrice' => $price,
+ 'offer' => [
+ 'externalId' => $item->getProductId()
+ ]
+ ];
+
+ unset($magentoProduct);
+ unset($price);
+
+ $items[] = $product;
+ }
+ }
+
+ return $items;
+ }
/**
* Get shipping code
- *
+ *
* @param string $string
- *
+ *
* @return string
*/
- protected function getShippingCode($string)
+ public function getShippingCode($string)
{
$split = array_values(explode('_', $string));
$length = count($split);
@@ -222,20 +253,20 @@ class OrderCreate implements \Magento\Framework\Event\ObserverInterface
/**
* Check exists order or customer in CRM
- *
+ *
* @param int $id
- *
+ *
* @return boolean
*/
- protected function existsInCrm($id, $method = 'ordersGet', $by = 'externalId')
+ private function existsInCrm($id, $method = 'ordersGet', $by = 'externalId')
{
- $response = $this->_api->{$method}($id, $by);
+ $response = $this->api->{$method}($id, $by);
if ($response === false) {
return;
}
- if (!$response->isSuccessful() && $response->errorMsg == $this->_api->getErrorText('errorNotFound')) {
+ if (!$response->isSuccessful() && $response->errorMsg == $this->api->getErrorText('errorNotFound')) {
return false;
}
@@ -244,14 +275,14 @@ class OrderCreate implements \Magento\Framework\Event\ObserverInterface
/**
* Get customer by email from CRM
- *
+ *
* @param string $email
- *
+ *
* @return mixed
*/
- protected function getCustomerByEmail($email)
+ private function getCustomerByEmail($email)
{
- $response = $this->_api->customersList(['email' => $email]);
+ $response = $this->api->customersList(['email' => $email]);
if ($response === false) {
return false;
diff --git a/Model/Observer/OrderUpdate.php b/Model/Observer/OrderUpdate.php
index 7a45135..5940130 100644
--- a/Model/Observer/OrderUpdate.php
+++ b/Model/Observer/OrderUpdate.php
@@ -7,47 +7,39 @@ use Retailcrm\Retailcrm\Helper\Proxy as ApiClient;
class OrderUpdate implements \Magento\Framework\Event\ObserverInterface
{
- protected $_api;
- protected $_config;
- protected $_helper;
- protected $_objectManager;
- protected $registry;
+ private $api;
+ private $config;
+ private $registry;
/**
* Constructor
- *
- * @param \Magento\Framework\ObjectManagerInterface $objectManager
+ *
* @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+ * @param \Magento\Framework\Registry $registry
+ * @param ApiClient $api
*/
public function __construct(
- \Magento\Framework\ObjectManagerInterface $objectManager,
\Magento\Framework\App\Config\ScopeConfigInterface $config,
- \Magento\Framework\Registry $registry
+ \Magento\Framework\Registry $registry,
+ ApiClient $api
) {
- $this->_helper = $objectManager->get('\Retailcrm\Retailcrm\Helper\Data');
- $this->_objectManager = $objectManager;
- $this->_config = $config;
+ $this->config = $config;
$this->registry = $registry;
-
- $url = $config->getValue('retailcrm/general/api_url');
- $key = $config->getValue('retailcrm/general/api_key');
- $apiVersion = $config->getValue('retailcrm/general/api_version');
-
- if (!empty($url) && !empty($key)) {
- $this->_api = new ApiClient($url, $key, $apiVersion);
- }
+ $this->api = $api;
}
/**
* Execute update order in CRM
- *
+ *
* @param Observer $observer
- *
+ *
* @return void
*/
public function execute(Observer $observer)
{
- if ($this->registry->registry('RETAILCRM_HISTORY') === true) {
+ if ($this->registry->registry('RETAILCRM_HISTORY') === true
+ || !$this->api->isConfigured()
+ ) {
return;
}
@@ -56,24 +48,24 @@ class OrderUpdate implements \Magento\Framework\Event\ObserverInterface
if ($order) {
$preparedOrder = [
'externalId' => $order->getId(),
- 'status' => $this->_config->getValue('retailcrm/Status/' . $order->getStatus())
+ 'status' => $this->config->getValue('retailcrm/Status/' . $order->getStatus())
];
if ($order->getBaseTotalDue() == 0) {
- if ($this->_api->getVersion() == 'v4') {
+ if ($this->api->getVersion() == 'v4') {
$preparedOrder['paymentStatus'] = 'paid';
- } elseif ($this->_api->getVersion() == 'v5') {
+ } elseif ($this->api->getVersion() == 'v5') {
$payment = [
'externalId' => $order->getPayment()->getId(),
'status' => 'paid'
];
- $this->_api->ordersPaymentsEdit($payment);
+ $this->api->ordersPaymentsEdit($payment);
}
}
- $this->_helper->filterRecursive($preparedOrder);
- $this->_api->ordersEdit($preparedOrder);
+ \Retailcrm\Retailcrm\Helper\Data::filterRecursive($preparedOrder);
+ $this->api->ordersEdit($preparedOrder);
}
}
}
diff --git a/Model/Order/OrderNumber.php b/Model/Order/OrderNumber.php
index ce411b0..7864a64 100644
--- a/Model/Order/OrderNumber.php
+++ b/Model/Order/OrderNumber.php
@@ -7,45 +7,38 @@ use Retailcrm\Retailcrm\Helper\Proxy as ApiClient;
class OrderNumber extends OrderCreate
{
- protected $_orderRepository;
- protected $_searchCriteriaBuilder;
- protected $_config;
- protected $_filterBuilder;
- protected $_order;
- protected $_helper;
- protected $_api;
- protected $_logger;
-
- public function __construct()
- {
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $orderRepository = $objectManager->get('Magento\Sales\Model\OrderRepository');
- $searchCriteriaBuilder = $objectManager->get('Magento\Framework\Api\SearchCriteriaBuilder');
- $config = $objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface');
- $filterBuilder = $objectManager->get('Magento\Framework\Api\FilterBuilder');
- $order = $objectManager->get('\Magento\Sales\Api\Data\OrderInterface');
- $helper = $objectManager->get('\Retailcrm\Retailcrm\Helper\Data');
+ private $orderRepository;
+ private $searchCriteriaBuilder;
+ private $config;
+ private $filterBuilder;
+ private $order;
+ private $api;
+ private $logger;
+ private $productRepository;
- $this->_orderRepository = $orderRepository;
- $this->_searchCriteriaBuilder = $searchCriteriaBuilder;
- $this->_config = $config;
- $this->_filterBuilder = $filterBuilder;
- $this->_order = $order;
- $this->_helper = $helper;
- $this->_logger = $objectManager->get('\Retailcrm\Retailcrm\Model\Logger\Logger');
-
- $url = $config->getValue('retailcrm/general/api_url');
- $key = $config->getValue('retailcrm/general/api_key');
- $version = $config->getValue('retailcrm/general/api_version');
-
- if (!empty($url) && !empty($key)) {
- $this->_api = new ApiClient($url, $key, $version);
- }
+ public function __construct(
+ \Magento\Sales\Model\OrderRepository $orderRepository,
+ \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
+ \Magento\Framework\App\Config\ScopeConfigInterface $config,
+ \Magento\Framework\Api\FilterBuilder $filterBuilder,
+ \Magento\Sales\Api\Data\OrderInterface $order,
+ \Retailcrm\Retailcrm\Model\Logger\Logger $logger,
+ \Magento\Catalog\Model\ProductRepository $productRepository,
+ ApiClient $api
+ ) {
+ $this->orderRepository = $orderRepository;
+ $this->searchCriteriaBuilder = $searchCriteriaBuilder;
+ $this->config = $config;
+ $this->filterBuilder = $filterBuilder;
+ $this->order = $order;
+ $this->logger = $logger;
+ $this->productRepository = $productRepository;
+ $this->api = $api;
}
- public function ExportOrderNumber()
+ public function exportOrderNumber()
{
- $ordernumber = $this->_config->getValue('retailcrm/Load/number_order');
+ $ordernumber = $this->config->getValue('retailcrm/Load/number_order');
$ordersId = explode(",", $ordernumber);
$orders = [];
@@ -57,7 +50,7 @@ class OrderNumber extends OrderCreate
unset($orders);
foreach ($chunked as $chunk) {
- $this->_api->ordersUpload($chunk);
+ $this->api->ordersUpload($chunk);
time_nanosleep(0, 250000000);
}
@@ -68,7 +61,7 @@ class OrderNumber extends OrderCreate
public function prepareOrder($id)
{
- $magentoOrder = $this->_order->load($id);
+ $magentoOrder = $this->order->load($id);
$items = [];
$addressObj = $magentoOrder->getBillingAddress();
@@ -77,11 +70,9 @@ class OrderNumber extends OrderCreate
if ($item->getProductType() == "simple") {
$price = $item->getPrice();
- if ($price == 0){
- $om = \Magento\Framework\App\ObjectManager::getInstance();
- $omproduct = $om->get('Magento\Catalog\Model\ProductRepository')
- ->getById($item->getProductId());
- $price = $omproduct->getPrice();
+ if ($price == 0) {
+ $magentoProduct = $this->productRepository->getById($item->getProductId());
+ $price = $magentoProduct->getPrice();
}
$product = [
@@ -94,8 +85,7 @@ class OrderNumber extends OrderCreate
]
];
- unset($om);
- unset($omproduct);
+ unset($magentoProduct);
unset($price);
$items[] = $product;
@@ -114,12 +104,14 @@ class OrderNumber extends OrderCreate
'patronymic' => $magentoOrder->getCustomerMiddlename(),
'email' => $magentoOrder->getCustomerEmail(),
'phone' => $addressObj->getTelephone(),
- 'paymentType' => $this->_config->getValue('retailcrm/Payment/'.$magentoOrder->getPayment()->getMethodInstance()->getCode()),
- 'status' => $this->_config->getValue('retailcrm/Status/'.$magentoOrder->getStatus()),
+ 'paymentType' => $this->config->getValue(
+ 'retailcrm/Payment/' . $magentoOrder->getPayment()->getMethodInstance()->getCode()
+ ),
+ 'status' => $this->config->getValue('retailcrm/Status/'.$magentoOrder->getStatus()),
'discount' => abs($magentoOrder->getDiscountAmount()),
'items' => $items,
'delivery' => [
- 'code' => $this->_config->getValue('retailcrm/Shipping/'.$ship),
+ 'code' => $this->config->getValue('retailcrm/Shipping/'.$ship),
'cost' => $magentoOrder->getShippingAmount(),
'address' => [
'index' => $addressObj->getData('postcode'),
@@ -130,27 +122,27 @@ class OrderNumber extends OrderCreate
'text' => trim(
',',
implode(
- ',',
- [
- $addressObj->getData('postcode'),
- $addressObj->getData('city'),
- $addressObj->getData('street'),
- ]
+ ',',
+ [
+ $addressObj->getData('postcode'),
+ $addressObj->getData('city'),
+ $addressObj->getData('street'),
+ ]
)
)
]
]
];
- if (trim($preparedOrder['delivery']['code']) == ''){
+ if (trim($preparedOrder['delivery']['code']) == '') {
unset($preparedOrder['delivery']['code']);
}
- if (trim($preparedOrder['paymentType']) == ''){
+ if (trim($preparedOrder['paymentType']) == '') {
unset($preparedOrder['paymentType']);
}
- if (trim($preparedOrder['status']) == ''){
+ if (trim($preparedOrder['status']) == '') {
unset($preparedOrder['status']);
}
@@ -158,8 +150,8 @@ class OrderNumber extends OrderCreate
$preparedOrder['customer']['externalId'] = $magentoOrder->getCustomerId();
}
- $this->_logger->writeDump($preparedOrder,'OrderNumber');
+ $this->logger->writeDump($preparedOrder, 'OrderNumber');
- return $this->_helper->filterRecursive($preparedOrder);
+ return \Retailcrm\Retailcrm\Helper\Data::filterRecursive($preparedOrder);
}
}
diff --git a/Model/Service/ConfigManager.php b/Model/Service/ConfigManager.php
new file mode 100644
index 0000000..0f34391
--- /dev/null
+++ b/Model/Service/ConfigManager.php
@@ -0,0 +1,19 @@
+config = $config;
+ }
+
+ public function getConfigValue($path)
+ {
+ return $this->config->getValue($path);
+ }
+}
diff --git a/Model/Setting/Attribute.php b/Model/Setting/Attribute.php
index f00036f..99de0ee 100644
--- a/Model/Setting/Attribute.php
+++ b/Model/Setting/Attribute.php
@@ -4,28 +4,32 @@ namespace Retailcrm\Retailcrm\Model\Setting;
class Attribute implements \Magento\Framework\Option\ArrayInterface
{
- protected $_entityType;
- protected $_store;
+ private $entityType;
+ private $store;
public function __construct(
\Magento\Store\Model\Store $store,
\Magento\Eav\Model\Entity\Type $entityType
) {
- $this->_store = $store;
- $this->_entityType = $entityType;
+ $this->store = $store;
+ $this->entityType = $entityType;
}
public function toOptionArray()
{
$types = ['text', 'multiselect', 'decimal'];
- $attributes = $this->_entityType->loadByCode('catalog_product')->getAttributeCollection();
+ $attributes = $this->entityType->loadByCode('catalog_product')->getAttributeCollection();
$attributes->addFieldToFilter('frontend_input', $types);
$result = [];
foreach ($attributes as $attr) {
if ($attr->getFrontendLabel()) {
- $result[] = array('value' => $attr->getAttributeId(), 'label' => $attr->getFrontendLabel(), 'title' => $attr->getAttributeCode());
+ $result[] = [
+ 'value' => $attr->getAttributeId(),
+ 'label' => $attr->getFrontendLabel(),
+ 'title' => $attr->getAttributeCode()
+ ];
}
}
diff --git a/Model/Setting/Shipping.php b/Model/Setting/Shipping.php
index 7fd266e..d6ca4c8 100644
--- a/Model/Setting/Shipping.php
+++ b/Model/Setting/Shipping.php
@@ -4,23 +4,26 @@ namespace Retailcrm\Retailcrm\Model\Setting;
class Shipping implements \Magento\Framework\Option\ArrayInterface
{
- protected $_entityType;
- protected $_store;
+ private $entityType;
+ private $store;
+ private $config;
+ private $shippingConfig;
public function __construct(
\Magento\Store\Model\Store $store,
- \Magento\Eav\Model\Entity\Type $entityType
+ \Magento\Eav\Model\Entity\Type $entityType,
+ \Magento\Framework\App\Config\ScopeConfigInterface $config,
+ \Magento\Shipping\Model\Config $shippingConfig
) {
- $this->_store = $store;
- $this->_entityType = $entityType;
+ $this->store = $store;
+ $this->entityType = $entityType;
+ $this->config = $config;
+ $this->shippingConfig = $shippingConfig;
}
public function toOptionArray()
{
- $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
- $activeShipping = $objectManager->create('Magento\Shipping\Model\Config')->getActiveCarriers();
-
- $config = $objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface');
+ $activeShipping = $this->shippingConfig->getActiveCarriers();
foreach ($activeShipping as $carrierCode => $carrierModel) {
$options = [];
@@ -36,7 +39,7 @@ class Shipping implements \Magento\Framework\Option\ArrayInterface
];
}
- $carrierTitle = $config->getValue('carriers/' . $carrierCode . '/title');
+ $carrierTitle = $this->config->getValue('carriers/' . $carrierCode . '/title');
}
$methods[] = [
diff --git a/Model/Setting/Status.php b/Model/Setting/Status.php
index a7adbcb..6b439f6 100644
--- a/Model/Setting/Status.php
+++ b/Model/Setting/Status.php
@@ -9,7 +9,7 @@ class Status extends \Magento\Config\Model\Config\Backend\Serialized\ArraySerial
// For value validations
$exceptions = $this->getValue();
- // Validations
+ // Validations
$this->setValue($exceptions);
return parent::beforeSave();
diff --git a/Test/Unit/Observer/CustomerTest.php b/Test/Unit/Observer/CustomerTest.php
index e8ae7da..137041c 100644
--- a/Test/Unit/Observer/CustomerTest.php
+++ b/Test/Unit/Observer/CustomerTest.php
@@ -4,14 +4,12 @@ namespace Retailcrm\Retailcrm\Test\Unit\Observer;
class CustomerTest extends \PHPUnit\Framework\TestCase
{
- protected $mockApi;
- protected $mockResponse;
- protected $config;
- protected $registry;
- protected $mockObserver;
- protected $mockEvent;
- protected $objectManager;
- protected $mockCustomer;
+ private $mockApi;
+ private $mockResponse;
+ private $registry;
+ private $mockObserver;
+ private $mockEvent;
+ private $mockCustomer;
public function setUp()
{
@@ -28,9 +26,6 @@ class CustomerTest extends \PHPUnit\Framework\TestCase
->setMethods(['isSuccessful'])
->getMock();
- $this->config = $this->getMockBuilder(\Magento\Framework\App\Config\ScopeConfigInterface::class)
- ->getMockForAbstractClass();
-
$this->registry = $this->getMockBuilder(\Magento\Framework\Registry::class)
->disableOriginalConstructor()
->getMock();
@@ -44,9 +39,6 @@ class CustomerTest extends \PHPUnit\Framework\TestCase
->setMethods(['getCustomer'])
->getMock();
- $this->objectManager = $this->getMockBuilder(\Magento\Framework\ObjectManagerInterface::class)
- ->getMockForAbstractClass();
-
$this->mockCustomer = $this->getMockBuilder(\Magento\Customer\Model\Customer::class)
->disableOriginalConstructor()
->setMethods([
@@ -59,13 +51,12 @@ class CustomerTest extends \PHPUnit\Framework\TestCase
->getMock();
$this->unit = new \Retailcrm\Retailcrm\Model\Observer\Customer(
- $this->objectManager,
- $this->config,
- $this->registry
+ $this->registry,
+ $this->mockApi
);
$reflection = new \ReflectionClass($this->unit);
- $reflection_property = $reflection->getProperty('_api');
+ $reflection_property = $reflection->getProperty('api');
$reflection_property->setAccessible(true);
$reflection_property->setValue($this->unit, $this->mockApi);
}
@@ -131,10 +122,10 @@ class CustomerTest extends \PHPUnit\Framework\TestCase
/**
* Get test customer data
- *
+ *
* @return array
*/
- protected function getAfterSaveCustomerTestData()
+ private function getAfterSaveCustomerTestData()
{
return [
'id' => 1,
diff --git a/Test/Unit/Observer/OrderCreateTest.php b/Test/Unit/Observer/OrderCreateTest.php
index 9be435f..4a43788 100644
--- a/Test/Unit/Observer/OrderCreateTest.php
+++ b/Test/Unit/Observer/OrderCreateTest.php
@@ -7,24 +7,23 @@ namespace Retailcrm\Retailcrm\Test\Unit\Observer;
*/
class OrderCreateTest extends \PHPUnit\Framework\TestCase
{
- protected $objectManager;
- protected $_config;
- protected $_unit;
- protected $_mockEvent;
- protected $_mockObserver;
- protected $_registry;
- protected $_mockApi;
- protected $_mockOrder;
- protected $_mockItem;
- protected $_mockStore;
- protected $_mockBillingAddress;
- protected $_mockResponse;
- protected $_mockPayment;
- protected $_mockPaymentMethod;
+ private $config;
+ private $unit;
+ private $mockEvent;
+ private $mockObserver;
+ private $registry;
+ private $mockApi;
+ private $mockOrder;
+ private $mockItem;
+ private $mockStore;
+ private $mockBillingAddress;
+ private $mockResponse;
+ private $mockPayment;
+ private $mockPaymentMethod;
- protected function setUp()
+ public function setUp()
{
- $this->_mockApi = $this->getMockBuilder(\Retailcrm\Retailcrm\Helper\Proxy::class)
+ $this->mockApi = $this->getMockBuilder(\Retailcrm\Retailcrm\Helper\Proxy::class)
->disableOriginalConstructor()
->setMethods([
'ordersGet',
@@ -36,39 +35,27 @@ class OrderCreateTest extends \PHPUnit\Framework\TestCase
])
->getMock();
- $this->_mockObserver = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
+ $this->mockObserver = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
->disableOriginalConstructor()
->getMock();
- $this->_mockEvent = $this->getMockBuilder(\Magento\Framework\Event::class)
+ $this->mockEvent = $this->getMockBuilder(\Magento\Framework\Event::class)
->disableOriginalConstructor()
->setMethods(['getOrder'])
->getMock();
-
- $this->objectManager = $this->getMockBuilder(\Magento\Framework\ObjectManagerInterface::class)
- ->getMockForAbstractClass();
-
- // mock Object Manager
- $this->objectManager->expects($this->any())
- ->method('get')
- ->with($this->logicalOr(
- $this->equalTo('\Retailcrm\Retailcrm\Helper\Data'),
- $this->equalTo('\Retailcrm\Retailcrm\Model\Logger\Logger')
- ))
- ->will($this->returnCallback([$this, 'getCallbackDataClasses']));
- $this->_config = $this->getMockBuilder(\Magento\Framework\App\Config\ScopeConfigInterface::class)
+ $this->config = $this->getMockBuilder(\Magento\Framework\App\Config\ScopeConfigInterface::class)
->getMockForAbstractClass();
- $this->_logger = $this->getMockBuilder(\Retailcrm\Retailcrm\Model\Logger\Logger::class)
+ $this->logger = $this->getMockBuilder(\Retailcrm\Retailcrm\Model\Logger\Logger::class)
->disableOriginalConstructor()
->getMock();
- $this->_registry = $this->getMockBuilder(\Magento\Framework\Registry::class)
+ $this->registry = $this->getMockBuilder(\Magento\Framework\Registry::class)
->disableOriginalConstructor()
->getMock();
- $this->_mockOrder = $this->getMockBuilder(\Magento\Sales\Order::class)
+ $this->mockOrder = $this->getMockBuilder(\Magento\Sales\Order::class)
->setMethods([
'getId',
'getRealOrderId',
@@ -91,16 +78,16 @@ class OrderCreateTest extends \PHPUnit\Framework\TestCase
])
->getMock();
- $this->_mockPayment = $this->getMockBuilder(\Magento\Sales\Model\Order\Payment::class)
+ $this->mockPayment = $this->getMockBuilder(\Magento\Sales\Model\Order\Payment::class)
->setMethods(['getMethodInstance'])
->disableOriginalConstructor()
->getMock();
- $this->_mockPaymentMethod = $this->getMockBuilder(\Magento\Payment\Model\MethodInterface::class)
+ $this->mockPaymentMethod = $this->getMockBuilder(\Magento\Payment\Model\MethodInterface::class)
->disableOriginalConstructor()
->getMockForAbstractClass();
- $this->_mockItem = $this->getMockBuilder(\Magento\Sales\Model\Order\Item::class)
+ $this->mockItem = $this->getMockBuilder(\Magento\Sales\Model\Order\Item::class)
->disableOriginalConstructor()
->setMethods([
'getPrice',
@@ -111,31 +98,32 @@ class OrderCreateTest extends \PHPUnit\Framework\TestCase
])
->getMock();
- $this->_mockStore = $this->getMockBuilder(\Magento\Store\Model\Store::class)
+ $this->mockStore = $this->getMockBuilder(\Magento\Store\Model\Store::class)
->disableOriginalConstructor()
->setMethods(['getCode'])
->getMock();
- $this->_mockBillingAddress = $this->getMockBuilder(\Magento\Customer\Model\Address\AddressModelInterface::class)
+ $this->mockBillingAddress = $this->getMockBuilder(\Magento\Customer\Model\Address\AddressModelInterface::class)
->disableOriginalConstructor()
->setMethods(['getTelephone', 'getData'])
->getMockForAbstractClass();
- $this->_mockResponse = $this->getMockBuilder(\RetailCrm\Response\ApiResponse::class)
+ $this->mockResponse = $this->getMockBuilder(\RetailCrm\Response\ApiResponse::class)
->disableOriginalConstructor()
->setMethods(['isSuccessful'])
->getMock();
- $this->_unit = new \Retailcrm\Retailcrm\Model\Observer\OrderCreate(
- $this->objectManager,
- $this->_config,
- $this->_registry
- );
+ $product = $this->getMockBuilder(\Magento\Catalog\Model\ProductRepository::class)
+ ->disableOriginalConstructor()
+ ->getMock();
- $reflection = new \ReflectionClass($this->_unit);
- $reflection_property = $reflection->getProperty('_api');
- $reflection_property->setAccessible(true);
- $reflection_property->setValue($this->_unit, $this->_mockApi);
+ $this->unit = new \Retailcrm\Retailcrm\Model\Observer\OrderCreate(
+ $this->config,
+ $this->registry,
+ $this->logger,
+ $product,
+ $this->mockApi
+ );
}
/**
@@ -154,43 +142,43 @@ class OrderCreateTest extends \PHPUnit\Framework\TestCase
$testData = $this->getAfterSaveOrderTestData();
// mock Response
- $this->_mockResponse->expects($this->any())
+ $this->mockResponse->expects($this->any())
->method('isSuccessful')
->willReturn($isSuccessful);
- $this->_mockResponse->errorMsg = $errorMsg;
+ $this->mockResponse->errorMsg = $errorMsg;
// mock API
- $this->_mockApi->expects($this->any())
+ $this->mockApi->expects($this->any())
->method('ordersGet')
- ->willReturn($this->_mockResponse);
+ ->willReturn($this->mockResponse);
- $this->_mockApi->expects($this->any())
+ $this->mockApi->expects($this->any())
->method('ordersCreate')
- ->willReturn($this->_mockResponse);
+ ->willReturn($this->mockResponse);
- $this->_mockApi->expects($this->any())
+ $this->mockApi->expects($this->any())
->method('customersGet')
- ->willReturn($this->_mockResponse);
+ ->willReturn($this->mockResponse);
- $this->_mockApi->expects($this->any())
+ $this->mockApi->expects($this->any())
->method('customersCreate')
- ->willReturn($this->_mockResponse);
+ ->willReturn($this->mockResponse);
- $this->_mockApi->expects($this->any())
+ $this->mockApi->expects($this->any())
->method('customersList')
- ->willReturn($this->_mockResponse);
+ ->willReturn($this->mockResponse);
- $this->_mockApi->expects($this->any())
+ $this->mockApi->expects($this->any())
->method('getVersion')
->willReturn($apiVersion);
// billing address mock set data
- $this->_mockBillingAddress->expects($this->any())
+ $this->mockBillingAddress->expects($this->any())
->method('getTelephone')
->willReturn($testData['order.billingAddress']['telephone']);
- $this->_mockBillingAddress->expects($this->any())
+ $this->mockBillingAddress->expects($this->any())
->method('getData')
->with($this->logicalOr(
$this->equalTo('city'),
@@ -202,121 +190,121 @@ class OrderCreateTest extends \PHPUnit\Framework\TestCase
->will($this->returnCallback([$this, 'getCallbackDataAddress']));
// store mock set data
- $this->_mockStore->expects($this->any())
+ $this->mockStore->expects($this->any())
->method('getCode')
->willReturn(1);
// order item mock set data
- $this->_mockItem->expects($this->any())
+ $this->mockItem->expects($this->any())
->method('getProductType')
->willReturn('simple');
- $this->_mockItem->expects($this->any())
+ $this->mockItem->expects($this->any())
->method('getPrice')
->willReturn(999.99);
- $this->_mockItem->expects($this->any())
+ $this->mockItem->expects($this->any())
->method('getProductId')
->willReturn(10);
- $this->_mockItem->expects($this->any())
+ $this->mockItem->expects($this->any())
->method('getName')
->willReturn('Product name');
- $this->_mockItem->expects($this->any())
+ $this->mockItem->expects($this->any())
->method('getQtyOrdered')
->willReturn(3);
// order mock set data
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getId')
->willReturn($testData['order.id']);
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getBillingAddress')
- ->willReturn($this->_mockBillingAddress);
+ ->willReturn($this->mockBillingAddress);
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getShippingMethod')
->willReturn($testData['order.shippingMethod']);
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getStore')
- ->willReturn($this->_mockStore);
+ ->willReturn($this->mockStore);
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getRealOrderId')
->willReturn($testData['order.realOrderId']);
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getCreatedAt')
->willReturn(date('Y-m-d H:i:s'));
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getCustomerLastname')
->willReturn($testData['order.customerLastname']);
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getCustomerFirstname')
->willReturn($testData['order.customerFirstname']);
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getCustomerMiddlename')
->willReturn($testData['order.customerMiddlename']);
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getCustomerEmail')
->willReturn($testData['order.customerEmail']);
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getAllItems')
->willReturn($testData['order.allItems']);
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getStatus')
->willReturn($testData['order.status']);
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getCustomerIsGuest')
->willReturn($customerIsGuest);
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getCustomerId')
->willReturn(1);
- $this->_mockOrder->expects($this->any())
+ $this->mockOrder->expects($this->any())
->method('getPayment')
- ->willReturn($this->_mockPayment);
+ ->willReturn($this->mockPayment);
// mock Payment Method
- $this->_mockPaymentMethod->expects($this->any())
+ $this->mockPaymentMethod->expects($this->any())
->method('getCode')
->willReturn($testData['order.paymentMethod']);
// mock Payment
- $this->_mockPayment->expects($this->any())
+ $this->mockPayment->expects($this->any())
->method('getMethodInstance')
- ->willReturn($this->_mockPaymentMethod);
+ ->willReturn($this->mockPaymentMethod);
// mock Event
- $this->_mockEvent->expects($this->once())
+ $this->mockEvent->expects($this->once())
->method('getOrder')
- ->willReturn($this->_mockOrder);
+ ->willReturn($this->mockOrder);
// mock Observer
- $this->_mockObserver->expects($this->once())
+ $this->mockObserver->expects($this->once())
->method('getEvent')
- ->willReturn($this->_mockEvent);
+ ->willReturn($this->mockEvent);
- $this->_unit->execute($this->_mockObserver);
+ $this->unit->execute($this->mockObserver);
}
/**
* Get test order data
- *
+ *
* @return array $testOrderData
*/
- protected function getAfterSaveOrderTestData()
+ private function getAfterSaveOrderTestData()
{
$testOrderData = [
'order.id' => 1,
@@ -332,7 +320,7 @@ class OrderCreateTest extends \PHPUnit\Framework\TestCase
'country_id' => 'RU'
]
],
- 'order.allItems' => [$this->_mockItem],
+ 'order.allItems' => [$this->mockItem],
'order.shippingMethod' => 'flatrate_flatrate',
'order.paymentMethod' => 'checkmo',
'order.customerLastname' => 'Test',
diff --git a/Test/Unit/Observer/OrderUpdateTest.php b/Test/Unit/Observer/OrderUpdateTest.php
index 1c3709a..fe5132e 100644
--- a/Test/Unit/Observer/OrderUpdateTest.php
+++ b/Test/Unit/Observer/OrderUpdateTest.php
@@ -4,17 +4,17 @@ namespace Retailcrm\Retailcrm\Test\Unit\Observer;
class OrderUpdateTest extends \PHPUnit\Framework\TestCase
{
- protected $unit;
- protected $objectManager;
- protected $config;
- protected $mockApi;
- protected $mockObserver;
- protected $mockEvent;
- protected $mockOrder;
- protected $mockPayment;
- protected $registry;
+ private $unit;
+ private $objectManager;
+ private $config;
+ private $mockApi;
+ private $mockObserver;
+ private $mockEvent;
+ private $mockOrder;
+ private $mockPayment;
+ private $registry;
- protected function setUp()
+ public function setUp()
{
$this->mockApi = $this->getMockBuilder(\Retailcrm\Retailcrm\Helper\Proxy::class)
->disableOriginalConstructor()
@@ -37,10 +37,6 @@ class OrderUpdateTest extends \PHPUnit\Framework\TestCase
$this->objectManager = $this->getMockBuilder(\Magento\Framework\ObjectManagerInterface::class)
->getMockForAbstractClass();
- $helper = $this->getMockBuilder(\Retailcrm\Retailcrm\Helper\Data::class)
- ->disableOriginalConstructor()
- ->getMock();
-
$this->mockOrder = $this->getMockBuilder(\Magento\Sales\Order::class)
->setMethods([
'getId',
@@ -55,12 +51,6 @@ class OrderUpdateTest extends \PHPUnit\Framework\TestCase
->disableOriginalConstructor()
->getMock();
- // mock Object Manager
- $this->objectManager->expects($this->any())
- ->method('get')
- ->with('\Retailcrm\Retailcrm\Helper\Data')
- ->willReturn($helper);
-
$this->config = $this->getMockBuilder(\Magento\Framework\App\Config\ScopeConfigInterface::class)
->getMockForAbstractClass();
@@ -69,15 +59,10 @@ class OrderUpdateTest extends \PHPUnit\Framework\TestCase
->getMock();
$this->unit = new \Retailcrm\Retailcrm\Model\Observer\OrderUpdate(
- $this->objectManager,
$this->config,
- $this->registry
+ $this->registry,
+ $this->mockApi
);
-
- $reflection = new \ReflectionClass($this->unit);
- $reflection_property = $reflection->getProperty('_api');
- $reflection_property->setAccessible(true);
- $reflection_property->setValue($this->unit, $this->mockApi);
}
/**
@@ -133,10 +118,9 @@ class OrderUpdateTest extends \PHPUnit\Framework\TestCase
/**
* Get test order data
- *
* @return array $testOrderData
*/
- protected function getAfterUpdateOrderTestData()
+ private function getAfterUpdateOrderTestData()
{
$testOrderData = [
'order.id' => 1,
diff --git a/composer.json b/composer.json
index ea887e9..bed5c26 100644
--- a/composer.json
+++ b/composer.json
@@ -13,7 +13,7 @@
],
"authors": [
{
- "name": "Retailcrm",
+ "name": "RetailDriver LLC",
"email": "gorokh@retailcrm.ru",
"homepage": "https://www.retailcrm.ru",
"role": "Developer"
diff --git a/etc/di.xml b/etc/di.xml
index ec4579e..43ec649 100644
--- a/etc/di.xml
+++ b/etc/di.xml
@@ -1,11 +1,11 @@
-
-
-
-
- - Retailcrm\Retailcrm\Console\Command\Command
-
-
-
+
+
+
+ Retailcrm\Retailcrm\Api\ConfigManagerInterface::URL_PATH
+ Retailcrm\Retailcrm\Api\ConfigManagerInterface::KEY_PATH
+ Retailcrm\Retailcrm\Api\ConfigManagerInterface::API_VERSION_PATH
+
+
diff --git a/registration.php b/registration.php
index b717086..d618979 100644
--- a/registration.php
+++ b/registration.php
@@ -1,6 +1,6 @@
- |