Unfortunately woocommerce doesn't display its invoices the way it is supposed to be in Germany. Right now it's
product name - quantity - price
I need the invoice mail template to say
product name - *single price* - *tax rate (e.g. 19%)* - quantity - price
I know I have to put this into
/my-theme/woocommerce/emails/email-order-items.php
somewhere here:
<?php
/**
* Email Order Items
*
* @author WooThemes
* @package WooCommerce/Templates/Emails
* @version 2.0.3
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
global $woocommerce;
foreach ($items as $item) :
// Get/prep product data
$_product = $order->get_product_from_item( $item );
$item_meta = new WC_Order_Item_Meta( $item['item_meta'] );
$image = ($show_image) ? '<img src="'. current(wp_get_attachment_image_src( get_post_thumbnail_id( $_product->id ), 'thumbnail')) .'" alt="Product Image" height="'.$image_size[1].'" width="'.$image_size[0].'" style="vertical-align:middle; margin-right: 10px;" />' : '';
?>
<tr>
<td style="text-align:left; vertical-align:middle; border: 1px solid #eee; word-wrap:break-word;"><?php
// Show title/image etc
echo apply_filters( 'woocommerce_order_product_image', $image, $_product, $show_image);
// Product name
echo apply_filters( 'woocommerce_order_product_title', $item['name'], $_product );
// SKU
echo ($show_sku && $_product->get_sku()) ? ' (#' . $_product->get_sku() . ')' : '';
// File URLs
if ( $show_download_links && $_product->exists() && $_product->is_downloadable() ) {
$download_file_urls = $order->get_downloadable_file_urls( $item['product_id'], $item['variation_id'], $item );
$i = 0;
foreach ( $download_file_urls as $file_url => $download_file_url ) {
echo '<br/><small>';
$filename = woocommerce_get_filename_from_url( $file_url );
if ( count( $download_file_urls ) > 1 ) {
echo sprintf( __('Download %d:', 'woocommerce' ), $i + 1 );
} elseif ( $i == 0 )
echo __( 'Download:', 'woocommerce' );
echo ' <a href="' . $download_file_url . '" target="_blank">' . $filename . '</a></small>';
$i++;
}
}
// Variation
echo ($item_meta->meta) ? '<br/><small>' . nl2br( $item_meta->display( true, true ) ) . '</small>' : '';
?></td>
<td style="text-align:left; vertical-align:middle; border: 1px solid #eee;"><?php echo $item['qty'] ;?></td>
<td style="text-align:left; vertical-align:middle; border: 1px solid #eee;"><?php echo $order->get_formatted_line_subtotal( $item ); ?></td>
</tr>
<?php if ($show_purchase_note && $purchase_note = get_post_meta( $_product->id, '_purchase_note', true)) : ?>
<tr>
<td colspan="3" style="text-align:left; vertical-align:middle; border: 1px solid #eee;"><?php echo apply_filters('the_content', $purchase_note); ?></td>
</tr>
<?php endif; ?>
<?php endforeach; ?>
Can you change the output to be like this
product name - *single price* - *tax rate (e.g. 19%)* - quantity - price
Thanks for your help!
You can display single item price exclusive of tax by adding the following line:
<td style="text-align:left; vertical-align:middle; border: 1px solid #eee;"><?php echo $order->get_item_total( $item, false ); ?></td>
just above this line:
<td style="text-align:left; vertical-align:middle; border: 1px solid #eee;"><?php echo $item['qty'] ;?></td>
This, however, will add additional column so you must add this column to other rows as well (table head and totals). To do so, open each of email templates that include this table and add this line:
<th scope="col" style="text-align:left; border: 1px solid #eee;"><?php _e( 'Price (excl. tax)', 'woocommerce' ); ?></th>
just below this line:
<th scope="col" style="text-align:left; border: 1px solid #eee;"><?php _e( 'Product', 'woocommerce' ); ?></th>
Also change this line:
<th scope="row" colspan="2" style="text-align:left; border: 1px solid #eee; <?php if ( $i == 1 ) echo 'border-top-width: 4px;'; ?>"><?php echo $total['label']; ?></th>
into this:
<th scope="row" colspan="3" style="text-align:left; border: 1px solid #eee; <?php if ( $i == 1 ) echo 'border-top-width: 4px;'; ?>"><?php echo $total['label']; ?></th>
Now, displaying order/item tax this way would be hard as WooCommerce orders may have multiple different taxes applied. You may, however, hardcode it into the template.
You may wish to give WooCommerce PDF Invoice plugin a try - it has an option to display prices/subtotals exclusive of tax, then tax rows, then total inclusive of tax.