PickupPrintButton.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. /**
  3. * Refer to LICENSE.txt distributed with the Temando Shipping module for notice of license
  4. */
  5. namespace Temando\Shipping\Block\Adminhtml\PageAction;
  6. use Magento\Backend\Block\Template\Context;
  7. use Magento\Backend\Block\Widget\Button;
  8. use Temando\Shipping\Model\PickupInterface;
  9. use Temando\Shipping\Model\PickupProviderInterface;
  10. use Temando\Shipping\ViewModel\DataProvider\PickupUrl;
  11. /**
  12. * Action Button to Print a Packaging Slip for a Pickup Action
  13. *
  14. * @api
  15. * @package Temando\Shipping\Block
  16. * @author Benjamin Heuer <benjamin.heuer@netresearch.de>
  17. * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  18. * @link https://www.temando.com/
  19. */
  20. class PickupPrintButton extends Button
  21. {
  22. /**
  23. * @var PickupProviderInterface
  24. */
  25. private $pickupProvider;
  26. /**
  27. * @var PickupUrl
  28. */
  29. private $pickupUrl;
  30. /**
  31. * @param Context $context
  32. * @param PickupProviderInterface $pickupProvider
  33. * @param PickupUrl $pickupUrl
  34. * @param mixed[] $data
  35. */
  36. public function __construct(
  37. Context $context,
  38. PickupProviderInterface $pickupProvider,
  39. PickupUrl $pickupUrl,
  40. array $data = []
  41. ) {
  42. $this->pickupProvider = $pickupProvider;
  43. $this->pickupUrl = $pickupUrl;
  44. parent::__construct($context, $data);
  45. }
  46. /**
  47. * Add button data
  48. *
  49. * @return string
  50. */
  51. protected function _toHtml()
  52. {
  53. $pickup = $this->pickupProvider->getPickup();
  54. $pickupId = $pickup->getPickupId();
  55. if ($pickup->getState() === PickupInterface::STATE_CANCELLED) {
  56. return '';
  57. }
  58. $printPickupUrl = $this->pickupUrl->getPrintActionUrl([
  59. 'pickup_id' => $pickupId,
  60. 'sales_order_id' => $this->pickupProvider->getOrder()->getEntityId(),
  61. ]);
  62. $this->setData('label', __('Print'));
  63. $this->setData('class', 'print');
  64. $this->setData('id', 'pickup-view-print-button');
  65. $this->setData('onclick', sprintf("setLocation('%s')", $printPickupUrl));
  66. return parent::_toHtml();
  67. }
  68. }