forum.bitel.ru http://forum.bitel.ru/ |
|
Абонентская плата на счет с отрицательным балансом... http://forum.bitel.ru/viewtopic.php?f=16&t=130 |
Страница 1 из 1 |
Автор: | ITT [ 07 мар 2007, 17:01 ] |
Заголовок сообщения: | Абонентская плата на счет с отрицательным балансом... |
Можно ли сделать так, чтобы на счета с отрицательным балансом - абонентская плата не начислялась? А то бывает так, что клиент не работает уже давно, а договор еще не расторгли - при этом абон. плата исправно начисляется, но оплачивать ее вряд ли когда-нибудь уже будут . |
Автор: | Администратор [ 07 мар 2007, 17:21 ] |
Заголовок сообщения: | |
нет, такой возможности нет. в таком случае нужно просто закрывать период услуги абонплаты. |
Автор: | Akhmat [ 23 ноя 2007, 15:13 ] |
Заголовок сообщения: | |
Можно сделать, чтобы в условиях наработки можно было указывать также и наработку за предыдущий месяц, т.к. абонплаты обычно предполагает предоплату? тогда данную задачу уже решить можно... Хотя, видимо лучше прогу запускать раз в месяц, которая снимает наработки по абонплатам, если не было наработки по какойто услуге. либо задачу такую на биллинге готовую исполнить в планировщике. |
Автор: | Lavrenov_Sergey [ 24 янв 2008, 20:25 ] |
Заголовок сообщения: | Re: Абонентская плата на счет с отрицательным балансом... |
Прошел уже почти год. Есть какие-нибудь изменения по данной теме. ITT писал(а): Можно ли сделать так, чтобы на счета с отрицательным балансом - абонентская плата не начислялась? А то бывает так, что клиент не работает уже давно, а договор еще не расторгли - при этом абон. плата исправно начисляется, но оплачивать ее вряд ли когда-нибудь уже будут .
|
Автор: | Администратор [ 25 янв 2008, 15:41 ] |
Заголовок сообщения: | |
В 4.4 версии будет понятие приостановки договора. Такие договора нужно будет приостанавливать и абонку снимать не будет за период приостановки. А в дальнейшем может автоприостановку сделаем тогда на основании баланса. |
Автор: | blib [ 27 янв 2008, 01:23 ] |
Заголовок сообщения: | |
tottaly cool а можно на время приостановки с них еще брать 200р/мес? что бы приостановка не была совсем бесплатной? |
Автор: | msh [ 01 сен 2008, 00:06 ] |
Заголовок сообщения: | |
Администратор писал(а): В 4.4 версии будет понятие приостановки договора. Такие договора нужно будет приостанавливать и абонку снимать не будет за период приостановки. А в дальнейшем может автоприостановку сделаем тогда на основании баланса.
а можно делать приостановку задним числом? т.е если у абонента в течении месяца не было траффика то абонплату за этот месяц не снимать? (а узнать это можно только в конце месяца, когда абонплата уже списана) |
Автор: | Администратор [ 02 сен 2008, 16:21 ] |
Заголовок сообщения: | |
Можно, сделать переначисление и все. |
Автор: | msh [ 04 сен 2008, 01:28 ] |
Заголовок сообщения: | |
Администратор писал(а): Можно, сделать переначисление и все.
имеется ввиду задача планировщика "начисление NPay абонплат" ? |
Автор: | stark [ 04 сен 2008, 20:33 ] |
Заголовок сообщения: | |
Модули->Абонплата->Начисление |
Автор: | msh [ 06 сен 2008, 19:27 ] |
Заголовок сообщения: | |
stark писал(а): Модули->Абонплата->Начисление
в документации (глава18 п6 ) пишут что то же самое делает задача планировщика "Начисление npay абонплат" и если мы поменяем статус договора задним числом, например в 23.30 последнего дня текущего месяца, а замем в 0.10 запустится пересчет абонплат то все абонплаты пересчитаются я прав? |
Автор: | Администратор [ 08 сен 2008, 15:58 ] |
Заголовок сообщения: | |
Да |
Автор: | msh [ 27 окт 2008, 00:26 ] |
Заголовок сообщения: | |
а как правильно сделать запуск задачи планировщика в 23.30 последнего дня месяца. как узнать какое это число - оно же постоянно меняется ![]() фокус как в екселе с нулевым днем месяца пройдет? (что нулевой день месяца трактуется как последний день предыдущего месяца?) или надо запускать скрипт каждый день и внутри с помошью класса calendar разбираться? |
Автор: | Администратор [ 27 окт 2008, 14:29 ] |
Заголовок сообщения: | |
В документации: Цитата: Необходимо учитывать что при отработке задачи начисления берется час предшествующий текущему. Это дает возможность снимать абонплату в конце месяца, установив запуск задачи на 0 часов последующего месяца.
http://bgbilling.ru/v4.5/doc/ch18s06.html Это стандартная схема для всех начислений. Т.е. ставите задачу на 0 часов 55 минут например каждого месяца, и она обсчитвает предыдущий. |
Автор: | msh [ 05 ноя 2008, 03:06 ] |
Заголовок сообщения: | |
вот написал тестовый скриптик Код: import bitel.billing.server.contract.bean.*;
import bitel.billing.server.tariff.bean.*; import bitel.billing.server.script.event.*; import bitel.billing.server.ipn.bean.*; import java.util.*; import java.text.*; private long gettraff(sid){ //sid=1 -входящий //sid=2 исходящий //получение названия нужной таблици с траффиком evdate=event.getGenerateTime().clone(); //обсчитаваем предыдущий месяц evdate.add(Calendar.MONTH,-1); datefrm = new SimpleDateFormat("yyyyMM"); evyear=datefrm.format(evdate.getTime()).toString(); print("working date "+evyear); //запрос из базы траффика ps = con.prepareStatement("SELECT SUM(amount) FROM ipn_contract_data_3_"+evyear+" WHERE cid=? AND sid=? AND dt>'"+evyear+"01'"); ps.setInt( 1, cid); ps.setInt( 2, sid); rs = ps.executeQuery(); rs.first(); return rs.getLong(1)/1048576; //в мегабайтах } STATUS_ACTIV=0; STATUS_STOPPED=4; if( event.flag == 2 && event.getContractID() == 18){ //наш таймер //этот скрип надо запускать в первый час начала месяца, до начисления абонплат cid = event.getContractID(); input_traff=gettraff(1); output_traff=gettraff(2); print("traffic input "+input_traff); print("traffic output "+output_traff); //определяем пользовался ли пользователь инетом в этом месяце //для этого смотрим его исходящий и входящий траффик со 2го числа до конца месяца //исходящий должен быть 0, входящий < 1Гб //if ( ! (input_traff > 1024 || output_traf > 0)) { if (true){ //не было пользования услугой - ставим на этот месяц договору статус "приостановлен" //c начала прошлого месяца до конца прошлого месяца end_date=event.getGenerateTime().clone(); start_date=event.getGenerateTime().clone(); end_date.add( Calendar.DAY_OF_YEAR, -1 ); start_date.add(Calendar.MONTH,-1); //проверяем текущий статус csm=new ContractStatusManager(con); print("status"+csm.getStatus(cid,start_date).getStatus()); if (csm.getStatus(cid,start_date).getStatus() == STATUS_ACTIV){ //если статус договора был активным cstat = new ContractStatus(); cstat.setStatus(STATUS_STOPPED); //приостановлен cstat.setDate1(start_date); cstat.setDate2(end_date); cstat.setComment("автоматическая блокировка"); cstat.setContractId(cid); csm.updateStatus(cstat); } } } запускать его надо в 0.20 в первый день месяца до начисления абонплат. писалось под BGBiliing 4.4 есть некоторые вопросы 1)почему csm.getStatus(cid,start_date) возвращает null если у договора ни разу не менялся статус? 2)правильно я понимаю что csm.updateStatus(cstat) заносит запись в таблицу смены статусов (с даты по дату), а setContractStatus просто глобально меняет статус договора и остался от старых версий 3) какой будет статус договора в том случае если я поставлю что он пристановлен с 1.11 до 30.11 по истечении этого срока? 4) надо ли добавлять запись "активен" после истечения срока приостановки? 5) откуда брать коды статусов договоров? (я их определил эспериментально) |
Автор: | Администратор [ 10 ноя 2008, 12:44 ] |
Заголовок сообщения: | |
1 - если нет записи, значит статус "активен". 2 - я исправил API доку, смотрите 3 - по-умолчанию, т.е. активен 4 - не обязательно, см. 1,3 5 - KernelConst, смотрите поправеленную javadoc |
Автор: | msh [ 09 янв 2009, 04:06 ] |
Заголовок сообщения: | |
Цитата: 5 - KernelConst
а как им пользоваться? пишу: Код: import bitel.billing.common.KernelConst.*;
import java.util.*; import java.text.*; print("test stat="+KernelConst.CONTRACT_STATUS_SUSPENDED); а получаю void ![]() версия bgbilling 4.5 |
Автор: | stark [ 11 янв 2009, 14:25 ] |
Заголовок сообщения: | |
msh писал(а): Цитата: 5 - KernelConst а как им пользоваться? пишу: Код: import bitel.billing.common.KernelConst.*; import java.util.*; import java.text.*; print("test stat="+KernelConst.CONTRACT_STATUS_SUSPENDED); а получаю void ![]() версия bgbilling 4.5 измените строчку : Код: import bitel.billing.common.KernelConst.*; на Код: import bitel.billing.common.KernelConst;
|
Автор: | msh [ 01 фев 2009, 20:53 ] |
Заголовок сообщения: | |
Почему приведенный ниже код печатет status: 4 (CONTRACT_STATUS_SUSPENDED), хотя в клиенте пишется что статус активен? Месяц назад договор существовал, его статус не менялся никогда. Код: start_date=event.getGenerateTime().clone();
start_date.add(Calendar.MONTH,-1); csm=new ContractStatusManager(con); print("status: "+ csm.getStatus(cid,start_date).getStatus()); |
Автор: | stark [ 03 фев 2009, 19:04 ] |
Заголовок сообщения: | |
msh писал(а): Почему приведенный ниже код печатет status: 4 (CONTRACT_STATUS_SUSPENDED), хотя в клиенте пишется что статус активен? Месяц назад договор существовал, его статус не менялся никогда.
Код: start_date=event.getGenerateTime().clone(); start_date.add(Calendar.MONTH,-1); csm=new ContractStatusManager(con); print("status: "+ csm.getStatus(cid,start_date).getStatus()); сделайте запрос : select * from contract_status where cid = xxx |
Автор: | msh [ 05 фев 2009, 00:37 ] |
Заголовок сообщения: | |
stark писал(а): сделайте запрос :
select * from contract_status where cid = xxx пусто там если убрать where то там в таблице несколько строчек, относящихся к cid'ам которым я менял статус вручную |
Автор: | msh [ 11 фев 2009, 01:21 ] |
Заголовок сообщения: | |
up у вас проблема не повторяется? |
Автор: | stark [ 11 фев 2009, 13:22 ] |
Заголовок сообщения: | |
msh писал(а): up
у вас проблема не повторяется? Да, действительно была ошибка при получении статуса. Исправили. обновитесь. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |