forum.bitel.ru http://forum.bitel.ru/ |
|
Определить режим списания АП [5.1] http://forum.bitel.ru/viewtopic.php?f=16&t=4524 |
Страница 1 из 1 |
Автор: | mikos [ 07 сен 2010, 22:09 ] |
Заголовок сообщения: | Определить режим списания АП [5.1] |
Добрый день. Подскажите пожалуйста, как в 5.1 определить, какой режим списания АП (подневной или помесячный) у абонента? Спасибо. |
Автор: | Cromeshnic [ 08 сен 2010, 07:26 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
Посмотреть в дереве его тарифного плана? |
Автор: | mikos [ 08 сен 2010, 12:57 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
Cromeshnic писал(а): Посмотреть в дереве его тарифного плана? Как я это делал в 4.6 - не получается, null там. А как это делается правильно в 5.1? |
Автор: | skyb [ 08 сен 2010, 13:06 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
а можно скрины? |
Автор: | mikos [ 08 сен 2010, 14:20 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
skyb писал(а): а можно скрины? Какие скрины? Код? В 4.6 этой функцией доставал,а тут нет. Код: public String getTarifCalcMode( cid, Calendar date )
{ SID = 1; MID = 2; cost_month = null; cost_day = null; cost_type = null; calc_mode = null; calc_type = null; // поиск параметров абонплаты tts = new ContractManager( con ).getRealtimeTariffTreeSet( cid, date, "npay", MID, true ); print("DEBUG: cid="+cid+" tts="+tts); for( TariffModuleTree tree : tts.getTreeList( date ) ) { req_cost = new TariffRequest(); req_cost.setRequestParam( "action", "calculate" ); req_cost.setRequestParam( "sid", SID ); req_cost.setRequestParam( "month_days", 1 ); req_cost.setRequestParam( "period_days", 1 ); req_cost.setRequestParam( "time", date ); tree.processRequest( req_cost ); cost_month = (Double)req_cost.getResponseParam( "cost" ); cost_type = req_cost.getResponseParam( "cost_type" ); req_calc_mode = new TariffRequest(); req_calc_mode.setRequestParam( "action", "reset" ); req_calc_mode.setRequestParam( "sid", SID ); req_calc_mode.setRequestParam( "time", date ); tree.processRequest( req_calc_mode ); calc_mode = (String)req_calc_mode.getResponseParam( "calc_mode" ); calc_type = req_calc_mode.getResponseParam( "calc_type" ); }; print("DEBUG: cid="+cid); print("DEBUG: cost_month="+cost_month); print("DEBUG: calc_mode="+calc_mode); if (cost_month == null || calc_mode == null) { error ("Параметры абонплаты не найдены"); return ""; }; return calc_mode; } |
Автор: | skyb [ 08 сен 2010, 14:46 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
тьфу блин, запутали, вы бы написали что как это скриптом вытянуть, а то как посмотреть...в тарифе в дереве, а скриптом я хз |
Автор: | Cromeshnic [ 08 сен 2010, 14:55 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
+1, я тоже думал глазами посмотреть. В 5.0 к запросу на тарификацию добавились ещё тарифные опции. Посмотрите декомпилером в коде. |
Автор: | mikos [ 08 сен 2010, 15:00 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
Cromeshnic писал(а): +1, я тоже думал глазами посмотреть. В 5.0 к запросу на тарификацию добавились ещё тарифные опции. Посмотрите декомпилером в коде. Может сотрудники компании лучше скажут как ![]() ![]() |
Автор: | mikos [ 08 сен 2010, 19:32 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
Ну ответьте плиз кто нибудь? Второй день абонентов не можем отключить - скрипты не работают. Обновились называется... ![]() Сумму абонплаты как получить понятно. Сейчас это стало удобнее. Но вот каким образом посмотреть какой именно тариф у абонента - с подневным или помесячным снятием -- не понятно. Это нужно для того, чтобы одним скриптом, делать проверку как тех, так и других абонентов, запуская скрипт каждый день, а не раз в месяц. Может конечно можно сделать два скрипта, но все равно абонентов надо как-то идентифицировать. Хоть по группам раскидывай... |
Автор: | mikos [ 08 сен 2010, 19:55 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
Похоже я отстал от жизни и не научился читать доки... http://bgbilling.ru/v5.1/doc/ch16s07.html Т.е. никаких скриптов не надо? Биллинг сам этой задачей будет проверять порог и в случае нехватки средств для снития АП, отключать договор? |
Автор: | skyb [ 09 сен 2010, 03:50 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
О_о вы бы вначале научились задавать вопросы, а потом получали бы на них правельные ответы. ![]() Да, нечего больше не нужно, функционал дебитовых абонплат работает замечательно, сам использую и доволен/ http://wiki.bgbilling.ru/index.php/%D0% ... 1%81%D0%B0 вот в догонку, мне было нужно, мож и вам понадобиться ![]() |
Автор: | mikos [ 09 сен 2010, 12:30 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
skyb писал(а): О_о вы бы вначале научились задавать вопросы, а потом получали бы на них правельные ответы. ![]() Да, нечего больше не нужно, функционал дебитовых абонплат работает замечательно, сам использую и доволен/ http://wiki.bgbilling.ru/index.php/%D0% ... 1%81%D0%B0 вот в догонку, мне было нужно, мож и вам понадобиться ![]() Согласен - какой вопрос, такой и ответ ![]() Судя по выдержке из той же документации Цитата: При приходе платежа и открытии договора производится переначисление абонентских плат до текущей даты с учётом нового статуса. Теперь биллинг и договора сам после внесения платежа открывает? PS: За ссылочку спасибо - пригодиться. Правда раньше статуст "приостановлен" не обязательно должен был быть из-за нехватки средств. Но по сути пойдет и такая схема. |
Автор: | Cromeshnic [ 09 сен 2010, 12:51 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
mikos писал(а): Теперь биллинг и договора сам после внесения платежа открывает? Да. У меня тоже работает - нареканий нет. mikos писал(а): Правда раньше статуст "приостановлен" не обязательно должен был быть из-за нехватки средств. В дебетовых абонплатах договор закрывается статусом "закрыт". |
Автор: | skyb [ 09 сен 2010, 12:52 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
да, биллинг по приходу будет сам разблокировать. Статус там закрыт, а не приостановлен ![]() опередил )))) |
Автор: | mikos [ 09 сен 2010, 12:59 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
Отлично. Спасибо ребят! |
Автор: | restart [ 17 сен 2010, 17:50 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
Cromeshnic писал(а): В 5.0 к запросу на тарификацию добавились ещё тарифные опции. Посмотрите декомпилером в коде. Ай-яй-яй ![]() |
Автор: | skyb [ 17 сен 2010, 18:23 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
Наоборот для развития биллинга помогаем вам! зы я недекомпилю |
Автор: | dimOn [ 20 сен 2010, 12:39 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
а ну не разводить тут опенсорс ![]() |
Автор: | Cromeshnic [ 20 сен 2010, 13:20 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
Ну, а что делать, если в документации нет, а хочется "определить режим списания АП"? ![]() |
Автор: | Phricker [ 20 сен 2010, 13:42 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
Cromeshnic писал(а): Ну, а что делать, если в документации нет, а хочется "определить режим списания АП"? ![]() задать вопрос на форуме? ![]() |
Автор: | mikos [ 27 дек 2010, 01:17 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
И все таки - как из скрипта узнать какой режим АП стоит - помесячный или подневной? |
Автор: | mikos [ 27 апр 2011, 20:29 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
UP - снова актуально. Есть абонент. У него тариф. Надо в скрипте узнать какой тип списания у этого тарифа - подневной или помесячный? |
Автор: | Cromeshnic [ 28 апр 2011, 07:11 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
Попробуйте так: Код: ContractManager contractManager = new ContractManager(con); TariffTreeSet tts = contractManager.getRealtimeTariffTreeSet(cid, Calendar.getInstance(), "npay", mid, true); if(null==tts){ return result; } TariffSetEntry tse = tts.getTreeEntry(Calendar.getInstance()); if(null==tse){ return result; } TariffModuleTree mtree = tse.getTreeForDate(Calendar.getInstance()); if(null==mtree){ return result; } //Получаем id дерева int treeid = mtree.getTreeId(); //tariff_tree.id int mtree_id=0; //module_tariff_tree.id int mtree_parent_id=0; //module_tariff_tree.id PreparedStatement ps; ResultSet rs; String query = "select id, parent_tree from module_tariff_tree where tree_id=? and mid=?"; try { ps = con.prepareStatement(query); ps.setInt(1,treeid); ps.setInt(2,mid); rs = ps.executeQuery(); if(rs.next()){ mtree_id = rs.getInt(1); int tmp_parent_tree_id = rs.getInt(2); //tariff_tree.id rs.close(); //получаем по tmp_parent_tree_id -> mtree_parent_id if(tmp_parent_tree_id>0){ ps.setInt(1,tmp_parent_tree_id); ps.setInt(2,mid); rs = ps.executeQuery(); if(rs.next()){ mtree_parent_id = rs.getInt(1); } rs.close(); } } ps.close(); } catch (SQLException e) { log.error(e.getMessage(), e); } //Выгребаем нужные узлы дерева модуля с кодом mid (включая унаследованные) // - Ищем узел услуги с кодом sid int service_node_id = 0; query = "select id, type from mtree_node where (type=\"day_mode\" or type=\"month_mode\" or type=\"year_mode\") and (mtree_id = ? or mtree_id = ?) and instr(data,\"sid&"+sid+"\")>0"; try { ps = con.prepareStatement(query); ps.setInt(1, mtree_id); ps.setInt(2, mtree_parent_id); rs = ps.executeQuery(); if(rs.next()){ service_node_id = rs.getInt(1); type = rs.getString(2); } rs.close(); } catch (SQLException e) { log.error(e.getMessage(), e); } Ну только instr(data,\"sid&"+sid+"\") надо переделать, чтобы при поиске, скажем, услуги 44 не попадалась услуга 444. |
Автор: | mikos [ 29 апр 2011, 21:53 ] |
Заголовок сообщения: | Re: Определить режим списания АП [5.1] |
Спасибо, примерно понял как выковырнуть. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |