BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 16 июн 2024, 13:53

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 23 ] 
Автор Сообщение
СообщениеДобавлено: 07 мар 2007, 17:01 
Не в сети

Зарегистрирован: 28 ноя 2006, 11:43
Сообщения: 38
Карма: 0
Можно ли сделать так, чтобы на счета с отрицательным балансом - абонентская плата не начислялась? А то бывает так, что клиент не работает уже давно, а договор еще не расторгли - при этом абон. плата исправно начисляется, но оплачивать ее вряд ли когда-нибудь уже будут .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 мар 2007, 17:21 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
нет, такой возможности нет. в таком случае нужно просто закрывать период услуги абонплаты.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 ноя 2007, 15:13 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
Можно сделать, чтобы в условиях наработки можно было указывать также и наработку за предыдущий месяц, т.к. абонплаты обычно предполагает предоплату? тогда данную задачу уже решить можно...
Хотя, видимо лучше прогу запускать раз в месяц, которая снимает наработки по абонплатам, если не было наработки по какойто услуге. либо задачу такую на биллинге готовую исполнить в планировщике.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 янв 2008, 20:25 
Не в сети

Зарегистрирован: 04 июн 2007, 19:50
Сообщения: 70
Карма: 0
Прошел уже почти год. Есть какие-нибудь изменения по данной теме.
ITT писал(а):
Можно ли сделать так, чтобы на счета с отрицательным балансом - абонентская плата не начислялась? А то бывает так, что клиент не работает уже давно, а договор еще не расторгли - при этом абон. плата исправно начисляется, но оплачивать ее вряд ли когда-нибудь уже будут .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 янв 2008, 15:41 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
В 4.4 версии будет понятие приостановки договора. Такие договора нужно будет приостанавливать и абонку снимать не будет за период приостановки. А в дальнейшем может автоприостановку сделаем тогда на основании баланса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 янв 2008, 01:23 
Не в сети

Зарегистрирован: 29 мар 2007, 16:21
Сообщения: 109
Откуда: Иркутск
Карма: 2
tottaly cool

а можно на время приостановки с них еще брать 200р/мес?
что бы приостановка не была совсем бесплатной?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 сен 2008, 00:06 
Не в сети

Зарегистрирован: 28 июл 2007, 22:57
Сообщения: 110
Карма: 0
Администратор писал(а):
В 4.4 версии будет понятие приостановки договора. Такие договора нужно будет приостанавливать и абонку снимать не будет за период приостановки. А в дальнейшем может автоприостановку сделаем тогда на основании баланса.


а можно делать приостановку задним числом?
т.е если у абонента в течении месяца не было траффика то абонплату за этот месяц не снимать? (а узнать это можно только в конце месяца, когда абонплата уже списана)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 сен 2008, 16:21 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Можно, сделать переначисление и все.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 сен 2008, 01:28 
Не в сети

Зарегистрирован: 28 июл 2007, 22:57
Сообщения: 110
Карма: 0
Администратор писал(а):
Можно, сделать переначисление и все.


имеется ввиду задача планировщика "начисление NPay абонплат" ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 сен 2008, 20:33 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Модули->Абонплата->Начисление


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 сен 2008, 19:27 
Не в сети

Зарегистрирован: 28 июл 2007, 22:57
Сообщения: 110
Карма: 0
stark писал(а):
Модули->Абонплата->Начисление


в документации (глава18 п6 ) пишут что то же самое делает задача планировщика "Начисление npay абонплат" и если мы поменяем статус договора задним числом, например в 23.30 последнего дня текущего месяца, а замем в 0.10 запустится пересчет абонплат то все абонплаты пересчитаются
я прав?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 сен 2008, 15:58 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Да


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 окт 2008, 00:26 
Не в сети

Зарегистрирован: 28 июл 2007, 22:57
Сообщения: 110
Карма: 0
а как правильно сделать запуск задачи планировщика в 23.30 последнего дня месяца. как узнать какое это число - оно же постоянно меняется :(
фокус как в екселе с нулевым днем месяца пройдет? (что нулевой день месяца трактуется как последний день предыдущего месяца?)

или надо запускать скрипт каждый день и внутри с помошью класса calendar разбираться?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 окт 2008, 14:29 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
В документации:
Цитата:
Необходимо учитывать что при отработке задачи начисления берется час предшествующий текущему. Это дает возможность снимать абонплату в конце месяца, установив запуск задачи на 0 часов последующего месяца.

http://bgbilling.ru/v4.5/doc/ch18s06.html

Это стандартная схема для всех начислений. Т.е. ставите задачу на 0 часов 55 минут например каждого месяца, и она обсчитвает предыдущий.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 ноя 2008, 03:06 
Не в сети

Зарегистрирован: 28 июл 2007, 22:57
Сообщения: 110
Карма: 0
вот написал тестовый скриптик
Код:
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 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
1 - если нет записи, значит статус "активен".
2 - я исправил API доку, смотрите
3 - по-умолчанию, т.е. активен
4 - не обязательно, см. 1,3
5 - KernelConst, смотрите поправеленную javadoc


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 янв 2009, 04:06 
Не в сети

Зарегистрирован: 28 июл 2007, 22:57
Сообщения: 110
Карма: 0
Цитата:
5 - KernelConst

а как им пользоваться?
пишу:
Код:
import bitel.billing.common.KernelConst.*;
import java.util.*;
import java.text.*;

print("test stat="+KernelConst.CONTRACT_STATUS_SUSPENDED);

а получаю void :(
версия bgbilling 4.5


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 янв 2009, 14:25 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
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;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 фев 2009, 20:53 
Не в сети

Зарегистрирован: 28 июл 2007, 22:57
Сообщения: 110
Карма: 0
Почему приведенный ниже код печатет 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());


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 фев 2009, 19:04 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 фев 2009, 00:37 
Не в сети

Зарегистрирован: 28 июл 2007, 22:57
Сообщения: 110
Карма: 0
stark писал(а):
сделайте запрос :
select * from contract_status
where cid = xxx

пусто там
если убрать where то там в таблице несколько строчек, относящихся к cid'ам которым я менял статус вручную


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 фев 2009, 01:21 
Не в сети

Зарегистрирован: 28 июл 2007, 22:57
Сообщения: 110
Карма: 0
up
у вас проблема не повторяется?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 фев 2009, 13:22 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
msh писал(а):
up
у вас проблема не повторяется?


Да, действительно была ошибка при получении статуса. Исправили. обновитесь.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.087s | 64 Queries | GZIP : On ]