BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 апр 2024, 05:17

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




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
СообщениеДобавлено: 01 июн 2011, 10:43 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
Добрый день.
Хочу после создания счетов-фактур их пропарсить (кой чего поправить, кой чего добавить в xml).
Код:
InvoiceManager invMan = new InvoiceManager( setup, con, mid, moduleSetup );
BillDoc invDoc=invMan.getInvoice(25); // для тестов 25 - номер последней счет фактуры
ct=invDoc.getSumm();
invXml=invDoc.getXml();
nodList=invXml.getElementsByTagName("pos");

И вот такое впечатление что getXml() возвращает null, а почему - не пойму. invDoc - нормально создан, getSumm возвращает реальную сумму. А вот getXml должен генерировать Document, но там похоже null:

Код:
EXCEPTIONS:
null
null : at Line: 30 : in file: добавить цены : invXml .getElementsByTagName ( "pos" )

И так с любыми манипуляциям над invXml.


Последний раз редактировалось Феанор 06 июн 2011, 11:59, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 01 июн 2011, 10:58 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Попробуйте так:

Код:
Document doc = XMLUtils.parseDocument(new ByteArrayInputStream(invMan.getXMLData(25)));


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 01 июн 2011, 11:28 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
Cromeshnic писал(а):
Попробуйте так:

Код:
Document doc = XMLUtils.parseDocument(new ByteArrayInputStream(invMan.getXMLData(25)));


Спасибо, получилось. Только вот почему он сразу к обозначенному типу не привелся методом класса BillDoc?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 01 июн 2011, 12:14 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Ну он просто не выгребается из базы в методе getInvoice(int id) - это накладно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 01 июн 2011, 13:19 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
Тогда у меня возникает другой вопрос - а загружает ли он xml в БД методом setXml(Document xml) класса BillDoc? А то я поправил хмлку как мне надо, проверив через

Код:
ByteArrayOutputStream os = new ByteArrayOutputStream();
XMLUtils.serialize(doc , os, "utf-8");
print(os.toString());


Затем пытаюсь выполнить
Код:
   invDoc.setXml(doc); //invDoc=invoiceManager.getInvoice(int);

Но в базе ничего не меняется =(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 01 июн 2011, 13:31 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
омг, так и не должен загружать ни xml ни другие поля - надо через InvoiceManager сохранять.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 01 июн 2011, 13:43 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
Cromeshnic писал(а):
омг, так и не должен загружать ни xml ни другие поля - надо через InvoiceManager сохранять.

Ну дело в том, что я и через InvoiceManager тоже пробовал. addBillDocs тоже ничего по факту не меняет и новых СФ не создает =/. Я как рассуждал когда не получилось- addBillDocs на то и add чтобы добавлять в пустой инвойс, если там ничего нет, то добавит, если есть - нет. setXml у инвойса прямо указывает - ставь это =)
не пробовал правда еще public final void updatePositions(int id, org.w3c.dom.Element positions), но тут я не пойму какой элемент ему передавать. data?

ps вообще можно через sql апдейт запрос сделать, но это как то неправильно я думаю. может кто подскажет как обновленную хмлку засунуть в инвойс, а то я уже туплю жестко похоже =(((


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 03 июн 2011, 11:22 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
up??? на свежую голову лучше не стало, апи по модулю билл очень плохо описано, комментариев практически нигде нет =(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 03 июн 2011, 11:37 
Не в сети
Клиент
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 03 июн 2011, 12:28 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
Cromeshnic писал(а):
Порылся - обновить нельзя, но addBillDocs должна добавить новую сф.

Как вариант использовать апдейт позишн, но что-то слишком много гемора. Я прихожу к выводу что проще похоже генерировать счет фактуры через ваш скрипт и на этапе создания элемента добавлять уже нужные аттрибуты =/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 03 июн 2011, 12:35 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Изображение
Я уже тоже прихожу к такому выводу.

А что именно за атрибуты вы хотите добавить?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 03 июн 2011, 13:11 
Не в сети
Аватара пользователя

Зарегистрирован: 19 мар 2009, 16:15
Сообщения: 210
Откуда: Уфа
Карма: 27
Cromeshnic писал(а):
Я уже тоже прихожу к такому выводу.

:facepalm:
Надо бы взяться хорошенько за API бухглатерии, чтобы было удобно создавать счета безо всякой возьни с XML...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 03 июн 2011, 13:51 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
Cromeshnic писал(а):
Изображение
Я уже тоже прихожу к такому выводу.

А что именно за атрибуты вы хотите добавить?

Цену услуги, чтобы не извращаться с математикой или sql запросами в xslt шаблонах.
В конфиге для простых позиций (одна услуга) у которых может период и количество меняться добавил
invoice.pos.X.param.1=sid:код_услуги
далее в скрипте пробегался по xml, смотрел у какого нода есть эта услуга, далее смотрит тарифы договора (субдоговора) к которому относится данная позиция, в тарифе находим услугу и ее стоимость - добавляем аттрибут price, а в шаблоне ставим проверку - если есть аттрибут price - выводи его, если нет - дели стоимость на количество.

ps как говорил выше - услуги простые, т.е. с фиксированной АП месячной с подневным режимом списания. Просто допустим если есть услуга аренда ip, или аренда портов, то их количество может меняться.
pps а вообще правильно будет сделать несколько строк в СФ для каждого количества и писать так (например полмесяца 1 айпишник, полмесяца 2):
Код:
Название               ед-ца    кол-во    цена      стоимость
Аренда IP (2шт)       шт/мес     1          50           50 .............
Аренда IP (1шт)       шт/мес     0.50       50           50 ..............   

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


restart писал(а):
Надо бы взяться хорошенько за API бухглатерии, чтобы было удобно создавать счета безо всякой возьни с XML...

+1. Бухгалтера они такие бухгалтера, что иногда требуют вещей оч.странных, и хоть убейся, но сделай как им надо. Отсюда и все танцы с бубнами =)


Последний раз редактировалось Феанор 03 июн 2011, 15:30, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 03 июн 2011, 15:01 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
restart писал(а):
Cromeshnic писал(а):
Я уже тоже прихожу к такому выводу.

:facepalm:
Надо бы взяться хорошенько за API бухглатерии, чтобы было удобно создавать счета безо всякой возьни с XML...

Дадада...давно пора

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получить XML в скрипте
СообщениеДобавлено: 06 июн 2011, 08:28 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Феанор писал(а):
Цену услуги, чтобы не извращаться с математикой или sql запросами в xslt шаблонах.
В конфиге для простых позиций (одна услуга) у которых может период и количество меняться добавил
invoice.pos.X.param.1=sid:код_услуги
далее в скрипте пробегался по xml, смотрел у какого нода есть эта услуга, далее смотрит тарифы договора (субдоговора) к которому относится данная позиция, в тарифе находим услугу и ее стоимость - добавляем аттрибут price, а в шаблоне ставим проверку - если есть аттрибут price - выводи его, если нет - дели стоимость на количество.


Омг, респект.
У нас цена определяется делением суммы на количество, но это не сработает в случае смены тарифа в середине месяца. Пока бухгалтерия не жалуется, но однажды во тьме Мории гномы пробудили Барлога они могут озадачиться и придётся вот так же извращаться.


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

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


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

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


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

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