forum.bitel.ru http://forum.bitel.ru/ |
|
Получить/отредактировать XML счета/фактуры в скрипте http://forum.bitel.ru/viewtopic.php?f=14&t=5549 |
Страница 1 из 1 |
Автор: | Феанор [ 01 июн 2011, 10:43 ] |
Заголовок сообщения: | Получить/отредактировать XML счета/фактуры в скрипте |
Добрый день. Хочу после создания счетов-фактур их пропарсить (кой чего поправить, кой чего добавить в 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. |
Автор: | Cromeshnic [ 01 июн 2011, 10:58 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
Попробуйте так: Код: Document doc = XMLUtils.parseDocument(new ByteArrayInputStream(invMan.getXMLData(25)));
|
Автор: | Феанор [ 01 июн 2011, 11:28 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
Cromeshnic писал(а): Попробуйте так: Код: Document doc = XMLUtils.parseDocument(new ByteArrayInputStream(invMan.getXMLData(25))); Спасибо, получилось. Только вот почему он сразу к обозначенному типу не привелся методом класса BillDoc? |
Автор: | Cromeshnic [ 01 июн 2011, 12:14 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
Ну он просто не выгребается из базы в методе getInvoice(int id) - это накладно. |
Автор: | Феанор [ 01 июн 2011, 13:19 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
Тогда у меня возникает другой вопрос - а загружает ли он 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); Но в базе ничего не меняется =( |
Автор: | Cromeshnic [ 01 июн 2011, 13:31 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
омг, так и не должен загружать ни xml ни другие поля - надо через InvoiceManager сохранять. |
Автор: | Феанор [ 01 июн 2011, 13:43 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
Cromeshnic писал(а): омг, так и не должен загружать ни xml ни другие поля - надо через InvoiceManager сохранять. Ну дело в том, что я и через InvoiceManager тоже пробовал. addBillDocs тоже ничего по факту не меняет и новых СФ не создает =/. Я как рассуждал когда не получилось- addBillDocs на то и add чтобы добавлять в пустой инвойс, если там ничего нет, то добавит, если есть - нет. setXml у инвойса прямо указывает - ставь это =) не пробовал правда еще public final void updatePositions(int id, org.w3c.dom.Element positions), но тут я не пойму какой элемент ему передавать. data? ps вообще можно через sql апдейт запрос сделать, но это как то неправильно я думаю. может кто подскажет как обновленную хмлку засунуть в инвойс, а то я уже туплю жестко похоже =((( |
Автор: | Феанор [ 03 июн 2011, 11:22 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
up??? на свежую голову лучше не стало, апи по модулю билл очень плохо описано, комментариев практически нигде нет =( |
Автор: | Cromeshnic [ 03 июн 2011, 11:37 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
Порылся - обновить нельзя, но addBillDocs должна добавить новую сф. |
Автор: | Феанор [ 03 июн 2011, 12:28 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
Cromeshnic писал(а): Порылся - обновить нельзя, но addBillDocs должна добавить новую сф. Как вариант использовать апдейт позишн, но что-то слишком много гемора. Я прихожу к выводу что проще похоже генерировать счет фактуры через ваш скрипт и на этапе создания элемента добавлять уже нужные аттрибуты =/ |
Автор: | Cromeshnic [ 03 июн 2011, 12:35 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
![]() Я уже тоже прихожу к такому выводу. А что именно за атрибуты вы хотите добавить? |
Автор: | restart [ 03 июн 2011, 13:11 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
Cromeshnic писал(а): Я уже тоже прихожу к такому выводу. ![]() Надо бы взяться хорошенько за API бухглатерии, чтобы было удобно создавать счета безо всякой возьни с XML... |
Автор: | Феанор [ 03 июн 2011, 13:51 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
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. Бухгалтера они такие бухгалтера, что иногда требуют вещей оч.странных, и хоть убейся, но сделай как им надо. Отсюда и все танцы с бубнами =) |
Автор: | skyb [ 03 июн 2011, 15:01 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
restart писал(а): Cromeshnic писал(а): Я уже тоже прихожу к такому выводу. ![]() Надо бы взяться хорошенько за API бухглатерии, чтобы было удобно создавать счета безо всякой возьни с XML... Дадада...давно пора |
Автор: | Cromeshnic [ 06 июн 2011, 08:28 ] |
Заголовок сообщения: | Re: Получить XML в скрипте |
Феанор писал(а): Цену услуги, чтобы не извращаться с математикой или sql запросами в xslt шаблонах. В конфиге для простых позиций (одна услуга) у которых может период и количество меняться добавил invoice.pos.X.param.1=sid:код_услуги далее в скрипте пробегался по xml, смотрел у какого нода есть эта услуга, далее смотрит тарифы договора (субдоговора) к которому относится данная позиция, в тарифе находим услугу и ее стоимость - добавляем аттрибут price, а в шаблоне ставим проверку - если есть аттрибут price - выводи его, если нет - дели стоимость на количество. Омг, респект. У нас цена определяется делением суммы на количество, но это не сработает в случае смены тарифа в середине месяца. Пока бухгалтерия не жалуется, но однажды |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |