| forum.bitel.ru http://forum.bitel.ru/ |
|
| Помощь по реализации скрипта тариф + стоимость http://forum.bitel.ru/viewtopic.php?f=19&t=8812 |
Страница 1 из 1 |
| Автор: | Dipress [ 05 янв 2014, 23:16 ] |
| Заголовок сообщения: | Помощь по реализации скрипта тариф + стоимость |
Добрый вечер. С наступившим! Необходима консультация, либо указать в какую сторону копать. К сожалению в Java не силен (вообще). Задача состоит в следующем: Есть, к примеру, такой вот тариф: Вложение: В узле "Абонплаты" установлен период действия абонплаты и стоимость. Нужно каким-то образом получить из этого тарифа его название и текущую стоимость в узле Абонплаты, т.е. Тариф - стоимость. И так для каждого подобного тарифа. Получить название всех тарифов, вроде бы не сложно: Код: import org.w3c.dom.*; import bitel.billing.server.tariff.voice.calc.*; import bitel.billing.server.task.bean.*; import java.math.*; import ru.bitel.bgbilling.kernel.network.radius.*; import bitel.billing.server.npay.bean.*; import bitel.billing.server.npay.*; import bitel.billing.server.tariff.TariffTreeSet.TariffSetEntry; import ru.bitel.bgbilling.modules.npay.server.*; import java.util.ArrayList; import java.util.Collections; import java.math.BigDecimal; import java.sql.*; import java.util.*; import java.lang.*; import bitel.billing.server.contract.bean.*; import bitel.billing.server.tariff.*; import bitel.billing.server.util.*; import ru.bitel.common.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import bitel.billing.server.tariff.bean.*; import bitel.common.model.*; import ru.bitel.bgbilling.kernel.tariff.common.bean.TariffPlan; import ru.bitel.bgbilling.kernel.tariff.server.bean.TariffPlanManager public void main( setup, Connection con, conSlave ) { TariffPlanManager tpm = new TariffPlanManager(con); print(tpm.getTariffPlanList()); } А вот как получить абонплату по тарифу, я что-то не могу понять. Может у кого есть какие идеи как реализовать используя API, либо еще каким-нибудь способом. Наверняка такая возможность есть Заранее благодарю за помощь. |
|
| Автор: | skn [ 06 янв 2014, 03:57 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Цитата: А вот как получить абонплату по тарифу, я что-то не могу понять. Может у кого есть какие идеи как реализовать используя API, либо еще каким-нибудь способом. Наверняка такая возможность есть тарифное дерево может быть довольно сложным, поэтому нет универсального способа получить нужную информацию... тарифное дерево орентировано на то, что ему будет передана вся необходимая инфрмация, и оно само все расчитает и вернет готовый результат (наработку), а не цену, так как цены могут меняться в течение учетного периода и на эти изменения может влиять множество факторов (например наработка в других модулях) |
|
| Автор: | Dipress [ 06 янв 2014, 13:42 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Спасибо за ответ. Жаль, что нет такого способа чтобы получить цену из тарифа. В этом и была главная идея, чтобы в зависимости от периода получать текущую стоимость тарифа. Таких периодов еще планируется несколько штук. Просто у нас уже есть скрипт где используются два массива - один с именем тарифа, другой с ценой. Но там все заноситься ручками, что сами понимаете не комильфо. |
|
| Автор: | Cromeshnic [ 06 янв 2014, 19:07 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Можно делать специальный узел, куда заносить подобную мета-инфу о тарифе, не влияющую на тарификацию, а потом тарифным запросом её получать. Я пользуюсь для подобных штук узлом "конфигурация тарифа". Но, сами понимаете - это нужно отдельно в каждом тарифе добавлять узел. |
|
| Автор: | skn [ 06 янв 2014, 22:38 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Cromeshnic писал(а): Можно делать специальный узел, куда заносить подобную мета-инфу о тарифе, не влияющую на тарификацию, а потом тарифным запросом её получать. Я пользуюсь для подобных штук узлом "конфигурация тарифа". Но, сами понимаете - это нужно отдельно в каждом тарифе добавлять узел. как я понимаю весь смысл доставать инфу из тарифа и не дублировать ее нигде повторно. |
|
| Автор: | Dipress [ 07 янв 2014, 19:54 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Cromeshnic писал(а): Можно делать специальный узел, куда заносить подобную мета-инфу о тарифе, не влияющую на тарификацию, а потом тарифным запросом её получать. Я пользуюсь для подобных штук узлом "конфигурация тарифа". Но, сами понимаете - это нужно отдельно в каждом тарифе добавлять узел. Интересненько. А не могли бы вы показать примерчик подобный реализации? skn писал(а): Cromeshnic писал(а): Можно делать специальный узел, куда заносить подобную мета-инфу о тарифе, не влияющую на тарификацию, а потом тарифным запросом её получать. Я пользуюсь для подобных штук узлом "конфигурация тарифа". Но, сами понимаете - это нужно отдельно в каждом тарифе добавлять узел. как я понимаю весь смысл доставать инфу из тарифа и не дублировать ее нигде повторно. Да, именно такая была первоначальная мысль. Но, как я понял из ваших слов, что извлечь всю нужную мне информацию из тарифа стандартными средствами не получиться (я имею ввиду используя API). |
|
| Автор: | Cromeshnic [ 09 янв 2014, 07:08 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Вот пример для Dialup: Код: ContractManager cmReadOnly = new ContractManager(conSlave);
TariffTreeSet tts = cmReadOnly.getRealtimeTariffTreeSet( c.getId(), Calendar.getInstance(), "dialup", this.mid, true ); if(tts!=null){ TariffModuleTree tree = tts.getTree(Calendar.getInstance()); if (tree != null) { TariffRequest req = new TariffRequest(); req.setRequestParam("action", "init"); req.setRequestParam("cid", new Integer(c.getId())); req.setRequestParam("time", Calendar.getInstance()); // req.setRequestParam("month_time", new GregorianCalendar()); // req.setRequestParam("period_end", new GregorianCalendar()); req.setRequestParam("sid", new Integer(sid)); req.setRequestParam("amount", new Long(1L)); req.setRequestParam("tariffOptions", ContractTariffOptionDao.getContractRealtimeTariffOptionList(this.conSlave, c.getId(), new Date())); // req.setRequestParam("level", Integer.valueOf(bitel.billing.server.processor.dialup.LevelManager.getLevel(c.getId()))); tree.processRequest(req); // if (req.wasAccepted()) //В 5.1 перестал быть accepted, но нужные данные выдаёт // { if(req.getResponseParam("custom_param")!=null && req.getResponseParam("custom_param")!=""){ package_id = (String) req.getResponseParam("custom_param"); } // }else{ // print(req.toString()); // } } } |
|
| Автор: | skn [ 09 янв 2014, 14:14 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
по поводу добавления спец узла.... не понятно что в нем хранить, например с сегодняшнего дня меняется цена что должно быть в этом узле? новая цена или несколько цен с указанием периода? |
|
| Автор: | Cromeshnic [ 09 янв 2014, 14:34 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Смотря как использовать. Если при использовании всегда запрашивается только текущее значение - без разницы, можно просто менять. зы. Чем это лучше хранения справочника цен и т.п. в отдельной таблице? 1. Проще следить - залез менять тариф, увидел этот узел рядом с ценой, поменял оба в периоде. 2. Гибкость. Можно делать зависимости от тарифных опций и пр. условий. А также (что очень важно) - применимо для персональных тарифов. Можно использовать как вшитые метки тарифов по типам/скоростям для всякой отчётности, например. |
|
| Автор: | skn [ 09 янв 2014, 15:11 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
вот мне и не понятно для каких целей этот узел использовать для чего нужна текущая стоимость? |
|
| Автор: | Akhmat [ 09 янв 2014, 15:43 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
иногда нужно. в разных случаях узнать сколько абоненту должно начисляться, и взависимости от этого, принимать решение. давно использую для этого глобальный массив с текущими стоимостями тарифов(только для абонплат). |
|
| Автор: | skyb [ 09 янв 2014, 16:01 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Akhmat писал(а): иногда нужно. в разных случаях узнать сколько абоненту должно начисляться, и взависимости от этого, принимать решение. плюсую |
|
| Автор: | skn [ 09 янв 2014, 16:12 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
skyb писал(а): Akhmat писал(а): иногда нужно. в разных случаях узнать сколько абоненту должно начисляться, и взависимости от этого, принимать решение. плюсую во! т.е. вы запрашиваете сколько должно, возращается ТЕКУЩАЯ цена, а в тарифе со следущего дня прописана НОВАЯ цена, и что вы получите? |
|
| Автор: | skyb [ 09 янв 2014, 16:25 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
skn писал(а): skyb писал(а): Akhmat писал(а): иногда нужно. в разных случаях узнать сколько абоненту должно начисляться, и взависимости от этого, принимать решение. плюсую во! т.е. вы запрашиваете сколько должно, возращается ТЕКУЩАЯ цена, а в тарифе со следущего дня прописана НОВАЯ цена, и что вы получите? Я думаю мало кто будет запрашивать тарифы со сложным списанием. Например вспомним недавний вопрос по поводу разблокировки абонентов по достаточному платежу который равен полной абонке, это как пример, применений много, но и собственно он в конкретный день и нужен |
|
| Автор: | Akhmat [ 09 янв 2014, 16:38 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
от биллинга тут хотелось бы получать цену абонентки на дату, или просто текущую стоимость. хоть чтото. а в идеале метод типа getAbonCost(tpid,sid=0/*если 0 вся абонентка*/,date=null/*если null текущую стоимость*/); |
|
| Автор: | skn [ 09 янв 2014, 16:49 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Akhmat писал(а): от биллинга тут хотелось бы получать цену абонентки на дату, или просто текущую стоимость. хоть чтото. а в идеале метод типа getAbonCost(tpid,sid=0/*если 0 вся абонентка*/,date=null/*если null текущую стоимость*/); так речь про другое, речь про узел с мета данными по тарифу, с одной текущей ценой, и про то, что она мало что даст... да еще потребует дополнительных затрат на поддержание в актуальном состоянии. |
|
| Автор: | skn [ 09 янв 2014, 16:51 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
skyb писал(а): skn писал(а): skyb писал(а): Akhmat писал(а): иногда нужно. в разных случаях узнать сколько абоненту должно начисляться, и взависимости от этого, принимать решение. плюсую во! т.е. вы запрашиваете сколько должно, возращается ТЕКУЩАЯ цена, а в тарифе со следущего дня прописана НОВАЯ цена, и что вы получите? Я думаю мало кто будет запрашивать тарифы со сложным списанием. Например вспомним недавний вопрос по поводу разблокировки абонентов по достаточному платежу который равен полной абонке, это как пример, применений много, но и собственно он в конкретный день и нужен а чего тут сложно в тарифе в котором цена абонентки с завтрашнего например повышается... когда эту цену прописывать в мета узел, в 00-00 часов? вручную? |
|
| Автор: | Akhmat [ 09 янв 2014, 17:17 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
skn писал(а): Akhmat писал(а): от биллинга тут хотелось бы получать цену абонентки на дату, или просто текущую стоимость. хоть чтото. а в идеале метод типа getAbonCost(tpid,sid=0/*если 0 вся абонентка*/,date=null/*если null текущую стоимость*/); так речь про другое, речь про узел с мета данными по тарифу, с одной текущей ценой, и про то, что она мало что даст... да еще потребует дополнительных затрат на поддержание в актуальном состоянии. да, метаданными это костыль, который не отличается в общем то от глобального массива. все равно же руками править(единственно при редактировании тарифа, не забудешь и метку поправить). если будет такой метод, то мета не надо. не обязательно вклеивать в биллинг, можно просто метод тут написать, а мы его в глобальную библиотеку. через апи не смог его реализовать |
|
| Автор: | Cromeshnic [ 10 янв 2014, 06:15 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
skn писал(а): когда эту цену прописывать в мета узел, в 00-00 часов? вручную? Никто не мешает и сам этот узел в периоде задать. |
|
| Автор: | skyb [ 10 янв 2014, 06:25 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Код: <item> <title>Обновление модуля Inet</title> <link>http://bgbilling.ru/v6.0/download/inet/fixed</link> <description>ДОБАВЛЕНО Inet: Ветка Баланс в тарифе. </description> <pubDate>Thu, 09 Jan 2014 21:08:07 +0500</pubDate> <guid>http://bgbilling.ru/v6.0/download/inet/fixed/362</guid> </item> Это чего добавили? ктонить пробовал уже? |
|
| Автор: | skn [ 10 янв 2014, 16:16 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Cromeshnic писал(а): skn писал(а): когда эту цену прописывать в мета узел, в 00-00 часов? вручную? Никто не мешает и сам этот узел в периоде задать. тогда найти этот узел будет не менее сложно как и цену в текущем дереве... |
|
| Автор: | Akhmat [ 10 янв 2014, 16:18 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
видимо перемещаешь прежний узел, чтобы один всегда. хорошее решение |
|
| Автор: | skn [ 10 янв 2014, 16:20 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Akhmat писал(а): видимо перемещаешь прежний узел, чтобы один всегда. хорошее решение а кто должен перемещать и когда? |
|
| Автор: | Akhmat [ 10 янв 2014, 16:31 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
ну редактируешь тариф когда, изменяешь стоимость, то и переместил за одно. обычно по тарифу нужна одна текущая стоиомсть абонентки, ну и ежедневная она или месячная. |
|
| Автор: | skn [ 10 янв 2014, 17:03 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Akhmat писал(а): ну редактируешь тариф когда, изменяешь стоимость, то и переместил за одно. обычно по тарифу нужна одна текущая стоиомсть абонентки, ну и ежедневная она или месячная. к примеру редактируем сегодня, о том что с завтра меняется цена, переместить в момент редактирования или в 00-00 |
|
| Автор: | Akhmat [ 10 янв 2014, 18:23 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
у меня скрипты, которым нужна стоимость тарифа работают или в начале месяца, или ночью, т.е. на след день. т.е. в моем случае обычно можно заранее перемещать. меня бы устроило. так и редактирую свой глоб массив инфы по тарифам |
|
| Автор: | Dipress [ 14 янв 2014, 14:43 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Cromeshnic писал(а): Вот пример для Dialup: Код: ContractManager cmReadOnly = new ContractManager(conSlave); TariffTreeSet tts = cmReadOnly.getRealtimeTariffTreeSet( c.getId(), Calendar.getInstance(), "dialup", this.mid, true ); if(tts!=null){ TariffModuleTree tree = tts.getTree(Calendar.getInstance()); if (tree != null) { TariffRequest req = new TariffRequest(); req.setRequestParam("action", "init"); req.setRequestParam("cid", new Integer(c.getId())); req.setRequestParam("time", Calendar.getInstance()); // req.setRequestParam("month_time", new GregorianCalendar()); // req.setRequestParam("period_end", new GregorianCalendar()); req.setRequestParam("sid", new Integer(sid)); req.setRequestParam("amount", new Long(1L)); req.setRequestParam("tariffOptions", ContractTariffOptionDao.getContractRealtimeTariffOptionList(this.conSlave, c.getId(), new Date())); // req.setRequestParam("level", Integer.valueOf(bitel.billing.server.processor.dialup.LevelManager.getLevel(c.getId()))); tree.processRequest(req); // if (req.wasAccepted()) //В 5.1 перестал быть accepted, но нужные данные выдаёт // { if(req.getResponseParam("custom_param")!=null && req.getResponseParam("custom_param")!=""){ package_id = (String) req.getResponseParam("custom_param"); } // }else{ // print(req.toString()); // } } } Спасибо. Буду пробывать. |
|
| Автор: | Phricker [ 21 фев 2014, 14:13 ] |
| Заголовок сообщения: | Re: Помощь по реализации скрипта тариф + стоимость |
Akhmat писал(а): от биллинга тут хотелось бы получать цену абонентки на дату, или просто текущую стоимость. хоть чтото. а в идеале метод типа getAbonCost(tpid,sid=0/*если 0 вся абонентка*/,date=null/*если null текущую стоимость*/); апну тему. что-то так и заглохло все это |
|
| Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
| Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |
|