BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: 20 ноя 2014, 18:56 
Не в сети

Зарегистрирован: 19 ноя 2014, 19:35
Сообщения: 9
Карма: 0
Добрый день.

Пишу собственный web-сервис (custom API). Возникла необходимость воспользоваться методами bitel.billing.server.bill.bean.BillManager.getBill() и bitel.billing.server.bill.bean.InvoiceManager.getInvoice(). Для этого мне необходимо либо как-то получить готовые экземпляры соответствующих классов, либо инстанциировать их вручную. Собственно, хочу понять, как мне сделать либо одно, либо другое.

Конструкторы BillManager и InvoiceManager требуют Setup setup, java.sql.Connection con, int mid, Preferences moduleSetup. Насколько я понимаю, Setup я могу получить из ru.bitel.bgbilling.server.util.Setup.getSetup(), java.sql.Connection оттуда же с помощью getDBConnectionFromPool(). А вот откуда взять mid и moduleSetup? Чей mid указывать, модуля "Бухгалтерия"?

_________________
Сервер: вер. 6.0 сборка 1798 от 08.10.2014 11:47:26
os: Linux
java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 ноя 2014, 19:07 
Не в сети
Разработчик

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

Пишу собственный web-сервис (custom API). Возникла необходимость воспользоваться методами bitel.billing.server.bill.bean.BillManager.getBill() и bitel.billing.server.bill.bean.InvoiceManager.getInvoice(). Для этого мне необходимо либо как-то получить готовые экземпляры соответствующих классов, либо инстанциировать их вручную. Собственно, хочу понять, как мне сделать либо одно, либо другое.

Конструкторы BillManager и InvoiceManager требуют Setup setup, java.sql.Connection con, int mid, Preferences moduleSetup. Насколько я понимаю, Setup я могу получить из ru.bitel.bgbilling.server.util.Setup.getSetup(), java.sql.Connection оттуда же с помощью getDBConnectionFromPool(). А вот откуда взять mid и moduleSetup? Чей mid указывать, модуля "Бухгалтерия"?



Setup.getSetup().getModuleSetup( mid )
mid - код модуля бухгалтерия.


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

Зарегистрирован: 19 ноя 2014, 19:35
Сообщения: 9
Карма: 0
Сервис я накидал, однако теперь ловлю NPE при вызове BillDoc.getPositionList(). При этом BillDoc не NULL. ЧЯДНТ?

Код:
package api.net.sparktell.bgbilling.service.impl;

import org.apache.log4j.Logger;

import java.sql.Connection;
import java.util.List;
import javax.jws.WebService;

import ru.bitel.common.Preferences;
import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.kernel.container.service.server.AbstractService;
import ru.bitel.bgbilling.server.util.Setup;
import bitel.billing.server.bill.bean.BillManager;
import bitel.billing.server.bill.bean.InvoiceManager;
import bitel.billing.server.bill.bean.Bill;
import bitel.billing.server.bill.bean.BillDoc;
import bitel.billing.server.bill.bean.PositionValue;


@WebService(targetNamespace="sparktell")
public class BillServiceImpl
extends AbstractService
{
   private static final int BUH_MID = 12;
   private static final Logger logger = Logger.getLogger( BillServiceImpl.class );
   private static final Setup setup = Setup.getSetup();
   private static final Connection conn = setup.getDBConnectionFromPool();
   private static final Preferences moduleSetup = setup.getModuleSetup( BUH_MID );


   private String[] getResult( BillDoc billDoc )
   throws BGException
   {
      if (billDoc == null) {
         logger.info( "billDoc is NULL!" );
         return null;
      }

      List<String> nameList = null;

      for ( PositionValue positionValue : billDoc.getPositionList() ) {
         nameList.add( positionValue.getName() );
      }

      String[] result = new String[nameList.size()];
      nameList.toArray(result);

      return result;
   }


   public String[] getBillDetails( int id )
   throws BGException
   {
      BillManager billManager = new BillManager( setup, conn, BUH_MID, moduleSetup);
      Bill bill = billManager.getBill( id );

      return getResult( bill );
   }


   public String[] getInvoiceDetails( int id )
   throws BGException
   {
      InvoiceManager invoiceManager = new InvoiceManager( setup, conn, BUH_MID, moduleSetup);
      BillDoc invoice = invoiceManager.getInvoice( id );

      return getResult( invoice );
   }
}

_________________
Сервер: вер. 6.0 сборка 1798 от 08.10.2014 11:47:26
os: Linux
java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45


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

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
в классах BillManager/InvoiceManager список позиций не заполняется.
Готовый список позиций можно вытянуть из xml счета/счет-фактуры.
У вас какая задача?

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


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

Зарегистрирован: 19 ноя 2014, 19:35
Сообщения: 9
Карма: 0
Мне необходимо отдавать список позиций с их ценами в ответ на запрос с id счета или счет-фактуры.

_________________
Сервер: вер. 6.0 сборка 1798 от 08.10.2014 11:47:26
os: Linux
java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 дек 2014, 14:56 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Тогда только такой вариант: по номеру счета достаем xml из БД, а из этой xml достаем все элементы pos.
Также нужно учесть, что в счетах могут быть позиции субдоговоров, они хранятся в элементе sub_bill.
Так то код не сильно сложный, если нужно, могу набросать.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


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

Зарегистрирован: 19 ноя 2014, 19:35
Сообщения: 9
Карма: 0
С удовольствием соглашусь :)

_________________
Сервер: вер. 6.0 сборка 1798 от 08.10.2014 11:47:26
os: Linux
java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 дек 2014, 15:15 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Примерно вот так:

Код:
import java.io.InputStream;

import java.sql.Blob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import java.util.Iterator;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

import ru.bitel.common.XMLUtils;

...

String query = "SELECT xml FROM bill_invoice_data_" + BILL_MID + " WHERE id=" + id;
PreparedStatement ps = con.prepareStatement();
ResultSet rs = ps.executeQuery();
while( rs.next() )
{
   Blob xml = rs.getBlob( "xml" );
   InputStream is = xml.getBinaryStream();
   Document doc = XMLUtils.parseDocument( is );
   Node billNode = XMLUtils.selectElement( doc, "//bill" );
   Iterable elems = XMLUtils.selectElements( billNode, "pos" );
   //список позиций
   for ( Iterator iterator = elems.iterator(); iterator.hasNext(); )
   {
      Element posElem = (Element)iterator.next();
      ....
   }
   //список позиций субдоговоров
   Iterable subElems = XMLUtils.selectElements( billNode, "sub_bill" );
   for ( Iterator iterator = subElems.iterator(); iterator.hasNext(); )
   {
      Element subContractElement = (Element)iterator.next();
      ....
   }
}
rs.close();
ps.close();


Список атрибутов у позиции можно посмотреть в клиенте биллинга на вкладке Просмотр документов, нажав на кнопку XML.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


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

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


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

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


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

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