Skip to Content
Menu
You need to be registered to interact with the community.
This question has been flagged
2 Odgovori
7699 Prikazi

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

Thanks

Avatar
Opusti
Avtor Best Answer

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);
}
Avatar
Opusti

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

Avtor

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

Best Answer

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

Avatar
Opusti
Related Posts Odgovori Prikazi Aktivnost
1
jul. 16
2455
1
dec. 24
898
1
feb. 19
6467
1
maj 25
937
1
nov. 24
1593