From 7bb2b4101f6e1be62a984ca04f83a16ed586bd9f Mon Sep 17 00:00:00 2001 From: Sergey Date: Wed, 26 Jul 2017 17:20:31 +0300 Subject: [PATCH 1/3] fix consignment (#22) --- MoySkladICMLParser.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MoySkladICMLParser.php b/MoySkladICMLParser.php index a927f59..f2bea37 100644 --- a/MoySkladICMLParser.php +++ b/MoySkladICMLParser.php @@ -232,7 +232,8 @@ class MoySkladICMLParser if ($response && $response['rows']) { foreach ($response['rows'] as $assortiment) { if (!empty($assortiment['modificationsCount']) || - $assortiment['meta']['type'] == 'service') { + $assortiment['meta']['type'] == 'service' || + $assortiment['meta']['type'] == 'consignment') { continue; } From e9e405781d8dbf92819842c268bdc0b434c60936 Mon Sep 17 00:00:00 2001 From: Sergey Date: Mon, 4 Sep 2017 11:41:12 +0300 Subject: [PATCH 2/3] fix catalog formation (#25) --- MoySkladICMLParser.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/MoySkladICMLParser.php b/MoySkladICMLParser.php index f2bea37..9f1f261 100644 --- a/MoySkladICMLParser.php +++ b/MoySkladICMLParser.php @@ -281,11 +281,13 @@ class MoySkladICMLParser } else { $url = ''; } - - if ($url != '') { - $image = $this->requestImage($url); + + if (!empty($this->options['imgur'])) { + if ($url != '') { + $image = $this->requestImage($url); + } } - + $products[$assortiment['id']] = array( 'id' => !empty($assortiment['product']['externalCode']) ? ($assortiment['product']['externalCode'] . '#' . $assortiment['externalCode']) : @@ -559,6 +561,7 @@ class MoySkladICMLParser curl_setopt($curlHandler, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curlHandler, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curlHandler, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curlHandler, CURLOPT_TIMEOUT, self::TIMEOUT); curl_setopt($curlHandler, CURLOPT_CONNECTTIMEOUT, 60); curl_setopt($curlHandler, CURLOPT_HTTPHEADER, array( From 0173c710337d33a08ad7a805a2c4b09797784315 Mon Sep 17 00:00:00 2001 From: Sergey Date: Thu, 14 Sep 2017 17:00:56 +0300 Subject: [PATCH 3/3] adding archive items download (#26) --- MoySkladICMLParser.php | 14 +++++++++++--- README.md | 5 ++++- doc/README.md | 3 ++- example.php | 3 ++- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/MoySkladICMLParser.php b/MoySkladICMLParser.php index 9f1f261..4055d20 100644 --- a/MoySkladICMLParser.php +++ b/MoySkladICMLParser.php @@ -101,8 +101,10 @@ class MoySkladICMLParser } $icml = $this->ICMLCreate($categories, $assortiment); - - $icml->asXML($this->getFilePath()); + + if (count($categories) > 0 && count($assortiment) > 0) { + $icml->asXML($this->getFilePath()); + } } @@ -221,13 +223,19 @@ class MoySkladICMLParser $offset = 0; $end = null; + $url = self::ASSORT_LIST_URL.'?expand='.self::ASSORTIMENT_EXPAND.'&limit='.self::LIMIT; + $ignoreNoCategoryOffers = isset($this->options['ignoreNoCategoryOffers']) && $this->options['ignoreNoCategoryOffers']; $ignoreCategories = $this->getIgnoreProductGroupsInfo(); + if (isset($this->options['archivedGoods']) && $this->options['archivedGoods'] === true) { + $url .= '&archived=All'; + } + while (true) { - $response = $this->requestJson(self::ASSORT_LIST_URL.'?expand='.self::ASSORTIMENT_EXPAND.'&limit='.self::LIMIT.'&offset='.$offset); + $response = $this->requestJson($url.'&offset='.$offset); if ($response && $response['rows']) { foreach ($response['rows'] as $assortiment) { diff --git a/README.md b/README.md index 10713e9..7a1a865 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,8 @@ c) `shopname` заменить на название Вашего магазин d) в строке `'file' => 'test.xml'`, заменить `test.xml` на любое другое название (например, `catalog.xml`, расширение файла оставить то же), либо оставить без изменения. +e) При необходимости включения в генерацию архивных товаров и модификаций в строке `'archivedGoods' => false` необходимо заменить значение `false` на `true`. + 4) После настройки добавить задачу в cron: `* */4 * * * php /путь_к_файлу_скрипта/example.php` (данная запись подразумевает автоматический запуск генерации файла каталога каждый день раз в 4 часа). 5) Запустить генерацию вручную (командой `php /путь_к_файлу_скрипта/example.php`), чтобы в папке со скриптом появился файл каталога в формате xml. @@ -57,6 +59,7 @@ d) в строке `'file' => 'test.xml'`, заменить `test.xml` на лю * `file` - Имя файла с итоговым icml без пути (по умолчанию: shopname.catalog.xml) * `directory` - Директория для итогового icml файла (по умолчанию: текущая директория) +* `'archivedGoods'` - опция для включения в генерацию архивных товаров и торговых предложений (принимает значения `true` или `false`) * `ignoreCategories` - массив с ключами: * `ids` - Массив c `id` групп товаров, которые должны быть проигнорированы * `externalCodes` - Массив c `внешними кодами` групп товаров, которые должны быть проигнорированы @@ -76,4 +79,4 @@ d) в строке `'file' => 'test.xml'`, заменить `test.xml` на лю * Application website - URL сайта * Email - email администаротора сайта * Description - Описание сайта -После создания приложения отобразится два поля `Client ID` и `Client secret`. Нам потребуется только `Client ID` который требуется вставить в $options. \ No newline at end of file +После создания приложения отобразится два поля `Client ID` и `Client secret`. Нам потребуется только `Client ID` который требуется вставить в $options. diff --git a/doc/README.md b/doc/README.md index b6799c7..66580e8 100644 --- a/doc/README.md +++ b/doc/README.md @@ -27,9 +27,10 @@ Options is array with next keys: * `file` - filename with result icml without path (default: shopname.catalog.xml) * `directory` - target directory for icml file (default: current directory) +* `'archivedGoods'` - option for inclusion in the generation of archived goods and trade offers (takes the values ​​of `true` or` false`) * `ignoreCategories` - array with keys: * `ids` - array with GoodFolder `id` for ignore * `externalCodes` - array with GoodFolder `externalcode` for ignore * `ignoreNoCategoryOffers` - If `true` goods that do not belong to any category are ignored -All options keys aren't required \ No newline at end of file +All options keys aren't required diff --git a/example.php b/example.php index 3286752..ceb38fc 100644 --- a/example.php +++ b/example.php @@ -10,8 +10,9 @@ $parser = new MoySkladICMLParser( array( 'directory' => __DIR__, 'file' => 'test.xml', + 'archivedGoods' => false, ) ); // generate -$parser->generateICML(); \ No newline at end of file +$parser->generateICML();