Как "вытащить" оставшийся предоплаченный трафик из

Технические вопросы по UTM 5.0
Ответить
nicol@s
Сообщения: 114
Зарегистрирован: Ср окт 14, 2009 15:52

Как "вытащить" оставшийся предоплаченный трафик из

Сообщение nicol@s »

Добрый день!
Версия UTM 5 (5.2.1–007)
Возникла такая ситуация: приходит абонент и заключает договор на подключение. Абонентский отдел делает все необходимые телодвижения (в хорошем смысле этого слова:)). Абоненту подключают лимитный тарифный план с предоплаченным трафиком в 1 Гб. Все успешно. Абонент попользовался интернетом, выкачал весь предоплаченный трафик, ушел в "минус". Полез в личный кабинет и увидел, что у него осталось 220,34 Мб предоплаченного трафика. Позвонил нам - начали проверять.
Личный кабинет самописный на основе viewtopic.php?t=6460&postdays=0&postord ... a&start=15
Создавая в базе абоненту тариф, абон. отдел поставил галочки пересчета абонентской платы и предоплаченного трафика. Абонент подключался к интернету 7 марта==> ему должно было начислиться (1000/31)*25=804 Мб.

В Личном кабинете остаток предоплаченного трафика считается так:
сначала вытаскиваем все необходимые данные

Код: Выделить всё

SELECT t.name as name,psd.cost as cost,psl.discounted_in_curr_period as curr,ib.cost as cost2,tst.prepaid_units as prepaid,d.custom_prepay as custom,d.downed_as_prepaid as downed, d.qnt as qnt FROM tariffs as t,account_tariff_link as atl,service_links as sl,periodic_services_data as psd,periodic_service_links as psl,iptraffic_services_data as isd,traf_serv_tclasses as tst,iptraffic_borders as ib,iptraffic_service_links as isl, downloaded as d WHERE atl.account_id = 7198 AND atl.tariff_id = t.id AND atl.id = sl.tariff_link_id AND sl.service_id = psd.id AND sl.id = psl.id AND sl.service_id = isd.id AND isd.tst_id = tst.tst_id AND tst.borders_id = ib.borders_id AND sl.id = isl.id AND isl.downloaded_id = d.downloaded_id AND d.tclass_id=10 AND atl.is_deleted=0 AND t.is_deleted=0 AND sl.is_deleted=0 AND psd.is_deleted=0 AND psl.is_deleted=0 AND isd.is_deleted=0;
+----------------+------+------------------+-------+------------+--------+-----------+-----------+
| name           | cost | curr             | cost2 | prepaid    | custom | downed    | qnt       |
+----------------+------+------------------+-------+------------+--------+-----------+-----------+
| п▓п╬я─п╬п╠п╣п╧ |  250 | 195.917264842231 |     2 | 1073741824 |      0 | 843055104 | 1047748537 | 
+----------------+------+------------------+-------+------------+--------+-----------+-----------+
1 row in set (6.45 sec)
Далее простые арифметические операции:

Код: Выделить всё

$ost_traffic = round(($data_table2['prepaid']+$data_table2['custom']-$data_table2['downed'])/1024/1024, 2);
где $data_table2['prepaid'] - предоплаченный трафик, $data_table2['custom'] - начисленный руками (через админку) предоплаченный трафик, $data_table2['downed'] - скачанный предоплаченный трафик. Вот и получается:

Код: Выделить всё

 1024+0-804=220 Мб.
Но ведь у абонента не осталось предоплаченного трафика!!
Я всегда считал, что $data_table2['prepaid'] есть ни что иное, как предоплаченный трафик, который зачисляется абоненту в зависимости от тарифа и времени подключения. Если это так, то почему для этого абонента в prepaid внесено 1 Гб, а не 804 Мб????
Отчет по трафику в админке показывает:
Изображение

