Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Reports via extension 

Label
Body3.7.0+


.

...

Reports framework has been simplified in versions 

...

Label
Body3.7.0+

.to fully use extensions capability.

...

Out of the doc the platform now support two kinds of generator plug-ins: PDF and Excel report generators.

Storefront

 

Normally storefront would not need custom reports. However there are some cases when a report file needs to be generated. Such as the case with delivery report that can be used for providing customers with downloadable PDF invoice files for the orders they have placed.

...

Delivery report is fully configured in the CheckoutServiceFacadeImpl.printOrderByReference() method that programmatically creates a report descriptor and then triggers the PDF report generator with this descriptor object and the order object from the order history page.

Code Block
private ReportDescriptor createReceiptDescriptor() {
       final ReportDescriptor receipt = new ReportDescriptor();
        receipt.setReportId("reportDelivery");
        receipt.setXslfoBase("client/order/delivery");
       final ReportParameter param1 = new ReportParameter();
        param1.setParameterId("orderNumber");
        param1.setBusinesstype("String");
        param1.setMandatory(true);
        receipt.setParameters(Collections.singletonList(param1));
       return receipt;
   }

   /** {@inheritDoc} */
   @Override
   public void printOrderByReference(final String reference, final OutputStream outputStream) {

       final CustomerOrder order = customerOrderService.findByReference(reference);
       if (order != null) {
           final Pair data = new Pair(order, order.getDelivery());

           final Map<String, Object> values = new HashMap<>();
            values.put("orderNumber", order.getOrdernum());
            values.put("shop", order.getShop());

            reportGenerator.generateReport(
                    createReceiptDescriptor(),
                    values,
                    data,
                    order.getLocale(),
                    outputStream
           );

       }
   } 

Resulting file is sent to the output stream thus allowing this method to be used with URL mapping for a downloadable PDF link.

...