Несписание абонентки

Технические вопросы по UTM 5.0
Ответить
mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Несписание абонентки

Сообщение mikkey finn »

Я вот тут в очередной раз решил посмотреть на ужасы нашего городка, нашел такое

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

 ./fix_unabon -h
UTM5 Billing System periodic_service_links table check utility (c) NetUP 2001-2008

Usage:
  -c     [Path to UTM5 config file, default /netup/utm5/utm5.cfg]
  -l     [Path to log file, default ./fix_unabon.log]
  -f     [Force fix]
  -a     [Recalc abon for created slinks]
  -b     [Recalc prepaid for created slinks]
  -h     [Show usage information]
Кто что расскажет?

Аватара пользователя
alexus
Сообщения: 448
Зарегистрирован: Сб окт 11, 2008 10:31

Сообщение alexus »

Позвони в техподдержку, спроси и напиши нам сюда ответ :)

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Сообщение Magnum72 »

Это фиксилка бага в одной из предыдущих версий, обладателям версии 007 update 4 можно не заморачиватся

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

у меня как раз предыдущая версия, 5.2.1-006. Баг заключается в несписании абонентки с неопределенного числа аккаунтов без видимых причин(не было на период блокировок, галка "безлимитный режим" не трогалась, услуги не пропадали)?

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Сообщение Magnum72 »

mikkey finn писал(а):у меня как раз предыдущая версия, 5.2.1-006. Баг заключается в несписании абонентки с неопределенного числа аккаунтов без видимых причин(не было на период блокировок, галка "безлимитный режим" не трогалась, услуги не пропадали)?
Запрос выполни:

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

SELECT sl.account_id, psl.unabon_period, (
   SELECT SUM(bi.expire_date - IF(bi.start_date > UNIX_TIMESTAMP('2009-07-01'), bi.start_date, UNIX_TIMESTAMP('2009-07-01')))
   FROM blocks_info as bi
   WHERE bi.account_id = sl.account_id
   AND bi.is_deleted = '1'
   AND (bi.expire_date BETWEEN UNIX_TIMESTAMP('2009-07-01') AND UNIX_TIMESTAMP())
   AND bi.unabon = '1'
   GROUP BY bi.account_id
) as 'r_unabon_period'
FROM service_links as sl, periodic_service_links as psl
WHERE sl.id = psl.id
AND psl.is_deleted = '0'
AND sl.is_deleted = '0'
AND psl.unabon_period > (
   SELECT SUM(bi.expire_date - IF(bi.start_date > UNIX_TIMESTAMP('2009-07-01'), bi.start_date, UNIX_TIMESTAMP('2009-07-01')))
   FROM blocks_info as bi
   WHERE bi.account_id = sl.account_id
   AND bi.is_deleted = '1'
   AND (bi.expire_date BETWEEN UNIX_TIMESTAMP('2009-07-01') AND UNIX_TIMESTAMP())
   AND bi.unabon = '1'
   GROUP BY bi.account_id
)

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

у меня эта радость обнаружилась в декабре прошлого года и январе этого.

Pulse
Сообщения: 945
Зарегистрирован: Вт окт 03, 2006 12:58

Сообщение Pulse »

Magnum72 писал(а):
Запрос выполни:

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

SELECT sl.account_id, psl.unabon_period, (
   SELECT SUM(bi.expire_date - IF(bi.start_date > UNIX_TIMESTAMP('2009-07-01'), bi.start_date, UNIX_TIMESTAMP('2009-07-01')))
   FROM blocks_info as bi
   WHERE bi.account_id = sl.account_id
   AND bi.is_deleted = '1'
   AND (bi.expire_date BETWEEN UNIX_TIMESTAMP('2009-07-01') AND UNIX_TIMESTAMP())
   AND bi.unabon = '1'
   GROUP BY bi.account_id
) as 'r_unabon_period'
FROM service_links as sl, periodic_service_links as psl
WHERE sl.id = psl.id
AND psl.is_deleted = '0'
AND sl.is_deleted = '0'
AND psl.unabon_period > (
   SELECT SUM(bi.expire_date - IF(bi.start_date > UNIX_TIMESTAMP('2009-07-01'), bi.start_date, UNIX_TIMESTAMP('2009-07-01')))
   FROM blocks_info as bi
   WHERE bi.account_id = sl.account_id
   AND bi.is_deleted = '1'
   AND (bi.expire_date BETWEEN UNIX_TIMESTAMP('2009-07-01') AND UNIX_TIMESTAMP())
   AND bi.unabon = '1'
   GROUP BY bi.account_id
)
а чо он делает?

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

грузит базу данных.

rem_111
Сообщения: 22
Зарегистрирован: Вт сен 19, 2006 18:10
Контактная информация:

Сообщение rem_111 »

Pulse писал(а):
Magnum72 писал(а):
Запрос выполни:

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

SELECT sl.account_id, psl.unabon_period, (
   SELECT SUM(bi.expire_date - IF(bi.start_date > UNIX_TIMESTAMP('2009-07-01'), bi.start_date, UNIX_TIMESTAMP('2009-07-01')))
   FROM blocks_info as bi
   WHERE bi.account_id = sl.account_id
   AND bi.is_deleted = '1'
   AND (bi.expire_date BETWEEN UNIX_TIMESTAMP('2009-07-01') AND UNIX_TIMESTAMP())
   AND bi.unabon = '1'
   GROUP BY bi.account_id
) as 'r_unabon_period'
FROM service_links as sl, periodic_service_links as psl
WHERE sl.id = psl.id
AND psl.is_deleted = '0'
AND sl.is_deleted = '0'
AND psl.unabon_period > (
   SELECT SUM(bi.expire_date - IF(bi.start_date > UNIX_TIMESTAMP('2009-07-01'), bi.start_date, UNIX_TIMESTAMP('2009-07-01')))
   FROM blocks_info as bi
   WHERE bi.account_id = sl.account_id
   AND bi.is_deleted = '1'
   AND (bi.expire_date BETWEEN UNIX_TIMESTAMP('2009-07-01') AND UNIX_TIMESTAMP())
   AND bi.unabon = '1'
   GROUP BY bi.account_id
)
а чо он делает?
2 смысл этого запроса:
Сколько абонентов подключилось за текущий месяц )

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

На первый взгляд получается сводная таблица из тех, у кого стояла в какой-либо форме галка "не списывать абонплату".
При этом сравниваются периоды несписания по услуге и по блокировкам.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

К этому запросу сильно не помешает индекс вида:

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

 create index my_bi on blocks_info(account_id,is_deleted);
Да, касаемо запроса - есть табличка.

Ответить