BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 15 июл 2025, 21:52

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
СообщениеДобавлено: 27 сен 2012, 11:44 
Не в сети
Клиент

Зарегистрирован: 12 мар 2012, 11:50
Сообщения: 85
Карма: 0
Сращиваю биллинг с 1с. Получаю данные из биллинга через http запросы, запросы выбираю через дебагер. Подскажите, как изменить через запрос статус договора, а то в логе биллинга в режиме дебаггера отображает какую то тарабарщину в непонятной кодировке.
Спасибо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 сен 2012, 12:14 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Не помню, были ли веб-сервисы в 5.1, но в 5.2 смена статуса работает именно через них.
Поищите по форуму "веб-сервисы".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 сен 2012, 13:22 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
viewtopic.php?f=22&t=6891&p=53606&hilit=web&sid=7c332f2eeddf0b1b39e8509fa352dd66#p53606


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 сен 2012, 03:32 
Не в сети
Клиент

Зарегистрирован: 12 мар 2012, 11:50
Сообщения: 85
Карма: 0
Понятно, спасибо за подсказку, буду копать. Думается мне в 7.7 будет всё не очень тривиально.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 сен 2012, 06:41 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Можно написать свой 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();
  }
}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 ноя 2012, 05:25 
Не в сети
Клиент

Зарегистрирован: 12 мар 2012, 11:50
Сообщения: 85
Карма: 0
Чет не могу разобраться с этими вашими веб сервисами......
Имеется код
Код:
<?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 (


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 ноя 2012, 08:43 
Не в сети

Зарегистрирован: 20 апр 2011, 09:56
Сообщения: 346
Карма: 19
SeGa писал(а):
На сколько я понимаю проблема в авторизации....но как авторизоваться не понято....
А по работе со статусами вообще нечто не понятное:


мб так? http://www.php.net/manual/ru/book.soap.php#96033
с http://127.0.0.1:8080/bgbilling/executer
Пробовал отправить через soapUI тоже с авторизацией затык был, header wsdl ему не нравился...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 ноя 2012, 07:13 
Не в сети
Клиент

Зарегистрирован: 12 мар 2012, 11:50
Сообщения: 85
Карма: 0
Вопрос к разработчикам: Если статус договора менять напрямую в sql чем это грозит?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 ноя 2012, 08:13 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
События не отработают, ничего не произойдёт.
Плюс, нужно менять contract.status и contract_status и contract_status_log
Потом, если схему работы со статусами немножно поменяют, всё сломается.
Короче, это сложно и неэффективно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 ноя 2012, 09:06 
Не в сети
Клиент

Зарегистрирован: 12 мар 2012, 11:50
Сообщения: 85
Карма: 0
Печаль, а с этим скриптом я что то не могу разобраться, врода под 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


Последний раз редактировалось SeGa 22 ноя 2012, 10:00, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 ноя 2012, 09:26 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
action=ContractStatusChange&status=1&date1=&date2=&comment=test&cid=12345


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 ноя 2012, 09:47 
Не в сети
Клиент

Зарегистрирован: 12 мар 2012, 11:50
Сообщения: 85
Карма: 0
Делаю запрос 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>
Статус вроде бы нормально меняется :)
Спасибо за помощь.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 ноя 2012, 10:16 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
this.con.commit(); - уберите. В 5.1 вроде бы везде автокоммит.
Ну или так:

Код:
     
      if (!this.con.getAutoCommit())
      {
        this.con.commit();
      }


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 ноя 2012, 10:16 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
так погодите, а что, в 5.1 тоже стандартный ContractStatusChange заменён на веб-сервисы?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 ноя 2012, 10:43 
Не в сети
Клиент

Зарегистрирован: 12 мар 2012, 11:50
Сообщения: 85
Карма: 0
Да :(


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.409s | 47 Queries | GZIP : On ]