Страница 1 из 2
Expressions
Добавлено: Пн ноя 10, 2008 11:06 am
Turbid
http://abills.net.ua/wiki/doku.php?id=a ... ules:dv:ru
PARAMETER_TYPE (Костанты):
...
...
PRICE_IN - Цена за входящий трафик
PRICE_OUT - Цена за исходящий трафик
Примеры
...
...
Если суммарные трафик за учётный период больше 1000 мегабайт, то цена за 1 мб. 0.2 расчётных единицы
TRAFFIC_SUM>1000=
PRICE:0.2;
Какой именно
PRICE имеется в ввиду в примере (IN, OUT, SUM)?
Добавлено: Пн ноя 10, 2008 11:41 am
~AsmodeuS~
опечаточка должен быть PRICE_IN / OUT
Добавлено: Пн ноя 10, 2008 1:36 pm
Turbid
Что-то не получается заставить их работать
Требуется: считать входящий траффик по одной цене, если он превышает определнный объем, то пересчитать по другой цене. Делаю так:
В
/ Система/ Dialup / VPN/ Тарифные планы/ Интервалы/ задаю
Тарифы трафика (1 Mb) IN:
x (первоначальная цена)
в Expressions
TRAFFIC_IN>
n=PRICE_IN:
y;
TRAFFIC_IN>
m=PRICE_IN:
z;
Но перейдя порог в
n видно, что цена начисляется по прежнему по
x. Это раз. И тутже еще один вопрос: нужно чтобы весь траффик пересчитывался по цене превышения. Я так понимаю что здесь будет считаться по новой цене только только уже новый траффик, а старый пересчитываться не будет? Как это организовать правильно?
Добавлено: Пн ноя 10, 2008 3:06 pm
chtito2
Turbid писал(а):
в Expressions
TRAFFIC_IN>n=PRICE_IN:y;
TRAFFIC_IN>m=PRICE_IN:z;
Но перейдя порог в n видно, что цена начисляется по прежнему по x.
Учитывается только последняя TRAFFIC_IN.
Добавлено: Вт ноя 11, 2008 5:47 am
Turbid
Учитывается только последняя TRAFFIC_IN.
Как-то это расходится с этим:
Система просматривает формулы с верху до низу и заканчивает просмотр на первом неверном выражении.
Как сделать чтобы если пользователь в месяц накачал, например, 300 метров - цена за метр 2 рубля, 600 - 1,5, 1000 - 1?
Добавлено: Вт ноя 11, 2008 7:08 am
chtito2
Как сделать чтобы если пользователь в месяц накачал, например, 300 метров - цена за метр 2 рубля, 600 - 1,5, 1000 - 1?
Наверное заплатить автору

Или самому.
Добавлено: Вт ноя 11, 2008 10:25 am
chtito2
Turbid писал(а):
Как-то это расходится с этим:
Система просматривает формулы с верху до низу и заканчивает просмотр на первом неверном выражении.
Я просто в коде посмотрел, что во время разбора кода выражений результат записывается в хэш по ключу в левой части выражения, в вашем случае по ключу "TRAFFIC_IN". Таким образом запоминается только последнее выражение с участием TRAFFIC_IN.
Добавлено: Вт ноя 11, 2008 1:38 pm
Turbid
chtito2 писал(а):Как сделать чтобы если пользователь в месяц накачал, например, 300 метров - цена за метр 2 рубля, 600 - 1,5, 1000 - 1?
Наверное заплатить автору

Или самому.
Ув. ~AsmodeuS~, есть такой модуль или возможность его написать? Сколько будет это стоить?
Добавлено: Вт ноя 11, 2008 4:25 pm
~AsmodeuS~
Turbid писал(а):Учитывается только последняя TRAFFIC_IN.
Как-то это расходится с этим:
Система просматривает формулы с верху до низу и заканчивает просмотр на первом неверном выражении.
Как сделать чтобы если пользователь в месяц накачал, например, 300 метров - цена за метр 2 рубля, 600 - 1,5, 1000 - 1?
Если пользователь за учётный период накачал: 300 метров - цена за 1 мб. 2 расчётных единицы; 600 - 1.5; больше 1000 - 1
TRAFFIC_SUM>300=PRICE:2;
TRAFFIC_SUM>600=PRICE:1.5;
TRAFFIC_SUM>1000=PRICE:1;
Добавлено: Вт ноя 11, 2008 5:57 pm
chtito2
Ах да

Глянул на код еще раз, там элемент хэша затирается только после сравнений

Странно что ваша не работает.
Добавлено: Ср ноя 12, 2008 11:26 am
Turbid
Значит так: в тарифный план ставлю цену за входящий 3, и вот такое выражение:
Код: Выделить всё
TRAFFIC_IN>10=PRICE_IN:2;
TRAFFIC_IN>20=PRICE_IN:1.5;
TRAFFIC_IN>30=PRICE_IN:1;
Захожу в статистику IPN одного из пользователей, накачавших за этот месяц уже 128Mb. Выбираю вышеописанный тарифный план и нажимаю пересчитать. В результате пересчета с него считывается 386 рублей, а не 128 (т.к. > 30Mb).
Куда смотреть?
Добавлено: Ср ноя 12, 2008 3:00 pm
~AsmodeuS~
екпрешины работают пока только для ДВ
Добавлено: Ср ноя 12, 2008 3:26 pm
chtito2
~AsmodeuS~ писал(а):екпрешины работают пока только для ДВ
Фак!

Вот лажа то мощнейшая.... Спасибо Turbid что поднял эту тему пока мы не успели запустить Абиллс в производство, в доках то ни фига не написано. Придется срочно лепить самостоятельное решение для Ipn... В очередной раз огромное спасибо автору. Щас еще выяснится, что купленный модуль карточек тоже только для Dv...
Добавлено: Ср ноя 12, 2008 3:36 pm
Turbid
chtito2 писал(а):
Фак!

Вот лажа то мощнейшая.... Спасибо Turbid что поднял эту тему пока мы не успели запустить Абиллс в производство, в доках то ни фига не написано. Придется срочно лепить самостоятельное решение для Ipn...
Временное решение вижу таким: например, для моего случая, можно завести 3 дополнительных тарифа и пересчитывать в зависимости от траффика по соответствующему. Надо подумать как автоматизировать еще.
chtito2 писал(а):В очередной раз огромное спасибо автору.
Это да.
Добавлено: Ср ноя 12, 2008 3:37 pm
chtito2
В libexec/linkupdown есть строчки:
print "Expresion:================================\n" if ($debug > 0);
my $RESULT = $Billing->expression($Dv->{UID}, \%expr, { START_PERIOD => $Dv->{ACCOUNT_ACTIVATE},
debug => $debug } );
Разве это не означает, что выражения поддерживаются в Ipn тоже?