diff --git a/CHANGELOG.md b/CHANGELOG.md index 16a5ece..6fe31d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,125 +1,131 @@ +## v.4.1.4 +* Create payment only when the payment type is specified +* Checking the availability of promotional price for the product when uploading the order + +## v.4.1.3 +* Removed the ability to specify the API version + ## v.4.1.2 -* Добавлен учет стоимости подарочного сертификата при формировании заказа и передаче его в retailCRM +* Added accounting for a gift certificate price when creating an order and sending it to RetailCRM ## v.4.1.1 -* Обновлена механика обработки адресов покупателей +* Updated the mechanics of processing customer addresses ## v.4.1.0 -* Добавлена возможность подключения Online Consultant +* Added the ability to connect Online Consultant ## v.4.0.1 -* Исправлена передача скидки по купону -* Исправлены консольные команды +* Fixed the transfer of coupon discounts +* Fixed console commands ## v.4.0.0 -* Поддержка корпоративных клиентов -* Поддержка изменения покупателя в заказе +* Added support for corporate customers +* Added support for changing the customer in the order ## v.3.3.9 -* Исправлены цены в ICML +* Fixed prices in ICML ## v.3.3.8 -* Исправлен вывод предупреждений при генерации ICML +* Fixed warnings output when generating ICML ## v.3.3.7 -* Изменена конфигурация travis-ci для сборки +* Changed the configuration of travis-ci for build ## v.3.3.6 -* Небольшие фиксы +* Minor bug fixes ## v.3.3.5 -* Добавлена генерация габаритов в каталоге +* Added generation of dimensions in the catalog ## v.3.3.4 -* Исправлен баг с некорректной выгрузкой акционных цен для товаров с характеристиками +* Fixed a bug with incorrect uploading of promotional prices for products with characteristics ## v.3.3.3 -* Добавлено удаление типа цены товара для неустановленных акционных цен +* Added removal of product's price type for unidentified promotional prices ## v.3.3.2 -* Добавлен возврат остатка товара при отмене заказа +* Added the return of leftover product stocks when the order is canceled ## v.3.3.1 -* Исправлен баг с передачей данных заказа в retailCRM при получении истории изменений от retailCRM +* Fixed a bug with sending order data to RetailCRM when receiving the history of changes from RetailCRM ## v.3.3.0 -* Добавена настройка записи истории изменения заказов в Opencart -* Устранен баг с вызовом события редактирования заказа при выгрузке истории изменений из retailCRM -* Добавлена передача типа цены при создании и редактировании заказа +* Added setting for recording the history of order changes in Opencart +* Fixed a bug with calling the order editing event when uploading the history of changes from RetailCRM +* Added transfer of the price type when creating or editing an order ## v.3.2.4 -* Добавлена возможность передачи акционных цен для нескольких групп пользователей -* Добавлена передача нулевой цены для неустановленных акционных цен -* Убрана базовая цена retailcrm из настроек соответствия типов цен +* Added the ability to transfer promotional prices for multiple user groups +* Added the ability to transfer zero price for unspecified promotional prices +* Removed the retailcrm base price from the price types conformity settings ## v.3.2.2 -* Убрана генерация externalId покупателя при заказе без регистрации на сайте. +* Removed generation of the customer's externalId when order was created without registeration on the website. ## v.3.2.1 -* Изменена логика передачи данных по заказам и клиентам. Контактные данные по доставке передаются в карточку заказа, контактные данные плательщика в карточку клиента. +* Changed the logic for transferring data for orders and customers. Contact information for delivery is transferred to the order's card, and the payer's contact information is transferred to the customer's card. ## v.3.2.0 -* Добавлена выгрузка картинок для категорий в ICML -* Добавлена настройка для выбора валюты, в которой будет выгружаться цена в ICML +* Added uploading images for categories in ICML +* Added setting for selecting the currency in which the price will be uploaded in ICML ## v.3.1.6 -* Исправлено получение событий из БД для OC 3.0 +* Fixed getting events from the database for OC 3.0 ## v.3.1.5 -* Исправление ошибок +* Bug fixes ## v.3.1.4 -* Исправлена некорректная склейка типов доставки +* Fixed incorrect combining of delivery types ## v.3.1.3 -* Добавлена активация модуля в маркетплейсе retailCRM +* Added module activation in the RetailCRM marketplace ## v.3.1.2 -* Добавлен перевод на испанский язык -* Переделан перевод на английский язык +* Added Spanish translation +* Reworked English translation ## v.3.1.1 -* Добавлено создание клиента при ручной выгрузке заказа из админки +* Added customer creation when manually uploading an order from admin panel ## v.3.1.0 -* Переработан дизайн шаблона twig -* Добавлена настройка передачи номера заказа в retailCRM -* Улучшена механика передачи типа доставки в retailCRM -* Исправлена ошибка при выгрузке единичного заказа в админ панели +* Redesigned the twig template +* Added a setting for transmitting the order number to RetailCRM +* Improved mechanics of delivery type transfer to RetailCRM +* Fixed an error when uploading a single order in admin panel ## v.3.0.5 -* Исправлены ошибки в шаблоне twig -* Добавлена обработка истории изменений при сохранении настроек для установки текущего sinceId, если история в retailCRM пустая +* Fixed errors in the twig template +* Added processing of the history of changes when saving settings for setting the current sinceId, if the history in RetailCRM is empty ## v.3.0.4 -* Добавлена проверка группы пользователя в заказе при редактировании -* Добавлена передача скидки по бонусным баллам +* Added checking the user group in the order when editing +* Added transfer of discount for bonus points ## v.3.0.3 -* Исправлена ошибка с изменением пароля пользователя +* Fixed a bug with changing the user's password ## v.3.0.2 -* Улучшена механика выгрузки изменений из RetailCRM на сайт -* Улучшена механика выборки типов доставки на сайте -* Добавлена возможность периодической выгрузки акционных цен для товаров -* Улучшена совместимость с Opencart 3.0 +* Improved the mechanics of uploading changes from RetailCRM to the site +* Improved the mechanics of selecting delivery types on the site +* Added the ability to periodically upload promotional prices for products +* Improved compatibility with Opencart 3.0 ## v.2.4.3 -* Устранены некоторые баги, добавлен вывод ошибок при выгрузке единичных заказов +* Minor bug fixes, added error output when uploading individual orders ## v.2.4.2 -* Улучшена синхронизация кастомных полей -* Добавлены настройки дефолтных способов доставки и оплаты -* Улучшена настройка Daemon Collector -* Доработан шаблон twig для совместимости с Opencart 3.0 +* Improved synchronization of custom fields +* Added settings for default delivery and payment types +* Improved Daemon Collector configuration +* Improved the twig template for compatibility with Opencart 3.0 ## v.2.4.1 -* Исправлена работа истории (доработана обработка адресов, добавлена обработка заказов с пустыми полями, доработана история по клиентам) -* История теперь синхронизируется по sinceId -* Проверка доступных версий API через метод /api/versions -* Добавлена возможность сопоставления кастомных полей(для API v5) +* Fixed history of changes (improved address processing, added order processing with empty fields, improved customer history) +* History is now synced by sinceId +* Checking available API versions using the /api/versions method +* Added the ability to map custom fields (for API V5) ## v.2.4.0 -* Добавлена возможность работы на 3 версиях API (v3, v4, v5) -* Добавлена совместимость с Opencart 3.0 - +* Added the ability to work on 3 API versions (v3, v4, v5) +* Added compatibility with Opencart 3.0 diff --git a/LICENSE b/LICENSE index 270b6f3..66c1357 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015 RetailDriver LLC +Copyright (c) 2015-2020 RetailDriver LLC Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index fcc8fb8..4d25515 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ [![Build Status](https://github.com/retailcrm/opencart-module/workflows/ci/badge.svg)](https://github.com/retailcrm/opencart-module/actions) -[![Coverage](https://img.shields.io/codecov/c/gh/retailcrm/opencart-module/master.svg?logo=github)](https://codecov.io/gh/retailcrm/opencart-module) -[![GitHub release](https://img.shields.io/github/release/retailcrm/opencart-module.svg?logo=codecov)](https://github.com/retailcrm/opencart-module/releases) -[![PHP version](https://img.shields.io/badge/PHP->=5.4-blue.svg?logo=php)](https://php.net/) +[![Coverage](https://img.shields.io/codecov/c/gh/retailcrm/opencart-module/master.svg?logo=codecov&logoColor=white)](https://codecov.io/gh/retailcrm/opencart-module) +[![GitHub release](https://img.shields.io/github/release/retailcrm/opencart-module.svg?logo=github&logoColor=white)](https://github.com/retailcrm/opencart-module/releases) +[![PHP version](https://img.shields.io/badge/PHP->=5.4-blue.svg?logo=php&logoColor=white)](https://php.net/) Opencart module =============== -Module allows integrate CMS Opencart >= 2.3 with [retailCRM](http://retailcrm.pro) +Module allows integrate CMS Opencart >= 2.3 with [RetailCRM](https://retailcrm.pro) ### Previous versions: @@ -16,8 +16,8 @@ Module allows integrate CMS Opencart >= 2.3 with [retailCRM](http://retailcrm.pr #### Features: -* Export orders to retailCRM & fetch changes back -* Export product catalog into [ICML](http://www.retailcrm.pro/docs/Developers/ICML) format +* Export orders to RetailCRM & fetch changes back +* Export product catalog into [ICML](https://help.retailcrm.pro/Developers/ICML) format #### Install @@ -25,12 +25,12 @@ Copy files to the site root ``` unzip master.zip -cp -r opencart-module/* /path/to/site/root +cp -r opencart-module/src/* /path/to/site/root ``` #### Setup -* Go to Admin -> Extensions -> Modules -> retailCRM +* Go to Admin -> Extensions -> Modules -> RetailCRM * Fill you api url & api key * Specify directories matching diff --git a/README.ru.md b/README.ru.md deleted file mode 100644 index 491d92f..0000000 --- a/README.ru.md +++ /dev/null @@ -1,79 +0,0 @@ -Opencart module -=============== - -Модуль интеграции CMS Opencart >= 2.3 c [retailCRM](https://retailcrm.ru) - -Информация о [кастомизации](https://github.com/retailcrm/opencart-module/wiki/%D0%9A%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%B0) - -### Предыдущие версии: - -[v1.x](https://github.com/retailcrm/opencart-module/tree/v1.x) - -[v2.x (2.0, 2.1, 2.2)](https://github.com/retailcrm/opencart-module/tree/v2.2) - -#### Модуль позволяет: - -* Экспортировать в retailCRM данные о заказах и клиентах и получать обратно изменения по этим данным -* Синхронизировать справочники (способы доставки и оплаты, статусы заказов и т.п.) -* Выгружать каталог товаров в формате [ICML](http://www.retailcrm.ru/docs/Developers/ICML) - -#### Установка - -Установите модуль скопировав необходимые файлы в корень сайта - -``` -unzip master.zip -cp -r opencart-module/* /path/to/site/root -``` - -#### Обновление до 4.* с более ранних версий модуля - -Перед копированием файлов модуля необходимо удалить директорию `path/to/opencart/system/library/retailcrm` - -#### Активируйте модуль - -В списке модулей нажмите "Установить" - -#### Настройте параметры интеграции - -На странице настроек модуля укажите URL retailCRM и ключ авторизации, после сохранения этих данных укажите соответствия справочников типов доставок, оплат и статусов заказа. - -#### Получение изменений из retailCRM - -Для получения изменений и новых данных добавьте в cron следующую запись: - -``` -*/5 * * * * /usr/bin/php /path/to/opencart/system/library/retailcrm/cron/history.php >> /path/to/opencart/system/storage/logs/cronjob_history.log 2>&1 -``` - -#### Настройка экспорта каталога - -Для периодической выгрузки каталога добавьте в cron следующую запись: - -``` -* */4 * * * /usr/bin/php /path/to/opencart/system/library/retailcrm/cron/icml.php >> /path/to/opencart/system/storage/logs/cronjob_icml.log 2>&1 -``` - -В настройках retailCRM установите путь к файлу выгрузки - -``` -http://youropencartsite.com/retailcrm.xml -``` -#### Настройка выгрузки акционных цен - -Для периодической выгрузки акционных цен в CRM в настройках модуля укажите тип цены, в который необходимо выгружать акционные цены, в крон добавьте следующую запись - -``` -0 0 * * * /usr/bin/php /path/to/opencart/system/library/retailcrm/cron/prices.php >> /path/to/opencart/system/storage/logs/cronjob_prices.log 2>&1 -``` - -#### Выгрузка существующих заказов и покупателей - -Запустите команду единожды: -/usr/bin/php /path/to/opencart/system/library/retailcrm/cron/export.php - -#### Кастомизация моделей - -Для создания кастомных классов скопируйте файл модели в директорию custom, в новом файле измените название класса с "ModelExtensionRetailcrmFilename" на "ModelExtensionRetailcrmCustomFilename", где "Filename" - название файла с заглавной буквы. После этого модуль будет использовать методы кастомного класса. - -[Wiki](https://github.com/retailcrm/opencart-module/wiki/%D0%9A%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%B0) \ No newline at end of file diff --git a/VERSION b/VERSION index de197cc..a95f288 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.1.3 +4.1.4 diff --git a/composer.json b/composer.json index a85205b..0c446b8 100644 --- a/composer.json +++ b/composer.json @@ -1,12 +1,12 @@ { "name": "retailcrm/opencart-module", - "description": "Integration module for Opencart & retailCRM", + "description": "Integration module for Opencart & RetailCRM", "license": "GPL-3.0", "type": "project", "authors": [ { "name": "RetailDriverLLC", - "email": "integration@retailcrm.ru" + "email": "support@retailcrm.pro" } ], "config": { @@ -32,6 +32,8 @@ }, "require-dev": { "consolidation/robo": "~1.0", - "phpcompatibility/php-compatibility": "^9.3" + "phpcompatibility/php-compatibility": "^9.3", + "beyondit/opencart-test-suite": "~3.0", + "opencart/opencart": "3.0.2.0" } } diff --git a/src/upload/admin/controller/extension/module/retailcrm.php b/src/upload/admin/controller/extension/module/retailcrm.php index 5511cb7..1d52ad2 100644 --- a/src/upload/admin/controller/extension/module/retailcrm.php +++ b/src/upload/admin/controller/extension/module/retailcrm.php @@ -1,14 +1,5 @@ - * @license https://opensource.org/licenses/MIT MIT License - * @link http://www.retailcrm.ru/docs/Developers/ApiVersion5 - */ class ControllerExtensionModuleRetailcrm extends Controller { private $_error = array(); @@ -900,7 +891,7 @@ class ControllerExtensionModuleRetailcrm extends Controller } /** - * Activate/deactivate module in marketplace retailCRM + * Activate/deactivate module in marketplace RetailCRM * * @param \RetailcrmProxy $apiClient * @param string $clientId diff --git a/src/upload/admin/language/en-gb/extension/module/retailcrm.php b/src/upload/admin/language/en-gb/extension/module/retailcrm.php index 81d7ded..e72e4c8 100644 --- a/src/upload/admin/language/en-gb/extension/module/retailcrm.php +++ b/src/upload/admin/language/en-gb/extension/module/retailcrm.php @@ -1,8 +1,8 @@
- retailCRM API error log + RetailCRM API error log diff --git a/src/upload/catalog/controller/extension/analytics/daemon_collector.php b/src/upload/catalog/controller/extension/analytics/daemon_collector.php index 170cfd9..71bd43a 100644 --- a/src/upload/catalog/controller/extension/analytics/daemon_collector.php +++ b/src/upload/catalog/controller/extension/analytics/daemon_collector.php @@ -1,4 +1,5 @@ load->model('setting/setting'); diff --git a/src/upload/catalog/controller/extension/analytics/online_consultant.php b/src/upload/catalog/controller/extension/analytics/online_consultant.php index af75d7c..83a29b8 100644 --- a/src/upload/catalog/controller/extension/analytics/online_consultant.php +++ b/src/upload/catalog/controller/extension/analytics/online_consultant.php @@ -1,14 +1,5 @@ - * @license https://opensource.org/licenses/MIT MIT License - * @link http://www.retailcrm.ru/docs/Developers/ApiVersion5 - */ class ControllerExtensionAnalyticsOnlineConsultant extends Controller { /** * @return string diff --git a/src/upload/catalog/controller/extension/module/retailcrm.php b/src/upload/catalog/controller/extension/module/retailcrm.php index d25178b..d046fd0 100644 --- a/src/upload/catalog/controller/extension/module/retailcrm.php +++ b/src/upload/catalog/controller/extension/module/retailcrm.php @@ -1,14 +1,5 @@ - * @license https://opensource.org/licenses/MIT MIT License - * @link http://www.retailcrm.ru/docs/Developers/ApiVersion5 - */ class ControllerExtensionModuleRetailcrm extends Controller { private $retailcrmApiClient; diff --git a/src/upload/system/library/retailcrm/lib/api/CurlException.php b/src/upload/system/library/retailcrm/lib/api/CurlException.php index 8eab88c..2ab00f5 100644 --- a/src/upload/system/library/retailcrm/lib/api/CurlException.php +++ b/src/upload/system/library/retailcrm/lib/api/CurlException.php @@ -1,15 +1,5 @@ - * @license https://opensource.org/licenses/MIT MIT License - * @link http://www.retailcrm.ru/docs/Developers/ApiVersion5 - */ + class CurlException extends RuntimeException { } diff --git a/src/upload/system/library/retailcrm/lib/api/InvalidJsonException.php b/src/upload/system/library/retailcrm/lib/api/InvalidJsonException.php index c35e419..66a1105 100644 --- a/src/upload/system/library/retailcrm/lib/api/InvalidJsonException.php +++ b/src/upload/system/library/retailcrm/lib/api/InvalidJsonException.php @@ -1,15 +1,5 @@ - * @license https://opensource.org/licenses/MIT MIT License - * @link http://www.retailcrm.ru/docs/Developers/ApiVersion5 - */ + class InvalidJsonException extends DomainException { } diff --git a/src/upload/system/library/retailcrm/lib/api/RetailcrmApiClient5.php b/src/upload/system/library/retailcrm/lib/api/RetailcrmApiClient5.php index 5c2d14d..3d83f37 100644 --- a/src/upload/system/library/retailcrm/lib/api/RetailcrmApiClient5.php +++ b/src/upload/system/library/retailcrm/lib/api/RetailcrmApiClient5.php @@ -1,15 +1,5 @@ - * @license https://opensource.org/licenses/MIT MIT License - * @link http://www.retailcrm.ru/docs/Developers/ApiVersion5 - */ + class RetailcrmApiClient5 { const VERSION = 'v5'; diff --git a/src/upload/system/library/retailcrm/lib/api/RetailcrmApiResponse.php b/src/upload/system/library/retailcrm/lib/api/RetailcrmApiResponse.php index 24f3080..6cd56ee 100644 --- a/src/upload/system/library/retailcrm/lib/api/RetailcrmApiResponse.php +++ b/src/upload/system/library/retailcrm/lib/api/RetailcrmApiResponse.php @@ -1,15 +1,5 @@ - * @license https://opensource.org/licenses/MIT MIT License - * @link http://www.retailcrm.ru/docs/Developers/ApiVersion5 - */ + class RetailcrmApiResponse implements ArrayAccess { // HTTP response status code diff --git a/src/upload/system/library/retailcrm/lib/api/RetailcrmHttpClient.php b/src/upload/system/library/retailcrm/lib/api/RetailcrmHttpClient.php index 4294d97..268596a 100644 --- a/src/upload/system/library/retailcrm/lib/api/RetailcrmHttpClient.php +++ b/src/upload/system/library/retailcrm/lib/api/RetailcrmHttpClient.php @@ -1,15 +1,5 @@ - * @license https://opensource.org/licenses/MIT MIT License - * @link http://www.retailcrm.ru/docs/Developers/ApiVersion5 - */ + class RetailcrmHttpClient { const METHOD_GET = 'GET'; diff --git a/src/upload/system/library/retailcrm/lib/api/RetailcrmProxy.php b/src/upload/system/library/retailcrm/lib/api/RetailcrmProxy.php index 6694b7e..f619f9f 100644 --- a/src/upload/system/library/retailcrm/lib/api/RetailcrmProxy.php +++ b/src/upload/system/library/retailcrm/lib/api/RetailcrmProxy.php @@ -2,7 +2,6 @@ /** * Class RequestProxy - * @package RetailCrm\Component * * @method ordersCreate($order, $site = null) * @method ordersEdit($order, $by = 'externalId', $site = null) diff --git a/src/upload/system/library/retailcrm/lib/history/Order.php b/src/upload/system/library/retailcrm/lib/history/Order.php index 5cc44be..733e90a 100644 --- a/src/upload/system/library/retailcrm/lib/history/Order.php +++ b/src/upload/system/library/retailcrm/lib/history/Order.php @@ -43,7 +43,7 @@ class Order { /** * @param array $data opencart order - * @param array $order retailCRM order + * @param array $order RetailCRM order */ public function handleBaseOrderData(&$data, $order) { $mail = !empty($order['email']) ? $order['email'] : $order['customer']['email']; @@ -88,7 +88,7 @@ class Order { /** * @param array $data opencart order - * @param array $order retailCRM order + * @param array $order RetailCRM order * @param array $corporateAddress */ public function handlePayment(&$data, $order, $corporateAddress = array()) { @@ -156,7 +156,7 @@ class Order { /** * @param array $data opencart order - * @param array $order retailCRM order + * @param array $order RetailCRM order */ public function handleShipping(&$data, $order) { $default_shipping_country = !empty($data['shipping_country']) ? $data['shipping_country'] : ''; @@ -220,7 +220,7 @@ class Order { /** * @param array $data opencart order - * @param array $order retailCRM order + * @param array $order RetailCRM order */ public function handleProducts(&$data, $order) { $data['order_product'] = array(); @@ -277,7 +277,7 @@ class Order { /** * @param array $data opencart order - * @param array $order retailCRM order + * @param array $order RetailCRM order */ public function handleTotals(&$data, $order) { $delivery_cost = !empty($order['delivery']['cost']) ? $order['delivery']['cost'] : 0; @@ -328,7 +328,7 @@ class Order { /** * @param array $data opencart order - * @param array $order retailCRM order + * @param array $order RetailCRM order */ public function handleCustomFields(&$data, $order) { $settings = $this->settings_manager->getSetting('custom_field'); diff --git a/src/upload/system/library/retailcrm/lib/service/CustomerManager.php b/src/upload/system/library/retailcrm/lib/service/CustomerManager.php index df01c97..2fdda4a 100644 --- a/src/upload/system/library/retailcrm/lib/service/CustomerManager.php +++ b/src/upload/system/library/retailcrm/lib/service/CustomerManager.php @@ -2,9 +2,6 @@ namespace retailcrm\service; -/** - * Class CustomerManager - */ class CustomerManager { protected $api; protected $customer_converter; diff --git a/src/upload/system/library/retailcrm/lib/service/OrderManager.php b/src/upload/system/library/retailcrm/lib/service/OrderManager.php index 2f2a7ec..74851af 100644 --- a/src/upload/system/library/retailcrm/lib/service/OrderManager.php +++ b/src/upload/system/library/retailcrm/lib/service/OrderManager.php @@ -2,9 +2,6 @@ namespace retailcrm\service; -/** - * Class OrderManager - */ class OrderManager { protected $api; protected $customer_manager; diff --git a/src/upload/system/library/retailcrm/retailcrm.php b/src/upload/system/library/retailcrm/retailcrm.php index c6e4ab8..0037cc9 100644 --- a/src/upload/system/library/retailcrm/retailcrm.php +++ b/src/upload/system/library/retailcrm/retailcrm.php @@ -121,12 +121,12 @@ class Retailcrm { } public function getOffers($product) { - // Формируем офферы отнсительно доступных опций + // Build offers by available options $options = $this->model_catalog_product->getProductOptions($product['product_id']); $offerOptions = array('select', 'radio'); $requiredOptions = array(); $notRequiredOptions = array(); - // Оставляем опции связанные с вариациями товаров, сортируем по параметру обязательный или нет + // Handle & sort mandatory options foreach($options as $option) { if(in_array($option['type'], $offerOptions)) { if($option['required']) { @@ -138,9 +138,8 @@ class Retailcrm { } $offers = array(); - // Сначала совмещаем все обязательные опции + foreach($requiredOptions as $requiredOption) { - // Если первая итерация if(empty($offers)) { foreach($requiredOption['product_option_value'] as $optionValue) { $offers[$requiredOption['product_option_id'].':'.$requiredOption['option_id'].'-'.$optionValue['option_value_id']] = array( @@ -162,11 +161,9 @@ class Retailcrm { } } - // Совмещаем или добавляем необязательные опции, учитывая тот факт что обязательных опций может и не быть. foreach($notRequiredOptions as $notRequiredOption) { - // Если обязательных опцией не оказалось и первая итерация if(empty($offers)) { - $offers['0:0-0'] = 0; // В случае работы с необязательными опциями мы должны учитывать товарное предложение без опций, поэтому создадим "пустую" опцию + $offers['0:0-0'] = 0; // Add empty option for mandatory data foreach($notRequiredOption['product_option_value'] as $optionValue) { $offers[$notRequiredOption['product_option_id'].':'.$notRequiredOption['option_id'].'-'.$optionValue['option_value_id']] = array( 'price' => (float)$this->getOptionPrice($optionValue),