![]() 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/magento/module-bundle/Block/Adminhtml/Sales/Order/Items/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Bundle\Block\Adminhtml\Sales\Order\Items; use Magento\Catalog\Helper\Data as CatalogHelper; use Magento\Catalog\Model\Product\Type\AbstractType; use Magento\Framework\App\ObjectManager; use Magento\Framework\Serialize\Serializer\Json; /** * Adminhtml sales order item renderer * * @api * @since 100.0.2 */ class Renderer extends \Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer { /** * Serializer interface instance. * * @var Json */ private $serializer; /** * @param \Magento\Backend\Block\Template\Context $context * @param \Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry * @param \Magento\CatalogInventory\Api\StockConfigurationInterface $stockConfiguration * @param \Magento\Framework\Registry $registry * @param array $data * @param \Magento\Framework\Serialize\Serializer\Json $serializer * @param CatalogHelper|null $catalogHelper */ public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry, \Magento\CatalogInventory\Api\StockConfigurationInterface $stockConfiguration, \Magento\Framework\Registry $registry, array $data = [], Json $serializer = null, ?CatalogHelper $catalogHelper = null ) { $this->serializer = $serializer ?: ObjectManager::getInstance()->get(Json::class); $data['catalogHelper'] = $catalogHelper ?? ObjectManager::getInstance()->get(CatalogHelper::class); parent::__construct($context, $stockRegistry, $stockConfiguration, $registry, $data); } /** * Truncate string * * @param string $value * @param int $length * @param string $etc * @param string $remainder * @param bool $breakWords * @return string */ public function truncateString($value, $length = 80, $etc = '...', &$remainder = '', $breakWords = true) { return $this->filterManager->truncate( $value, ['length' => $length, 'etc' => $etc, 'remainder' => $remainder, 'breakWords' => $breakWords] ); } /** * Getting all available children for Invoice, Shipment or CreditMemo item * * @param \Magento\Framework\DataObject $item * @return array|null */ public function getChildren($item) { $itemsArray = []; $items = null; if ($item instanceof \Magento\Sales\Model\Order\Invoice\Item) { $items = $item->getInvoice()->getAllItems(); } elseif ($item instanceof \Magento\Sales\Model\Order\Shipment\Item) { $items = $item->getShipment()->getAllItems(); } elseif ($item instanceof \Magento\Sales\Model\Order\Creditmemo\Item) { $items = $item->getCreditmemo()->getAllItems(); } if ($items) { $itemsArray[$item->getOrderItem()->getId()][$item->getOrderItemId()] = $item; foreach ($items as $value) { $parentItem = $value->getOrderItem()->getParentItem(); if ($parentItem) { $itemsArray[$parentItem->getId()][$value->getOrderItemId()] = $value; } else { $itemsArray[$value->getOrderItem()->getId()][$value->getOrderItemId()] = $value; } } } if (isset($itemsArray[$item->getOrderItem()->getId()])) { return $itemsArray[$item->getOrderItem()->getId()]; } return null; } /** * Check if item can be shipped separately * * @param mixed $item * @return bool * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function isShipmentSeparately($item = null) { if ($item) { if ($item->getOrderItem()) { $item = $item->getOrderItem(); } $parentItem = $item->getParentItem(); if ($parentItem) { $options = $parentItem->getProductOptions(); if ($options) { return (isset($options['shipment_type']) && $options['shipment_type'] == AbstractType::SHIPMENT_SEPARATELY); } } else { $options = $item->getProductOptions(); if ($options) { return !(isset($options['shipment_type']) && $options['shipment_type'] == AbstractType::SHIPMENT_SEPARATELY); } } } $options = $this->getOrderItem()->getProductOptions(); if ($options) { if (isset($options['shipment_type']) && $options['shipment_type'] == AbstractType::SHIPMENT_SEPARATELY) { return true; } } return false; } /** * Check if child items calculated * * @param mixed $item * @return bool * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function isChildCalculated($item = null) { if ($item) { if ($item->getOrderItem()) { $item = $item->getOrderItem(); } $parentItem = $item->getParentItem(); if ($parentItem) { $options = $parentItem->getProductOptions(); if ($options) { return (isset($options['product_calculations']) && $options['product_calculations'] == AbstractType::CALCULATE_CHILD); } } else { $options = $item->getProductOptions(); if ($options) { return !(isset($options['product_calculations']) && $options['product_calculations'] == AbstractType::CALCULATE_CHILD); } } } $options = $this->getOrderItem()->getProductOptions(); if ($options) { if (isset($options['product_calculations']) && $options['product_calculations'] == AbstractType::CALCULATE_CHILD ) { return true; } } return false; } /** * Retrieve selection attributes values * * @param mixed $item * @return mixed|null */ public function getSelectionAttributes($item) { if ($item instanceof \Magento\Sales\Model\Order\Item) { $options = $item->getProductOptions(); } else { $options = $item->getOrderItem()->getProductOptions(); } if (isset($options['bundle_selection_attributes'])) { return $this->serializer->unserialize($options['bundle_selection_attributes']); } return null; } /** * Retrieve order item options array * * @return array */ public function getOrderOptions() { $result = []; $options = $this->getOrderItem()->getProductOptions(); if ($options) { if (isset($options['options'])) { $result = array_merge($result, $options['options']); } if (isset($options['additional_options'])) { $result = array_merge($result, $options['additional_options']); } if (!empty($options['attributes_info'])) { $result = array_merge($options['attributes_info'], $result); } } return $result; } /** * Retrieve order item * * @return mixed */ public function getOrderItem() { if ($this->getItem() instanceof \Magento\Sales\Model\Order\Item) { return $this->getItem(); } return $this->getItem()->getOrderItem(); } /** * Get html info for item * * @param mixed $item * @return string */ public function getValueHtml($item) { $result = $this->escapeHtml($item->getName()); if (!$this->isShipmentSeparately($item)) { $attributes = $this->getSelectionAttributes($item); if ($attributes) { $result = (float) $attributes['qty'] . ' x ' . $result; } } if (!$this->isChildCalculated($item)) { $attributes = $this->getSelectionAttributes($item); if ($attributes) { $result .= " " . $this->getOrderItem()->getOrder()->formatPrice($attributes['price']); } } return $result; } /** * Check if we can show price info for this item * * @param object $item * @return bool */ public function canShowPriceInfo($item) { if ($item->getOrderItem()->getParentItem() && $this->isChildCalculated() || !$item->getOrderItem()->getParentItem() && !$this->isChildCalculated() ) { return true; } return false; } }