BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 23 июн 2025, 17:22

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Программное создание контракта.
СообщениеДобавлено: 05 ноя 2009, 02:19 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
Уважаемые разработчики, вопрос такой.
Почему когда я создаю контракт программно следующим образом:
Код:
ContractManager manager = new ContractManager(con);
Contract c = manager.createFromPattern(templateId, getContractNumber(), Calendar.getInstance(), passGen.getPassword());


Контракт создается по шаблону не полноценно.
Например в шаблоне не добавляется услуга абонплат из модуля NPAY.
Не добавляется ограничение количества сессий.
Не добавляются скрипты которые подключены к шаблону.

И это при том, что когда вручную создаешь контракт с использованием
данного шаблона, все нормально добавляется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 ноя 2009, 12:08 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Программно это из скрипта или вообще посторонняя Java программа? Закономерность есть, что не создается? Можете выложить скрин договора и шаблона?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 дек 2009, 01:33 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
Джава программа это отдельная, на самом деле уже решил проблему путем просто запросов прямо в майсиквел. Но ваш код так и не заработал. Если интересно вышлю код.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 дек 2009, 18:29 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
dale писал(а):
Джава программа это отдельная, на самом деле уже решил проблему путем просто запросов прямо в майсиквел. Но ваш код так и не заработал. Если интересно вышлю код.

там все эти действия делаются по событиям , а чтобы обрабатывались события, нужно запустить EventProcessor


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

Зарегистрирован: 28 окт 2008, 20:10
Сообщения: 259
Откуда: Махачкала
Карма: 6
Есть необходимость из java программы создать договор. версия 4.6
взял за основу пример из wiki magadan.java
Но он написан для 4.5 если использовать библиотеки от 4.5 работает но не добавляется услуга абонплата из шаблона.

если библиотеки от 4.6 то
Код:
script 10-10/14:15:51  INFO [main] EventProcessor:197 - Process event cid:0; event:Event bitel.billing.server.script.bean.event.system.ContractCreateEvent ci
d: 0; module: 0; type: 0
script 10-10/14:15:51  INFO [main] EventProcessor:269 - Skipping script processing..
script 10-10/14:15:51  INFO [main] EventProcessor:197 - Process event cid:4371; event:Event bitel.billing.server.script.bean.event.ContractStatusChangingEvent cid: 4371; module: 0; type: 18
 10-10/14:15:51  INFO [main] EventProcessor:87 - Add event to queue Event bitel.billing.server.script.bean.event.ContractStatusChangedEvent cid: 4371; module: 0; type: 19
java.lang.NullPointerException
        at bitel.billing.server.admin.eventbus.BillingEventBus.publish(BillingEventBus.java:39)
        at bitel.billing.server.contract.bean.ContractStatusManager.changeStatus(ContractStatusManager.java:421)
        at bitel.billing.server.contract.bean.ContractStatusManager.changeStatus(ContractStatusManager.java:296)
        at bitel.billing.server.contract.bean.ContractManager.createFromPattern(ContractManager.java:206)
        at bitel.billing.server.contract.bean.ContractManager.createFromPattern(ContractManager.java:74)
        at bitel.billing.server.contract.bean.ContractManager.createFromPattern(ContractManager.java:53)
        at bitel.billing.test.convert.Magadan.createContract(Magadan.java:93)
        at bitel.billing.test.convert.Magadan.<init>(Magadan.java:147)
        at bitel.billing.test.convert.Magadan.main(Magadan.java:125)
finished..




сам код инициализация
Код:
bgSetup = new DefaultServerSetup("data.data");
bgSetup.initConnectionPool();
EventProcessor.initProcessor( bgSetup, false, new ServerEventProcessor() );
Server.initSetup();


createContract

Код:
...
     Connection con = bgSetup.getDBConnectionFromPool();
     ContractManager cm = new ContractManager( con );
     Contract contract = cm.createFromPattern(templateId, "test_test", Calendar.getInstance(), pass);
...


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

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Пишите в глобальном скрипте. Иначе в окружении программы нет MQ соединения, чтобы события слать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 окт 2011, 12:21 
Не в сети
Клиент

Зарегистрирован: 28 окт 2008, 20:10
Сообщения: 259
Откуда: Махачкала
Карма: 6
Администратор писал(а):
Пишите в глобальном скрипте. Иначе в окружении программы нет MQ соединения, чтобы события слать.

В версии 4.6 нет mq или я ошибаюсь.
В таком случае как мне из вне вызвать глобальный скрипт? Мне нужно при определённом "событии из вне" создать договор.


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

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Ага, ну тут шина событий самодельная. Суть одна..
Можно вызвать - просто посмотрите HTTP запрос, который передаётся при вызове скрипта из клиента.
Клиент запустите bgbilling_debug.bat, либо посмотрите в access логах сервера запрос, либо посмотрите в журнале запросов, там только он не как в URL немного.
Ну и к запросу нужно добавить user=..&pswd=...


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

Зарегистрирован: 28 окт 2008, 20:10
Сообщения: 259
Откуда: Махачкала
Карма: 6
Администратор писал(а):
Ага, ну тут шина событий самодельная. Суть одна..
Можно вызвать - просто посмотрите HTTP запрос, который передаётся при вызове скрипта из клиента.
Клиент запустите bgbilling_debug.bat, либо посмотрите в access логах сервера запрос, либо посмотрите в журнале запросов, там только он не как в URL немного.
Ну и к запросу нужно добавить user=..&pswd=...

Понял. Спасибо.
Хорошее решение. Одно но: как передать параметры(например логин)?


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

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Логин/пароль для биллинга?
Просто добавляете к запросу: &user=admin&pswd=admin


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 окт 2011, 16:51 
Не в сети
Клиент

Зарегистрирован: 28 окт 2008, 20:10
Сообщения: 259
Откуда: Махачкала
Карма: 6
Cromeshnic писал(а):
Логин/пароль для биллинга?
Просто добавляете к запросу: &user=admin&pswd=admin

нет параметры создаваемого контракта. передаю через базу в вспомогательной таблице.


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

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Тогда нужно отдельные http-запросы.
Вот кусок ruby - скрипта, который создаёт типовые договоры с модулем dialup:

Код:
        xml = Common.exec_bgb("custom_title=#{title}&module=contract&sub_mode=0&action=NewContract&pattern_id=#{template}&date=#{date1}&")
        if xml.root.attributes["status"] == "ok"
                cid = xml.elements["//contract/@id"].to_s
                #Берем lid сгенерированного логина
                xml1 = Common.exec_bgb("module=contract&action=ContractCard&contentType=xml&cid=#{cid}&")
                if xml1.root.attributes["status"] == "ok"
##                      passwd = xml1.elements["//contract/@pswd"].to_s
                        passwd = gen()
                        lid = xml1.elements["//module[@id='1']/user_login_1/@id"].to_s
                        #Задаем pppoe-логин = номеру договора
                        Common.exec_bgb("module=dialup&alias=p#{title}&object_id=0&login_pswd=#{passwd}&access=0&cid=#{cid}&lid=#{lid}&session=1&action=UpdateLoginInfo&date2=&mid=1&")
                        #Заменяем пароль от статистики
                        Common.exec_bgb("module=contract&value=#{passwd}&action=UpdateContractPassword&cid=#{cid}&")
                else
                        print xml1.to_s
                        next
                end
      else
                print xml.to_s
        end


Хелпер:

Код:
require 'net/http'
require 'uri'
require 'rexml/document'
require 'iconv'
include REXML

class Common
        def self.get_uri(uri_str)
           response = Net::HTTP.get_response(URI.parse(uri_str))
           case response
           when Net::HTTPSuccess
                 response
           when Net::HTTPRedirection
                 fetch(response['location'], limit-1)
           else
                 response.error!
           end
           return response.body.to_s
        end

        def self.exec_bgb(uri, ignore=nil)
           s = get_uri("http://127.0.0.1:8080/bgbilling/executer?user=admin&pswd=admin&#{uri}")
           ret = REXML::Document.new(s)
           return ret if ignore
           if ret.root.attributes['status'] != 'ok'
                 STDERR.puts "WARN: -- #{uri}"
                 STDERR.puts Iconv.new('utf-8','cp1251').iconv(ret.to_s)
           end
           return ret
        end
end


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

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


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

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


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

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