![]() 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/Model/Sales/Order/Pdf/Items/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Bundle\Model\Sales\Order\Pdf\Items; use Magento\Catalog\Model\Product\Type\AbstractType; use Magento\Framework\Data\Collection\AbstractDb; use Magento\Framework\Filesystem; use Magento\Framework\Filter\FilterManager; use Magento\Framework\Model\Context; use Magento\Framework\Model\ResourceModel\AbstractResource; use Magento\Framework\Registry; use Magento\Framework\Serialize\Serializer\Json; use Magento\Tax\Helper\Data; /** * Order pdf items renderer * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ abstract class AbstractItems extends \Magento\Sales\Model\Order\Pdf\Items\AbstractItems { /** * Serializer interface instance. * * @var Json */ private $serializer; /** * @param Context $context * @param Registry $registry * @param Data $taxData * @param Filesystem $filesystem * @param FilterManager $filterManager * @param Json $serializer * @param AbstractResource $resource * @param AbstractDb $resourceCollection * @param array $data */ public function __construct( Context $context, Registry $registry, Data $taxData, Filesystem $filesystem, FilterManager $filterManager, Json $serializer, AbstractResource $resource = null, AbstractDb $resourceCollection = null, array $data = [] ) { $this->serializer = $serializer; parent::__construct( $context, $registry, $taxData, $filesystem, $filterManager, $resource, $resourceCollection, $data ); } /** * 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; } /** * Retrieve is Shipment Separately flag for Item * * @param \Magento\Framework\DataObject $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; } /** * Retrieve is Child Calculated * * @param \Magento\Framework\DataObject $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 Bundle Options * * @param \Magento\Framework\DataObject $item * @return array * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function getBundleOptions($item = null) { $options = $this->getOrderItem()->getProductOptions(); if ($options && isset($options['bundle_options'])) { return $options['bundle_options']; } return []; } /** * Retrieve Selection attributes * * @param \Magento\Framework\DataObject $item * @return mixed */ 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 options * * @param \Magento\Framework\DataObject $item * @return array * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function getOrderOptions($item = null) { $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 \Magento\Sales\Model\Order\Item */ public function getOrderItem() { if ($this->getItem() instanceof \Magento\Sales\Model\Order\Item) { return $this->getItem(); } return $this->getItem()->getOrderItem(); } /** * Retrieve Value HTML * * @param \Magento\Sales\Model\Order\Item $item * @return string */ public function getValueHtml($item) { $result = $this->filterManager->stripTags($item->getName()); if (!$this->isShipmentSeparately($item)) { $attributes = $this->getSelectionAttributes($item); if ($attributes) { $qty = $this->filterManager->sprintf($attributes['qty'], ['format' => '%f']); $result = (float) $qty . ' x ' . $result; } } if (!$this->isChildCalculated($item)) { $attributes = $this->getSelectionAttributes($item); if ($attributes) { $result .= " " . $this->filterManager->stripTags( $this->getOrderItem()->getOrder()->formatPrice($attributes['price']) ); } } return $result; } /** * Can show price info for item * * @param \Magento\Sales\Model\Order\Item $item * @return bool */ public function canShowPriceInfo($item) { if ($item->getOrderItem()->getParentItem() && $this->isChildCalculated() || !$item->getOrderItem()->getParentItem() && !$this->isChildCalculated() ) { return true; } return false; } }