Часть 6. Получаем количество в товарной позиции
Схема для изменения количество товара с начала будет повторять схему для
удаления товара, но дальше уже будут свои нюансы
В стрелке стоит просто условие "Изменить количество"
В выводе текста у нас стоит переменная #{basket_text}
а в калькуляторе у нас такой код
header=Укажите номер позиции для изменения:
basket_text=massive_to_text(basket, header, 1)
basket_text=replace(basket_text, "{'product': '", " ")
basket_text=replace(basket_text, "', 'quantity': ", " Количество: ")
basket_text = replace(basket_text, ", 'price': ", " шт. Цена: ")
basket_text = replace(basket_text, "};", " руб.")
В переменную header мы теперь сохраняем такой текст "Укажите номер позиции для изменения:"
А дальше уже с помощью функции massive_to_text мы преобразовываем словарь
в текст.
А уже с помощью replace избавляемся от ненужных частей текста или заменяем эти фрагменты на нужные
Дальше мы создаем блок и в настройках стрелки включаем функцию "Пользователь вводит данные"
и сохраняем то что введет пользователь в переменную position
А сам этот блок абсолютно пустой.
Этот блок нужен для проверки цифры, которую вводит пользователь.
Чтобы не было случаев, когда в корзине только 2 товара, а пользователь вводит 10 позицию.
И если не будет подобной проверки, то бот не будет работать корректно.
И с этого блока отводим 2 стрелки
Настройки стрелки, которая идет на вверх, выглядят таким образом.
В переменной для сравнения написано такое условие:
Это условие можно прочитать 2 способами.
1) Если цифра, которую вводит пользователь, больше чем количество элементов в корзине, то отправить по этой стрелке
2) Если количество элементов в корзине меньше чем цифры, которую ввел пользователь, то отправить по этой стрелке
Вот тут можно прочитать больше про сравнение переменных https://docs.salebot.pro/peremennye-1/sravnenie-peremennykh
А в этом блоке просто текст "Вы ошиблись с номером (ввели больше, чем позиций в корзине)"
И этот блок отправляет обратно через -1 секунду. На картинке представлены настройки стрелки.
Теперь перейдем к стрелке, которая идет на право
в настройках указана задержка -1 секунда
а переменная для сравнения lenbasket>=position
Это условие означает-
Если цифру, которую вводит пользователь не превышает количество элементов в корзине, то отправить по этой стрелке
Зачем мы отнимает -1 от цифры, которую вводит пользователь?
Вспомним, что элементы в массиве начинаются с 0
то в этой корзине индексы товаров начинаются с 0
то есть у товара 1 будет индекс 0
При использовании переменной position, мы из нее отнимаем -1. Это необходимо, потому что мы будем использовать эту переменную для извлечения необходимой информации о товаре, которая хранится в массиве.
И через -1 секунды отправляем пользователя в другой блок
Напишите сколько хотите удалить. Всего доступно #{quantity} шт.
quantity=basket[position]['quantity']
price=basket[position]['price']
Тут мы в переменную quantity сохраняем количество товара
а в price пишем стоимость этого товара
А обращаемся мы с помощью такой логики
То есть корзина это у нас массив, а в этом массиве хранятся словари.
И поэтому мы сперва обращаемся по индексу к нужному товару
А потом уже по ключу к нужному значению
Работа с массивами и словарями - Salebot.pro
Потом создаем стрелку и в настройках стрелки указываем, что пользователь вводит данные
и сохраняем эти данные в переменную qua
Этот блок пустой, но он нужен для проверки информации, которую ввел пользователь
Это строгое неравенство можно прочитать таким образом:
Если общее количество(quantity) меньше количества, которую ввел пользователь(qua)
то отправить по этой стрелке
В этом блоке просто текст "Вы ввели больше, чем позиций есть в позиции."
В стрелке просто задержка -1 секунда
Это нестрогое неравенство означает:
Если общее количество(quantity) больше или равно введенному числу пользователем(qua), то отправить по этой стрелке
В этом блоке, вывод текста будет таким:
Вы хотите удалить #{qua} шт. Останется #{quantity} шт.
В калькуляторе мы отнимаем от общего числа(quantity), введенное число пользователем(qua)
и это значение обратно сохраняем в переменную quantity
Стрелку изменить направляем вот в этот блок
Стрелку с условием "Да" направляем в блок ниже
И с этого пустого блока направляем стрелку с задержкой -1 секунда
и с переменной для сравнения quantity==0
И эта стрелку нужна, если человек полностью убрал количество товара
и этот товар нужно убрать с корзины
Корзина в проектах на конструкторе Salebot. Начало
Если вам понравилась наша статья, пишите комментарии. Задавайте вопросы по статье в комментариях.
И конечно же у вас есть возможность поддержать наш проект отправив донат.