forum.bitel.ru
http://forum.bitel.ru/

Прикрепить счет к письму
http://forum.bitel.ru/viewtopic.php?f=19&t=10541
Страница 1 из 1

Автор:  skyb [ 22 май 2015, 08:22 ]
Заголовок сообщения:  Прикрепить счет к письму

Подскажите как это делать.

Автор:  Artur [ 22 май 2015, 09:56 ]
Заголовок сообщения:  Re: Прикрепить счет к письму

1) Формируете счет
2) в MailMsg прикрепляете созданный счет
3) вызываете send() у MailMsg

Автор:  dimOn [ 22 май 2015, 11:31 ]
Заголовок сообщения:  Re: Прикрепить счет к письму

без примеров такое нельзя приводить :mrgreen:

Автор:  Phricker [ 22 май 2015, 11:46 ]
Заголовок сообщения:  Re: Прикрепить счет к письму

dimOn писал(а):
без примеров такое нельзя приводить :mrgreen:

Цитата:
вот опять пишу, незя без примеров такое писать, незя !!! ))))

Автор:  Phricker [ 22 май 2015, 11:50 ]
Заголовок сообщения:  Re: Прикрепить счет к письму

http://stackoverflow.com/questions/1611 ... using-java

Автор:  skyb [ 22 май 2015, 13:39 ]
Заголовок сообщения:  Re: Прикрепить счет к письму

пятничные троли блин ))))
от куда берется pdf. если бы сохранено было куда то на диск я бы и не писал, а тут непонятно мне от куда этот пдф взять

Автор:  skyb [ 22 май 2015, 18:33 ]
Заголовок сообщения:  Re: Прикрепить счет к письму

все протролили а поделу никто не сказал :(

Автор:  skyb [ 26 май 2015, 06:55 ]
Заголовок сообщения:  Re: Прикрепить счет к письму

ап

Автор:  vkulakov [ 26 май 2015, 15:07 ]
Заголовок сообщения:  Re: Прикрепить счет к письму

Сейчас код поищу, который pdf делает.

Автор:  vkulakov [ 26 май 2015, 15:14 ]
Заголовок сообщения:  Re: Прикрепить счет к письму

Код:
private String XSL = "contract_print_bill.xsl";
...
try {
   DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
   DocumentBuilder dBuilder = dFactory.newDocumentBuilder();
   Document doc = dBuilder.newDocument();

   Element billElement = doc.createElement("bill");
   billElement.setAttribute("summ", summ.toPlainString());
   billElement.setAttribute("contractTitle", contractTitle);
   billElement.setAttribute("contractClient", contractClient);
   billElement.setAttribute("contractAddress", contractAddress);

   Element dataElement = doc.createElement("data");
   dataElement.appendChild(billElement);

   doc.appendChild(dataElement);

   getResponse().setContentType("application/pdf");
   getResponse().setHeader("Content-Disposition", FileDownload.getContentDisposition(request, fileName.toString(), true));

   XSLManager.getInstance().transform(new DOMSource(doc), XSL, FOUtils.renderSAXResult(getResponse().getOutputStream(), "application/pdf"));
} catch (Exception e) {
   log.error("Cannot generate pdf", e);
}

Я здесь с нуля создаю xml и передаю её в XSLManager. Вы можете XML со счётом получить из базы напрямую, можете через API биллинга. Stream можете в файл направить, а можете, наверное, сразу в письмо.

Вообще, со всех сторон трубят про F3 в Eclipse, могли бы и сами посмотреть.

Автор:  skyb [ 26 май 2015, 17:30 ]
Заголовок сообщения:  Re: Прикрепить счет к письму

да, есть код
Код:
XSLManager.getInstance().transformAndSend(XSL, new DOMSource(xml), params, "application/pdf", fileName, zip, email, emailSubject);

тока чета в API ненашел по нему инфы
XSL - это путь до файла xsl ?
Код:
String XSL = "/usr/local/BGBillingServer/webroot/xsl/bill_pdf.xsl";

new DOMSource(xml) - сюда вставлять xml ? а как правильно ее получить? я попробовал sql запросом, строка ругается
Код:
      int cid = 938;
      String query = " select xml, format_number, create_dt from bill_data_2 "+
                  " where cid = " + cid + " AND id = " + 2012;

         PreparedStatement ps = con.prepareStatement(query);
         ResultSet rs = ps.executeQuery();
            while (rs.next())
               {
                 String xml = new String( rs.getBytes(1), "windows-1251" );
                 //format_number = rs.getString(2);
                 //create_dt = rs.getString(3);
               print (xml);

params - вообще не понял что это, с остальным вроде прпвильно?

Автор:  vkulakov [ 26 май 2015, 20:19 ]
Заголовок сообщения:  Re: Прикрепить счет к письму

А F3 не работает?

Последовательность примерно такая:
Код:
// Получение XML из базы.
if (invoice) {
    data = new InvoiceManager(this.setup, con, mid, moduleSetup).getXMLData(cid.intValue(), id);
} else {
    data = new BillManager(this.setup, con, mid, moduleSetup).getXMLData(cid.intValue(), id);
}


Код:
ByteArrayInputStream bis = new ByteArrayInputStream(data);
Document doc = XMLUtils.parseDocument(new InputSource(bis));
Element bill = (Element) doc.getDocumentElement().getElementsByTagName("bill").item(0);

bill.setAttribute("with_stamp", "1");
XSLManager.getInstance().transform(new DOMSource(doc), patternName, FOUtils.renderSAXResult(getOutputStream(), "application/pdf"));

где patternName - просто имя файла xsl, как оно указано в типе документа.

В вашем примере params - не знаю, что это такое, смотрите по коду. У меня такого нет.

Не забываем, что всё это для версии 6.0.

Автор:  skyb [ 27 май 2015, 01:07 ]
Заголовок сообщения:  Re: Прикрепить счет к письму

F3 работает, но если честно не смог разобраться, спасибо, все получилось, с меня +
мы же тут помогать собрались ;-)

Автор:  vkulakov [ 27 май 2015, 12:26 ]
Заголовок сообщения:  Re: Прикрепить счет к письму

У меня просто версия другая, поэтому активно на F3 и настаиваю.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/