forum.bitel.ru http://forum.bitel.ru/ |
|
Как изменить статус договора через запрос (5.1) http://forum.bitel.ru/viewtopic.php?f=19&t=7256 |
Страница 1 из 1 |
Автор: | SeGa [ 27 сен 2012, 11:44 ] |
Заголовок сообщения: | Как изменить статус договора через запрос (5.1) |
Сращиваю биллинг с 1с. Получаю данные из биллинга через http запросы, запросы выбираю через дебагер. Подскажите, как изменить через запрос статус договора, а то в логе биллинга в режиме дебаггера отображает какую то тарабарщину в непонятной кодировке. Спасибо. |
Автор: | Cromeshnic [ 27 сен 2012, 12:14 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
Не помню, были ли веб-сервисы в 5.1, но в 5.2 смена статуса работает именно через них. Поищите по форуму "веб-сервисы". |
Автор: | stark [ 27 сен 2012, 13:22 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
viewtopic.php?f=22&t=6891&p=53606&hilit=web&sid=7c332f2eeddf0b1b39e8509fa352dd66#p53606 |
Автор: | SeGa [ 28 сен 2012, 03:32 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
Понятно, спасибо за подсказку, буду копать. Думается мне в 7.7 будет всё не очень тривиально. |
Автор: | Cromeshnic [ 28 сен 2012, 06:41 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
Можно написать свой Action, чтобы менять статусы обычным запросом. Я написал себе такой временно, чтобы не переделывать внешний скрипт на сервисы. 5.2: Код: package bitel.billing.server.contract.status.action;
import ru.bitel.bgbilling.common.BGException; import bitel.billing.server.contract.bean.ContractStatus; import bitel.billing.server.contract.bean.ContractStatusManager; import bitel.billing.server.contract.status.action.base.ActionBase; import java.sql.SQLException; import java.util.Calendar; import java.util.Date; import ru.bitel.bgbilling.common.BGIllegalArgumentException; import ru.bitel.bgbilling.server.util.ClosedDateChecker; public class ActionContractStatusChange extends ActionBase { public void doAction() throws SQLException, BGException { int newStatus = getIntParameter("status", -1); Date date1 = getDateParameter("date1"); Date date2 = getDateParameter("date2"); String comment = getParameter("comment", ""); if ((this.cid <= 0) || (newStatus < 0) || (date1 == null)) { throw new BGIllegalArgumentException(); } if (!checkPeriod(date1, date2)) { return; } ContractStatus status = new ContractStatus(); status.setContractId(this.cid); status.setStatus(newStatus); status.setDateFrom(date1); status.setDateTo(date2); status.setComment(comment); Calendar closedDate = null; if ((closedDate = ClosedDateChecker.getClosePeriodDateIfChecking("ActionContractStatus", this.mid, this.userID.intValue())) != null) { ClosedDateChecker.checkDatesForUpdate(closedDate, null, null, date1, date2); } ContractStatusManager statusManager = new ContractStatusManager(this.con); statusManager.changeStatus(status.clone(), this.userID); this.con.commit(); } } |
Автор: | SeGa [ 20 ноя 2012, 05:25 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
Чет не могу разобраться с этими вашими веб сервисами...... Имеется код Код: <?php $client = new SoapClient("http://localhost:8080/bgbilling/executer/kernel.module.api/Service?wsdl"); $result = $client->serviceList(); ?> Получаю ответ: Цитата: PHP Fatal error: Uncaught SoapFault exception: [S:Server] javax.security.auth.login.LoginException in /var/www/atc/soap.php:3 Stack trace: #0 /var/www/atc/soap.php(3): SoapClient->__call('serviceList', Array) #1 /var/www/atc/soap.php(3): SoapClient->serviceList() #2 {main} thrown in /var/www/atc/soap.php on line 3 На сколько я понимаю проблема в авторизации....но как авторизоваться не понято.... А по работе со статусами вообще нечто не понятное: Код: <?php $client = new SoapClient("http://localhost:8080/bgbilling/executer/kernel.contract.status/ContractStatusMonitor?wsdl"); ?> В ответ: Цитата: PHP Fatal error: SOAP-ERROR: Parsing Schema: unresolved element 'ref' attribute in /var/www/atc/soap.php on line 2 PHP Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing Schema: unresolved element 'ref' attribute in /var/www/atc/soap.php:2 Stack trace: #0 /var/www/atc/soap.php(2): SoapClient->SoapClient('http://localho...') #1 {main} thrown in /var/www/atc/soap.php on line 2 PS: А как переделать тот скрипт что выкладывали выше под 5.1, я так и не разобрался...нуб я в java ( |
Автор: | aiwbend [ 20 ноя 2012, 08:43 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
SeGa писал(а): На сколько я понимаю проблема в авторизации....но как авторизоваться не понято.... А по работе со статусами вообще нечто не понятное: мб так? http://www.php.net/manual/ru/book.soap.php#96033 с http://127.0.0.1:8080/bgbilling/executer Пробовал отправить через soapUI тоже с авторизацией затык был, header wsdl ему не нравился... |
Автор: | SeGa [ 22 ноя 2012, 07:13 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
Вопрос к разработчикам: Если статус договора менять напрямую в sql чем это грозит? |
Автор: | Cromeshnic [ 22 ноя 2012, 08:13 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
События не отработают, ничего не произойдёт. Плюс, нужно менять contract.status и contract_status и contract_status_log Потом, если схему работы со статусами немножно поменяют, всё сломается. Короче, это сложно и неэффективно. |
Автор: | SeGa [ 22 ноя 2012, 09:06 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
Печаль, а с этим скриптом я что то не могу разобраться, врода под 5.1 скомпилировал, но каким запросом поменять статус не понятно ( Код: package bitel.billing.server.contract.action; import bitel.billing.common.BGException; import bitel.billing.server.contract.bean.ContractStatus; import bitel.billing.server.contract.bean.ContractStatusManager; import bitel.billing.server.contract.status.action.base.ActionBase; import java.sql.SQLException; import java.util.Calendar; import java.util.Date; import ru.bitel.bgbilling.common.BGIllegalArgumentException; public class ActionContractStatusChange extends ActionBase { public void doAction() throws SQLException, BGException { int newStatus = getIntParameter("status", -1); Date date1 = getDateParameter("date1"); Date date2 = getDateParameter("date2"); String comment = getParameter("comment", ""); if ((this.cid <= 0) || (newStatus < 0) || (date1 == null)) { throw new BGIllegalArgumentException(); } if (!checkPeriod(date1, date2)) { return; } ContractStatus status = new ContractStatus(); status.setContractId(this.cid); status.setStatus(newStatus); status.setDateFrom(date1); status.setDateTo(date2); status.setComment(comment); if ((isDateCheckingEnabled("ActionContractStatus")) && (( (!checkDatesByClosedDate(null, date1)) || (!checkDatesByClosedDate(null, date2))))) { setWebErrorMessage("Устанавливаемый статус пересекается с закрытым периодом!"); return; } ContractStatusManager statusManager = new ContractStatusManager(this.con); statusManager.changeStatus(status.clone(), this.userID); this.con.commit(); } } Что бы не быть как все, расскажу как это поставить: в домашнем каталоге создаем путь(папки): bg/bitel/billing/server/contract/action В папке action создаем файл ActionContractStatusChange.java и вносим код который был выше. идем в папку bg и выполняем команды: Код: javac -cp ./:/usr/local/BGBillingServer/lib/* bitel/billing/server/contract/action/ActionContractStatusChange.java Код: jar cf ActionContractStatusChange.jar ./ получившейся ActionContractStatusChange.jar кидаем в папку /usr/local/BGBillingServer/lib/ и перезапускаем билинг. Меняем статусы http://bgbilling.local:8080/bgbilling/e ... cid=290632 |
Автор: | Cromeshnic [ 22 ноя 2012, 09:26 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
action=ContractStatusChange&status=1&date1=&date2=&comment=test&cid=12345 |
Автор: | SeGa [ 22 ноя 2012, 09:47 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
Делаю запрос action=ContractStatusChange&status=2&date1=21.11.2012&date2=&comment=test&cid=290632 Получаю ответ: <data errcode="2341031401" status="error">Can't call commit when autocommit=true</data> Статус вроде бы нормально меняется ![]() Спасибо за помощь. |
Автор: | Cromeshnic [ 22 ноя 2012, 10:16 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
this.con.commit(); - уберите. В 5.1 вроде бы везде автокоммит. Ну или так: Код: if (!this.con.getAutoCommit()) { this.con.commit(); } |
Автор: | Cromeshnic [ 22 ноя 2012, 10:16 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
так погодите, а что, в 5.1 тоже стандартный ContractStatusChange заменён на веб-сервисы? |
Автор: | SeGa [ 22 ноя 2012, 10:43 ] |
Заголовок сообщения: | Re: Как изменить статус договора через запрос (5.1) |
Да ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |