Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Pdfshipments.php
Go to the documentation of this file.
1 <?php
7 
16 use Magento\Sales\Model\ResourceModel\Order\Shipment\CollectionFactory as ShipmentCollectionFactory;
18 
22 class Pdfshipments extends \Magento\Sales\Controller\Adminhtml\Order\AbstractMassAction
23 {
27  const ADMIN_RESOURCE = 'Magento_Sales::ship';
28 
32  protected $fileFactory;
33 
37  protected $dateTime;
38 
42  protected $pdfShipment;
43 
48 
58  public function __construct(
59  Context $context,
65  ShipmentCollectionFactory $shipmentCollectionFactory
66  ) {
67  $this->fileFactory = $fileFactory;
68  $this->dateTime = $dateTime;
69  $this->pdfShipment = $shipment;
70  $this->collectionFactory = $collectionFactory;
71  $this->shipmentCollectionFactory = $shipmentCollectionFactory;
72  parent::__construct($context, $filter);
73  }
74 
83  {
84  $shipmentsCollection = $this->shipmentCollectionFactory
85  ->create()
86  ->setOrderFilter(['in' => $collection->getAllIds()]);
87  if (!$shipmentsCollection->getSize()) {
88  $this->messageManager->addErrorMessage(__('There are no printable documents related to selected orders.'));
89  return $this->resultRedirectFactory->create()->setPath($this->getComponentRefererUrl());
90  }
91 
92  $pdf = $this->pdfShipment->getPdf($shipmentsCollection->getItems());
93  $fileContent = ['type' => 'string', 'value' => $pdf->render(), 'rm' => true];
94 
95  return $this->fileFactory->create(
96  sprintf('packingslip%s.pdf', $this->dateTime->date('Y-m-d_H-i-s')),
97  $fileContent,
98  DirectoryList::VAR_DIR,
99  'application/pdf'
100  );
101  }
102 }
__construct(Context $context, Filter $filter, CollectionFactory $collectionFactory, DateTime $dateTime, FileFactory $fileFactory, Shipment $shipment, ShipmentCollectionFactory $shipmentCollectionFactory)
__()
Definition: __.php:13
foreach($order->getItems() as $orderItem) $shipment