forum.bitel.ru http://forum.bitel.ru/ |
|
Начисление услуги RSCM (BGBS) http://forum.bitel.ru/viewtopic.php?f=19&t=2072 |
Страница 1 из 1 |
Автор: | lda [ 24 мар 2009, 17:42 ] |
Заголовок сообщения: | Начисление услуги RSCM (BGBS) |
Пытаюсь из скрипта добавить начисление 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 ] |
Заголовок сообщения: | |
Код: 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 - код договора. |
Автор: | lda [ 25 мар 2009, 15:49 ] |
Заголовок сообщения: | |
Спасибо, но вы меня неправильно поняли или я плохо объясняю ![]() Немножко поподробнее расскажу. В тарифе для услуги RSCM "Подключение - Интернет" (sid = 17) прописана стоимость подключения. Мне нужно в договоре-> RSCM указать, что определенного числа была оказана услуга "Подключение - Интернет" в количестве 1 штука. В конфигурации RSCM прописано: #начисление денег сразу по добавлению услуги в договор hot.calc=1 так что начисление должно произойти автоматически. Мне необходимо по определенному событию списать со счета стоимость подключения, т.е. указать что была оказана услуга (sid = 17) 1 шт. |
Автор: | Администратор [ 25 мар 2009, 16:03 ] |
Заголовок сообщения: | |
Цитата: В конфигурации RSCM прописано: #начисление денег сразу по добавлению услуги в договор hot.calc=1 так что начисление должно произойти автоматически. Ну если вы штатными средствами интерфейса это сделаете, оно и произойдет. Можно еще HTTP запросом акшен этот же вызвать. Цитата: Мне необходимо по определенному событию списать со счета стоимость подключения, т.е. указать что была оказана услуга (sid = 17) 1 шт.
Вставляете в базу запись об услуге и запускаете переобсчет за этот месяц по этому договору. |
Автор: | lda [ 25 мар 2009, 16:10 ] |
Заголовок сообщения: | |
Понятно. Спасибо. |
Автор: | lda [ 25 мар 2009, 20: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) Подскажите что делаю не так? |
Автор: | stark [ 26 мар 2009, 18:08 ] |
Заголовок сообщения: | |
Вам код от 4.6 дали.. в 4.5 надо так : Код: RunTaskData taskData = new RunTaskData( new RSCMRecalculator( mid, startMonth, email, null ) );
new RunTaskDataManager( con ).addTask( taskData ); |
Автор: | lda [ 26 мар 2009, 18:21 ] |
Заголовок сообщения: | |
![]() Спасибо, все получилось. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |