Pdfshipments.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Sales\Controller\Adminhtml\Shipment\AbstractShipment;
  8. use Magento\Backend\App\Action\Context;
  9. use Magento\Framework\App\ResponseInterface;
  10. use Magento\Framework\App\Filesystem\DirectoryList;
  11. use Magento\Framework\App\Response\Http\FileFactory;
  12. use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;
  13. use Magento\Ui\Component\MassAction\Filter;
  14. use Magento\Sales\Model\Order\Pdf\Shipment;
  15. use Magento\Framework\Stdlib\DateTime\DateTime;
  16. use Magento\Sales\Model\ResourceModel\Order\Shipment\CollectionFactory;
  17. abstract class Pdfshipments extends \Magento\Sales\Controller\Adminhtml\Order\AbstractMassAction
  18. {
  19. /**
  20. * Authorization level of a basic admin session
  21. *
  22. * @see _isAllowed()
  23. */
  24. const ADMIN_RESOURCE = 'Magento_Sales::shipment';
  25. /**
  26. * @var FileFactory
  27. */
  28. protected $fileFactory;
  29. /**
  30. * @var DateTime
  31. */
  32. protected $dateTime;
  33. /**
  34. * @var Shipment
  35. */
  36. protected $pdfShipment;
  37. /**
  38. * @param Context $context
  39. * @param Filter $filter
  40. * @param DateTime $dateTime
  41. * @param FileFactory $fileFactory
  42. * @param Shipment $shipment
  43. * @param CollectionFactory $collectionFactory
  44. */
  45. public function __construct(
  46. Context $context,
  47. Filter $filter,
  48. DateTime $dateTime,
  49. FileFactory $fileFactory,
  50. Shipment $shipment,
  51. CollectionFactory $collectionFactory
  52. ) {
  53. $this->fileFactory = $fileFactory;
  54. $this->dateTime = $dateTime;
  55. $this->pdfShipment = $shipment;
  56. $this->collectionFactory = $collectionFactory;
  57. parent::__construct($context, $filter);
  58. }
  59. /**
  60. * @param AbstractCollection $collection
  61. * @return $this|ResponseInterface
  62. * @throws \Exception
  63. */
  64. public function massAction(AbstractCollection $collection)
  65. {
  66. $pdf = $this->pdfShipment->getPdf($collection);
  67. $fileContent = ['type' => 'string', 'value' => $pdf->render(), 'rm' => true];
  68. return $this->fileFactory->create(
  69. sprintf('packingslip%s.pdf', $this->dateTime->date('Y-m-d_H-i-s')),
  70. $fileContent,
  71. DirectoryList::VAR_DIR,
  72. 'application/pdf'
  73. );
  74. }
  75. }