Запрет на редактирование корзины
Вы можете запретить сотрудникам с определёнными ролями редактировать список позиций в продаже. Для этого подключите расширение retail_app
. Рассказываем!
Принцип работы
У Василия служба курьерской доставки. Он хочет построить работу так, чтобы заказ мог редактировать только менеджер, а курьеры только принимали оплату.
Однако в заказе есть позиции, по которым окончательное решение можно принять только на месте, после согласования с покупателем. Для таких позиций курьеру нужно оставить права на редактирование.
Расширение retail_app
сопоставляет список позиций в чеке со списком ролей. Для каждой пары «позиция — роль» расширение разрешает или запрещает определённые действия. Вот их список:
can_edit_name
can_edit_good_type
can_edit_uom
can_edit_quantity
can_edit_tax
can_edit_sale_price
can_delete
Разрешение can_edit_quantity
работает некорректно, полностью блокируя редактирование позиции. Пока ошибка не исправлена, запретить отдельно редактирование количества товара не получится.
Подключение расширения
Чтобы начать работу с расширением, объявите его в заголовке запроса в параметре X-LP-Client-Extensions
. Подставьте retail_app вместо %extension_name%
:
curl -i -X GET \
-H "Authorization:eyJhbGciOiJI.eyJzdWIiOiIxMjM0NTY.SflKxwRJSMeKK" \
-H "Accept-Language:ru-RU" \
-H "X-LP-Client-Identifier:unique_id" \
-H "X-LP-Client-Type:App" \
-H "X-LP-Client-Extensions:%extension_name%" \
'https://api.life-pos.ru/v4/orgs/123e4567-e89b-12d3-a456-123456780000/deals/sales'
Работа с расширением
В POST-запрос на создание продажи включается массив extensions.retail_app.deal_position_permissions. Каждый элемент массива содержит следующие поля (обязательные отмечены знаком *
):
position *
— объект, содержащий GUID позиции и типtype_of
. GUID позиции — необязательное поле и при создании продажи обычно не указывается. В этом случае LIFE POS генерирует GUID позиции сам. Вы можете либо указать его явно, либо создать продажу как обычно и получить идентификаторы позиций в ответе. Во втором случае настройки расширения retail_app передаются PATCH-запросом к предварительно созданной продаже.role *
— объект, содержащий GUID роли и типtype_of
.- Список разрешений для пары «позиция — роль».
Пример запроса:
"extensions": {
"retail_app": {
"deal_position_permissions": [
{
"position": {
"guid": "75747750-bce4-47bf-bf4e-76b3afbd1e07",
"type_of": "DealPosition"
},
"role": {
"guid": "ffeeddcc-bbaa-0000-0000-000000000002",
"type_of": "Role"
},
"can_edit_name": true,
"can_edit_good_type": true,
"can_edit_uom": true,
"can_edit_quantity": false,
"can_edit_tax": true,
"can_edit_sale_price": true,
"can_delete": true
},
...
]
}
}