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

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

Автор:  skyb [ 09 июн 2015, 13:06 ]
Заголовок сообщения:  как правильно удалять расход?

Код:
ServerContext contextCc = ServerContext.get();
ChargeService chargeService = contextCc.getService(ChargeService.class, 0);
Charge charge = new Charge();
charge.setContractId(cid);
chargeService.chargeDelete(cid, ccid);
chargeService.chargeUpdate(charge);

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

Автор:  dimOn [ 09 июн 2015, 13:21 ]
Заголовок сообщения:  Re: как правильно удалять расход?

какая-то какафония кода.
зачем update то делать после удаления? тем более пустого объекта.
нужно просто один метод вызвать:
chargeDelete( int chargeId )
или его синоним:
chargeDelete( int contractId, int chargeId )

Автор:  skyb [ 09 июн 2015, 14:23 ]
Заголовок сообщения:  Re: как правильно удалять расход?

dimOn писал(а):
какая-то какафония кода.
зачем update то делать после удаления? тем более пустого объекта.
нужно просто один метод вызвать:
chargeDelete( int chargeId )
или его синоним:
chargeDelete( int contractId, int chargeId )

я так делал. баланс не обновлялся, тоесть сам расход был удален, а в расходах он был показан (напротив слова расход - был, а когда заходиш в расход, нет)

Автор:  stark [ 09 июн 2015, 15:20 ]
Заголовок сообщения:  Re: как правильно удалять расход?

skyb писал(а):
Код:
ServerContext contextCc = ServerContext.get();
ChargeService chargeService = contextCc.getService(ChargeService.class, 0);
Charge charge = new Charge();
charge.setContractId(cid);
chargeService.chargeDelete(cid, ccid);
chargeService.chargeUpdate(charge);

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



chargeUpdate - создает еще раз расход. Не нужно его вызывать. Это неправильно.

Автор:  stark [ 09 июн 2015, 15:22 ]
Заголовок сообщения:  Re: как правильно удалять расход?

skyb писал(а):
dimOn писал(а):
какая-то какафония кода.
зачем update то делать после удаления? тем более пустого объекта.
нужно просто один метод вызвать:
chargeDelete( int chargeId )
или его синоним:
chargeDelete( int contractId, int chargeId )

я так делал. баланс не обновлялся, тоесть сам расход был удален, а в расходах он был показан (напротив слова расход - был, а когда заходиш в расход, нет)


Проверил по коду, там баланс должен был обновиться. Видимо дерево не обновилось при отображении. Попробуйте закрыть/открыть договор.

Автор:  skyb [ 09 июн 2015, 16:13 ]
Заголовок сообщения:  Re: как правильно удалять расход?

в логах вот так
Код:
06-09/13:06:29  WARN [Finalizer] ConnectionSet - Not recycled before finalize!
06-09/13:06:29  WARN [Finalizer] ConnectionSet - Not recycled before finalize!

И после строчки
Код:
ServerContext contextCc = ServerContext.get();
ChargeService chargeService = contextCc.getService(ChargeService.class, 0);
chargeService.chargeDelete(cid, ccid);

Ничего не выводится, тоесть действия не выполняются, принт не отрабатывает
переоткрывал, ничего не обновлено

Автор:  stark [ 09 июн 2015, 16:27 ]
Заголовок сообщения:  Re: как правильно удалять расход?

skyb писал(а):
в логах вот так
Код:
06-09/13:06:29  WARN [Finalizer] ConnectionSet - Not recycled before finalize!
06-09/13:06:29  WARN [Finalizer] ConnectionSet - Not recycled before finalize!

И после строчки
Код:
ServerContext contextCc = ServerContext.get();
ChargeService chargeService = contextCc.getService(ChargeService.class, 0);
chargeService.chargeDelete(cid, ccid);

Ничего не выводится, тоесть действия не выполняются, принт не отрабатывает
переоткрывал, ничего не обновлено



т.е он упал чтоли ? Или повис в это месте ? Повисание можно jtstack-ом проверить . А вообще чувствую что от нас что-то скрывают :)

Автор:  Amir [ 09 июн 2015, 16:31 ]
Заголовок сообщения:  Re: как правильно удалять расход?

А на какое действие скрипт?

Автор:  dimOn [ 09 июн 2015, 16:31 ]
Заголовок сообщения:  Re: как правильно удалять расход?

если после строчки ничего не выводится - значит оно вываливается наружу с экзепшеном

Автор:  skyb [ 09 июн 2015, 16:32 ]
Заголовок сообщения:  Re: как правильно удалять расход?

