PrintPackage.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Shipping\Controller\Adminhtml\Order\Shipment;
  8. use Magento\Backend\App\Action;
  9. use Magento\Framework\App\ResponseInterface;
  10. use Magento\Framework\App\Filesystem\DirectoryList;
  11. class PrintPackage extends \Magento\Backend\App\Action
  12. {
  13. /**
  14. * Authorization level of a basic admin session
  15. *
  16. * @see _isAllowed()
  17. */
  18. const ADMIN_RESOURCE = 'Magento_Sales::shipment';
  19. /**
  20. * @var \Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader
  21. */
  22. protected $shipmentLoader;
  23. /**
  24. * @var \Magento\Framework\App\Response\Http\FileFactory
  25. */
  26. protected $_fileFactory;
  27. /**
  28. * @param Action\Context $context
  29. * @param \Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader $shipmentLoader
  30. * @param \Magento\Framework\App\Response\Http\FileFactory $fileFactory
  31. */
  32. public function __construct(
  33. Action\Context $context,
  34. \Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader $shipmentLoader,
  35. \Magento\Framework\App\Response\Http\FileFactory $fileFactory
  36. ) {
  37. $this->shipmentLoader = $shipmentLoader;
  38. $this->_fileFactory = $fileFactory;
  39. parent::__construct($context);
  40. }
  41. /**
  42. * Create pdf document with information about packages
  43. *
  44. * @return ResponseInterface|void
  45. */
  46. public function execute()
  47. {
  48. $this->shipmentLoader->setOrderId($this->getRequest()->getParam('order_id'));
  49. $this->shipmentLoader->setShipmentId($this->getRequest()->getParam('shipment_id'));
  50. $this->shipmentLoader->setShipment($this->getRequest()->getParam('shipment'));
  51. $this->shipmentLoader->setTracking($this->getRequest()->getParam('tracking'));
  52. $shipment = $this->shipmentLoader->load();
  53. if ($shipment) {
  54. /** @var \Zend_Pdf $pdf */
  55. $pdf = $this->_objectManager->create(\Magento\Shipping\Model\Order\Pdf\Packaging::class)->getPdf($shipment);
  56. return $this->_fileFactory->create(
  57. 'packingslip' . $this->_objectManager->get(
  58. \Magento\Framework\Stdlib\DateTime\DateTime::class
  59. )->date(
  60. 'Y-m-d_H-i-s'
  61. ) . '.pdf',
  62. $pdf->render(),
  63. DirectoryList::VAR_DIR,
  64. 'application/pdf'
  65. );
  66. } else {
  67. $this->_forward('noroute');
  68. }
  69. }
  70. }