forum.bitel.ru
http://forum.bitel.ru/

Баланс абонента
http://forum.bitel.ru/viewtopic.php?f=22&t=4656
Страница 1 из 1

Автор:  stanislav [ 13 окт 2010, 14:17 ]
Заголовок сообщения:  Баланс абонента

У меня вопрос по балансу абонентов.
Дело в том, что записи в таблице contract_balance в текущем месяце появляются только после того как баланс абонента изменился, например, поступил платеж. А мне нужно, наоборот, вычислить тех, кто не платил.
Я делаю примерно такой запрос:
SELECT summa1+summa2-summa3-summa4 FROM contract_balance WHERE yy=2010 AND mm=10
и получаю незначительное на сегодняшний день кол-во договоров.
Вопрос в том, как получить полный список договоров с их балансом.
Версия биллинга 4.6

Автор:  dimOn [ 13 окт 2010, 14:20 ]
Заголовок сообщения:  Re: Баланс абонента

Ну так смотрите за прошлый, исходящий остаток. Что значит "вычислить тех, кто не платил".

Автор:  skn [ 13 окт 2010, 14:54 ]
Заголовок сообщения:  Re: Баланс абонента

"кто не платил" - это те кто не платил в этом месяце? если да то тогда смотрите таблицу с платежами

Автор:  stanislav [ 13 окт 2010, 15:07 ]
Заголовок сообщения:  Re: Баланс абонента

"Вычислить тех, кто не платит" означает определить абонентов с отрицательным балансом.
Например менее -10 руб.

Автор:  skyb [ 13 окт 2010, 15:12 ]
Заголовок сообщения:  Re: Баланс абонента

может это?

Автор:  Cromeshnic [ 14 окт 2010, 10:13 ]
Заголовок сообщения:  Re: Баланс абонента

CREATE FUNCTION `get_balance`(contract int(10) unsigned) RETURNS decimal(10,2)
READS SQL DATA
COMMENT 'returns current balance by cid'
BEGIN DECLARE balance decimal(10,2); SELECT summa1+summa2-summa3-summa4 INTO balance FROM contract_balance where cid=contract and (yy<<4)+mm<=(year(now())<<4)+month(now()) ORDER BY yy desc, mm desc LIMIT 0,1; RETURN balance; END

Автор:  stanislav [ 14 окт 2010, 12:08 ]
Заголовок сообщения:  Re: Баланс абонента

Можно немного подробнее.
Что это, и как им воспользоваться?

Автор:  Cromeshnic [ 14 окт 2010, 13:46 ]
Заголовок сообщения:  Re: Баланс абонента

Это SQL-запрос на создание сохранённой функции с именем get_balance(cid), которая возвращает текущий баланс договора. Удобно потом писать в запросах.

Например:
Код:
select c.id, c.title, get_balance(c.id) from contract c;

Автор:  stanislav [ 14 окт 2010, 15:56 ]
Заголовок сообщения:  Re: Баланс абонента

Большое спасибо за консультацию, запрос работает.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/