Product name update within rebranding, minor code cleanup (#210)

This commit is contained in:
Alex Lushpai 2020-12-15 13:17:34 +03:00 committed by GitHub
parent bb23c4cc40
commit ff87f7939e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 114 additions and 271 deletions

View File

@ -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 ## 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 ## v.4.1.1
* Обновлена механика обработки адресов покупателей * Updated the mechanics of processing customer addresses
## v.4.1.0 ## v.4.1.0
* Добавлена возможность подключения Online Consultant * Added the ability to connect Online Consultant
## v.4.0.1 ## v.4.0.1
* Исправлена передача скидки по купону * Fixed the transfer of coupon discounts
* Исправлены консольные команды * Fixed console commands
## v.4.0.0 ## v.4.0.0
* Поддержка корпоративных клиентов * Added support for corporate customers
* Поддержка изменения покупателя в заказе * Added support for changing the customer in the order
## v.3.3.9 ## v.3.3.9
* Исправлены цены в ICML * Fixed prices in ICML
## v.3.3.8 ## v.3.3.8
* Исправлен вывод предупреждений при генерации ICML * Fixed warnings output when generating ICML
## v.3.3.7 ## v.3.3.7
* Изменена конфигурация travis-ci для сборки * Changed the configuration of travis-ci for build
## v.3.3.6 ## v.3.3.6
* Небольшие фиксы * Minor bug fixes
## v.3.3.5 ## v.3.3.5
* Добавлена генерация габаритов в каталоге * Added generation of dimensions in the catalog
## v.3.3.4 ## v.3.3.4
* Исправлен баг с некорректной выгрузкой акционных цен для товаров с характеристиками * Fixed a bug with incorrect uploading of promotional prices for products with characteristics
## v.3.3.3 ## v.3.3.3
* Добавлено удаление типа цены товара для неустановленных акционных цен * Added removal of product's price type for unidentified promotional prices
## v.3.3.2 ## v.3.3.2
* Добавлен возврат остатка товара при отмене заказа * Added the return of leftover product stocks when the order is canceled
## v.3.3.1 ## 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 ## v.3.3.0
* Добавена настройка записи истории изменения заказов в Opencart * Added setting for recording the history of order changes in Opencart
* Устранен баг с вызовом события редактирования заказа при выгрузке истории изменений из retailCRM * 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 ## v.3.2.4
* Добавлена возможность передачи акционных цен для нескольких групп пользователей * Added the ability to transfer promotional prices for multiple user groups
* Добавлена передача нулевой цены для неустановленных акционных цен * Added the ability to transfer zero price for unspecified promotional prices
* Убрана базовая цена retailcrm из настроек соответствия типов цен * Removed the retailcrm base price from the price types conformity settings
## v.3.2.2 ## 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 ## 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 ## v.3.2.0
* Добавлена выгрузка картинок для категорий в ICML * Added uploading images for categories in ICML
* Добавлена настройка для выбора валюты, в которой будет выгружаться цена в ICML * Added setting for selecting the currency in which the price will be uploaded in ICML
## v.3.1.6 ## v.3.1.6
* Исправлено получение событий из БД для OC 3.0 * Fixed getting events from the database for OC 3.0
## v.3.1.5 ## v.3.1.5
* Исправление ошибок * Bug fixes
## v.3.1.4 ## v.3.1.4
* Исправлена некорректная склейка типов доставки * Fixed incorrect combining of delivery types
## v.3.1.3 ## v.3.1.3
* Добавлена активация модуля в маркетплейсе retailCRM * Added module activation in the RetailCRM marketplace
## v.3.1.2 ## v.3.1.2
* Добавлен перевод на испанский язык * Added Spanish translation
* Переделан перевод на английский язык * Reworked English translation
## v.3.1.1 ## v.3.1.1
* Добавлено создание клиента при ручной выгрузке заказа из админки * Added customer creation when manually uploading an order from admin panel
## v.3.1.0 ## v.3.1.0
* Переработан дизайн шаблона twig * Redesigned the twig template
* Добавлена настройка передачи номера заказа в retailCRM * Added a setting for transmitting the order number to RetailCRM
* Улучшена механика передачи типа доставки в retailCRM * Improved mechanics of delivery type transfer to RetailCRM
* Исправлена ошибка при выгрузке единичного заказа в админ панели * Fixed an error when uploading a single order in admin panel
## v.3.0.5 ## v.3.0.5
* Исправлены ошибки в шаблоне twig * Fixed errors in the twig template
* Добавлена обработка истории изменений при сохранении настроек для установки текущего sinceId, если история в retailCRM пустая * 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 ## 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 ## v.3.0.3
* Исправлена ошибка с изменением пароля пользователя * Fixed a bug with changing the user's password
## v.3.0.2 ## v.3.0.2
* Улучшена механика выгрузки изменений из RetailCRM на сайт * 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
* Улучшена совместимость с Opencart 3.0 * Improved compatibility with Opencart 3.0
## v.2.4.3 ## v.2.4.3
* Устранены некоторые баги, добавлен вывод ошибок при выгрузке единичных заказов * Minor bug fixes, added error output when uploading individual orders
## v.2.4.2 ## v.2.4.2
* Улучшена синхронизация кастомных полей * Improved synchronization of custom fields
* Добавлены настройки дефолтных способов доставки и оплаты * Added settings for default delivery and payment types
* Улучшена настройка Daemon Collector * Improved Daemon Collector configuration
* Доработан шаблон twig для совместимости с Opencart 3.0 * Improved the twig template for compatibility with Opencart 3.0
## v.2.4.1 ## v.2.4.1
* Исправлена работа истории (доработана обработка адресов, добавлена обработка заказов с пустыми полями, доработана история по клиентам) * Fixed history of changes (improved address processing, added order processing with empty fields, improved customer history)
* История теперь синхронизируется по sinceId * History is now synced by sinceId
* Проверка доступных версий API через метод /api/versions * Checking available API versions using the /api/versions method
* Добавлена возможность сопоставления кастомных полей(для API v5) * Added the ability to map custom fields (for API V5)
## v.2.4.0 ## v.2.4.0
* Добавлена возможность работы на 3 версиях API (v3, v4, v5) * Added the ability to work on 3 API versions (v3, v4, v5)
* Добавлена совместимость с Opencart 3.0 * Added compatibility with Opencart 3.0

View File

@ -1,6 +1,6 @@
The MIT License (MIT) 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 Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -1,12 +1,12 @@
[![Build Status](https://github.com/retailcrm/opencart-module/workflows/ci/badge.svg)](https://github.com/retailcrm/opencart-module/actions) [![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) [![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=codecov)](https://github.com/retailcrm/opencart-module/releases) [![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)](https://php.net/) [![PHP version](https://img.shields.io/badge/PHP->=5.4-blue.svg?logo=php&logoColor=white)](https://php.net/)
Opencart module 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: ### Previous versions:
@ -16,8 +16,8 @@ Module allows integrate CMS Opencart >= 2.3 with [retailCRM](http://retailcrm.pr
#### Features: #### Features:
* Export orders to retailCRM & fetch changes back * Export orders to RetailCRM & fetch changes back
* Export product catalog into [ICML](http://www.retailcrm.pro/docs/Developers/ICML) format * Export product catalog into [ICML](https://help.retailcrm.pro/Developers/ICML) format
#### Install #### Install
@ -25,12 +25,12 @@ Copy files to the site root
``` ```
unzip master.zip unzip master.zip
cp -r opencart-module/* /path/to/site/root cp -r opencart-module/src/* /path/to/site/root
``` ```
#### Setup #### Setup
* Go to Admin -> Extensions -> Modules -> retailCRM * Go to Admin -> Extensions -> Modules -> RetailCRM
* Fill you api url & api key * Fill you api url & api key
* Specify directories matching * Specify directories matching

View File

@ -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)

View File

@ -1 +1 @@
4.1.3 4.1.4

View File

@ -1,12 +1,12 @@
{ {
"name": "retailcrm/opencart-module", "name": "retailcrm/opencart-module",
"description": "Integration module for Opencart & retailCRM", "description": "Integration module for Opencart & RetailCRM",
"license": "GPL-3.0", "license": "GPL-3.0",
"type": "project", "type": "project",
"authors": [ "authors": [
{ {
"name": "RetailDriverLLC", "name": "RetailDriverLLC",
"email": "integration@retailcrm.ru" "email": "support@retailcrm.pro"
} }
], ],
"config": { "config": {
@ -32,6 +32,8 @@
}, },
"require-dev": { "require-dev": {
"consolidation/robo": "~1.0", "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"
} }
} }

View File

@ -1,14 +1,5 @@
<?php <?php
/**
* Class ControllerModule
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion5
*/
class ControllerExtensionModuleRetailcrm extends Controller class ControllerExtensionModuleRetailcrm extends Controller
{ {
private $_error = array(); 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 \RetailcrmProxy $apiClient
* @param string $clientId * @param string $clientId

View File

@ -1,8 +1,8 @@
<?php <?php
// Heading Goes here: // Heading Goes here:
$_['heading_title'] = 'retailCRM'; $_['heading_title'] = 'RetailCRM';
$_['retailcrm_title'] = 'retailCRM'; $_['retailcrm_title'] = 'RetailCRM';
// Text // Text
$_['text_module'] = 'Modules'; $_['text_module'] = 'Modules';
@ -20,8 +20,8 @@ $_['collector_tab_text'] = 'Daemon Collector';
$_['logs_tab_text'] = 'Logs'; $_['logs_tab_text'] = 'Logs';
$_['collector_custom_text'] = 'Configuration of form fields'; $_['collector_custom_text'] = 'Configuration of form fields';
$_['custom_fields_tab_text'] = 'Custom fields'; $_['custom_fields_tab_text'] = 'Custom fields';
$_['retailcrm_url'] = 'URL of retailCRM'; $_['retailcrm_url'] = 'URL of RetailCRM';
$_['retailcrm_apikey'] = 'API key of retailCRM'; $_['retailcrm_apikey'] = 'API key of RetailCRM';
$_['corporate_enabled_label'] = 'Corporate customers support'; $_['corporate_enabled_label'] = 'Corporate customers support';
$_['collector_site_key'] = 'Site key'; $_['collector_site_key'] = 'Site key';
$_['special_price_settings'] = 'Setting of uploading promotion price'; $_['special_price_settings'] = 'Setting of uploading promotion price';
@ -52,9 +52,9 @@ $_['text_orders_custom_fields'] = 'Custom fields of orders';
$_['text_customers_custom_fields'] = 'Custom fields of customers'; $_['text_customers_custom_fields'] = 'Custom fields of customers';
$_['text_error_collector_fields']= 'Fill in the names of fields of Demon Collector form'; $_['text_error_collector_fields']= 'Fill in the names of fields of Demon Collector form';
$_['text_error_api'] = 'The selected API version is not available.'; $_['text_error_api'] = 'The selected API version is not available.';
$_['text_error_custom_field'] = 'Create custom fields on a customer page in Opencart and retailCRM in order to set up their transfer'; $_['text_error_custom_field'] = 'Create custom fields on a customer page in Opencart and RetailCRM in order to set up their transfer';
$_['text_error_cf_opencart'] = 'There are no custom fields in Opencart'; $_['text_error_cf_opencart'] = 'There are no custom fields in Opencart';
$_['text_error_cf_retailcrm'] = 'There are no custom fields in retailCRM'; $_['text_error_cf_retailcrm'] = 'There are no custom fields in RetailCRM';
$_['text_error_save'] = 'Error when saving settings'; $_['text_error_save'] = 'Error when saving settings';
$_['text_error_log'] = 'Log size is more than 2MB'; $_['text_error_log'] = 'Log size is more than 2MB';
$_['text_error_delivery'] = 'Delivery types are not found'; $_['text_error_delivery'] = 'Delivery types are not found';
@ -68,7 +68,7 @@ $_['retailcrm_dict_default'] = 'By default';
$_['retailcrm_missing_status'] = 'Status of lost orders'; $_['retailcrm_missing_status'] = 'Status of lost orders';
$_['order_number'] = 'Order number'; $_['order_number'] = 'Order number';
$_['text_order_number'] = 'Upload the order number to retailCRM'; $_['text_order_number'] = 'Upload the order number to RetailCRM';
$_['text_currency'] = 'Currency setting'; $_['text_currency'] = 'Currency setting';
$_['text_currency_label'] = 'Currency in ICML'; $_['text_currency_label'] = 'Currency in ICML';
$_['text_lenght'] = 'Setting of the unit of measurement'; $_['text_lenght'] = 'Setting of the unit of measurement';

View File

@ -1,8 +1,8 @@
<?php <?php
// Heading Goes here: // Heading Goes here:
$_['heading_title'] = 'retailCRM'; $_['heading_title'] = 'RetailCRM';
$_['retailcrm_title'] = 'retailCRM'; $_['retailcrm_title'] = 'RetailCRM';
// Text // Text
$_['text_module'] = 'Módulos'; $_['text_module'] = 'Módulos';
@ -20,8 +20,8 @@ $_['collector_tab_text'] = 'Daemon Collector';
$_['logs_tab_text'] = 'Registro'; $_['logs_tab_text'] = 'Registro';
$_['collector_custom_text'] = 'Configurar campos de formulario'; $_['collector_custom_text'] = 'Configurar campos de formulario';
$_['custom_fields_tab_text'] = 'Campos personalizados'; $_['custom_fields_tab_text'] = 'Campos personalizados';
$_['retailcrm_url'] = 'Dirección del retailCRM'; $_['retailcrm_url'] = 'Dirección del RetailCRM';
$_['retailcrm_apikey'] = 'Clave de la API del retailCRM'; $_['retailcrm_apikey'] = 'Clave de la API del RetailCRM';
$_['corporate_enabled_label'] = 'Corporate customers support'; $_['corporate_enabled_label'] = 'Corporate customers support';
$_['collector_site_key'] = 'Clave de la página web'; $_['collector_site_key'] = 'Clave de la página web';
$_['special_price_settings'] = 'Ajuste de la descarga del precio promocional'; $_['special_price_settings'] = 'Ajuste de la descarga del precio promocional';
@ -52,9 +52,9 @@ $_['text_orders_custom_fields'] = 'Los campos de pedidos personalizados';
$_['text_customers_custom_fields'] = 'Los campos de clientes personalizados'; $_['text_customers_custom_fields'] = 'Los campos de clientes personalizados';
$_['text_error_collector_fields']= 'Rellene los nombres de los campos del formulario Daemon Collector'; $_['text_error_collector_fields']= 'Rellene los nombres de los campos del formulario Daemon Collector';
$_['text_error_api'] = 'La versión seleccionada de la API no está disponible.'; $_['text_error_api'] = 'La versión seleccionada de la API no está disponible.';
$_['text_error_custom_field'] = 'Cree campos personalizados en la ficha del cliente en Opencart y retailCRM para configurar sus transmisión.'; $_['text_error_custom_field'] = 'Cree campos personalizados en la ficha del cliente en Opencart y RetailCRM para configurar sus transmisión.';
$_['text_error_cf_opencart'] = 'Faltan campos personalizados en Opencart'; $_['text_error_cf_opencart'] = 'Faltan campos personalizados en Opencart';
$_['text_error_cf_retailcrm'] = 'Faltan campos personalizados en retailCRM'; $_['text_error_cf_retailcrm'] = 'Faltan campos personalizados en RetailCRM';
$_['text_error_save'] = 'Error al guardar la configuración'; $_['text_error_save'] = 'Error al guardar la configuración';
$_['text_error_log'] = 'El Tamaño del registro es más de 2MB'; $_['text_error_log'] = 'El Tamaño del registro es más de 2MB';
$_['text_error_delivery'] = 'No se encontraron los métodos de envío'; $_['text_error_delivery'] = 'No se encontraron los métodos de envío';
@ -68,7 +68,7 @@ $_['retailcrm_dict_default'] = 'Por defecto';
$_['retailcrm_missing_status'] = 'Estado de pedidos perdidos'; $_['retailcrm_missing_status'] = 'Estado de pedidos perdidos';
$_['order_number'] = 'Número de pedido'; $_['order_number'] = 'Número de pedido';
$_['text_order_number'] = 'Transferir número de pedido a retailCRM'; $_['text_order_number'] = 'Transferir número de pedido a RetailCRM';
$_['text_currency'] = 'Ajustes de moneda'; $_['text_currency'] = 'Ajustes de moneda';
$_['text_currency_label'] = 'Moneda en ICML'; $_['text_currency_label'] = 'Moneda en ICML';
$_['text_lenght'] = 'Ajustar unidad de medida'; $_['text_lenght'] = 'Ajustar unidad de medida';

View File

@ -1,8 +1,8 @@
<?php <?php
// Heading Goes here: // Heading Goes here:
$_['heading_title'] = 'retailCRM'; $_['heading_title'] = 'RetailCRM';
$_['retailcrm_title'] = 'retailCRM'; $_['retailcrm_title'] = 'RetailCRM';
// Text // Text
$_['text_module'] = 'Модули'; $_['text_module'] = 'Модули';
@ -68,7 +68,7 @@ $_['retailcrm_dict_default'] = 'По умолчанию';
$_['retailcrm_missing_status'] = 'Статус пропавших заказов'; $_['retailcrm_missing_status'] = 'Статус пропавших заказов';
$_['order_number'] = 'Номер заказа'; $_['order_number'] = 'Номер заказа';
$_['text_order_number'] = 'Передавать номер заказа в retailCRM'; $_['text_order_number'] = 'Передавать номер заказа в RetailCRM';
$_['text_currency'] = 'Настройка валюты'; $_['text_currency'] = 'Настройка валюты';
$_['text_currency_label'] = 'Валюта в ICML'; $_['text_currency_label'] = 'Валюта в ICML';
$_['text_lenght'] = 'Настройка единицы измерения'; $_['text_lenght'] = 'Настройка единицы измерения';

View File

@ -577,7 +577,7 @@
</div> </div>
<div class="tab-pane" id="tab-logs"> <div class="tab-pane" id="tab-logs">
<fieldset style="margin-bottom: 30px;"> <fieldset style="margin-bottom: 30px;">
<legend>retailCRM API error log</legend> <legend>RetailCRM API error log</legend>
<div class="retailcrm_unit"> <div class="retailcrm_unit">
<a onclick="confirm('<?php echo $text_confirm_log; ?>') ? location.href='<?php echo $clear_retailcrm; ?>' : false;" data-toggle="tooltip" title="<?php echo $button_clear; ?>" class="btn btn-danger"><i class="fa fa-eraser"></i> <span class="hidden-xs"><?php echo $button_clear; ?></span></a> <a onclick="confirm('<?php echo $text_confirm_log; ?>') ? location.href='<?php echo $clear_retailcrm; ?>' : false;" data-toggle="tooltip" title="<?php echo $button_clear; ?>" class="btn btn-danger"><i class="fa fa-eraser"></i> <span class="hidden-xs"><?php echo $button_clear; ?></span></a>
</div> </div>

View File

@ -1,4 +1,5 @@
<?php <?php
class ControllerExtensionAnalyticsDaemonCollector extends Controller { class ControllerExtensionAnalyticsDaemonCollector extends Controller {
public function index() { public function index() {
$this->load->model('setting/setting'); $this->load->model('setting/setting');

View File

@ -1,14 +1,5 @@
<?php <?php
/**
* Class ControllerExtensionAnalyticsOnlineConsultant
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion5
*/
class ControllerExtensionAnalyticsOnlineConsultant extends Controller { class ControllerExtensionAnalyticsOnlineConsultant extends Controller {
/** /**
* @return string * @return string

View File

@ -1,14 +1,5 @@
<?php <?php
/**
* Class ControllerModule
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion5
*/
class ControllerExtensionModuleRetailcrm extends Controller { class ControllerExtensionModuleRetailcrm extends Controller {
private $retailcrmApiClient; private $retailcrmApiClient;

View File

@ -1,15 +1,5 @@
<?php <?php
/**
* PHP version 5.3
*
* Class CurlException
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion5
*/
class CurlException extends RuntimeException class CurlException extends RuntimeException
{ {
} }

View File

@ -1,15 +1,5 @@
<?php <?php
/**
* PHP version 5.3
*
* Class InvalidJsonException
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion5
*/
class InvalidJsonException extends DomainException class InvalidJsonException extends DomainException
{ {
} }

View File

@ -1,15 +1,5 @@
<?php <?php
/**
* PHP version 5.3
*
* API client class
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion5
*/
class RetailcrmApiClient5 class RetailcrmApiClient5
{ {
const VERSION = 'v5'; const VERSION = 'v5';

View File

@ -1,15 +1,5 @@
<?php <?php
/**
* PHP version 5.3
*
* Response from retailCRM API
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion5
*/
class RetailcrmApiResponse implements ArrayAccess class RetailcrmApiResponse implements ArrayAccess
{ {
// HTTP response status code // HTTP response status code

View File

@ -1,15 +1,5 @@
<?php <?php
/**
* PHP version 5.3
*
* HTTP client
*
* @category RetailCrm
* @package RetailCrm
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion5
*/
class RetailcrmHttpClient class RetailcrmHttpClient
{ {
const METHOD_GET = 'GET'; const METHOD_GET = 'GET';

View File

@ -2,7 +2,6 @@
/** /**
* Class RequestProxy * Class RequestProxy
* @package RetailCrm\Component
* *
* @method ordersCreate($order, $site = null) * @method ordersCreate($order, $site = null)
* @method ordersEdit($order, $by = 'externalId', $site = null) * @method ordersEdit($order, $by = 'externalId', $site = null)

View File

@ -43,7 +43,7 @@ class Order {
/** /**
* @param array $data opencart order * @param array $data opencart order
* @param array $order retailCRM order * @param array $order RetailCRM order
*/ */
public function handleBaseOrderData(&$data, $order) { public function handleBaseOrderData(&$data, $order) {
$mail = !empty($order['email']) ? $order['email'] : $order['customer']['email']; $mail = !empty($order['email']) ? $order['email'] : $order['customer']['email'];
@ -88,7 +88,7 @@ class Order {
/** /**
* @param array $data opencart order * @param array $data opencart order
* @param array $order retailCRM order * @param array $order RetailCRM order
* @param array $corporateAddress * @param array $corporateAddress
*/ */
public function handlePayment(&$data, $order, $corporateAddress = array()) { public function handlePayment(&$data, $order, $corporateAddress = array()) {
@ -156,7 +156,7 @@ class Order {
/** /**
* @param array $data opencart order * @param array $data opencart order
* @param array $order retailCRM order * @param array $order RetailCRM order
*/ */
public function handleShipping(&$data, $order) { public function handleShipping(&$data, $order) {
$default_shipping_country = !empty($data['shipping_country']) ? $data['shipping_country'] : ''; $default_shipping_country = !empty($data['shipping_country']) ? $data['shipping_country'] : '';
@ -220,7 +220,7 @@ class Order {
/** /**
* @param array $data opencart order * @param array $data opencart order
* @param array $order retailCRM order * @param array $order RetailCRM order
*/ */
public function handleProducts(&$data, $order) { public function handleProducts(&$data, $order) {
$data['order_product'] = array(); $data['order_product'] = array();
@ -277,7 +277,7 @@ class Order {
/** /**
* @param array $data opencart order * @param array $data opencart order
* @param array $order retailCRM order * @param array $order RetailCRM order
*/ */
public function handleTotals(&$data, $order) { public function handleTotals(&$data, $order) {
$delivery_cost = !empty($order['delivery']['cost']) ? $order['delivery']['cost'] : 0; $delivery_cost = !empty($order['delivery']['cost']) ? $order['delivery']['cost'] : 0;
@ -328,7 +328,7 @@ class Order {
/** /**
* @param array $data opencart order * @param array $data opencart order
* @param array $order retailCRM order * @param array $order RetailCRM order
*/ */
public function handleCustomFields(&$data, $order) { public function handleCustomFields(&$data, $order) {
$settings = $this->settings_manager->getSetting('custom_field'); $settings = $this->settings_manager->getSetting('custom_field');

View File

@ -2,9 +2,6 @@
namespace retailcrm\service; namespace retailcrm\service;
/**
* Class CustomerManager
*/
class CustomerManager { class CustomerManager {
protected $api; protected $api;
protected $customer_converter; protected $customer_converter;

View File

@ -2,9 +2,6 @@
namespace retailcrm\service; namespace retailcrm\service;
/**
* Class OrderManager
*/
class OrderManager { class OrderManager {
protected $api; protected $api;
protected $customer_manager; protected $customer_manager;

View File

@ -121,12 +121,12 @@ class Retailcrm {
} }
public function getOffers($product) { public function getOffers($product) {
// Формируем офферы отнсительно доступных опций // Build offers by available options
$options = $this->model_catalog_product->getProductOptions($product['product_id']); $options = $this->model_catalog_product->getProductOptions($product['product_id']);
$offerOptions = array('select', 'radio'); $offerOptions = array('select', 'radio');
$requiredOptions = array(); $requiredOptions = array();
$notRequiredOptions = array(); $notRequiredOptions = array();
// Оставляем опции связанные с вариациями товаров, сортируем по параметру обязательный или нет // Handle & sort mandatory options
foreach($options as $option) { foreach($options as $option) {
if(in_array($option['type'], $offerOptions)) { if(in_array($option['type'], $offerOptions)) {
if($option['required']) { if($option['required']) {
@ -138,9 +138,8 @@ class Retailcrm {
} }
$offers = array(); $offers = array();
// Сначала совмещаем все обязательные опции
foreach($requiredOptions as $requiredOption) { foreach($requiredOptions as $requiredOption) {
// Если первая итерация
if(empty($offers)) { if(empty($offers)) {
foreach($requiredOption['product_option_value'] as $optionValue) { foreach($requiredOption['product_option_value'] as $optionValue) {
$offers[$requiredOption['product_option_id'].':'.$requiredOption['option_id'].'-'.$optionValue['option_value_id']] = array( $offers[$requiredOption['product_option_id'].':'.$requiredOption['option_id'].'-'.$optionValue['option_value_id']] = array(
@ -162,11 +161,9 @@ class Retailcrm {
} }
} }
// Совмещаем или добавляем необязательные опции, учитывая тот факт что обязательных опций может и не быть.
foreach($notRequiredOptions as $notRequiredOption) { foreach($notRequiredOptions as $notRequiredOption) {
// Если обязательных опцией не оказалось и первая итерация
if(empty($offers)) { 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) { foreach($notRequiredOption['product_option_value'] as $optionValue) {
$offers[$notRequiredOption['product_option_id'].':'.$notRequiredOption['option_id'].'-'.$optionValue['option_value_id']] = array( $offers[$notRequiredOption['product_option_id'].':'.$notRequiredOption['option_id'].'-'.$optionValue['option_value_id']] = array(
'price' => (float)$this->getOptionPrice($optionValue), 'price' => (float)$this->getOptionPrice($optionValue),