*/ namespace Magento\Shipping\Block\Adminhtml\View; /** * @api * @since 100.0.2 */ class Form extends \Magento\Sales\Block\Adminhtml\Order\AbstractOrder { /** * @var \Magento\Shipping\Model\CarrierFactory */ protected $_carrierFactory; /** * @param \Magento\Backend\Block\Template\Context $context * @param \Magento\Framework\Registry $registry * @param \Magento\Sales\Helper\Admin $adminHelper * @param \Magento\Shipping\Model\CarrierFactory $carrierFactory * @param array $data */ public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\Framework\Registry $registry, \Magento\Sales\Helper\Admin $adminHelper, \Magento\Shipping\Model\CarrierFactory $carrierFactory, array $data = [] ) { $this->_carrierFactory = $carrierFactory; parent::__construct($context, $registry, $adminHelper, $data); } /** * Retrieve shipment model instance * * @return \Magento\Sales\Model\Order\Shipment */ public function getShipment() { return $this->_coreRegistry->registry('current_shipment'); } /** * Retrieve invoice order * * @return \Magento\Sales\Model\Order */ public function getOrder() { return $this->getShipment()->getOrder(); } /** * Retrieve source * * @return \Magento\Sales\Model\Order\Shipment */ public function getSource() { return $this->getShipment(); } /** * Get create label button html * * @return string * @SuppressWarnings(PHPMD.UnusedLocalVariable) */ public function getCreateLabelButton() { $data['shipment_id'] = $this->getShipment()->getId(); $url = $this->getUrl('adminhtml/order_shipment/createLabel', $data); return $this->getLayout()->createBlock( \Magento\Backend\Block\Widget\Button::class )->setData( [ 'label' => __('Create Shipping Label...'), 'onclick' => 'packaging.showWindow();', 'class' => 'action-create-label' ] )->toHtml(); } /** * Get print label button html * * @return string */ public function getPrintLabelButton() { $data['shipment_id'] = $this->getShipment()->getId(); $url = $this->getUrl('adminhtml/order_shipment/printLabel', $data); return $this->getLayout()->createBlock( \Magento\Backend\Block\Widget\Button::class )->setData( ['label' => __('Print Shipping Label'), 'onclick' => 'setLocation(\'' . $url . '\')'] )->toHtml(); } /** * Show packages button html * * @return string */ public function getShowPackagesButton() { return $this->getLayout()->createBlock( \Magento\Backend\Block\Widget\Button::class )->setData( ['label' => __('Show Packages'), 'onclick' => 'showPackedWindow();'] )->toHtml(); } /** * Check is carrier has functionality of creation shipping labels * * @return bool */ public function canCreateShippingLabel() { $shippingCarrier = $this->_carrierFactory->create( $this->getOrder()->getShippingMethod(true)->getCarrierCode() ); return $shippingCarrier && $shippingCarrier->isShippingLabelsAvailable(); } }