BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 апр 2024, 20:21

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Начисление услуги RSCM (BGBS)
СообщениеДобавлено: 24 мар 2009, 17:42 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Пытаюсь из скрипта добавить начисление RSCM.
Делаю так:
Код:
   RSCM_contract_service_manager = new  ContractServiceManager(con, 9);
   RSCM_contract_service = new ContractService();
   RSCM_contract_service.setAmount(1);
   RSCM_contract_service.setComment("Создана автоматически");
   RSCM_contract_service.setContractId(cid);
   RSCM_contract_service.setDate(task_ExecuteDate_Calendar);
   RSCM_contract_service.setId(0);
   RSCM_contract_service.setService("Подключение - Интернет");
   RSCM_contract_service.setServiceId(17);
   RSCM_contract_service.setUnit("шт.");
   RSCM_contract_service_manager.updateContractService(RSCM_contract_service);


Ошибок никаких не происходит, но услуга не начисляется.

Прошу разработчиков подсказать.


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

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Код:
package bitel.billing.server.rscm;

import java.sql.SQLException;
import java.util.Calendar;

import bitel.billing.common.TimeUtils;
import bitel.billing.server.task.bean.RunTaskDataManager;

public class ActionRecalculate extends ActionBase
{
   public void doAction()
      throws SQLException
   {
      Calendar startMonth = TimeUtils.convertDateToCalendar( getDateParameter( "date" ) );
      String email = getParameter( "mail" );
      String cids = getParameter( "cids" );

      if( mid < 0 || startMonth == null )
      {
         setErrorStatus( "Ошибка параметров mid=" + mid + "; date=" + startMonth );
         return;
      }

      new RunTaskDataManager( con ).addTask( new RSCMRecalculator( mid, startMonth, email, cids ) );
   }
}

Код запуска переобсчета в модуле RSCM. cids - код договора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 мар 2009, 15:49 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Спасибо, но вы меня неправильно поняли или я плохо объясняю :)

Немножко поподробнее расскажу.

В тарифе для услуги RSCM "Подключение - Интернет" (sid = 17) прописана стоимость подключения.
Мне нужно в договоре-> RSCM указать, что определенного числа была оказана услуга "Подключение - Интернет" в количестве 1 штука.

В конфигурации RSCM прописано:
#начисление денег сразу по добавлению услуги в договор
hot.calc=1

так что начисление должно произойти автоматически.

Мне необходимо по определенному событию списать со счета стоимость подключения, т.е. указать что была оказана услуга (sid = 17) 1 шт.


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

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Цитата:
В конфигурации RSCM прописано:
#начисление денег сразу по добавлению услуги в договор
hot.calc=1

так что начисление должно произойти автоматически.

Ну если вы штатными средствами интерфейса это сделаете, оно и произойдет. Можно еще HTTP запросом акшен этот же вызвать.

Цитата:
Мне необходимо по определенному событию списать со счета стоимость подключения, т.е. указать что была оказана услуга (sid = 17) 1 шт.


Вставляете в базу запись об услуге и запускаете переобсчет за этот месяц по этому договору.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 мар 2009, 16:10 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Понятно. Спасибо.


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

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Никак не получается добавить задание на перерачет услуги RSCM.
Делаю так:
Код:
import java.sql.*;
import java.util.*;

import bitel.billing.server.contract.bean.*;
import bitel.billing.server.contract.object.bean.*;
import ru.bitel.bgbilling.plugins.crm.server.dao.*;
import ru.bitel.bgbilling.plugins.crm.common.model.*;
import bitel.billing.server.rscm.bean.*;
import bitel.billing.server.admin.bean.*;
import bitel.billing.server.util.*;
import bitel.billing.common.TimeUtils;
import bitel.billing.server.task.bean.RunTaskDataManager;
import bitel.billing.server.rscm.*;

//Группа ожидания подключения
GROUP_EC = 18;
//Параметр, в котором прописана дата начала предоставления услуг
PARAM_START_DATE = 49;

EventDate = new Date();
cid = event.getContractID();
contract = new ContractManager(con).getContractByID(cid);
contract_utils = new ContractUtils( con );
contract_groups = contract.getGroups();
contract_param_utils = new ContractParamUtils( con );
contract_is_group_ec = (contract_groups & (1L<<GROUP_EC)) > 0;
register_task_manager = new RegisterTaskManager( con );

task = event.getTask();
task_id = task.getID();
task_type_id = task.getTypeID();
task_ExecuteDate = task.getExecuteDate();
task_TargetDate = task.getTargetDate();
task_AddressObjectId = task.getAddressObjectId();

task_ExecuteDate_Calendar = new GregorianCalendar();
task_ExecuteDate_Calendar.setTime( task_TargetDate );

