Update logic client roles. Delete setting role
This commit is contained in:
parent
57154ae7e3
commit
eb95f3e375
3
doc/1.Setup/Settings .md
Normal file
3
doc/1.Setup/Settings .md
Normal file
@ -0,0 +1,3 @@
|
||||
|
||||
# Settings
|
||||
|
33
doc/1.Setup/User roles.md
Normal file
33
doc/1.Setup/User roles.md
Normal 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
1
doc/README.md
Normal file
@ -0,0 +1 @@
|
||||
# Developers documentation
|
@ -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"
|
||||
|
||||
|
@ -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 на сайт"
|
||||
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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.
Loading…
x
Reference in New Issue
Block a user