Для расчета цены и веса позиции IPrice minimart позволяет использовать формулу. Формулы для вычисления веса и цены позиции задаются при редактировании категории. Если у категории заданы формулы, то цена или вес всех позиций раздела будет считаться по формуле. В каждой подкатегории данной категории формулы могут быть переопределены.
В формуле могут участвовать некоторые системные поля товара и любые пользовательские поля. Можно использовать следующие операции: +,-,*,/, а так же скобки. Следует использовать системные наименования полей, заключенные в одинарные кавычки. Для отделения десятичных знаков в числах нужно использовать точку.
Системные поля товара, разрешенные для использования в формуле:
- price - цена тоара
- qty - количество, выбранное пользователем
- weight - вес njdfhf
- dropdown - добавочная цена, которая определяется выбранным значением главного свойства товара
Для позиций "Доставка и прочее" можно использовать в формуле следующие переменные:
- totalorderamount - общая сумма заказа (стоимость всех выбранных товаров)
- totalorderweight - общий вес заказа (итоговый вес выбранных товаров)
Рассмотрим использование формулы на примере. Допустим у нас есть базовая цена изделия price. Пользователь должен ввести длину изделия, чтобы вычислить цену изделия. Цена изделия вычисляется как длина*(базовая цена - цена вспомогательных составляющих) + цена вспомогательных составляющих. Для использования такой формулы мы должны добавить поле товара (характеристику) "цена вспомогательных составляющих" - price_vspom. Так как это поле не должен видеть пользователь, убираем его с публикации в прайс-листе, заказе и корзине. Заполняем это поле значениями в админ. панели в редактировании товара. Добавляем поле товара "Длина" - p_length, делаем его Свойством товара с помощью соответствующего параметра, чтобы пользователь мог вводить значение в это поле.
Таким образом формула для расчета цены изделия будет выглядеть следующим образом:
'p_length'*('price'-'price_vspom')+'price_vspom'
Прописываем эту формулу в параметр "Формула цены" категории, к которой принадлежит товар. Теперь, если пользователь задаст в прайс-листе длину для позиции, будет автоматически рассчитана цена позиции.
В формуле можно использовать выражение условия: (выражение1 ? значение1 : значение2)
Выражение1 - это любое логическое выражение, которое примет значение "истина" или "ложь". Значение1 - значение этого выражения, если выражение1 - истинно. Значение2 - значение этого выражения, если выражение1 - ложно.
Например, с помощью этого выражения можно реализовать ступенчатую скидку, которая будет зависеть от количества выбранного товара. Вот пример формулы, реализующий такую ступенчатую скидку:
('qty'>=100 ? 120.2 : ('qty'>=50 ? 150.5 : ('qty'>=10 ? 170 : 200)))
Формула означает, что, если пользователь выбрал количество больше или равное 100, цена товара будет 120, иначе, если выбрано количество больше или равное 50, то цена - 150, если кол-во больше или равно 10, то цена - 170, если количество меньше 10, то цена 200.
Если вы используете поле "Главное свойство" для товара со списком опций товара, влияющих на цену, то цена товара вычисляется по следующим правилам:
- Если вы не используете формулу, то цена товара изменяется автоматически при выборе пользователем значения главного свойства товара в прайс-листе (к основной цене товара прибавляется добавочная цена опции товара).
- Если вы используете формулу, то должны в формуле напрямую прописать, как будет использоваться главное свойство при вычислении цены товара. Например, формула, приведенная в примере выше, при использовании поля "Главное свойство" будет выглядеть так:
'p_length'*('price'-'price_vspom')+'price_vspom'+'dropdown'
Что означает, что к вычисленной по заданным нами правилам цене будет прибавлена добавочная цена выбранной пользователем опции главного свойства товара (dropdown). Более подробно о поле "Главное свойство" (dropdown) со списком опций товара читайте в статье "Товары" в главе "Харакетристики"
Пример
Рассмотрим пример использования формул при вычислении цены и веса труб (пример на демо-сайте).
Пользователь при выборе труб задает необходимый диаметр/ширину стенки, а так же длину трубы, далее задает необходимое кол-во труб.
Вес трубы вычисляется по формуле: "вес 1 метра трубы с определенным диаметром/толщиной" * "Длину трубы".
Цена трубы вычисляется по формуле: "вес трубы" * "цену 1 килограмма трубы".
Для реализации такого вычисления необходимо выполнить следующие шаги:
1. Добавляем два дополнительных поля товара "Диаметр/Толщина" и "Длина" и отмечаем их как "Свойства".
Заполняем параметры поля "Диаметр/Толщина" (Рис 1):
- "Системное имя поля" - p_diamth
- "Заголовок" - Диаметр/Толщина
- "Максимальная длина" - 512
- "Свойство товара" - "Да"
- "Использовать список значений" - "Да"
- "Добавлять к имени товара в заказе" - "Да"
Заполняем параметры поля "Длина" (Рис 2):
- "Системное имя поля" - p_length
- "Заголовок" - Длина
- "Максимальная длина" - 255
- "Свойство товара" - "Да"
- "Использовать список значений" - "Да"
- "Список значений по умолчанию" - 1;2;3;5;7;10 (этот список значений будет доступен пользователю для выбора длины. Можно использовать формат списка с заголовком, например: 1:1 м;2:2 м;3:3 м;5:5 м;7:7 м;10:10 м , более подробно см "Поля товара", Рис 3)
- "Добавлять к имени товара в заказе" - "Да"
2.Создаем категорию "Трубы" (Рис 4).
Для категории "Трубы" устанавливаем формулу цены и веса (Рис 5):
- "Формула веса" - 'p_diamth'*'p_length'
- "Формула цены" - 'weight'*'price'
В поле "Свойства" в редактировании категории "Трубы" добавляем в список добавленные нами свойства "Длина" и "Диаметр/Толщина" (Рис 5).
3. Создаем товар "Труба".
- В параметре "Цена" задаем цену за 1 кг изделия.
- На вкладке "Характеристики" задаем параметр "Список значений для поля 'Диаметр/Толщина'" следующим образом (Рис 6):
1000:50 мм/3 мм;2000:70 мм/5 мм;3000:120 мм/10 мм
где 1000, 2000, 3000 - это вес одного метра трубы с данным диаметром и толщиной, 50 мм/3 мм, 70 мм/5 мм, 120 мм/10 мм - заголовки опций, означающие диаметр/толщину трубы.
Теперь цена и вес трубы будут вычисляться по заданной нами формуле в зависимости от выбранных пользователем значений "Длина" и "Диаметр/Толщина".