PrintCreditmemo.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Sales\Controller\Guest;
  8. use Magento\Framework\App\Action\Context;
  9. use Magento\Framework\View\Result\PageFactory;
  10. use Magento\Sales\Api\CreditmemoRepositoryInterface;
  11. class PrintCreditmemo extends \Magento\Sales\Controller\AbstractController\PrintCreditmemo
  12. {
  13. /**
  14. * @var OrderLoader
  15. */
  16. protected $orderLoader;
  17. /**
  18. * @var CreditmemoRepositoryInterface;
  19. */
  20. protected $creditmemoRepository;
  21. /**
  22. * @param Context $context
  23. * @param OrderViewAuthorization $orderAuthorization
  24. * @param \Magento\Framework\Registry $registry
  25. * @param PageFactory $resultPageFactory
  26. * @param CreditmemoRepositoryInterface $creditmemoRepository
  27. * @param OrderLoader $orderLoader
  28. */
  29. public function __construct(
  30. Context $context,
  31. OrderViewAuthorization $orderAuthorization,
  32. \Magento\Framework\Registry $registry,
  33. PageFactory $resultPageFactory,
  34. CreditmemoRepositoryInterface $creditmemoRepository,
  35. OrderLoader $orderLoader
  36. ) {
  37. $this->orderLoader = $orderLoader;
  38. $this->creditmemoRepository = $creditmemoRepository;
  39. parent::__construct(
  40. $context,
  41. $orderAuthorization,
  42. $registry,
  43. $resultPageFactory,
  44. $creditmemoRepository
  45. );
  46. }
  47. /**
  48. * @return \Magento\Framework\Controller\ResultInterface
  49. */
  50. public function execute()
  51. {
  52. $result = $this->orderLoader->load($this->_request);
  53. if ($result instanceof \Magento\Framework\Controller\ResultInterface) {
  54. return $result;
  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. $order = $this->_coreRegistry->registry('current_order');
  62. }
  63. if ($this->orderAuthorization->canView($order)) {
  64. if (isset($creditmemo)) {
  65. $this->_coreRegistry->register('current_creditmemo', $creditmemo);
  66. }
  67. return $this->resultPageFactory->create()->addHandle('print');
  68. } else {
  69. return $this->resultRedirectFactory->create()->setPath('sales/guest/form');
  70. }
  71. }
  72. }