forum.bitel.ru
http://forum.bitel.ru/

Как узнать из скрипта сумму в дебитовых абонплата
http://forum.bitel.ru/viewtopic.php?f=19&t=7796
Страница 1 из 1

Автор:  madmax [ 04 мар 2013, 11:10 ]
Заголовок сообщения:  Как узнать из скрипта сумму в дебитовых абонплата

Имеется задача закрытия статуса договора Npay по балансу после которой напротив абонентской платы пишется недостающая сумма.
Как можно в скрипте узнать данную сумму?

Автор:  snark [ 04 мар 2013, 11:54 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

Например так.
Поиск по слову Calculator в вики и на форуме даст массу скриптов ;)

Автор:  madmax [ 04 мар 2013, 12:38 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

Да забыл написать что мы знаем как через код рассчитать планируемую сумму по наработке абонплаты.
Но биллинг уже сам посчитал недостающую сумму и отображает ее напротив модуля абонплаты, зачем изобретать велосипед если где то эта сумма хранится и достаточно ее там посмотреть.
И вот вопрос - где биллинг хранит эту посчитанную сумму или как через какую-нибудь функцию ее можно получить

Автор:  skyb [ 04 мар 2013, 15:04 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

вопрос, зачем?

Автор:  madmax [ 04 мар 2013, 15:32 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

Хотим для закрытых договоров в кабинете статистики сделать возможность активировать договор если сумма задолженность которая напротив абонентской платы <= 0.
А то сейчас договор закрывается когда денег не хватает, а на следующий день денег становится достаточно так как начислений меньше но договор не активируется и приходится клиенту бежать и оплачивать любую сумму чтобы по движению денег система активировала договор

Автор:  skyb [ 04 мар 2013, 17:28 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

второе предложение не понял

Автор:  madmax [ 04 мар 2013, 17:52 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

на договоре подневное начисление и каждый день сумма напротив абонплаты рассчитывается с учетом оставшихся дней до конца месяца

Автор:  madmax [ 05 мар 2013, 14:57 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

А вот в api есть такая возможность
Код:
getSummaForUnlock(java.sql.Connection con, int mid, Contract contract)

Что то код не отрабатывает пишу но выдает ошибку что не так не подскажите
Код:
import ru.bitel.bgbilling.modules.npay.server.bean.DebetStatusManageConfig;
import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.ContractManager;
import bitel.billing.server.contract.bean.ContractStatus;
import bitel.billing.server.contract.bean.ContractStatusManager;
import java.sql.SQLException;

ContractManager contractManager = new ContractManager(this.con);
Contract contract = contractManager.getContractById(cid);
BigDecimal needsum = getSummaForUnlock(con, 2, contractManager.getContractById(contract.getSuperId());

Автор:  skyb [ 05 мар 2013, 17:48 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

я всеравно не понял, куда потом эту сумму сувать будите?

Автор:  madmax [ 05 мар 2013, 21:31 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

да все просто если getSummaForUnlock=0 значит разрешено переводит договор со статуса закрыт на активен. Если >0 тогда нельзя

Автор:  Phricker [ 06 мар 2013, 00:33 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

Без класса ага.
по идее сначала нужно объявить а потом использовать
Код:
dsm = new DebetStatusManageConfig(Preferences moduleSetup);
BigDecimal needsum = dsm.getSummaForUnlock(con, 2, contractManager.getContractById(contract.getSuperId());

только я понятия не имею что там в этом Preferences должно быть :)

Автор:  skyb [ 06 мар 2013, 08:19 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

madmax писал(а):
да все просто если getSummaForUnlock=0 значит разрешено переводит договор со статуса закрыт на активен. Если >0 тогда нельзя

а чем дебитовые абонплаты не устраивают?

Автор:  madmax [ 06 мар 2013, 10:40 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

не понял, при чем тут дебитовые абонплаты.
Почитайте выше я написал же все

Цитата:
Хотим для закрытых договоров в кабинете статистики сделать возможность активировать договор если сумма задолженность которая напротив абонентской платы <= 0.
А то сейчас договор закрывается когда денег не хватает, а на следующий день денег становится достаточно так как начислений меньше но договор не активируется и приходится клиенту бежать и оплачивать любую сумму чтобы по движению денег система активировала договор

Автор:  madmax [ 06 мар 2013, 10:54 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

На этом куске кода ругается что не хватает ; или )
Код:
dsm = new DebetStatusManageConfig(Preferences moduleSetup);

Автор:  KostiK [ 11 мар 2013, 10:17 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

madmax писал(а):
На этом куске кода ругается что не хватает ; или )
Код:
dsm = new DebetStatusManageConfig(Preferences moduleSetup);


надо делать вот так:
Код:
dsm = new DebetStatusManageConfig(moduleSetup);

Автор:  madmax [ 11 мар 2013, 12:29 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

да с таким кодом заработало и все скомпилировалось.
DebetStatusManageConfig dsm = new DebetStatusManageConfig(moduleSetup);
BigDecimal needsum = dsm.getSummaForUnlock(con, mid, contractManager.getContractById(contract.getSuperId()));

Но выходит ошибка которая ссылается на строку с кодом
Код:
DebetStatusManageConfig dsm = new DebetStatusManageConfig(moduleSetup);

Код:
ERROR ["http-bio-/0.0.0.0-8443"-exec-7] CommonExecuter -
java.lang.NullPointerException
        at ru.bitel.bgbilling.modules.npay.server.bean.DebetStatusManageConfig.<init>(DebetStatusManageConfig.java:37)
        at bitel.billing.server.contract.action.web.ActionCustomSuspend.doAction(ActionCustomSuspend.java:145)
        at bitel.billing.server.WebExecuter.executeAction(WebExecuter.java:436)
        at bitel.billing.server.WebExecuter.doPost(WebExecuter.java:210)
        at bitel.billing.server.WebExecuter.doGet(WebExecuter.java:74)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at ru.bitel.server.servlet.filters.MultipartFilter.doFilter(MultipartFilter.java:42)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at ru.bitel.server.servlet.filters.XSSFilter.doFilter(XSSFilter.java:89)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at bitel.billing.server.filters.BGAuthFilter.doFilter(BGAuthFilter.java:295)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:48)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:48)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:140)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

Автор:  KostiK [ 11 мар 2013, 12:43 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

из-за того что moduleSetup=null.

Покажите весь код скрипта. И на какое событие вы вешаете скрипт?

Автор:  KostiK [ 11 мар 2013, 12:44 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

на динамических java классах пишете?

Автор:  stark [ 11 мар 2013, 12:44 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

madmax писал(а):
да с таким кодом заработало и все скомпилировалось.
DebetStatusManageConfig dsm = new DebetStatusManageConfig(moduleSetup);
[/code]


А где кусок кода, который создает moduleSetup?

Автор:  madmax [ 11 мар 2013, 15:04 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

Да на динамических.
Скорректировал код
Код:
mid=2;
ModuleSetup modset = new ModuleSetup(con, mid);
DebetStatusManageConfig dsm = new DebetStatusManageConfig(modset);
BigDecimal needsum = dsm.getSummaForUnlock(con, mid, contractManager.getContractById(contract.getSuperId()));

теперь выходит ошибка на
Код:
needsum = dsm.getSummaForUnlock(con, mid, contractManager.getContractById(contract.getSuperId()));

Код:
ERROR ["http-bio-/0.0.0.0-8443"-exec-5] CommonExecuter -
java.lang.NullPointerException
        at ru.bitel.bgbilling.modules.npay.server.bean.DebetStatusManageConfig.getSummaForUnlock(DebetStatusManageConfig.java:94)
        at bitel.billing.server.contract.action.web.ActionCustomSuspendWiMax.doAction(ActionCustomSuspendWiMax.java:147)
        at bitel.billing.server.WebExecuter.executeAction(WebExecuter.java:436)
        at bitel.billing.server.WebExecuter.doPost(WebExecuter.java:210)
        at bitel.billing.server.WebExecuter.doGet(WebExecuter.java:74)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at ru.bitel.server.servlet.filters.MultipartFilter.doFilter(MultipartFilter.java:42)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at ru.bitel.server.servlet.filters.XSSFilter.doFilter(XSSFilter.java:89)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at bitel.billing.server.filters.BGAuthFilter.doFilter(BGAuthFilter.java:295)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:48)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:48)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:140)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

Автор:  stark [ 11 мар 2013, 17:45 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

У вас скорее всего
Код:
contractManager.getContractById(contract.getSuperId())

возвращает null. Распечатайте contract.getSuperId() может у него и нет супера ?

Автор:  madmax [ 12 мар 2013, 17:37 ]
Заголовок сообщения:  Re: Как узнать из скрипта сумму в дебитовых абонплата

Все работает. спасибо

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/