0

I'd like to completely remove the Tax column from items list, in order pdf.

I've managed to remove the item tax value, but I can't find how to remove the "Tax" column header.

Any ideas?

enter image description here

2 Answers 2

2

Im showing the files where it is (you can override it )

vendor/magento/module-sales/Model/Order/Pdf/Items/Invoice/DefaultInvoice.php

Remove this on draw() function:

// draw Tax
        $lines[0][] = [
            'text' => $order->formatPriceTxt($item->getTaxAmount()),
            'feed' => 495,
            'font' => 'bold',
            'align' => 'right',
        ];

vendor/magento/module-sales/Model/Order/Pdf/Invoice.php

Remove this on _drawHeader function:

$lines[0][] = ['text' => __('Tax'), 'feed' => 495, 'align' => 'right'];

1

Remove Tax from item row

Add below code in [Vendor]/[Module]/etc/di.xml file for ovrride file

<preference for="Magento\Sales\Model\Order\Pdf\Items\Invoice\DefaultInvoice" type="[Vendor]\[Module]\Model\Order\Pdf\Items\Invoice\DefaultInvoice" />

Create New file DefaultInvoice.php in [Vendor]\[Module]\Model\Order\Pdf\Items\Invoice\ directory and add below code in that file

namespace [Vendor]\[Module]\Model\Order\Pdf\Items\Invoice;

 class DefaultInvoice extends \Magento\Sales\Model\Order\Pdf\Items\Invoice\DefaultInvoice
{

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->getSku($item), 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 = 395;
    $feedSubtotal = $feedPrice + 170;
    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);
 } 
}

Remove Tax from item row header

Add below code in [Vendor]/[Module]/etc/di.xml file for ovrride file

<preference for="Magento\Sales\Model\Order\Pdf\Invoice" type="[Vendor]\[Module]\Model\Order\Pdf\Invoice" />

Create New file Invoice.php in [Vendor]\[Module]\Model\Order\Pdf\ directory and add below code in that file

namespace [Vendor]\[Module]\Model\Order\Pdf;

 use Magento\Sales\Model\ResourceModel\Order\Invoice\Collection;

 class Invoice extends \Magento\Sales\Model\Order\Pdf\Invoice
{
protected function _drawHeader(\Zend_Pdf_Page $page)
{
    /* Add table head */
    $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 - 15);
    $this->y -= 10;
    $page->setFillColor(new \Zend_Pdf_Color_Rgb(0, 0, 0));

    //columns headers
    $lines[0][] = ['text' => __('Products'), 'feed' => 35];

    $lines[0][] = ['text' => __('SKU'), 'feed' => 290, 'align' => 'right'];

    $lines[0][] = ['text' => __('Qty'), 'feed' => 435, 'align' => 'right'];

    $lines[0][] = ['text' => __('Price'), 'feed' => 360, 'align' => 'right'];

    /*$lines[0][] = ['text' => __('Tax'), 'feed' => 495, 'align' => 'right'];*/

    $lines[0][] = ['text' => __('Subtotal'), 'feed' => 565, 'align' => 'right'];

    $lineBlock = ['lines' => $lines, 'height' => 5];

    $this->drawLineBlocks($page, [$lineBlock], ['table_header' => true]);
    $page->setFillColor(new \Zend_Pdf_Color_GrayScale(0));
    $this->y -= 20;
  }
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.