跳至內容
選單
此問題已被標幟
2 回覆
7656 瀏覽次數

Is there some kind of endpoint or get protocol to download a quotation_order printout report without having to use the Odoo GUI?

Thanks

頭像
捨棄
作者 最佳答案

Here's my method for generating quotation_order pdf's with Java if anyone finds this in the future:


private void generateOrderReport(final Object internalOdooQuoteId) throws XmlRpcException, IOException {
logger.info("generating quote report pdf for order #: " + internalOdooQuoteId);
final Object internalOdooQuoteIds = asList((Object[]) models.execute("execute_kw", asList(
db, uid, password,
"sale.order", "search",
asList(asList(
asList("id", "=", internalOdooQuoteId)
)),
new HashMap() {{
put("limit", 1);
}}
)));
final XmlRpcClientConfigImpl report_config = new XmlRpcClientConfigImpl();
report_config.setServerURL(
new URL(String.format("%s/xmlrpc/2/report", url)));
final Map<String, Object> result = (Map<String, Object>)models.execute(
report_config, "render_report", asList(
db, uid, password,
"sale.report_saleorder",
internalOdooQuoteIds));
final byte[] report_data = DatatypeConverter.parseBase64Binary(
(String)result.get("result"));
File file = new File("records/quotation_order.pdf");
FileUtils.writeByteArrayToFile(file, report_data);
}
頭像
捨棄

If you are looking to get the report of a sale, suppose you have to print the Quotation/Order of the sales having the id is 5, then you can get the report from the url as follows :- 0.0.0.0:8014/report/pdf/sale.report_sale_order/5

作者

Do you know how I could do this with the Java example from the docs? sale.report_sale_order doesn't seem to be a model:

final Object[] reportIds = (Object[])models.execute(

"execute_kw", asList(

db, uid, password,

"sale.order", "search",

asList(asList(

))

));

System.out.println(reportIds);

final XmlRpcClientConfigImpl report_config = new XmlRpcClientConfigImpl();

report_config.setServerURL(

new URL(String.format("%s/xmlrpc/2/report", url)));

final Map<String, Object> result = (Map<String, Object>)models.execute(

report_config, "render_report", asList(

db, uid, password,

"sale.report_sale_order",

reportIds));

final byte[] report_data = DatatypeConverter.parseBase64Binary(

(String)result.get("result"));

File file = new File("proposal/odooOutput.pdf");

byte[] bytes = Base64.decodeBase64(report_data);

FileUtils.writeByteArrayToFile(file, report_data);

Try this : 0.0.0.0:8014/report/pdf/sale.report_saleorder/5

最佳答案

Hi,

To get the reports from the code without going to the user interface you can check this, after authenticating you can choose any of this methods explained in it :

https://www.odoo.com/forum/help-1/question/how-to-print-report-from-website-121485

Suppose if you have to print the Quotation/Order in the sale order having the id 5, then from url you can get the report like this : http://0.0.0.0:8014/report/pdf/sale.report_saleorder/5

Thanks

頭像
捨棄
相關帖文 回覆 瀏覽次數 活動
1
7月 16
2445
1
12月 24
880
1
2月 19
6446
1
5月 25
908
1
11月 24
1535