/**
  * Print shipments for selected orders
  *
  * @param AbstractCollection $collection
  * @return ResponseInterface|\Magento\Backend\Model\View\Result\Redirect
  */
 protected function massAction(AbstractCollection $collection)
 {
     $shipmentsCollection = $this->shipmentCollectionFactotory->create()->setOrderFilter(['in' => $collection->getAllIds()]);
     if (!$shipmentsCollection->getSize()) {
         $this->messageManager->addError(__('There are no printable documents related to selected orders.'));
         return $this->resultRedirectFactory->create()->setPath($this->getComponentRefererUrl());
     }
     return $this->fileFactory->create(sprintf('packingslip%s.pdf', $this->dateTime->date('Y-m-d_H-i-s')), $this->pdfShipment->getPdf($shipmentsCollection->getItems())->render(), DirectoryList::VAR_DIR, 'application/pdf');
 }
 /**
  * Batch print shipping labels for whole shipments.
  * Push pdf document with shipping labels to user browser
  *
  * @param AbstractCollection $collection
  * @return ResponseInterface|ResultInterface
  */
 protected function massAction(AbstractCollection $collection)
 {
     $labelsContent = [];
     $shipments = $this->shipmentCollectionFactory->create()->setOrderFilter(['in' => $collection->getAllIds()]);
     if ($shipments->getSize()) {
         /** @var \Magento\Sales\Model\Order\Shipment $shipment */
         foreach ($shipments as $shipment) {
             $labelContent = $shipment->getShippingLabel();
             if ($labelContent) {
                 $labelsContent[] = $labelContent;
             }
         }
     }
     if (!empty($labelsContent)) {
         $outputPdf = $this->labelGenerator->combineLabelsPdf($labelsContent);
         return $this->fileFactory->create('ShippingLabels.pdf', $outputPdf->render(), DirectoryList::VAR_DIR, 'application/pdf');
     }
     $this->messageManager->addError(__('There are no shipping labels related to selected orders.'));
     return $this->resultRedirectFactory->create()->setPath('sales/order/');
 }
Example #3
0
 /**
  * Retrieve order shipments collection
  *
  * @return ShipmentCollection|false
  */
 public function getShipmentsCollection()
 {
     if (empty($this->_shipments)) {
         if ($this->getId()) {
             $this->_shipments = $this->_shipmentCollectionFactory->create()->setOrderFilter($this)->load();
         } else {
             return false;
         }
     }
     return $this->_shipments;
 }
Example #4
-6
 /**
  * Print all documents for selected orders
  *
  * @param AbstractCollection $collection
  * @return ResponseInterface|\Magento\Backend\Model\View\Result\Redirect
  *
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 protected function massAction(AbstractCollection $collection)
 {
     $orderIds = $collection->getAllIds();
     $shipments = $this->shipmentCollectionFactory->create()->setOrderFilter(['in' => $orderIds]);
     $invoices = $this->invoiceCollectionFactory->create()->setOrderFilter(['in' => $orderIds]);
     $creditmemos = $this->creditmemoCollectionFactory->create()->setOrderFilter(['in' => $orderIds]);
     $documents = [];
     if ($invoices->getSize()) {
         $documents[] = $this->pdfInvoice->getPdf($invoices);
     }
     if ($shipments->getSize()) {
         $documents[] = $this->pdfShipment->getPdf($shipments);
     }
     if ($creditmemos->getSize()) {
         $documents[] = $this->pdfCreditmemo->getPdf($creditmemos);
     }
     if (empty($documents)) {
         $this->messageManager->addError(__('There are no printable documents related to selected orders.'));
         return $this->resultRedirectFactory->create()->setPath($this->getComponentRefererUrl());
     }
     $pdf = array_shift($documents);
     foreach ($documents as $document) {
         $pdf->pages = array_merge($pdf->pages, $document->pages);
     }
     return $this->fileFactory->create(sprintf('docs%s.pdf', $this->dateTime->date('Y-m-d_H-i-s')), $pdf->render(), DirectoryList::VAR_DIR, 'application/pdf');
 }