а что означает упал или повис?
в логах только это.
делается это в переписанном экшене, там все работает кроме удаление расхода
Код:
         EventProcessor eventProc = EventProcessor.getInstance();
         ChargeDao cd = new ChargeDao(con);
         Charge ch = new Charge();
         ch.setContractId(cid);
         ch.setDate(new Date());
         ch.setSum(new BigDecimal("-"+setup_fee));
         ch.setTypeId(7);
         ch.setUserId(0);
         ch.setComment("Добавлен к номеру " + phone_number);
         cd.update(ch);
         BalanceUtils bu = new BalanceUtils(con);
         bu.updateBalance(new Date(), cid);
         eventProc.publishAfterCommit(new ChargeEvent(0, ch));
         eventProc.publishAfterCommit(new ContractBalanceChangedEvent(0, ch.getSum()));
         cd.recycle();

так расход добавляется
Amir, дергается по http экшен

Автор:  skyb [ 09 июн 2015, 16:34 ]
Заголовок сообщения:  Re: как правильно удалять расход?

Код:
06-09/13:06:24 ERROR [http-bio-0.0.0.0-8080-exec-2] LoggingPrintStream - ru.bitel.bgbilling.common.BGException: java.sql.SQLException: Can't call commit when autocommit=true
06-09/13:06:24 ERROR [http-bio-0.0.0.0-8080-exec-2] LoggingPrintStream -        at ru.bitel.bgbilling.kernel.contract.balance.server.ChargeServiceImpl.chargeDelete(ChargeServiceImpl.java:109)
06-09/13:06:24 ERROR [http-bio-0.0.0.0-8080-exec-2] LoggingPrintStream -        at ru.bitel.bgbilling.kernel.contract.balance.server.ChargeServiceImpl.chargeDelete(ChargeServiceImpl.java:81)
06-09/13:06:24 ERROR [http-bio-0.0.0.0-8080-exec-2] LoggingPrintStream -        at ru.exchange.zoho.ActionNewContract.doAction(ActionNewContract.java:1259)
06-09/13:06:24 ERROR [http-bio-0.0.0.0-8080-exec-2] LoggingPrintStream -        at bitel.billing.server.Executer.doModule(Unknown Source)
06-09/13:06:24 ERROR [http-bio-0.0.0.0-8080-exec-2] LoggingPrintStream -        at bitel.billing.server.Executer$1.run(Unknown Source)
06-09/13:06:24 ERROR [http-bio-0.0.0.0-8080-exec-2] LoggingPrintStream -        at java.security.AccessController.doPrivileged(Native Method)
06-09/13:06:24 ERROR [http-bio-0.0.0.0-8080-exec-2] LoggingPrintStream -        at javax.security.auth.Subject.doAs(Subject.java:415)
06-09/13:06:24 ERROR [http-bio-0.0.0.0-8080-exec-2] LoggingPrintStream -        at bitel.billing.server.Executer.doPost(Unknown Source)
06-09/13:06:24 ERROR [http-bio-0.0.0.0-8080-exec-2] LoggingPrintStream -        at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
06-09/13:06:24 ERROR [http-bio-0.0.0.0-8080-exec-2] LoggingPrintStream -        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
06-09/13:06:24 ERROR [http-bio-0.0.0.0-8080-exec-2] LoggingPrintStream -        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)

это тоже нада гдето что то добавлять?

Автор:  Amir [ 09 июн 2015, 17:16 ]
Заголовок сообщения:  Re: как правильно удалять расход?

Не понятно откуда autocommit=true. Может быть в ActionNewContract ставится принудительно?

Автор:  stark [ 09 июн 2015, 17:21 ]
Заголовок сообщения:  Re: как правильно удалять расход?

Покажите весь код свой.

Автор:  skyb [ 09 июн 2015, 18:14 ]
Заголовок сообщения:  Re: как правильно удалять расход?

да там 2000 строк кода

Автор:  Phricker [ 09 июн 2015, 18:20 ]
Заголовок сообщения:  Re: как правильно удалять расход?

на чье место в бителе метишь с таким количеством?

Автор:  skyb [ 09 июн 2015, 18:54 ]
Заголовок сообщения:  Re: как правильно удалять расход?

вроде нашел, главное не поломать ))))

Автор:  skyb [ 09 июн 2015, 19:16 ]
Заголовок сообщения:  Re: как правильно удалять расход?

Amir писал(а):
Не понятно откуда autocommit=true. Может быть в ActionNewContract ставится принудительно?

Как всегда прав, а говорите нет штатного экстрасенса )))) уже второй раз разгадывает что я понах**вертил ))))

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