![]() 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/Sales/Order/Items/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Bundle\Block\Sales\Order\Items; use Magento\Catalog\Model\Product\Type\AbstractType; use Magento\Framework\Serialize\Serializer\Json; /** * Order item render block * @api * @since 100.0.2 */ class Renderer extends \Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer { /** * @var Json */ private $serializer; /** * @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Framework\Stdlib\StringUtils $string * @param \Magento\Catalog\Model\Product\OptionFactory $productOptionFactory * @param array $data * @param \Magento\Framework\Serialize\Serializer\Json $serializer */ public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Framework\Stdlib\StringUtils $string, \Magento\Catalog\Model\Product\OptionFactory $productOptionFactory, array $data = [], Json $serializer = null ) { $this->serializer = $serializer ?: \Magento\Framework\App\ObjectManager::getInstance() ->get(Json::class); parent::__construct($context, $string, $productOptionFactory, $data); } /** * Check if shipment type (invoice etc) is separate * * @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 sub product calculations are present * * @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; } /** * Get bundle selection attributes * * @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; } /** * Get html of bundle selection attributes * * @param mixed $item * * @return string */ public function getValueHtml($item) { if ($attributes = $this->getSelectionAttributes($item)) { return (float) $attributes['qty'] . ' x ' . $this->escapeHtml($item->getName()) . " " . $this->getOrder()->formatPrice($attributes['price']); } return $this->escapeHtml($item->getName()); } /** * Getting all available children for Invoice, Shipment or CreditMemo item * * @param \Magento\Framework\DataObject $item * @return array */ 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) { 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 price info can be shown * * @param mixed $item * * @return bool */ public function canShowPriceInfo($item) { if ($item->getOrderItem()->getParentItem() && $this->isChildCalculated() || !$item->getOrderItem()->getParentItem() && !$this->isChildCalculated() ) { return true; } return false; } /** * Get the html for item price * * @param OrderItem|InvoiceItem|CreditmemoItem $item * @return string */ public function getItemPrice($item) { $block = $this->getLayout()->getBlock('item_price'); $block->setItem($item); return $block->toHtml(); } }