PDF Rechnungen- pdfPRINT M2

Sonderangebot 129,00 € Normalpreis 149,00 €
Auf Lager
SKU
snm-pdf-m2-001

Erstellen von anpassbaren PDF Verkaufsunterlagen in einem definierten Corporate Design. Für Bestellungen, Rechnungen, Lieferscheine und Gutschriften.

Besuchen Sie unseren Demo Bereich für Magento2 und lassen Sie sich von dem Funktionsumfang überzeugen.

Backend: Demo-Bereich (Anmeldung: Username: demo PW: demo123)

Frontend: Demo-Bereich

Dokumentation: pdfPRINTM2_DE.pdf

Links

NEU: Sie können für die Installtion der Extension den composer benutzten

Für die Authentifizierung benutzen Sie bitte Ihre snm-portal.com Zugangsdaten.
  composer config repositories.00 composer https://snm-portal.com/repro
  composer require snmportal/module-pdfprint
  
  Ab Version 2.9.1 wird nur noch eine Composer-Version bereitgestellt. 
  Sie können die Zip-Datei auch über ein clicommand installieren
  Legen sie ein Verzeichnis -magento-/packages an.
  Download Sie die Extension und kopieren es nach -magento-/packages.
  Fügen Sie ein neues Repro in Ihre composer Konfiguration ein.
	
	composer config repositories.00 artifact ./packages
	composer require snmportal/module-pdfprint

Das Layout und Design Ihrer aktuellen PDF Bestellungen, Rechnungen, Lieferscheine und Gutschriften entspricht nicht Ihren Anforderungen? Sie benötigen eine individuelle Darstellung in Ihrem Corporate Design? Steuerliche Anforderungen müssen berücksichtigt werden? Sie benötigen verschiedene Darstellungen für ein Verkaufsdokument?

Gestalten Sie Ihre eigenen Verkaufsunterlagen im Einklang mit Ihrem eigenen Corporate Identity.

Verwenden Sie Ihr vorhandenes Geschäftsbriefpapier, speichern es als PDF und verwendet es als Hintergrund-Vorlage. 

Feature List

  • Hinterlegen Sie ein Hintergrund-PDF mit Ihrem Geschäftspapier. Dieses PDF definiert die Größe des zu erstellenden Dokuments. So sind beliebige Formate möglich.
  • Laden Sie von unserer Homepage verschiedene Vorlagen, um diese nach Ihren Wünschen anzupassen.
  • Alle Definitionen sind pro Magento Store View möglich.
  • Erstellen Sie beliebig viele Vorlagen für einen Dokumententyp. Somit kann ein Dokument in verschiedenen Layouts erzeugt werden.
  • Erweitern Sie Ihre Dokumente mit Ihren Anforderungen, fügen Sie einfach HTML-Code und CSS-Styles hinzu.
  • Unterstützung von allen Sprachen, auch Arabisch (RTL), Chinesisch oder Russisch. Automatisches „Font Subsetting“ garantiert kleine PDF Dokumente.
  • Eigene Definition der Tabellen-Spalten und der Zusammenfassung möglich.
  • Einbindung von Produktbildern.
  • Unterstützung von 1D und 2D Barcodes.
  • Nützliche Erweiterung der Magento Markup TAGs.
  • Fügen Sie PHP Code Snippets hinzu, um vollständigen Zugriff zu erhalten.
  • Übersetzungsmöglichkeiten pro Template.
  • Anhängen von zusätzlichen statischen PDFs möglich.
  • Option zum Anhängen des PDFs an die E-Mails.
  • Downloadmöglichkeit der Rechnung, des Lieferscheins und der Gutschrift im Frontend einzeln einstellbar.
  • Freie Gestaltung über CSS möglich.
  • Einfache Installation und Verwendung.

 

Seit 2011 ist die Extension pdfPRINT bereit für Magento® 1 im Einsatz und wird in vielen Shops weltweit eingesetzt. Wir haben die Gelegenheit genutzt die Extension vollständig zu überarbeiten und die Anregungen und Wünsche unserer Kunden in die neue Version für Magento® 2 aufgenommen.

100% Open source.
One license per Magento installation, including multi store setups and test sites.

Mehr Informationen
Version 2.9.11
Compatibility Magento 2.3.x,2.4.0,2.4.1,2.4.2,2.4.3,2.4.4,2.4.5,2.4.6
Last Updated 23.03.2023
Änderungsprotokoll

24.03.2023 New Version 2.9.11 fix for Magento 2.4.6 and php 8.2, add massaction to invoices and shipments

22.08.2022 New Version 2.9.6 fix helper calls helper.isEUVATTaxFree,...

22.08.2022 New Version 2.9.5 for Magento 2.4.5

30.05.2022 New Version 2.9.3 fix Monolog/Logger parameters

30.05.2022 New Version 2.9.2 only for Magento 2.4.4 php 7.4/8.1 fix

30.05.2022 New Version 2.9.1 only for Magento 2.4.4 php 7.4/8.1
Please check your templates for the call of "GET" methods of objects.
example:
{{var order.getShippingDescription()}}
change this to
{{var order.ShippingDescription()}}

21.02.2022

Problem width PATCH MDVA-43395 / MDVA-43443
Please change your Template for
Page from {{var page_current}} to {{var page_count}}
TO
Page from {:pnp:} to {:ptp:}

08.11.2021 2.8.18

  • Fix attachment order email

23.08.2021 2.8.17

  • Fix payment_info for M2EPro and Magento 2.4.2

04.12.2020 2.8.16

  • Fix problem with background template and different store views in mass action

04.12.2020 2.8.15

  • Fix for Magentoen 2.4.1 Markup-Compiler

09.09.2020 2.8.14

  • Fix for Magentoen 2.4.0 and PHP7.4

18.05.2020 2.8.13

  • Fix for Magentoen 2.5.3 and migration to Laminas E-Mail attachments

25.03.2019 2.8.12

  • Fix Date Format order-date,... for Magento >= 2.3.2

22.01.2019 PDFPrint Fix Mass Action and PaymentInfo

13.12.2019 PDFPrint Fix Save neu Template

28.11.2019 PDFBase 2.1.2 Fix for php 7.3

21.10.2019 New Version 2.8.8 / PDFBase 2.1.1

  • Fix 2.2.10 / 2.3.3 - Prob lem with order view massaction

22.04.2019 New Version 2.8.7 / PDFBase 2.1.1

  • Problems with determining the image path for products that are no longer available.

21.03.2019 New Version 2.8.6 / PDFBase 2.1.1

  • Problem with add new colum

07.03.2019 New Version 2.8.5 / PDFBase 2.1.1

  • Security Fix:
    With the option for the order "Use PDF in frontend" the link can be abused.
    Please deactivate the option "Use PDF in frontend" for ordering or use the current version >= 2.8.5.

29.11.2018 New Version 2.8.1 / PDFBase 2.0.10

  • Ready for Magento 2.3

06.09.2018 New Version 2.7.2 / PDFBase 2.0.10

  • New function Massaction for purchase orders added. You can use this function to call marked templates directly from the grid.

16.07.2018 New Version 2.6.11 / PDFBase 2.0.10

  • Fix import button problem with version 2.6.9.

16.07.2018 New Version 2.6.9 / PDFBase 2.0.10

  • Minor fixes and incompatibility with other extensions (datamatrix).
Eigene Bewertung schreiben
Nur eingetragene Benutzer können Rezensionen schreiben. Bitte einloggen oder erstellen Sie einen Account

Standard background template and word2013 file

PDF : template.pdf
Word2013 : template.docx

General

Salutation

<!-- Set Help Variable "cname" -->
{{snm_set cname}}
{{depend billingaddress.prefix}}{{var billingaddress.prefix}} {{/depend}}
{{var billingaddress.firstname}} {{depend billingaddress.middlename}}
{{var billingaddress.middlename}} {{/depend}}{{var billingaddress.lastname}}
{{/snm_set}}
<!-- Check Gender -->
{{snm_when helper.gt(order.customerGender,0) }}
{{if helper.eq(order.customerGender,1) }}Dear Mr. {{var cname}}{{/if}}
{{if helper.eq(order.customerGender,2) }}Dear Mrs {{var cname}}{{/if}}
{{snm_otherwise}}
Dear {{var cname}}
{{/snm_when}}

Show IF NOT Country

<!-- Show contry only when NOT Germany -->
{{if helper.neq(billingaddress.country_id,'DE') }}
{{var billingaddress.country}}
{{/if}}
Use in text bl

Info from configuration

{{config path="general/store_information/name"}} ·
{{config path="general/store_information/street_line1"}} ·
{{config path="general/store_information/postcode"}} ·
{{config path="general/store_information/city"}}

Date Format

<!-- Use helper.date(,,'short'|'medium'|'long',1|0 ShowTime) -->
Current DateTime
{{var helper.date(null,0,'medium',1)}}
Order Date
{{var helper.date(order.createdAt,0,'short',1)}}
Current Document Date + 5Days
{{var helper.date(entity.createdAt,5,'medium',1)}}

Order Customer Data (Guest and logged Customer)

{{var order.customerId}}
{{var order.customerGender}}
{{var order.customerIsGuest}}
{{var order.customerGroupId}}
{{var order.customerDob}}
{{var order.customerEmail}}
{{var order.customerFirstname}}
{{var order.customerLastname}}
{{var order.customerGender}}

Simple Return Slip / Retourenschein

Add block Template : return-slip

<?php
$order = $entity->getOrder()?$entity->getOrder():$entity;
if ( $order instanceof \Magento\Sales\Model\Order  ):
    $returnProducts=[];
    foreach ($order->getAllItems() as $item) {
        if ($item->canRefund() ){
            $returnProducts[]=$item;
        }
    }
    if ( count($returnProducts) ):
        ?>
        <div class="default" style="page-break-before:always">
  <h2>Retourenschein</h2>
  <p>
    text...text...text...text...
    <br/><br/><br/>
  </p>
  <table style="width:100%">
    <tr>
      <th class="align-center">Qty</th>
      <th class="align-left">SKU</th>
      <th class="align-left">Name</th>
      <th class="align-left">Info</th>
      <th class="align-center" >Return</th>
    </tr>
<?php

foreach ($returnProducts as $item) {
    ?>
    <tr>
      	<td class="align-center" style="width:10%"><?php echo $item->getQtyToRefund();?></td>
      	<td class="align-left" style="width:10%"><?php echo $item->getSKU();?></td>
      	<td class="align-left" style="width:auto"><?php echo $item->getName();?></td>
		<td style="width:20%"></td>
      	<td class="align-center" >
          <span style="border:1px solid black;padding:5px;">&#160;</span>
          </td>
    </tr>
    <?php
}

?>

  </table>
</div>
    <?php
    endif;
endif;
?>
    
For example, add the block to the end of the "Text After Table" block.
{{block snm="return-slip" entity=$entity}}

Payment

Long Info (from Payment Provider)
{{var payment_html|raw}}
Short Info
{{var payment_info }}
Method
{{var payment_method }}
Test for Payment Method,...
{{if helper.eq(payment_method, 'banktransfer') }}
Bitte überweisen Sie den fälligen Betrag unter Angabe der Rechnungsnummer innerhalb von
10 Tagen ohne Abzug an unten angegebenes Konto.
{{/if}}
{{if helper.eq(payment_method, 'checkmo') }}
…
{{/if}}
{{if helper.neq(payment_method, 'checkmo') }}
…
{{/if}}

Payment - Only Provider Name

Use Markup
Payment Title: {{var order.getPayment().getMethodInstance().getTitle() }}
Or add Block Template - payment_info
<?php
$block = $this; // \Magento\Framework\View\Element\AbstractBlock
echo $order->getPayment()->getMethodInstance()->getTitle();
Use in text block or Free Items
Payment: {{block snm="payment_info" entity=$entity}}

Show Image/Logo per StoreView/Website-Code

Add Block Template - store-logo
<?php
/* Build Logo file name */
/* Per StoreView */
$code =  $order->getStore()->getCode();
/* or per Website */
$code =  $order->getStore()->getWebsite()->getCode();

$object_manager = \Magento\Framework\App\ObjectManager::getInstance();
$mediaDir = $object_manager->get('\Magento\Framework\Filesystem')->getDirectoryWrite('media');

/* all logs saved under <magento>/media/logos */
$fn =  $mediaDir->getAbsolutePath('logos/logo_'.$code.'.jpg');
echo '<img src="'.$fn.'" width="20px">';
Use in text block or Free Items
{{block snm="store-logo" }}

Known Problems

  • Exception:Warning: file_get_contents(/.../ca_dompdf_img_ZIaa8W):
    Some payment providers use images with an external link, which can not be imported.
    Solution:Add CSS-Style to hide the image
    .payment-info img {display:none}

    Or use payment_info
    <div class="payment-info">
        {{var payment_html|raw}}<br/><br/>
    </div>
    <div class="payment-info">
        {{var helper.nl2br(payment_info)|raw}}<br/><br/>
    </div>
  • Message: Invalid page number!
    Please use a background PDF template with 2 pages.
  • magento 2.1.8 : Exception:Invalid method Magento\Sales\Block\Order\PrintShipment::isPagerDisplayed
    This is a bug in magento version 2.1.8, please change the layout file
    magento:vendor\magento\module-sales\view\frontend\layout\sales_order_print.xml
    search for
    <block class="Magento\Sales\Block\Order\PrintShipment" name="order_items" template="order/items.phtml">
    and replace with
    <block class="Magento\Sales\Block\Order\Items" name="order_items" template="order/items.phtml">

Language / Font

Use custom Font

CSS Style
@font-face { font-family: 'open san'; src: url('fonts/open-sans/OpenSans-Regular.ttf') }
@font-face { font-family: 'open san'; font-weight: bold; src:
url('fonts/open-sans/OpenSans-Bold.ttf') }
.default {font-size:8pt; font-family:'open san';font-weight:normal;line-height:1.05em;}
Use in text block
<b>Font OpenSans Bold</b><br/>
Font OpenSans normal
CSS Style
/* Download your custom Font to Snmportal/Pdfprint/media/font */
@font-face { font-family: 'UNIFONT-ARIAL1'; src: url('fonts/arial.ttf') }
@font-face { font-family: 'UNIFONT-ARIAL1'; font-weight: bold; src:
url('fonts/arialbd.ttf') }
.arabic{ direction:rtl;font-family:'UNIFONT-ARIAL1'; font-weight:normal;}
.unifont{ font-family:'UNIFONT-ARIAL1'; font-weight:normal;}
.rtl{ direction:rtl;}
Use in text block
<b>Ship to</b><br/>
<div class="arabic" style="font-weight:bold">سافر على متن سفينة لِـ</div>
<div class="unifont">运送到</div>

Custom Columns

Example show product column

Add new column with typ custom and set css class to 'col_inhalt':

Create new block template with block name "custom_columns"
<?php
$block = $this; // MagentoFrameworkViewElementAbstractBlock
$result='';
if ( $product )
{
    if ( strpos($col_css,'col_inhalt') !== false) {
        $result=$product->getData('bottlesize');
    }
}
echo $result;

Barcode 1D/2D

Example show product column

Add new column with typ custom and set css class to 'col_barcode':

Create new block template with block name "custom_columns"
<?php
$block = $this; // MagentoFrameworkViewElementAbstractBlock
$result='';
if ( $product )
{
    if ( strpos($col_css,'col_inhalt') !== false) {
        $result=$product->getData('bottlesize');
    }
    else if ( strpos($col_css,'col_barcode') !== false) {
        $sku=$product->getSku();
        $result=$helper->getBarcodeGenerator()->getBarcode2D('QRCODE', $sku);
        //$id=$product->getId();
        //$result=$helper->getBarcodeGenerator()->getBarcode1D('EAN13',$id,1,15,'#333333');
    }

}
echo $result;
2D barcodes
function getBarcode2D($type, $code, $w = 10, $h = 10, $color = 'black');
types:
'QRCODE'
1d-Barcodes function getBarcode1D($type, $code, $w = 2, $h = 30, $color = 'black')
types:
'C39' - 'C39+' - 'C39E' 'C39E+' 'C93' 'S25' 'S25+' 'I25' 'I25+' 'C128' 'C128A' 'C128B' 'C128C'
'EAN2' 'EAN5' 'EAN8' 'EAN13' 'UPCA' 'UPCE' 'MSI' 'MSI+' 'POSTNET' 'PLANET'
'RMS4CC' 'KIX' 'IMB' 'CODABAR' 'CODE11' 'PHARMA' 'PHARMA2T'

Example show barcode in texblock or free items

Create new block template with block name "barcode-1d-increment-id"
<?php
	$block = $this; // \Magento\Framework\View\Element\AbstractBlock
	//echo $helper->getBarcodeGenerator()->getBarcode2D('QRCODE',$entity->getIncrementid());
	echo $helper->getBarcodeGenerator()->getBarcode1D('EAN13',$entity->getIncrementid(),1,15,'#333333');
then they can take it to
{{block snm="barcode-1d-increment-id" }}
Insert at the desired position

CSS Formating

Show options in a line

Magento Render Result:
<dl class="item options">
    <dt>Color</dt>
    <dd>Blue</dd>
    <dt>Size</dt>
    <dd>34</dd>
</dl>    

=>
/* Product item options */
dl.item-options,dl.item.options {padding:0;margin:0;font-size:0.8em;padding-left:2mm;}
dl.item-options,dl.item.options dt {display:inline;}
dl.item-options,dl.item.options dt {padding-left:0mm;}
dl.item-options,dl.item.options dt:after{content:': '}
dl.item-options,dl.item.options dd {display:inline;}
dl.item-options,dl.item.options dd:after{content:', ';display:inline;}
dl.item-options,dl.item.options dd:last-child:after{content:' ';}

Shipment

Show Tracking Infos

Please also have a look at the example templates "Packing Slip".
For example, add the block to the end of the "Text After Table" block.
{{block snm="trackinginfo" entity=$entity}}
Add Block Template with name "trackinginfo"
<?php
	$block = $this; // \Magento\Framework\View\Element\AbstractBlock

  	if ( $entity->getTracksCollection() && $entity->getTracksCollection()->count() ):
?>
	<div class="order-tracking" >
        <div class="tracking-title"><?php echo __('Shipping and Tracking Information') ?></div>
        <table class="tracking-content" >
          	<thead>
            <tr>
                <th class="title"><?php echo __('Title');?></th>
                <th class="number"><?php echo __('Number');?></th>
            </tr>
            </thead>
            <?php foreach($entity->getTracksCollection()->getItems() as $track) : ?>
            <?php // $track Magento\Sales\Model\Order\Shipment\Track ?>
            <tr>
                <td class="title"><?php echo $track->getTitle();?></td>
                <td class="number"><?php echo $track->getNumber();?></td>
            </tr>
            <?php endforeach;?>
        </table>
      </div>
<?php
	endif;

Use of data from Third Party Extension

  • AmastyDeliveryDate
    Create new block template with block name "AmastyDeliveryDate"
    Use
    {{block
    snm="AmastyDeliveryDate"
    entity=$entity }}  
    Block template "AmastyDeliveryDate"
    <?php
    $block = $this; // \Magento\Framework\View\Element\AbstractBlock
    $Amasty = $block->getLayout()->createBlock('Amasty\Deliverydate\Block\Sales\Order\Email\Deliverydate');
    if ( $Amasty )
    {
        $Amasty->setData(['order_id' => $order->getId()]);
        if ( $Amasty->getDeliveryDate() )
        {
            echo $Amasty->getDeliveryDate()->getFormattedDate();
        }
    }
  • AmastyOrderAttribute
    Create new block template with block name "AmastyOrderAttribute"
    Use (field is the label name from custom Amasty order attribute)
    {{block
     snm="AmastyOrderAttribute"
     field='Nachricht an uns:'}}
    {{block
     snm="AmastyOrderAttribute"
     field='not_at_home2'}}
    Block template "AmastyOrderAttribute"
    <?php
    $block = $this; // \Magento\Framework\View\Element\AbstractBlock
    $what = $block->getData('block_params/field');
    $Amasty = $block->getLayout()->createBlock('Amasty\Orderattr\Block\Order\Attributes');
    if ( $Amasty )
    {
        $Amasty->setData('order_entity', $order);
        $orderAttributeList = $Amasty->getList();
        if ( $orderAttributeList && isset($orderAttributeList[$what]) )
        {
            echo $orderAttributeList[$what];
        }
    }
    Block template "AmastyOrderAttribute" Version >= 3.2
    <?php
    $block = $this; // \Magento\Framework\View\Element\AbstractBlock
    $what = $block->getData('block_params/field');
    $Amasty = $block->getLayout()->createBlock('Amasty\Orderattr\Block\Order\Attributes');
    if ( $Amasty )
    {
        $Amasty->setData('order_entity', $order);
        $orderAttributeList = $Amasty->getOrderAttributesData();
        if ( $orderAttributeList )
        {
          foreach ( $orderAttributeList as $v )
          {
            if ( $v['label'] == $what )
            {
              echo $v['value'];
              break;
            }
          }
        }
    }

Magento Default Render Table for Invoice

<div class="table-items-frame">
<table class="table-items custom" cellpadding="0" cellspacing="0">
    <thead>
    <tr>
        <th class="fr_product align-left ">Artikelbezeichnung</th>
        <th class="qty " style="width:9%">Anzahl</th>
        <th class="price_incl_tax align-right " style="width:9%">Einzelpreis</th>
        <th class="tax_amount align-right " style="width:9%">Mwst.</th>
        <th class="tax_percent align-right " style="width:9%">Mwst. %</th>
        <th class="row_total_incl_tax align-right " style="width:9%">Summe</th>
    </tr>
    </thead>
    <tbody>
    <tr class="">
        <td class="fr_product align-left "><strong class="product name product-item-name">Solo Power
                Circuit</strong>
            <dl class="item-options links">
                <dt>Downloads</dt>
                <dd>Solo Power Circuit</dd>
            </dl>
        </td>
        <td class="qty align-center ">1</td>
        <td class="price_incl_tax align-right ">14,00 €</td>
        <td class="tax_amount align-right  "><span class="price">0,73 €</span></td>
        <td class="tax_percent align-right nowrap ">7%</td>
        <td class="row_total_incl_tax align-right ">14,00 €</td>
    </tr>
    <tr class="">
        <td class="fr_product align-left "><strong class="product name product-item-name">Affirm
                Water Bottle</strong></td>
        <td class="qty align-center ">1</td>
        <td class="price_incl_tax align-right ">7,00 €</td>
        <td class="tax_amount align-right  "><span class="price">0,89 €</span></td>
        <td class="tax_percent align-right nowrap ">19%</td>
        <td class="row_total_incl_tax align-right ">7,00 €</td>
    </tr>
    <tr class="">
        <td class="fr_product align-left "><strong class="product name product-item-name">Endurance
                Watch</strong></td>
        <td class="qty align-center ">1</td>
        <td class="price_incl_tax align-right ">49,00 €</td>
        <td class="tax_amount align-right  "><span class="price">7,83 €</span></td>
        <td class="tax_percent align-right nowrap ">19%</td>
        <td class="row_total_incl_tax align-right ">49,00 €</td>
    </tr>
    <tr class="">
        <td class="fr_product align-left "><strong class="product name product-item-name">Viktor
                LumaTech™ Pant</strong>
            <dl class="item-options">
                <dt>Color</dt>
                <dd>Red</dd>
                <dt>Size</dt>
                <dd>33</dd>
            </dl>
        </td>
        <td class="qty align-center ">2</td>
        <td class="price_incl_tax align-right ">46,00 €</td>
        <td class="tax_amount align-right  "><span class="price">11,75 €</span></td>
        <td class="tax_percent align-right nowrap ">19%</td>
        <td class="row_total_incl_tax align-right ">92,00 €</td>
    </tr>
    <tr class="">
        <td class="fr_product align-left "><strong class="product name product-item-name">Mona
                Pullover Hoodlie</strong>
            <dl class="item-options">
                <dt>Color</dt>
                <dd>Purple</dd>
                <dt>Size</dt>
                <dd>S</dd>
            </dl>
        </td>
        <td class="qty align-center ">1</td>
        <td class="price_incl_tax align-right ">57,00 €</td>
        <td class="tax_amount align-right  "><span class="price">7,28 €</span></td>
        <td class="tax_percent align-right nowrap ">19%</td>
        <td class="row_total_incl_tax align-right ">57,00 €</td>
    </tr>
    <tr class="">
        <td class="fr_product align-left "><strong class="product name product-item-name">Joust
                Duffle Bag</strong></td>
        <td class="qty align-center ">1</td>
        <td class="price_incl_tax align-right ">34,00 €</td>
        <td class="tax_amount align-right  "><span class="price">4,34 €</span></td>
        <td class="tax_percent align-right nowrap ">19%</td>
        <td class="row_total_incl_tax align-right ">34,00 €</td>
    </tr>
    </tbody>
</table>
</div>
<div class="table-totals-frame">
<table class="table-totals" cellpadding="0" cellspacing="0">
    <tfoot>
    <tr class="subtotal">
        <td class="first"></td>
        <td class="label">Zwischensumme</td>
        <td class="amount">253,00 €</td>
    </tr>
    <tr class="discount_amount">
        <td class="first"></td>
        <td class="label">Rabatt</td>
        <td class="amount">-40,80 €</td>
    </tr>
    <tr class="tax part">
        <td class="first"></td>
        <td class="label">MwSt. (7%):</td>
        <td class="amount"><span class="price">0,73 €</span></td>
    </tr>
    <tr class="tax part">
        <td class="first"></td>
        <td class="label">MwSt. (19%):</td>
        <td class="amount"><span class="price">32,09 €</span></td>
    </tr>
    <tr class="tax total">
        <td class="first"></td>
        <td class="label">Steuer:</td>
        <td class="amount"><span class="price">32,82 €</span></td>
    </tr>
    <tr class="grand_total">
        <td class="first"></td>
        <td class="label">Gesamtsumme</td>
        <td class="amount">212,20 €</td>
    </tr>
    </tfoot>
</table>
</div>