Wiki
Clone wikiiPriceSE / Ценообразование
Ценообразование
Главная -> Ценообразование
В программе реализована поддержка формул с элементарными функциями сравнения и округления, а так же минимальным набором математических и логических действий. Не смотря на свою простоту - это мощный инструмент, который позволит сформировать практически любую цену с неограниченной логикой на основании 32 1 переменных, индивидуальных для каждой позиции каталога.
Редактор формул
Окно редактирования формулы можно вызвать из главного меню приложения выбрав "Справочники"->"Цены".
Окно редактора формул состоит из следующих элементов: 1. список ценовых колонок; 2. наименование редактируемой колонки; 3. приоритет (местоположение в списке); 4. формула расчета цены; 5. справка по переменным, функциям и операторам; 6. панель проверки введенной формулы (позволяет проверить корректность формулы путем ввода некоторых значений переменных); 7. поле результат вычисления (отображает результат вычисления по формуле с учетом введенных выше значений, а так же служит для вывода ошибок парсинга формулы).
Инструменты
Переменные
P - минимальная цена (базовая) поставщика (в наличии) (использование: P)
P2 - цена поставщика 2 (использование: P2)
P3 - цена поставщика 3 (использование: P3)
P4 - цена поставщика 4 (использование: P4)
P5 - цена поставщика 5 (использование: P5)
P6 - цена поставщика 6 (использование: P6)
P7 - цена поставщика 7 (использование: P7)
P8 - цена поставщика 8 (использование: P8)
P9 - цена поставщика 9 (использование: P9)
P10 - цена поставщика 10 (использование: P10)
N - наценка от базовой цены поставщика (%, пересчитанный в рубли) (использование: P+N)
D - скидка от базовой цены поставщика (%, пересчитанный в рубли) (использование: P-D)
P0 - наша цена (базовая) (берется из основного прайс-листа) (использование: P0)
P02 - наша цена 2 (берется из основного прайс-листа) (использование: P02)
P03 - наша цена 3 (берется из основного прайс-листа) (использование: P03)
P04 - наша цена 4 (берется из основного прайс-листа) (использование: P04)
P05 - наша цена 5 (берется из основного прайс-листа) (использование: P05)
P06 - наша цена 6 (берется из основного прайс-листа) (использование: P06)
P07 - наша цена 7 (берется из основного прайс-листа) (использование: P07)
P08 - наша цена 8 (берется из основного прайс-листа) (использование: P08)
P09 - наша цена 9 (берется из основного прайс-листа) (использование: P09)
P010 - наша цена 10 (берется из основного прайс-листа) (использование: P010)
P1 - цена, указанная в карточке позиции каталога (использование: P1)
M - минимальная цена продажи (использование: M)
C - дополнительный процент скидки/наценки (использование: P+P*C)
K - дополнительный коэффициент скидки/наценки (использование: P+K)
S - остаток товара, сумма по всем отделам, согласно данным основного прайс-листа
S1 - остаток товара, отдел 1, согласно данным основного прайс-листа
S2 - остаток товара, отдел 2, согласно данным основного прайс-листа
S3 - остаток товара, отдел 3, согласно данным основного прайс-листа
S4 - остаток товара, отдел 4, согласно данным основного прайс-листа
S5 - остаток товара, отдел 5, согласно данным основного прайс-листа
Функции
KURS - возвращает курс выбранной валюты (из БД). Синтаксис: KURS('Валюта')
KURS('RUR') = вернет курс рубля по отношению к RUR KURS('USD') = вернет курс доллара по отношению к RUR KURS('EUR') = вернет курс евро по отношению к RUR KURS('KZT') = вернет курс тенге по отношению к RUR KURS('UAH') = вернет курс гривны по отношению к RUR
IF( 5>3 , M , D ) => M CHOOSE( 5>3 , M , D ) => M IF( 1>3 , M , D ) => D IF( 5>3 , M+P , D) => M+P
ВАЖНО!!! Действия "истина" или "ложно" могут быть другими формулами, переменными и вещественными числами, но не могут быть целыми числами.
Например:
IF( 5>3 , 3 , 1) => 0
Для корректного решения необходимо формулу записать так:
IF( 5>3 , 3.0 , 1.0 ) => 3.0.
Обратите внимание - разделитель десятичной части - . (точка).
RNDUP - округление вверх с заданной точностью. Синтаксис: RNDUP(число, точность). Допустимые значения точности: 0.0001 .. 1 .. 1000000 (н-р 0.05 | 0.01 | 0.2 | 10 | 50 ...)
RNDUP(100.18, 0.5) => 100.5 RNDUP(12.13, 5) => 15 RNDUP(12.13, 1) => 13 RNDUP(12.13, 0.5) => 12.5 RNDUP(1000.01, 10) => 1010 RNDUP(1231.56,50) => 1250
- число меньше 1 - без изменений.
- число меньше 10 - увеличение вверх с точностью 0.5.
- число меньше ГРАНИЦЫ - увеличение вверх до 1.
- число больше ГРАНИЦЫ - увеличение вверх до 10.
- число равно 1 - без изменений.
- число равно 10 - без изменений.
- число равно ГРАНИЦЕ - без изменений.
RN(0.67, 700) => 0.67; RN(4.27, 700) => 4.50; RN(6.82, 700) => 7; RN(680.42, 700) => 681; RN(1382.52, 700) => 1390;
INT - арифметическое округление до целого. Синтаксис: INT(число).
INT(102.50) => 103 INT(103.50) => 104 INT(100.51) => 101 INT(100.80) => 101 INT(100.23) => 100
BINT(102.50) => 102 BINT(103.50) => 104 BINT(100.51) => 101 BINT(100.80) => 101 BINT(100.23) => 100
RNDTO(2.5, 1) => 3 RNDTO(3.5, 1) => 4 RNDTO(12.547, 1) => 13 RNDTO(12.545, 0.01) => 12.55 RNDTO(12.567, 10) => 10
BRNDTO - банковское округление до заданной точности. Синтаксис: BRNDTO(число, точность). Допустимые значения точности: 0.0001,0.001,0.01,0.1,1,10,100,1000 и тд.
BRNDTO(2.5, 1) => 2 BRNDTO(3.5, 1) => 4 BRNDTO(12.547, 1) => 13 BRNDTO(12.545, 0.01) => 12.54 BRNDTO(12.567, 10) => 10
ABS - возвращает абсолютное значение числа. Синтаксис: ABS(число).
ABS(102.50) => 102.50 ABS(-34) => 34
INRANGE(100.0, 50, 150) => ИСТИНО INRANGE(100.0, 500, 1500) => ЛОЖНО
DATE(0) => текущий день (D) DATE(1) => текущий месяц (M) DATE(2) => текущий год (YYYY) DATE(3) => текущая неделя с начала года DATE(4) => текущий день недели (1-7 => пнд.-вск.) DATE(5) => текущий день с начала года
TIME(0) => текущий час (H) TIME(1) => текущая минута(M) TIME(2) => текущая секунда (S)
Математические операторы
+ сложение - вычитание * умножение / деление
Логические операторы
> больше < меньше >= больше или равно <= меньше или равно = равно
Союзы
And И or ИЛИ
Примеры формул.
Формула может быть любой вложенности и длинной до 1024 символов. Допускается использование пробелов и переноса строк.
Допускается использование произвольных вещественных чисел. Разделитель десятичной части - . (точка). Однако, использование произвольных чисел не желательно, так как ведет к ухудшению читаемости формулы. Но порой неизбежно, например, когда необходимо сделать скидку на цену независимо от товара.
P = 100 руб. N = 10 % => 10 руб. 5 - необходимый % скидки (P+N)*(1-5/100) => 100 руб+10 руб= 110 руб [минус] 5% = 104,5 руб.
(P+N)*(1-10/100) => 100руб+10 руб= 110 руб [минус] 10% = 99 руб.
IF( (P+N)*(1-10/100)<P , P , (P+N)*(1-10/100) ) => ЕСЛИ (цена_поставщика плюс наценка) минус 10% МЕНЬШЕ цена_поставщика ТОГДА цена_поставщика ИНАЧЕ (цена_поставщика плюс наценка) минус 10%
IF ( S>0 , P0 , P+N ) => ЕСЛИ есть на нашем складе (по основному прайс-листу), ТО наша_цена ИНАЧЕ цена_поставщика+наценка
IF (S>0 or P=0,P0,RN(P+N,1000)) => ЕСЛИ есть на нашем складе (по основному прайс-листу) ИЛИ цена_поставщика=0 , ТО наша_цена ИНАЧЕ Нормализовано(цена_поставщика+наценка)
-
(в версии 0.0.3.88) ↩
Updated