/** * 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 = []; if ($collection->getSize()) { /** @var \Magento\Sales\Model\Order\Shipment $shipment */ foreach ($collection 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 shipments.')); return $this->resultRedirectFactory->create()->setPath('sales/shipment/'); }
/** * Batch print shipping labels for whole shipments. * Push pdf document with shipping labels to user browser * * @param AbstractCollection $collection * @return ResponseInterface|void * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ protected function massAction(AbstractCollection $collection) { $request = $this->getRequest(); $ids = $collection->getAllIds(); $createdFromOrders = !empty($ids); $shipments = null; $labelsContent = []; switch ($request->getParam('massaction_prepare_key')) { case 'shipment_ids': $ids = $request->getParam('shipment_ids'); array_filter($ids, 'intval'); if (!empty($ids)) { $shipments = $this->_objectManager->create('Magento\\Sales\\Model\\Resource\\Order\\Shipment\\Collection')->addFieldToFilter('entity_id', ['in' => $ids]); } break; case 'order_ids': $ids = $request->getParam('order_ids'); array_filter($ids, 'intval'); if (!empty($ids)) { $shipments = $this->_objectManager->create('Magento\\Sales\\Model\\Resource\\Order\\Shipment\\Collection')->setOrderFilter(['in' => $ids]); } break; } if ($shipments && $shipments->getSize()) { 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'); } if ($createdFromOrders) { $this->messageManager->addError(__('There are no shipping labels related to selected orders.')); $this->_redirect('sales/order/index'); } else { $this->messageManager->addError(__('There are no shipping labels related to selected shipments.')); $this->_redirect('sales/shipment/index'); } }