![]() 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-sales/Model/Order/Pdf/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Sales\Model\Order\Pdf; /** * Sales Order Creditmemo PDF model * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class Creditmemo extends AbstractPdf { /** * @var \Magento\Store\Model\StoreManagerInterface */ protected $_storeManager; /** * @var \Magento\Store\Model\App\Emulation */ private $appEmulation; /** * @param \Magento\Payment\Helper\Data $paymentData * @param \Magento\Framework\Stdlib\StringUtils $string * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig * @param \Magento\Framework\Filesystem $filesystem * @param Config $pdfConfig * @param \Magento\Sales\Model\Order\Pdf\Total\Factory $pdfTotalFactory * @param \Magento\Sales\Model\Order\Pdf\ItemsFactory $pdfItemsFactory * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate * @param \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation * @param \Magento\Sales\Model\Order\Address\Renderer $addressRenderer * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param \Magento\Store\Model\App\Emulation|null $appEmulation * @param array $data * * @SuppressWarnings(PHPMD.ExcessiveParameterList) * @internal param \Magento\Framework\TranslateInterface $translate */ public function __construct( \Magento\Payment\Helper\Data $paymentData, \Magento\Framework\Stdlib\StringUtils $string, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\Filesystem $filesystem, Config $pdfConfig, \Magento\Sales\Model\Order\Pdf\Total\Factory $pdfTotalFactory, \Magento\Sales\Model\Order\Pdf\ItemsFactory $pdfItemsFactory, \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate, \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation, \Magento\Sales\Model\Order\Address\Renderer $addressRenderer, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Store\Model\App\Emulation $appEmulation, array $data = [] ) { $this->_storeManager = $storeManager; $this->appEmulation = $appEmulation; parent::__construct( $paymentData, $string, $scopeConfig, $filesystem, $pdfConfig, $pdfTotalFactory, $pdfItemsFactory, $localeDate, $inlineTranslation, $addressRenderer, $data ); } /** * Draw table header for product items * * @param \Zend_Pdf_Page $page * @return void */ protected function _drawHeader(\Zend_Pdf_Page $page) { $this->_setFontRegular($page, 10); $page->setFillColor(new \Zend_Pdf_Color_Rgb(0.93, 0.92, 0.92)); $page->setLineColor(new \Zend_Pdf_Color_GrayScale(0.5)); $page->setLineWidth(0.5); $page->drawRectangle(25, $this->y, 570, $this->y - 30); $this->y -= 10; $page->setFillColor(new \Zend_Pdf_Color_Rgb(0, 0, 0)); //columns headers $lines[0][] = ['text' => __('Products'), 'feed' => 35]; $lines[0][] = [ 'text' => $this->string->split(__('SKU'), 12, true, true), 'feed' => 255, 'align' => 'right', ]; $lines[0][] = [ 'text' => $this->string->split(__('Total (ex)'), 12, true, true), 'feed' => 330, 'align' => 'right', ]; $lines[0][] = [ 'text' => $this->string->split(__('Discount'), 12, true, true), 'feed' => 380, 'align' => 'right', ]; $lines[0][] = [ 'text' => $this->string->split(__('Qty'), 12, true, true), 'feed' => 445, 'align' => 'right', ]; $lines[0][] = [ 'text' => $this->string->split(__('Tax'), 12, true, true), 'feed' => 495, 'align' => 'right', ]; $lines[0][] = [ 'text' => $this->string->split(__('Total (inc)'), 12, true, true), 'feed' => 565, 'align' => 'right', ]; $lineBlock = ['lines' => $lines, 'height' => 10]; $this->drawLineBlocks($page, [$lineBlock], ['table_header' => true]); $page->setFillColor(new \Zend_Pdf_Color_GrayScale(0)); $this->y -= 20; } /** * Return PDF document * * @param array $creditmemos * @return \Zend_Pdf */ public function getPdf($creditmemos = []) { $this->_beforeGetPdf(); $this->_initRenderer('creditmemo'); $pdf = new \Zend_Pdf(); $this->_setPdf($pdf); $style = new \Zend_Pdf_Style(); $this->_setFontBold($style, 10); foreach ($creditmemos as $creditmemo) { if ($creditmemo->getStoreId()) { $this->appEmulation->startEnvironmentEmulation( $creditmemo->getStoreId(), \Magento\Framework\App\Area::AREA_FRONTEND, true ); $this->_storeManager->setCurrentStore($creditmemo->getStoreId()); } $page = $this->newPage(); $order = $creditmemo->getOrder(); /* Add image */ $this->insertLogo($page, $creditmemo->getStore()); /* Add address */ $this->insertAddress($page, $creditmemo->getStore()); /* Add head */ $this->insertOrder( $page, $order, $this->_scopeConfig->isSetFlag( self::XML_PATH_SALES_PDF_CREDITMEMO_PUT_ORDER_ID, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $order->getStoreId() ) ); /* Add document text and number */ $this->insertDocumentNumber($page, __('Credit Memo # ') . $creditmemo->getIncrementId()); /* Add table head */ $this->_drawHeader($page); /* Add body */ foreach ($creditmemo->getAllItems() as $item) { if ($item->getOrderItem()->getParentItem()) { continue; } /* Draw item */ $this->_drawItem($item, $page, $order); $page = end($pdf->pages); } /* Add totals */ $this->insertTotals($page, $creditmemo); if ($creditmemo->getStoreId()) { $this->appEmulation->stopEnvironmentEmulation(); } } $this->_afterGetPdf(); return $pdf; } /** * Create new page and assign to PDF object * * @param array $settings * @return \Zend_Pdf_Page */ public function newPage(array $settings = []) { $page = parent::newPage($settings); if (!empty($settings['table_header'])) { $this->_drawHeader($page); } return $page; } }