From 9d8eb2256c1c9125f72f286cec1012a63d7bad64 Mon Sep 17 00:00:00 2001 From: Dima Uryvskiy Date: Wed, 10 Aug 2022 14:02:35 +0300 Subject: [PATCH] Add filter for changing ICML product information --- CHANGELOG.md | 5 +++ VERSION | 2 +- doc/1.Setup/Catalog settings.md | 8 ---- doc/1.Setup/Generating ICML catalog.md | 29 +++++++++++++ doc/3. Customization/Filters.md | 57 +++++++++++++++++++++++++ src/include/class-wc-retailcrm-icml.php | 18 +++++--- src/readme.txt | 5 +++ src/retailcrm.php | 4 +- src/uninstall.php | 2 +- 9 files changed, 112 insertions(+), 18 deletions(-) create mode 100644 doc/3. Customization/Filters.md diff --git a/CHANGELOG.md b/CHANGELOG.md index a34304e..b7f2efb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 2022-08-06 4.4.6 +* Add automatically upload ICML in CRM +* Add filter for changing ICML product information +* Important fix bug with shipping tax + ## 2022-07-18 4.4.5 * Change logic work with delivery cost * Add price rounding from WC settings diff --git a/VERSION b/VERSION index 5f70498..b58299c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.4.5 \ No newline at end of file +4.4.6 \ No newline at end of file diff --git a/doc/1.Setup/Catalog settings.md b/doc/1.Setup/Catalog settings.md index 2c2eac2..1871d2a 100644 --- a/doc/1.Setup/Catalog settings.md +++ b/doc/1.Setup/Catalog settings.md @@ -1,13 +1,5 @@ ### Настройки каталога -В версии 4.4.4 добавлен функционал передачи описания товара в каталог. В настройках каталога необходимо выбрать, какое описание передавать краткое или полное. По умолчанию передается полное описание товара. - -Поле description(описание) выводится в карточке товара, так же его можно использовать в twig-шаблонах. Например, для вывода в печатных формах. -Пример получения описание торгового предложения: -```twig -{% for availableOrderProduct in order.availableOrderProducts %} {{ availableOrderProduct.getOffer().getDescription() }} {% endfor %} -``` - В настройке представлены статусы товаров в WooCommerce *(Товары -> карточка товара -> блок Опубликовано)*. Из товаров, чей статус будет соответствовать выбранному, будет сгенерирован ICML-файл каталога. Для выбора необходимо поставить галочку напротив нужного статуса и сохранить настройки. Статус видимости товара Личное, также относится к статусам товара "Статус: Опубликовано как личное". Анализ статусов товара был произведен в задаче [#76054](https://redmine.retailcrm.tech/issues/76054) diff --git a/doc/1.Setup/Generating ICML catalog.md b/doc/1.Setup/Generating ICML catalog.md index e0ebcdd..e5dcced 100644 --- a/doc/1.Setup/Generating ICML catalog.md +++ b/doc/1.Setup/Generating ICML catalog.md @@ -24,3 +24,32 @@ После активации опции при генерации каталога в нем появится параметр xmlID *(артикул)*. **xmlID** - внешний идентификатор товара, элемент не является обязательным. В случае, если интернет-магазин использует выгрузку номенклатуры товаров из складской системы *(1С, МойСклад)*, то значение этого элемента соответствует идентификатору товара в данной системе. Активируется, когда клиенты используют Woocommerce + MC/1C. + +### Недавние обновления: + +**В версии 4.4.4** добавлен функционал передачи описания товара в каталог. В настройках каталога необходимо выбрать, какое описание передавать краткое или полное. По умолчанию передается полное описание товара. + +Поле description(описание) выводится в карточке товара, так же его можно использовать в twig-шаблонах. Например, для вывода в печатных формах. +Пример получения описание торгового предложения: +```twig +{% for availableOrderProduct in order.availableOrderProducts %} {{ availableOrderProduct.getOffer().getDescription() }} {% endfor %} +``` + +**В версии 4.4.6** добавлен фильтр: + +> retailcrm_process_offer - позволяет изменить данные товара, перед записью в ICML каталог. + + +**Пример использования:** +```php + retailcrm_process_customer - позволяет изменить данные клиента при передачи из CMS -> CRM. + +> retailcrm_process_customer_address - позволяет изменить адрес клиента при передачи из CMS -> CRM. + +> retailcrm_process_customer_corporate - позволяет изменить данные корпоративного клиента при передачи из CMS -> CRM. + +> retailcrm_process_customer_corporate_address - позволяет изменить адрес корпоративного клиента при передачи из CMS -> CRM. + +> retailcrm_process_customer_corporate_company - позволяет изменить компанию корпоративного клиента при передачи из CMS -> CRM. + +> retailcrm_customer_roles - позволяет изменить допустимые роли клиентов. + +> retailcrm_daemon_collector - позволяет изменить данные для Daemon Collector. + +> retailcrm_initialize_analytics - позволяет изменить данные скрипта для Google Analytics. + +> retailcrm_send_analytics - позволяет изменить отправляемые данные Google Analytics. + +> retailcrm_process_customer_custom_fields - позволяет изменить данные кастомных полей клиента при передачи из CRM -> CMS . + +> retailcrm_history_before_save - позволяет изменить данные заказа и клиента при передачи из CRM -> CMS. + +> retailcrm_process_order_custom_fields - позволяет изменить данные кастомных полей заказ при передачи из CRM -> CMS. + +> retailcrm_process_offer - позволяет изменить данные товара перед записью в ICML каталог. + +> retailcrm_process_order - позволяет изменить данные заказа при передачи из CMS -> CRM. + +> retailcrm_process_order_address - позволяет изменить адрес заказа при передачи из CMS -> CRM. + +> retailcrm_add_cron_interval - позволяет добавить пользовательский интервал времени. + +> retailcrm_cron_schedules - позволяет изменить интервал времени для cron задач. + +> retailcrm_shipping_list - позволяет изменить методы доставки с CMS. + +**Пример использования:** +```php +get_stock_status() === 'instock' ? 1 : 0; } - $product_data = [ + $productData = [ 'id' => $product->get_id(), 'productId' => ($product->get_parent_id() > 0) ? $parent->get_id() : $product->get_id(), 'name' => $product->get_name(), @@ -545,7 +545,7 @@ if (!class_exists('WC_Retailcrm_Icml')) : $params[] = ['code' => 'article', 'name' => 'Article', 'value' => $product->get_sku()]; if (isset($this->settings['bind_by_sku']) && $this->settings['bind_by_sku'] == WC_Retailcrm_Base::YES) { - $product_data['xmlId'] = $product->get_sku(); + $productData['xmlId'] = $product->get_sku(); } } @@ -562,14 +562,20 @@ if (!class_exists('WC_Retailcrm_Icml')) : } if (!empty($params)) { - $product_data['params'] = $params; + $productData['params'] = $params; } - if (isset($product_data)) { - $full_product_list[] = $product_data; + $productData = apply_filters( + 'retailcrm_process_offer', + WC_Retailcrm_Plugin::clearArray($productData), + $product + ); + + if (isset($productData)) { + $full_product_list[] = $productData; } - unset($product_data); + unset($productData); } /** diff --git a/src/readme.txt b/src/readme.txt index 10ee19c..40ac724 100644 --- a/src/readme.txt +++ b/src/readme.txt @@ -82,6 +82,11 @@ Asegúrate de tener una clave API específica para cada tienda. Las siguientes i == Changelog == += 4.4.6 = +* Add automatically upload ICML in CRM +* Add filter for changing ICML product information +* Important fix bug with shipping tax + = 4.4.5 = * Change logic work with delivery cost * Add price rounding from WC settings diff --git a/src/retailcrm.php b/src/retailcrm.php index aec28bd..e365fff 100644 --- a/src/retailcrm.php +++ b/src/retailcrm.php @@ -5,10 +5,10 @@ * Description: Integration plugin for WooCommerce & Simla.com * Author: RetailDriver LLC * Author URI: http://retailcrm.pro/ - * Version: 4.4.5 + * Version: 4.4.6 * Tested up to: 5.9 * WC requires at least: 5.4 - * WC tested up to: 6.5 + * WC tested up to: 6.7 * Text Domain: retailcrm */ diff --git a/src/uninstall.php b/src/uninstall.php index ee491bb..e7d95b4 100644 --- a/src/uninstall.php +++ b/src/uninstall.php @@ -16,7 +16,7 @@ * * @link https://wordpress.org/plugins/woo-retailcrm/ * - * @version 4.4.5 + * @version 4.4.6 * * @package RetailCRM */