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

Update logic client roles. Delete setting role

This commit is contained in:
Dima Uryvskiy 2021-08-03 18:26:55 +03:00 committed by GitHub
parent 57154ae7e3
commit eb95f3e375
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 43 additions and 67 deletions

3
doc/1.Setup/Settings .md Normal file
View File

@ -0,0 +1,3 @@
# Settings

33
doc/1.Setup/User roles.md Normal file
View File

@ -0,0 +1,33 @@
# User roles
С версии `4.3.7` опция `"Роли клиентов"` была удалена из настроек модуля. Сейчас выгружаются пользователи со всеми доступными ролями в CMS.
Добавили фильтр `retailcrm_customer_roles` для корректировки выгружаемых пользователей.
## Пример работы фильтра
В приведенном ниже примере показано, как возможно корректировать роли выгружаемых пользователей:
```php
<?php
add_filter('retailcrm_customer_roles', 'editCustomerRoles', 10, 1);
function editCustomerRoles($roles)
{
if (isset($roles['customer'])) {
unset($roles['customer']);
}
return $roles;
}
```
## Описание работы функционала
У каждого зарегистрированного пользователя в WP есть роль. Роль отображает права пользователя на сайте. Ниже приведены основные кейсы работы с пользователями:
* Пользователь "гость (клиент без регистрации)" создает заказ. Заказ корректно выгрузился в CRM, клиент был создан без externalId. Если этот "гость" создаст еще один заказ, то заказ корректно выгрузится и установится связь с этим клиентом (будет произведен поиск по email).
* Создали пользователя, например с ролью "Подписчик", он корректно выгрузился в CRM, есть externalId и данные по клиенту, только те, что указаны при создании в админке WP. Данный пользователь оформляет заказ, заказ корректно выгрузился в CRM и связался с клиентом, клиенту добавилась данные: телефон, адрес. Обновление данных пользователя происходит корректно (будет произведен поиск по externalId).
* Функционал корректно работает и для корпоративных клиентов.
* Запустили архивную выгрузку, данные выгрузились корректно, все заказы, все клиенты без дублей.
* Запретили через фильтр передавать пользователей с ролью "Клиент", такие пользователи в CRM выгружаться не будут.
* Создали заказ для пользователя с ролью "Клиент", заказ выгрузился в CRM, так же создался клиент без externalId, модуль воспринимает таких клиентов как "гостей". Данное поведение считается корректным тк мы не выгружаем пользователей с определенной ролью, но они создаются с заказов (заказы мы передаем).

1
doc/README.md Normal file
View File

@ -0,0 +1 @@
# Developers documentation

View File

@ -136,15 +136,6 @@ msgstr "Métodos de pago"
msgid "Delivery types"
msgstr "Métodos de envío"
msgid "Select client roles which will be uploaded from website to Simla.com"
msgstr "Seleccione los roles del cliente que se cargarán desde el sitio web a Simla.com"
msgid "Client roles available for uploading to Simla.com"
msgstr "Roles del cliente disponibles para cargar en Simla.com"
msgid "Client roles"
msgstr "Roles del cliente"
msgid "Select order methods which will be uploaded from Simla.com to the website"
msgstr "Elige el método de formalización de los pedidos que se van a subir desde Simla.com a la página web"

View File

@ -145,15 +145,6 @@ msgstr "Способы оплаты"
msgid "Delivery types"
msgstr "Способы доставки"
msgid "Select client roles which will be uploaded from website to Simla.com"
msgstr "Выберите роли клиентов, которые будут выгружаться в Simla.com"
msgid "Client roles available for uploading to Simla.com"
msgstr "Роли клиентов, доступные для выгрузки в Simla.com"
msgid "Client roles"
msgstr "Роли клиентов"
msgid "Select order methods which will be uploaded from Simla.com to the website"
msgstr "Выберите способы оформления заказов, которые будут выгружаться из Simla.com на сайт"

View File

@ -167,36 +167,6 @@ abstract class WC_Retailcrm_Abstracts_Settings extends WC_Integration
);
}
/**
* Client roles options
*/
$client_roles_option = array();
$client_roles_list = wp_roles()->get_names();
if (!empty($client_roles_list)) {
foreach ($client_roles_list as $code => $name) {
$client_roles_option[$code] = $name;
}
$this->form_fields[] = array(
'title' => __('Client roles', 'retailcrm'),
'type' => 'heading',
'description' => '',
'id' => 'client_roles_options'
);
$this->form_fields['client_roles'] = array(
'label' => ' ',
'title' => __('Client roles available for uploading to Simla.com', 'retailcrm'),
'class' => '',
'type' => 'multiselect',
'description' => __('Select client roles which will be uploaded from website to Simla.com', 'retailcrm'),
'options' => $client_roles_option,
'css' => 'min-height:100px;',
'select_buttons' => true
);
}
/**
* Order methods options
*/

View File

@ -599,32 +599,19 @@ if (!class_exists('WC_Retailcrm_Customers')) :
*/
public function isCustomer($user)
{
$retailcrmSettings = array();
if (!empty($this->retailcrm_settings) && array_key_exists('client_roles', $this->retailcrm_settings)) {
$retailcrmSettings = $this->retailcrm_settings['client_roles'];
}
if (empty($retailcrmSettings)) {
$selectedRoles = array(self::CUSTOMER_ROLE, self::ADMIN_ROLE);
} else {
$selectedRoles = $retailcrmSettings;
}
$clientRoles = wp_roles()->get_names();
$clientRoles = apply_filters('retailcrm_customer_roles', WC_Retailcrm_Plugin::clearArray($clientRoles));
if ($user instanceof WP_User) {
$userRoles = $user->roles;
$userRole = !empty($user->roles[0]) ? $user->roles[0] : null;
} elseif ($user instanceof WC_Customer) {
$wpUser = get_user_by('id', $user->get_id());
$userRoles = ($wpUser) ? $wpUser->roles : array($user->get_role());
$role = $user->get_role();
$userRole = !empty($role) ? $role : null;
} else {
return false;
}
$result = array_filter($userRoles, function ($userRole) use ($selectedRoles) {
return in_array($userRole, $selectedRoles);
});
return !empty($result);
return array_key_exists($userRole, $clientRoles);
}
}
endif;

Binary file not shown.

Binary file not shown.