Просмотр полной версии : Расчет цены по формуле
nekrasov
28.09.2015, 17:22
есть следующая задача на определенную категорию рассчитывать цену по формуле: Цена(Основная)=Себест. умножить кофэ.наценки убираем копейки и округляем до десятичных. Получилось все кроме округления до десятичных.
Идея такова, чтобы основная цена за коктейли складывалась из себестоимости:
Завели ценовую константу она же наценка.
В типе цены добавили правило расчета для категории коктейли след. формулу:
Price:=Round(Price2*Const1);
Получили следующее
Цена=10,49*3=31р
это пример. бармену не удобно работать с мелочью поэтому хотим получить округленный результат а именно 40. На сколько мне известно это делает функция RoundTo(цена, 1) округлит до десятых
Но увы эта функция не отрабатывает как и МАХ и МIN значение пробовал на 2 версиях(7.5.3.479). Вроде не сложная задача не хочется в скрипты лезть. Есть идеи?
На вскидку:
Завести отдельный тип цен (Себестоимость). Настроить импорт себестоимости из SH. Для нужных блюд Основную цену просто не заполнять (пустая) в использовании типов цен приоритет поставить у Основной. Если ее не будет, то начнет работать Вторая цена (себестоимость).
Для нужных блюд Основную цену просто не заполнять (пустая) в использовании типов цен приоритет поставить у Основной. Если ее не будет, то начнет работать Вторая цена (себестоимость).
Настолько удивился услышать это от Александра что полез проверять. Не будет так работать.
В заказе всегда будет использоваться один тип цены. А вот какой - можно задать через использование. Таким образом если в заказе используется тип цены основная, а этот тип цены у блюда не задан, то блюдо будет недоступно.
nekrasov
28.09.2015, 18:07
"всегда будет использоваться один тип цены" совершенно верно. Типы цен отрабатывают как надо заводить вторую не имеет смысла , добавлен расчет второй для типа цены остновная. Себестоимость подтянута. проблема в самой формуле там не работают функции. Не знаю как из результата 31 получить округление до целого 40 . Из 159 получить 160 и т.д. Округление есть у Валюты но это не выход так как только на определенную категорию нужно округлять (коктейли)
Не знаю как из результата 31 получить округление до целого 40 . Из 159 получить 160 и т.д.
Очевидно же: Price:=Round(Price1+5);
nekrasov
28.09.2015, 18:32
Price:=Round(Price1+5);
Себестоимость 12,56
переведу вашу формулу (и проверил)
Цена=убрать копейки(12,56+5)
Результат 18 а не 20! идея в том чтобы были только целые 10,50,100 без размена (мелочью)
идея в том чтобы были только целые 10,50,100 без размена (мелочью)
Тогда так:
Price:=Round(Price1/10+0.5)*10;
Видимо все-таки не очевидно, раз сам только с 3-го раза без опечаток написал
nekrasov
28.09.2015, 18:53
о уже ближе=)
при себестоимости 54р результат отпускной цены 50р ) добавил +10 и наценку
Price:=Round((Price2*Const1+0.5)/10)*10+10;
12,56себ = 50 отпускная, вроде все так. Спасибо огромное. Можно ли добавить условие если цена по нашей формуле меньше 150р то цена основная равна 150р, функция MIN и Мах не отрабатывает? может синтаксис не верный задаю.
Я там вверху исправил, вроде как то что надо
функции MIN и MAX скорее всего выберут минимальную или максимальную из двух цен.
В Вашем случае, подозреваю нужно обойтись банальным if... else...
Настолько удивился услышать это от Александра что полез проверять. Не будет так работать.
Да, чет я на сегодня в php пересидел немного...
С чистой совестью подумал что если переменная (основная цена) не определена, но есть условие для использования второй (себестоимость), то автоматом сработает вторая.
nekrasov
28.09.2015, 21:22
"банальным if... else... " в самую точку, а я с функцией мучался (все равно мах и min у меня не заработали из 2 чисел)
Спасибо еще раз. Результат получен:). Радует когда самые изощренные идеи реализуются.
На самом деле для решения задачи округления цен у типа цены есть свойство "Правило округления".
nekrasov
29.09.2015, 13:09
это рабочий вариант если нужно ВСЕ цены округлять , тут же речь шла об определенной категории "Коктейли". Округление и у валюты есть.
это рабочий вариант если нужно ВСЕ цены округлять.
Не правда. Через использование типов цен все можно настроить.
nekrasov
29.09.2015, 14:45
В использованиии нет параметра "Категория" то что в меню, есть "категория заказа" а это уже не то.
В свойствах Основная выставил округление до 10 рублей Распространяется как на правило Default так и на категорию. При себестоимости до рубля округляет в меньшую. Больше рубля до 10 в большу. Например 10.7 округлит до 30, 11.7 округлит до 40, при наценке 3.
QUOTE=nekrasov;88884]В использованиии нет параметра "Категория" то что в меню, есть "категория заказа" а это уже не то.[/QUOTE]
Зато есть "Торговая группа". Как раз то, что нужно.
okis (http://www.carbis.ru/forum/member.php?u=1274), ты видимо не до конца понял задачу.
ТГ в заказе тоже может быть только одна
В свойствах Основная выставил округление до 10 рублей Распространяется как на правило Default так и на категорию. При себестоимости до рубля округляет в меньшую. Больше рубля до 10 в большу. Например 10.7 округлит до 30, 11.7 округлит до 40, при наценке 3.
Если нужно, чтобы округлялось всегда в большую сторону, то нужно прибавить к результату цены 5:
Price:=Price2*Const1+5
---------- Добавлено в 21:27 ---------- Предыдущее сообщение было размещено в 20:54 ----------
okis (http://www.carbis.ru/forum/member.php?u=1274), ты видимо не до конца понял задачу.
ТГ в заказе тоже может быть только одна
Да, если условия такие, то только через правила расчета.
Есть скидка 3% которая начисляет 100% бонус по заказу, но начисление бонуса происходит от суммы всех блюд без учета скидки. Например заказ на сумму 60р, к нему прикрепляется скидка 3% итого по заказу 58р, но бонус начисляет 60р. Если для скидки 3% сделать, начисление бонуса 97%, то бонус идет с копейками 58,20. Возможно ли с помощью формулы округлить до 1 рубля начисляемый на заказ бонус? :duma:
Powered by vBulletin® Version 4.2.6 LTS Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot