Hello,
I'm trying to replace the SKU in the invoice with a custom atribute I've created.
I've changed the header in vendor/magento/module-sales/Model/Order/Pdf/Invoice.php which worked out fine.
But when I change the getSKU in vendor/magento/module-sales/Model/Order/Pdf/Items/Invoice/DefaultInvoice.php with the new attribute to getLPS, the new attribute does not appear in the invoice, the place is blanc. Is there some other place where I have to change it?
thanks
Hello @nicogranzow
Can you please share your code that how you fetch the value of your custom attribute?
So that it is helpful for us to debug your issue.
If found my answer useful. Please give Kudos and accept it as solution!
Sure, here the code:
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Sales\Model\Order\Pdf\Items\Invoice; /** * Sales Order Invoice Pdf default items renderer */ class DefaultInvoice extends \Magento\Sales\Model\Order\Pdf\Items\AbstractItems { /** * Core string * * @var \Magento\Framework\Stdlib\StringUtils */ protected $string; /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry * @param \Magento\Tax\Helper\Data $taxData * @param \Magento\Framework\Filesystem $filesystem * @param \Magento\Framework\Filter\FilterManager $filterManager * @param \Magento\Framework\Stdlib\StringUtils $string * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection * @param array $data */ public function __construct( \Magento\Framework\Model\Context $context, \Magento\Framework\Registry $registry, \Magento\Tax\Helper\Data $taxData, \Magento\Framework\Filesystem $filesystem, \Magento\Framework\Filter\FilterManager $filterManager, \Magento\Framework\Stdlib\StringUtils $string, \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, array $data = [] ) { $this->string = $string; parent::__construct( $context, $registry, $taxData, $filesystem, $filterManager, $resource, $resourceCollection, $data ); } /** * Draw item line * * @return void */ public function draw() { $order = $this->getOrder(); $item = $this->getItem(); $pdf = $this->getPdf(); $page = $this->getPage(); $lines = []; // draw Product name $lines[0] = [['text' => $this->string->split($item->getName(), 35, true, true), 'feed' => 35]]; // draw SKU $lines[0][] = [ 'text' => $this->string->split($this->getPvp(), 17), 'feed' => 290, 'align' => 'right', ]; // draw QTY $lines[0][] = ['text' => $item->getQty() * 1, 'feed' => 435, 'align' => 'right']; // draw item Prices $i = 0; $prices = $this->getItemPricesForDisplay(); $feedPrice = 375; $feedSubtotal = $feedPrice + 190; foreach ($prices as $priceData) { if (isset($priceData['label'])) { // draw Price label $lines[$i][] = ['text' => $priceData['label'], 'feed' => $feedPrice, 'align' => 'right']; // draw Subtotal label $lines[$i][] = ['text' => $priceData['label'], 'feed' => $feedSubtotal, 'align' => 'right']; $i++; } // draw Price $lines[$i][] = [ 'text' => $priceData['price'], 'feed' => $feedPrice, 'font' => 'bold', 'align' => 'right', ]; // draw Subtotal $lines[$i][] = [ 'text' => $priceData['subtotal'], 'feed' => $feedSubtotal, 'font' => 'bold', 'align' => 'right', ]; $i++; } // draw Tax $lines[0][] = [ 'text' => $order->formatPriceTxt($item->getTaxAmount()), 'feed' => 495, 'font' => 'bold', 'align' => 'right', ]; // custom options $options = $this->getItemOptions(); if ($options) { foreach ($options as $option) { // draw options label $lines[][] = [ 'text' => $this->string->split($this->filterManager->stripTags($option['label']), 40, true, true), 'font' => 'italic', 'feed' => 35, ]; if ($option['value']) { if (isset($option['print_value'])) { $printValue = $option['print_value']; } else { $printValue = $this->filterManager->stripTags($option['value']); } $values = explode(', ', $printValue); foreach ($values as $value) { $lines[][] = ['text' => $this->string->split($value, 30, true, true), 'feed' => 40]; } } } } $lineBlock = ['lines' => $lines, 'height' => 20]; $page = $pdf->drawLineBlocks($page, [$lineBlock], ['table_header' => true]); $this->setPage($page); } }
thanks!