//Интернет - новое подключение (монтаж)
if (task_type_id == 3 && contract_is_group_ec)
{
   task_new_type_id = 13;
   task_new_group_id = 4;
   
   //Ищем задачу на настройку
   filter = new RegisterTaskManager.TaskFilter();
   filter.cid = cid;
   filter.types = Integer.toString(task_new_type_id);
   task_count = register_task_manager.getTaskCount(filter);
   if (task_count == 0){
      RegisterTask task_new = new RegisterTask();
      task_new.setContractID( cid );
      task_new.setTypeID(  task_new_type_id );
      task_new.setGroupID( task_new_group_id );
      task_new.setOpenUserID( 0 ) ;
      task_new.setOpenTime( EventDate );
      task_new.setComment( "Задача создана автоматически" );
      task_new.setAddressParamID( 2 );
      task_new.setAddressObjectId( task_AddressObjectId );
      task_new.setTargetDate(task_TargetDate);
      register_task_manager.updateTask( "new", task_new );
   };
};
//Интернет - новое подключение (настройка)
if (task_type_id == 13 && contract_is_group_ec)
{
   rscm_sid = 17;
   // установка даты начала предоставления услуг
   if( contract_param_utils.getDateParam( cid, PARAM_START_DATE ) == null )
   {
      contract_param_utils.setDateParam( cid, PARAM_START_DATE, task_ExecuteDate );
   };
   rscm_table_name = "rscm_service_account_9_"+TimeUtils.format(task_ExecuteDate, "yyyyMM");
   query_new_table = "CREATE TABLE IF NOT EXISTS `"+rscm_table_name+"` ( "+
   "`id` int(11) NOT NULL auto_increment,   "+
   "`cid` int(11) NOT NULL, "+
   "`sid` int(11) NOT NULL,   "+
   "`date` date default NULL,   "+
   "`amount` bigint(20) default NULL, "+
   "`comment` text NOT NULL, "+
   "PRIMARY KEY  (`id`), "+
   "KEY `cid` (`cid`) "+
   ") ENGINE=MyISAM DEFAULT CHARSET=cp1251;";
   psUpdate_new_table = con.prepareStatement( query_new_table );
   psUpdate_new_table.executeUpdate();
   
   query_check = "SELECT id FROM "+rscm_table_name+" WHERE cid='"+cid+"' AND sid='"+rscm_sid+"'";
   ps_check = con.prepareStatement(query_check);
   rs_check = ps_check.executeQuery();
   if ( !rs_check.next() )
   {
      query_new = "INSERT INTO "+rscm_table_name+" (cid,sid,date,amount,comment) VALUES ('"+cid+"','"+rscm_sid+
      "','"+TimeUtils.format(task_ExecuteDate, "yyyy-MM-dd")+"','1','')";
      psUpdate_new = con.prepareStatement( query_new );
      psUpdate_new.executeUpdate();
   };
   cids = cid.toString();
   new RunTaskDataManager( con ).addTask( new RSCMRecalculator( 9, task_ExecuteDate_Calendar, "lda@dsn.ru", cids ) );
};



Получаю ошибку:
Eval error: Sourced file: inline evaluation of: ``import java.sql.*; import java.util.*; import bitel.billing.server.contract.
. . . '' : reflection error: bsh.ReflectError: Method addTask( bitel.billing.server.rscm.RSCMRecalculator ) not found in class'bitel.billing.server.task.bean
.RunTaskDataManager'
Sourced file: inline evaluation of: ``import java.sql.*; import java.util.*; import bitel.billing.server.contract. . . . '' : reflection error: bsh.Reflec
tError: Method addTask( bitel.billing.server.rscm.RSCMRecalculator ) not found in class'bitel.billing.server.task.bean.RunTaskDataManager' : at Line: 98 : in
file: inline evaluation of: ``import java.sql.*; import java.util.*; import bitel.billing.server.contract. . . . '' : .addTask ( new RSCMRecalculator ( 9
, task_ExecuteDate_Calendar , "lda@dsn.ru" , cids ) )

at bsh.BSHPrimarySuffix.doSuffix(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHBlock.evalBlock(Unknown Source)
at bsh.BSHBlock.eval(Unknown Source)
at bsh.BSHBlock.eval(Unknown Source)
at bsh.BSHIfStatement.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:158)
at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:248)
at bitel.billing.server.script.bean.event.EventProcessor.run(EventProcessor.java:163)

Подскажите что делаю не так?


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

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Вам код от 4.6 дали.. в 4.5 надо так :
Код:
RunTaskData taskData = new RunTaskData( new RSCMRecalculator( mid, startMonth, email, null ) );
      new RunTaskDataManager( con ).addTask( taskData );


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

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
:)
Спасибо, все получилось.


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

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


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

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


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

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