PrintCreditmemo.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Sales\Controller\AbstractController;
  8. use Magento\Framework\App\Action\Context;
  9. use Magento\Framework\View\Result\PageFactory;
  10. use Magento\Sales\Api\CreditmemoRepositoryInterface;
  11. abstract class PrintCreditmemo extends \Magento\Framework\App\Action\Action
  12. {
  13. /**
  14. * @var OrderViewAuthorizationInterface
  15. */
  16. protected $orderAuthorization;
  17. /**
  18. * @var \Magento\Framework\Registry
  19. */
  20. protected $_coreRegistry;
  21. /**
  22. * @var PageFactory
  23. */
  24. protected $resultPageFactory;
  25. /**
  26. * @var CreditmemoRepositoryInterface
  27. */
  28. protected $creditmemoRepository;
  29. /**
  30. * @param Context $context
  31. * @param OrderViewAuthorizationInterface $orderAuthorization
  32. * @param \Magento\Framework\Registry $registry
  33. * @param PageFactory $resultPageFactory
  34. * @param CreditmemoRepositoryInterface $creditmemoRepository
  35. */
  36. public function __construct(
  37. Context $context,
  38. OrderViewAuthorizationInterface $orderAuthorization,
  39. \Magento\Framework\Registry $registry,
  40. PageFactory $resultPageFactory,
  41. CreditmemoRepositoryInterface $creditmemoRepository
  42. ) {
  43. $this->orderAuthorization = $orderAuthorization;
  44. $this->_coreRegistry = $registry;
  45. $this->resultPageFactory = $resultPageFactory;
  46. $this->creditmemoRepository = $creditmemoRepository;
  47. parent::__construct($context);
  48. }
  49. /**
  50. * Print Creditmemo Action
  51. *
  52. * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page
  53. */
  54. public function execute()
  55. {
  56. $creditmemoId = (int)$this->getRequest()->getParam('creditmemo_id');
  57. if ($creditmemoId) {
  58. $creditmemo = $this->creditmemoRepository->get($creditmemoId);
  59. $order = $creditmemo->getOrder();
  60. } else {
  61. $orderId = (int)$this->getRequest()->getParam('order_id');
  62. $order = $this->_objectManager->create(\Magento\Sales\Model\Order::class)->load($orderId);
  63. }
  64. if ($this->orderAuthorization->canView($order)) {
  65. $this->_coreRegistry->register('current_order', $order);
  66. if (isset($creditmemo)) {
  67. $this->_coreRegistry->register('current_creditmemo', $creditmemo);
  68. }
  69. /** @var \Magento\Framework\View\Result\Page $resultPage */
  70. $resultPage = $this->resultPageFactory->create();
  71. $resultPage->addHandle('print');
  72. return $resultPage;
  73. } else {
  74. /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
  75. $resultRedirect = $this->resultRedirectFactory->create();
  76. if ($this->_objectManager->get(\Magento\Customer\Model\Session::class)->isLoggedIn()) {
  77. $resultRedirect->setPath('*/*/history');
  78. } else {
  79. $resultRedirect->setPath('sales/guest/form');
  80. }
  81. return $resultRedirect;
  82. }
  83. }
  84. }