1
0
mirror of synced 2025-01-18 17:01:41 +03:00

Merge pull request #77 from iyzoer/master

v3.3.5
This commit is contained in:
Alex Lushpai 2018-10-25 11:28:23 +03:00 committed by GitHub
commit cc3867d275
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 141 additions and 6 deletions

View File

@ -1,3 +1,6 @@
## 2018-10-25 v3.3.5
* Добавлена активация модуля в маркетплейсе retailCRM
## 2018-08-30 v3.3.4
* Исправлен баг с занулением количества товара в заказе WC

View File

@ -1 +1 @@
3.3.4
3.3.5

View File

@ -53,7 +53,7 @@ class WC_Retailcrm_Client_V5
/**
* Returns api versions list
*
*
* @return WC_Retailcrm_Response
*/
public function apiVersions()
@ -2292,6 +2292,34 @@ class WC_Retailcrm_Client_V5
);
}
/**
* Edit module configuration
*
* @param array $configuration
*
* @throws WC_Retailcrm_Exception_Json
* @throws WC_Retailcrm_Exception_Curl
* @throws \InvalidArgumentException
*
* @return WC_Retailcrm_Response
*/
public function integrationModulesEdit(array $configuration)
{
if (!count($configuration) || empty($configuration['code'])) {
throw new \InvalidArgumentException(
'Parameter `configuration` must contains a data & configuration `code` must be set'
);
}
$code = $configuration['code'];
return $this->client->makeRequest(
"/integration-modules/$code/edit",
WC_Retailcrm_Request::METHOD_POST,
array('integrationModule' => json_encode($configuration))
);
}
/**
* Update CRM basic statistic
*

View File

@ -66,6 +66,9 @@ if (!class_exists('WC_Retailcrm_Base')) {
add_action('woocommerce_update_order', array($this, 'update_order'), 11, 1);
add_action('wp_print_scripts', array($this, 'initialize_analytics'), 98);
add_action('wp_print_footer_scripts', array($this, 'send_analytics'), 99);
// Deactivate hook
add_action('retailcrm_deactivate', array($this, 'deactivate'));
}
public function api_sanitized($settings)
@ -94,6 +97,10 @@ if (!class_exists('WC_Retailcrm_Base')) {
wp_clear_scheduled_hook('retailcrm_icml');
}
if (!$this->get_errors() && !get_option('retailcrm_active_in_crm')) {
$this->activate_integration($settings);
}
return $settings;
}
@ -794,9 +801,9 @@ if (!class_exists('WC_Retailcrm_Base')) {
WC_Admin_Settings::add_error( esc_html__( 'The selected API version is unavailable', 'retailcrm' ) );
$value = '';
}
return $value;
}
return $value;
}
/**
@ -897,6 +904,7 @@ if (!class_exists('WC_Retailcrm_Base')) {
return false;
}
/**
* Add button in admin
*/
@ -931,5 +939,47 @@ if (!class_exists('WC_Retailcrm_Base')) {
)
);
}
/**
* Deactivate module in marketplace retailCRM
*
* @return void
*/
public function deactivate()
{
$api_client = $this->getApiClient();
$clientId = get_option('retailcrm_client_id');
WC_Retailcrm_Plugin::integration_module($api_client, $clientId, false);
delete_option('retailcrm_active_in_crm');
}
/**
* @param $settings
*
* @return void
*/
private function activate_integration($settings)
{
$client_id = get_option('retailcrm_client_id');
if (!$client_id) {
$client_id = uniqid();
}
if ($settings['api_url'] && $settings['api_key'] && $settings['api_version']) {
$api_client = new WC_Retailcrm_Proxy(
$settings['api_url'],
$settings['api_key'],
$settings['api_version']
);
$result = WC_Retailcrm_Plugin::integration_module($api_client, $client_id);
if ($result) {
update_option('retailcrm_active_in_crm', true);
update_option('retailcrm_client_id', $client_id);
}
}
}
}
}

View File

@ -3,9 +3,13 @@
class WC_Retailcrm_Plugin {
public $file;
public static $history_run = false;
private static $instance = null;
const MARKETPLACE_LOGO = 'https://s3.eu-central-1.amazonaws.com/retailcrm-billing/images/5b69ce4bda663-woocommercesvg2.svg';
const INTEGRATION_CODE = 'woocommerce';
public static function getInstance($file) {
if (self::$instance === null) {
self::$instance = new self($file);
@ -62,6 +66,8 @@ class WC_Retailcrm_Plugin {
}
public function deactivate() {
do_action('retailcrm_deactivate');
if (wp_next_scheduled('retailcrm_icml')) {
wp_clear_scheduled_hook('retailcrm_icml');
}
@ -75,6 +81,47 @@ class WC_Retailcrm_Plugin {
}
}
/**
* Edit configuration in CRM
*
* @param WC_Retailcrm_Proxy $api_client
* @param string $client_id
* @param bool $active
*
* @return boolean
*/
public static function integration_module($api_client, $client_id, $active = true) {
if (!$api_client) {
return false;
}
$configuration = array(
'clientId' => $client_id,
'code' => self::INTEGRATION_CODE . '-' . $client_id,
'integrationCode' => self::INTEGRATION_CODE,
'active' => $active,
'name' => 'WooCommerce',
'logo' => self::MARKETPLACE_LOGO
);
$response = $api_client->integrationModulesEdit($configuration);
if (!$response) {
return false;
}
if ($response->isSuccessful()) {
return true;
}
return false;
}
/**
* Check running history
*
* @return boolean
*/
public static function history_running()
{
return self::$history_run;

View File

@ -45,6 +45,9 @@ API-ключ должен быть для отдельного магазина
2. В появившихся списках справочников настройте соответствие способов доставки и оплаты, а так же статусов заказов. Отметьте галочку "Выгружать остатки", если хотите выгружать остатки из Retailcrm в магазин (подробнее смотрите в описании).
== Changelog ==
= 3.3.5 =
* Добавлена активация модуля в маркетплейсе retailCRM
= 3.3.4 =
* Улучшена обработка истории заказов
@ -147,6 +150,8 @@ API-ключ должен быть для отдельного магазина
* Исправелены ошибки.
== Upgrade Notice ==
= 3.3.5 =
После обновления плагина необходимо пересохранить настройки для того, чтобы активировать модуль в маркетплейсе retailCRM
= 3.3.4 =
Улучшена обработка истории заказов

View File

@ -1,6 +1,6 @@
<?php
/**
* Version: 3.3.4
* Version: 3.3.5
* WC requires at least: 3.0
* WC tested up to: 3.4.3
* Plugin Name: WooCommerce RetailCRM

View File

@ -15,7 +15,7 @@
*
*
* @link https://wordpress.org/plugins/woo-retailcrm/
* @version 3.3.4
* @version 3.3.5
*
* @package RetailCRM
*/
@ -39,6 +39,8 @@ wp_clear_scheduled_hook('retailcrm_inventories');
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name = 'woocommerce_integration-retailcrm_settings';");
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name = 'retailcrm_customers_history_since_id';");
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name = 'retailcrm_orders_history_since_id';");
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name = 'retailcrm_active_in_crm';");
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name = 'retailcrm_client_id';");
// Clear any cached data that has been removed
wp_cache_flush();