CreateLabel.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. class CreateLabel extends \Magento\Backend\App\Action
  10. {
  11. /**
  12. * Authorization level of a basic admin session
  13. *
  14. * @see _isAllowed()
  15. */
  16. const ADMIN_RESOURCE = 'Magento_Sales::shipment';
  17. /**
  18. * @var \Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader
  19. */
  20. protected $shipmentLoader;
  21. /**
  22. * @var \Magento\Shipping\Model\Shipping\LabelGenerator
  23. */
  24. protected $labelGenerator;
  25. /**
  26. * @param Action\Context $context
  27. * @param \Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader $shipmentLoader
  28. * @param \Magento\Shipping\Model\Shipping\LabelGenerator $labelGenerator
  29. */
  30. public function __construct(
  31. Action\Context $context,
  32. \Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader $shipmentLoader,
  33. \Magento\Shipping\Model\Shipping\LabelGenerator $labelGenerator
  34. ) {
  35. $this->shipmentLoader = $shipmentLoader;
  36. $this->labelGenerator = $labelGenerator;
  37. parent::__construct($context);
  38. }
  39. /**
  40. * Create shipping label action for specific shipment
  41. *
  42. * @return void
  43. */
  44. public function execute()
  45. {
  46. $response = new \Magento\Framework\DataObject();
  47. try {
  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. $this->labelGenerator->create($shipment, $this->_request);
  54. $shipment->save();
  55. $this->messageManager->addSuccess(__('You created the shipping label.'));
  56. $response->setOk(true);
  57. } catch (\Magento\Framework\Exception\LocalizedException $e) {
  58. $response->setError(true);
  59. $response->setMessage($e->getMessage());
  60. } catch (\Exception $e) {
  61. $this->_objectManager->get(\Psr\Log\LoggerInterface::class)->critical($e);
  62. $response->setError(true);
  63. $response->setMessage(__('An error occurred while creating shipping label.'));
  64. }
  65. $this->getResponse()->representJson($response->toJson());
  66. }
  67. }