![]() 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/cartforge.co/vendor/magento/module-sales/Model/Order/Pdf/Items/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Sales\Model\Order\Pdf\Items; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Data\Collection\AbstractDb; use Magento\Framework\DataObject; use Magento\Framework\Filesystem; use Magento\Framework\Filesystem\Directory\ReadInterface; use Magento\Framework\Filter\FilterManager; use Magento\Framework\Model\AbstractModel; use Magento\Framework\Model\Context; use Magento\Framework\Model\ResourceModel\AbstractResource; use Magento\Framework\Registry; use Magento\Sales\Model\Order; use Magento\Sales\Model\Order\Pdf\AbstractPdf; use Magento\Tax\Helper\Data as TaxHelper; /** * Sales Order Pdf Items renderer Abstract * * phpcs:disable Magento2.Classes.AbstractApi * @api * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @since 100.0.2 */ abstract class AbstractItems extends AbstractModel { /** * Order model * * @var Order */ protected $_order; /** * Source model (invoice, shipment, creditmemo) * * @var AbstractModel */ protected $_source; /** * Item object * * @var DataObject */ protected $_item; /** * Pdf object * * @var AbstractPdf */ protected $_pdf; /** * Pdf current page * * @var \Zend_Pdf_Page */ protected $_pdfPage; /** * Tax data * * @var TaxHelper */ protected $_taxData; /** * @var ReadInterface */ protected $_rootDirectory; /** * @var FilterManager */ protected $filterManager; /** * @param Context $context * @param Registry $registry * @param TaxHelper $taxData * @param Filesystem $filesystem , * @param FilterManager $filterManager * @param AbstractResource $resource * @param AbstractDb $resourceCollection * @param array $data */ public function __construct( Context $context, Registry $registry, TaxHelper $taxData, Filesystem $filesystem, FilterManager $filterManager, AbstractResource $resource = null, AbstractDb $resourceCollection = null, array $data = [] ) { $this->filterManager = $filterManager; $this->_taxData = $taxData; $this->_rootDirectory = $filesystem->getDirectoryRead(DirectoryList::ROOT); parent::__construct($context, $registry, $resource, $resourceCollection, $data); } /** * Set order model * * @param Order $order * @return $this */ public function setOrder(Order $order) { $this->_order = $order; return $this; } /** * Set Source model * * @param AbstractModel $source * @return $this */ public function setSource(AbstractModel $source) { $this->_source = $source; return $this; } /** * Set item object * * @param DataObject $item * @return $this */ public function setItem(DataObject $item) { $this->_item = $item; return $this; } /** * Set Pdf model * * @param AbstractPdf $pdf * @return $this */ public function setPdf(AbstractPdf $pdf) { $this->_pdf = $pdf; return $this; } /** * Set current page * * @param \Zend_Pdf_Page $page * @return $this */ public function setPage(\Zend_Pdf_Page $page) { $this->_pdfPage = $page; return $this; } /** * Retrieve order object * * @throws \Magento\Framework\Exception\LocalizedException * @return \Magento\Sales\Model\Order */ public function getOrder() { if (null === $this->_order) { throw new \Magento\Framework\Exception\LocalizedException(__('The order object is not specified.')); } return $this->_order; } /** * Retrieve source object * * @throws \Magento\Framework\Exception\LocalizedException * @return \Magento\Framework\Model\AbstractModel */ public function getSource() { if (null === $this->_source) { throw new \Magento\Framework\Exception\LocalizedException(__('The source object is not specified.')); } return $this->_source; } /** * Retrieve item object * * @throws \Magento\Framework\Exception\LocalizedException * @return \Magento\Framework\DataObject */ public function getItem() { if (null === $this->_item) { throw new \Magento\Framework\Exception\LocalizedException(__('An item object is not specified.')); } return $this->_item; } /** * Retrieve Pdf model * * @throws \Magento\Framework\Exception\LocalizedException * @return \Magento\Sales\Model\Order\Pdf\AbstractPdf */ public function getPdf() { if (null === $this->_pdf) { throw new \Magento\Framework\Exception\LocalizedException(__('A PDF object is not specified.')); } return $this->_pdf; } /** * Retrieve Pdf page object * * @throws \Magento\Framework\Exception\LocalizedException * @return \Zend_Pdf_Page */ public function getPage() { if (null === $this->_pdfPage) { throw new \Magento\Framework\Exception\LocalizedException(__('A PDF page object is not specified.')); } return $this->_pdfPage; } /** * Draw item line * * @return void */ abstract public function draw(); /** * Format option value process * * @param array|string $value * @return string */ protected function _formatOptionValue($value) { $order = $this->getOrder(); $resultValue = ''; if (is_array($value)) { if (isset($value['qty'])) { $resultValue .= $this->filterManager->sprintf($value['qty'], ['format' => '%d']) . ' x '; } $resultValue .= $value['title']; if (isset($value['price'])) { $resultValue .= " " . $order->formatPrice($value['price']); } return $resultValue; } else { return $value; } } /** * Get array of arrays with item prices information for display in PDF * * Format: array( * $index => array( * 'label' => $label, * 'price' => $price, * 'subtotal' => $subtotal * ) * ) * * @return array */ public function getItemPricesForDisplay() { $order = $this->getOrder(); $item = $this->getItem(); if ($this->_taxData->displaySalesBothPrices()) { $prices = [ [ 'label' => __('Excl. Tax') . ':', 'price' => $order->formatPriceTxt($item->getPrice()), 'subtotal' => $order->formatPriceTxt($item->getRowTotal()), ], [ 'label' => __('Incl. Tax') . ':', 'price' => $order->formatPriceTxt($item->getPriceInclTax()), 'subtotal' => $order->formatPriceTxt($item->getRowTotalInclTax()) ], ]; } elseif ($this->_taxData->displaySalesPriceInclTax()) { $prices = [ [ 'price' => $order->formatPriceTxt($item->getPriceInclTax()), 'subtotal' => $order->formatPriceTxt($item->getRowTotalInclTax()), ], ]; } else { $prices = [ [ 'price' => $order->formatPriceTxt($item->getPrice()), 'subtotal' => $order->formatPriceTxt($item->getRowTotal()), ], ]; } return $prices; } /** * Retrieve item options * * @return array */ public function getItemOptions() { $result = []; $options = $this->getItem()->getOrderItem()->getProductOptions(); if ($options) { if (isset($options['options'])) { $result[] = $options['options']; } if (isset($options['additional_options'])) { $result[] = $options['additional_options']; } if (isset($options['attributes_info'])) { $result[] = $options['attributes_info']; } } return array_merge([], ...$result); } /** * Set font as regular * * @param int $size * @return \Zend_Pdf_Resource_Font */ protected function _setFontRegular($size = 7) { $font = \Zend_Pdf_Font::fontWithPath( $this->_rootDirectory->getAbsolutePath('lib/internal/GnuFreeFont/FreeSerif.ttf') ); $this->getPage()->setFont($font, $size); return $font; } /** * Set font as bold * * @param int $size * @return \Zend_Pdf_Resource_Font */ protected function _setFontBold($size = 7) { $font = \Zend_Pdf_Font::fontWithPath( $this->_rootDirectory->getAbsolutePath('lib/internal/GnuFreeFont/FreeSerifBold.ttf') ); $this->getPage()->setFont($font, $size); return $font; } /** * Set font as italic * * @param int $size * @return \Zend_Pdf_Resource_Font */ protected function _setFontItalic($size = 7) { $font = \Zend_Pdf_Font::fontWithPath( $this->_rootDirectory->getAbsolutePath('lib/internal/GnuFreeFont/FreeSerifItalic.ttf') ); $this->getPage()->setFont($font, $size); return $font; } /** * Return item Sku * * @param mixed $item * @return mixed */ public function getSku($item) { if ($item->getOrderItem()->getProductOptionByCode('simple_sku')) { return $item->getOrderItem()->getProductOptionByCode('simple_sku'); } else { return $item->getSku(); } } }