![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/extmag/shiplab/Plugin/Widget/Toolbar/ |
<?php /** * Copyright © Extmag. All rights reserved. */ namespace Extmag\Shiplab\Plugin\Widget\Toolbar; use Extmag\Shiplab\Ui\Component\Control\SplitButton; use Extmag\Shiplab\Helper\Manager; use Extmag\Shiplab\Model\ResourceModel\Label\CollectionFactory as LabelCollection; use Extmag\Shiplab\Model\Source\CarrierCodes; use Magento\Backend\Block\Widget\Button\ButtonList; use Magento\Backend\Block\Widget\Button\Toolbar; use Magento\Framework\Exception\InputException; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Framework\View\Element\AbstractBlock; use Magento\Sales\Block\Adminhtml\Order\Creditmemo\View as CreditmemoView; use Magento\Sales\Block\Adminhtml\Order\View as OrderView; use Magento\Sales\Model\Order\CreditmemoRepository; use Magento\Sales\Model\Order\ShipmentRepository; use Magento\Sales\Model\OrderFactory; use Magento\Shipping\Block\Adminhtml\View as ShipmentView; class Buttons { protected $context; protected $manager; protected $order; protected $shipment; protected $creditmemo; /** * @var LabelCollection */ protected $label; /** * @var CarrierCodes */ protected $carrierCodes; /** * @param Manager $manager * @param OrderFactory $order * @param ShipmentRepository $shipment * @param CreditmemoRepository $creditmemo * @param LabelCollection $label * @param CarrierCodes $carrierCodes */ public function __construct( Manager $manager, OrderFactory $order, ShipmentRepository $shipment, CreditmemoRepository $creditmemo, LabelCollection $label, CarrierCodes $carrierCodes ) { $this->manager = $manager; $this->order = $order; $this->shipment = $shipment; $this->creditmemo = $creditmemo; $this->label = $label; $this->carrierCodes = $carrierCodes; } /** * @param Toolbar $subject * @param AbstractBlock $context * @param ButtonList $buttonList * * @return array * @throws InputException * @throws NoSuchEntityException */ public function beforePushButtons( Toolbar $subject, AbstractBlock $context, ButtonList $buttonList ) { $this->context = $context; if ($context instanceof OrderView || $context instanceof ShipmentView || $context instanceof CreditmemoView) { foreach ($this->carrierCodes->toArray() as $code => $name) { if ($context->getToolbar()->getChildBlock('extmag_shiplab_' . $code . '_create_labels') === false) { $subButtons = $this->getSubButtons($code, $name); if (!empty($subButtons)) { $context->getToolbar()->addChild( 'extmag_shiplab_' . $code . '_create_labels', SplitButton::class, [ 'label' => __('Extmag ' . $name), 'class_name' => SplitButton::class, 'button_class' => 'widget-button-save', 'options' => $subButtons, ] ); } } } } return [$context, $buttonList]; } /** * @throws NoSuchEntityException * @throws InputException */ protected function getSubButtons($carrierCode, $carrierName) { $options = []; $orderSubType = 'order'; $referrer = 'order'; $isDirect = true; if ($this->manager->checkPermission('Extmag_Shiplab::shiplab_labels_save')) { $orderId = $this->context->getRequest()->getParam('order_id'); $shipmentId = $this->context->getRequest()->getParam('shipment_id'); $creditmemoId = $this->context->getRequest()->getParam('creditmemo_id'); $storeId = null; if ($orderId === null) { if ($shipmentId !== null) { $orderId = $this->shipment->get($shipmentId)->getOrderId(); $referrer = 'shipment'; $orderSubType = 'shipment'; } if ($creditmemoId !== null) { $orderId = $this->creditmemo->get($creditmemoId)->getOrderId(); $referrer = 'creditmemo'; $orderSubType = 'refund'; $isDirect = false; } } else { $order = $this->order->create()->load($orderId); if ($order) { $storeId = $order->getStoreId(); } } if ($this->manager->getStoreConfig('shiplab_carriers/' . $carrierCode . '/enabled', $storeId) == 1) { $labels = $this->label ->create() ->addFieldToSelect('entity_id') ->addFieldToFilter('carrier_code', $carrierCode) ->addFieldToFilter('order_id', $this->context->getRequest()->getParam('order_id', $orderId)) ->addFieldToFilter('order_sub_type', $orderSubType) ->addFieldToFilter( 'order_sub_id', $this->context->getRequest()->getParam($referrer . '_id', null) ) ->load(); if ($isDirect === true) { $options[] = [ 'id' => 'extmag_shiplab_' . $carrierCode . '_direct', 'label' => __('Create ' . $carrierName . ' Shipping Label'), 'onclick' => 'setLocation("' . $this->context->getUrl( 'extmag_shiplab/manualLabel/create', [ 'carrier_code' => $carrierCode, 'order_id' => $this->context->getRequest()->getParam('order_id', $orderId), 'order_sub_type' => $orderSubType, 'order_sub_id' => $this->context->getRequest()->getParam($referrer . '_id', null), 'route' => 'shipment', 'referrer' => $referrer, ] ) . '")', 'default' => count($labels) == 0, ]; } $options[] = [ 'id' => 'extmag_shiplab_' . $carrierCode . '_rma', 'label' => __('Create ' . $carrierName . ' Return Label'), 'onclick' => 'setLocation("' . $this->context->getUrl( 'extmag_shiplab/manualLabel/create', [ 'carrier_code' => $carrierCode, 'order_id' => $this->context->getRequest()->getParam('order_id', $orderId), 'order_sub_type' => $orderSubType, 'order_sub_id' => $this->context->getRequest()->getParam($referrer . '_id', null), 'route' => 'refund', 'referrer' => $referrer, ] ) . '")', 'default' => !$isDirect && count($labels) == 0, ]; $options[] = [ 'id' => 'extmag_shiplab_' . $carrierCode . '_inverse', 'label' => __('Create ' . $carrierName . ' Inverse label'), 'onclick' => 'setLocation("' . $this->context->getUrl( 'extmag_shiplab/manualLabel/create', [ 'carrier_code' => $carrierCode, 'order_id' => $this->context->getRequest()->getParam('order_id', $orderId), 'order_sub_type' => $orderSubType, 'order_sub_id' => $this->context->getRequest()->getParam($referrer . '_id', null), 'route' => 'inverse', 'referrer' => $referrer, ] ) . '")', ]; if (count($labels) > 0) { $options[] = [ 'id' => 'extmag_shiplab_' . $carrierCode . '_show', 'label' => __('Show Labels'), 'onclick' => 'setLocation("' . $this->context->getUrl( 'extmag_shiplab/label/details', [ 'entity_id' => implode(",", $labels->getAllIds()), 'referrer' => $referrer, ] ) . '")', 'default' => true, ]; } } } return $options; } }