Т.е. все верно, 804 Мб предоплаченного трафика абонент использовал и дальше сидит в инете за деньги.
При этом, если через админку посмотреть колчество оставшегося предоплаченного трафика, то оно равно 0.
Может я жестко ошибаюсь и предоплаченный трафик это не $data_table2['prepaid']??
Тогда подскажите, пожалуйста, как правильно вытащить оставшийся предоплаченный трафик!
Спасибо.
Последний раз редактировалось nicol@s Вт мар 30, 2010 17:05, всего редактировалось 1 раз.

nicol@s
Сообщения: 114
Зарегистрирован: Ср окт 14, 2009 15:52

Сообщение nicol@s »

На тестовом юзере поменял тариф с пересчетом абонентки и предоплаченного трафика. В итоге в админке показано, что зачислено 46 Мб предоплаченного трафика:
Изображение

Смотрю в мускуле:

Код: Выделить всё

SELECT t.name as name,psd.cost as cost,psl.discounted_in_curr_period as curr,ib.cost as cost2,tst.prepaid_units as prepaid,d.custom_prepay as custom,d.downed_as_prepaid as downed, d.qnt as qnt FROM tariffs as t,account_tariff_link as atl,service_links as sl,periodic_services_data as psd,periodic_service_links as psl,iptraffic_services_data as isd,traf_serv_tclasses as tst,iptraffic_borders as ib,iptraffic_service_links as isl, downloaded as d WHERE atl.account_id = 1819 AND atl.tariff_id = t.id AND atl.id = sl.tariff_link_id AND sl.service_id = psd.id AND sl.id = psl.id AND sl.service_id = isd.id AND isd.tst_id = tst.tst_id AND tst.borders_id = ib.borders_id AND sl.id = isl.id AND isl.downloaded_id = d.downloaded_id;
И вижу:

Код: Выделить всё

+----------------------------+------+------------------+-------+------------+--------+--------+-----------+
| name                       | cost | curr             | cost2 | prepaid    | custom | downed | qnt       |
+----------------------------+------+------------------+-------+------------+--------+--------+-----------+
| п▓п╬я─п╬п╠п╣п╧             |  250 | 11.4358082847316 |     2 | 1073741824 |      0 |      0 |         0 | 
+----------------------------+------+------------------+-------+------------+--------+--------+-----------+
prepaid = 1 Гб.
Где же найти предоплаченный трафик?

nicol@s
Сообщения: 114
Зарегистрирован: Ср окт 14, 2009 15:52

Сообщение nicol@s »

Может быть каждый раз предоплаченный трафик, при просмотре через админку, высчитывается как функция в зависимости от времени подключения тарифа абоненту, базового количества предоплаченного трафика по тарифу, скачанного трафика?

nicol@s
Сообщения: 114
Зарегистрирован: Ср окт 14, 2009 15:52

Сообщение nicol@s »

Диалог самого с собой:)
Посмотрел в логах, что происходит, когда через админку пытаюсь посмотреть оставшийся предоплаченный трафик - происходит вызов функции rpcf_get_prepaid_units. С помощью фукнции на php из темы viewtopic.php?t=6402&postdays=0&postorder=asc&start=0 получил для конкретного абонента:

Код: Выделить всё

Array ( [bytes_in_mbyte] => 1048576 [pinfo_size] => 1 [0] => Array ( [id] => 10 [old] => 0 [cur] => 659554304 ) ) 
Но считается или откуда-то вытаскивается значение [cur] => 659554304 пока остается непонятным:(

starchik
Сообщения: 461
Зарегистрирован: Сб ноя 22, 2008 22:07

Сообщение starchik »

nicol@s писал(а):Диалог самого с собой:)
у тебя не плохо получается :)

nicol@s
Сообщения: 114
Зарегистрирован: Ср окт 14, 2009 15:52

Сообщение nicol@s »

:D

starchik
Сообщения: 461
Зарегистрирован: Сб ноя 22, 2008 22:07

Сообщение starchik »

вобще лучше в техподдержку обратиться с таким вопросом. там то они точно ответят ток хз как скоро :)

nicol@s
Сообщения: 114
Зарегистрирован: Ср окт 14, 2009 15:52

Сообщение nicol@s »

Я думаю они нам не помогут - мы не покупали услугу "Техническая поддержка"

Ответить