EuVat Template Blocks
To use the EuVat template blocks that come with the extension, you need to update your stores template files as documented below.
When modifying your stores template files and testing the changes please ensure that:
- Your stores cache is disabled, such that changes to your template files are reflected immediately
- The template files of the actual used template are being modified, and not just the default template files which may be overridden by the active template.
- We also recommend to copy the default template files of EuVat to your actual used template path to protect customizations on the EuVat templates from future updates.
persistent
directory of your themes template directory structure. So if you experience that a template file change does not propagate to the store design, please look into the persistent
directory of your theme and use the template file there for the modification.Or you may need to copy the related default template file from the
persistent
directory from default/default/template
or base/default/template
to the persistent
directory of your theme being used if it is not there already.
EuVAT Tax/VAT Number Input Box Widget
EuVat delivers with a input box for the Tax/VAT Number that allows to Validate any entered VAT Number:
The Widget also features a drop-down country selection that automatically is adding the VAT ID country related prefix to the input field, as well as a syntax check of the EU VAT-ID as validation directly on the form field (in addition to the EU VIES validation):
With having the configuration option VAT-ID has to match Address Country
set to Yes
also a form validation is performed verifying that the EU VAT-ID belongs to the current selected Address Country:
The template for this input box is located here, in case you are using a different template from the Magento default copy the Widget file to the same location in your templates path:
Location of the EuVat-VAT Number Input Box Widget
app/design/frontend/default/default/template/euvat/widget/taxvat.phtml
To use this input box, instead of the Magento default one, modify the following template files:
template/customer/form/register.phtml
// Around Line 65 replace this: <?php $_taxvat = $this->getLayout()->createBlock('customer/widget_taxvat') ?> // With this: <?php $_taxvat = $this->getLayout()->createBlock('euvat/widget_taxvat') ?> // Or to use the 'wide' version of the TAXVAT input field (usable in all forms): <?php $_taxvat = $this->getLayout()->createBlock('euvat/widget_taxvat_wide') ?>
template/customer/form/edit.phtml
// Around Line 52 replace this: <?php $_taxvat = $this->getLayout()->createBlock('customer/widget_taxvat') ?> // With this: <?php $_taxvat = $this->getLayout()->createBlock('euvat/widget_taxvat') ?>
template/checkout/onepage/billing.phtml
// Around Line 89 replace this: <?php $_taxvat = $this->getLayout()->createBlock('customer/widget_taxvat') ?> // With this: <?php $_taxvat = $this->getLayout()->createBlock('euvat/widget_taxvat') ?>
You may need also to enable the Tax/Vat field in System » Configuration » Customer Configuration » Name and Address Options » Show Tax/VAT Number
to display the Tax/Vat field in the template.
If your template file does not show the above code lines, this here is the full block that might work in your template then. Some modification of the HTML tags may be required, depending on the actual template file:
template/checkout/onepage/billing.phtml
<?php $_taxvat = $this->getLayout()->createBlock('euvat/widget_taxvat') ?> <?php if ($_taxvat->isEnabled()): ?> <li> <?php echo $_taxvat->setTaxvat($this->getQuote()->getCustomerTaxvat())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?> </li> <?php endif ?>
Changing the default Widget Template
To change the default Widget Template (euvat/widget/taxvat.phtml
) to some other template file, or a customized template, use the setTemplate
as shown here to set a different template file for the Widget:
<?php $_taxvat = $this->getLayout()->createBlock('euvat/widget_taxvat')->setTemplate('euvat/widet/taxvat/wide.phtml') ?>
There are the following customized Widget Templates included in the EuVAT extension for the VAT ID input field:
- To hide the VAT ID Validation button if there is no VAT ID entered:
<?php $_taxvat = $this->getLayout()->createBlock('euvat/widget_taxvat')->setTemplate('euvat/widet/taxvat-autohide.phtml') ?>
- To show the VAT ID input field only for selected EU Address Countries other than the current default Store Country (Validation button also is hidden if there is no VAT ID entered):
<?php $_taxvat = $this->getLayout()->createBlock('euvat/widget_taxvat')->setTemplate('euvat/widet/taxvat-country') ?>
Behaviour of this field
This field behaves as the default Magento Taxvat entry field, and its behaviour is controllable in System » Configuration » Customer Configuration » Name and Address Options » Show Tax/VAT number
:
- No …the field is hidden
- Optional …Entry of the VAT number is optional
- Required …Entry of the VAT number is required
Validation Messages on failures
This validation message indicates that the Page Session has expired. For the online validation a form security key is generated for the current Visitor Session, this session may time out and the related security key becomes outdated. That is a security measure to block automated requests from other systems.
With this message the Visitor is adviced to reload the current page and by it to refresh his Session.
This validation message indicates that there is a communication failure with the EU VIES site, where the validation takes place. That may be caused by your server and a related firewall, or the EU VIES service being temporarily out of service or overloaded with requests. See also here for more on this.
EuVat Tax Status Widget
EuVat delivers with a template block, showing the current Tax/VAT Status to your customers:
This block is also able to show a link to the description of correct number format for the EU VAT Number, the related configuration setting to enable or disable the display of this link is "Show Link to EU VAT Number Pattern Explanation".
EuVat delivers with a Widget for the Customer Pages located by default in the following path:
Location of the EuVat-Status Customer Widget
app/design/frontend/default/default/template/euvat/widget/euvatstatus.phtml
In case you are using a different template from the Magento default, copy the Widget file to the same location in your templates path:
Target path for Widget file when using a non-default template
app/design/frontend/default/<your template>/template/euvat/widget
To add the EuVat Tax Status Widget into any page of your Magento Template use:
EuVat Tax Status Widget code for template files
<?php $_euvat = $this->getLayout()->createBlock('euvat/widget_euvatstatus', '...block-name...'); echo $_euvat->toHtml(); ?>
Depending on the template page where the EuVat Tax Status Widget is used, define the '…block-name…' to tell the widget the page it is included in. Use the prefix 'euvat_widget_' plus the path and name of the template file as shown for these pages:
euvat_widget_customer_form_edit
- When used on the Customer Edit Account formeuvat_widget_customer_form_register
- When used on the Customer Register Account formeuvat_widget_checkout_cart
- When used on the Cart pageeuvat_widget_checkout_onepage_billing
- When used on the Onepage Checkout billing address pageeuvat_widget_checkout_onepage_review_info
- When used on the Onepage Checkout order review pageeuvat_widget_use_customer
- When used anywhere else in your template and to force to use current customer dataeuvat_widget_use_quote
- when used anywhere else in your template and to force to use current quote (i.e. cart) data
If you leave '…block-name…' empty, EuVat will use the current Customer Data (if logged in) for the Tax Status messages, with the '…block-name…' defined the widget will be able to distuingish between the Checkout Process and other pages of your Shop to either use the current Quote or Customer for the Tax Status messages.
Customizing the Messages
The default messages of the EuVat Status Widget do not find any explanation if VAT is applied to orders or not. That because at point of delivery we do not know which Tax Rules you will apply to your store. You may want to add wording for the different Customer Groups (or Tax Classes) if VAT is charged or not by customizing the messages of this Widget.
To customize, translate, add or reduce the messages of this EuVat Status Widget create (or use a existing) Language File in your templates locale
directory in a subdirectory named with the respective Language Code.
Name the file customized Language File translate.csv
.
This language file is to be a Text File, similar to the System Language Files located in app/locale
with comma-separated content.
As source of the messages you may use the German Language File of EuVat, located in app/locale/de_DE/Pisc_Euvat.csv
. Copy the messages into translate.csv
which you wish to customize for your template and change the second definition. Leave the first definition (before the comma) in takt, otherwise the translation function will be unable to find the customized message content.
"Tax/VAT number","EU VAT Number" "We have you identified as EU Enduser.","We have you identified as EU Enduser, VAT is applied to your orders. To become VAT excempt, please provide your valid EU VAT Identification in the Tax/VAT field." "We have you identified as non-EU Customer.","We have you identified as non-EU Customer, no VAT is applied to your orders."
Adding the Widget to your Frontend Template
To add this Widget to your Frontend Template, see the following examples below:
(all file paths shown are relative to app/design/frontend/…/<your template>
)
Adding the VAT ID to the Customer Account Dashboard
Modify design/frontend/…/template/customer/account/dashboard/info.phtml
to add the VAT ID to the customers Overview Page:
template/customer/account/dashboard/info.phtml
<p> <?php echo $this->htmlEscape($this->getCustomer()->getFirstname()) ?> <?php echo $this->htmlEscape($this->getCustomer()->getLastname()) ?><br/> <?php echo $this->htmlEscape($this->getCustomer()->getEmail()) ?><br/> <a href="<?php echo $this->getChangePasswordUrl() ?>"><?php echo $this->__('Change Password') ?></a> </p> <?php /* * Around line 39: Added to show VAT ID */ ?> <p> <?php echo $this->__('VAT Identification:').' '.$this->htmlEscape($this->getCustomer()->getTaxvat()) ?> </p>
Adding the EuVat Widget to the Edit Account Information page
Modify design/frontend/…/template/customer/form/edit.phtml
to add the EuVat Widget to the Customer Edit Account Information page:
template/customer/form/edit.phtml
<fieldset class="group-select"> ... ... <?php $_taxvat = $this->getLayout()->createBlock('customer/widget_taxvat') ?> <?php if ($_taxvat->isEnabled()): ?> <li><?php echo $_taxvat->setTaxvat($this->getCustomer()->getTaxvat())->toHtml() ?></li> <?php endif ?> </ul> <?php /* * ---- This here includes the EuVat Tax Status Widget --- */ $_euvat = $this->getLayout()->createBlock('euvat/widget_euvatstatus', 'euvat_widget_customer_form_edit'); echo $_euvat->toHtml(); ?> </fieldset>
Adding the EuVat Widget to the Create An Account page
Modify design/frontend/…/template/customer/form/register.phtml
to add the EuVat Widget to the Create An Account page:
template/customer/form/register.phtml
<fieldset class="group-select wide"> ... ... <?php $_dob = $this->getLayout()->createBlock('customer/widget_dob') ?> <?php if ($_dob->isEnabled()): ?> <li><?php echo $_dob->setDate($this->getFormData()->getDob())->toHtml() ?></li> <?php endif ?> <?php $_taxvat = $this->getLayout()->createBlock('customer/widget_taxvat') ?> <?php if ($_taxvat->isEnabled()): ?> <li><?php echo $_taxvat->setTaxvat($this->getFormData()->getTaxvat())->toHtml() ?></li> <?php endif ?> </ul> <?php /* * ---- This here includes the EuVat Tax Status Widget --- */ $_euvat = $this->getLayout()->createBlock('euvat/widget_euvatstatus', 'euvat_widget_customer_form_register'); echo $_euvat->toHtml(); ?> </fieldset>
Adding the EuVat Widget to the Shopping Cart page
Modify design/frontend/…/template/checkout/cart.phtml
to add the widget to the Shopping Cart page:
<div class="cart-collateral-block"> ... <?php $_euvat = $this->getLayout()->createBlock('euvat/widget_euvatstatus', 'euvat_widget_checkout_cart'); echo $_euvat->toHtml(); ?> </div> </div>
Adding the EuVat Widget to the Billing Address page in the Onepage Checkout
Modify design/frontend/…/template/checkout/onepage/billing.phml
to add the widget to the Billing Address page in the Onepage Checkout:
template/checkout/onepage/billing.html
<form id="co-billing-form" action="#"> ... <?php if ($this->canShip()): ?> <p> ... </p> <?php else: ?> <p class="no-display"><input type="hidden" name="billing[use_for_shipping]" value="1" /></p> <?php endif; ?> </form> <?php $_euvat = $this->getLayout()->createBlock('euvat/widget_euvatstatus', 'euvat_widget_checkout_onepage_billing'); echo $_euvat->toHtml(); ?>
Because of this we advice to show the EuVat Widget in the Order Review as that page block is always updated by the browser client and Magento.
Adding the EuVat Widget to the Order Review page in the Onepage Checkout
Modify design/frontend/…/template/checkout/onepage/review/info.phtml
to add the widget to the Order Review of the Onepage Checkout:
template/checkout/onepage/review/info.phtml
<table cellspacing="0" class="data-table" id="checkout-review-table"> ... ... <?php echo $this->getChildHtml('totals'); ?> <tbody> <?php foreach($this->getItems() as $_item): ?> <?php echo $this->getItemHtml($_item)?> <?php endforeach ?> </tbody> </table> <?php $_euvat = $this->getLayout()->createBlock('euvat/widget_euvatstatus', 'euvat_widget_checkout_onepage_review_info'); echo $_euvat->toHtml(); ?>
Let users Register and Create New Accounts with giving Billing Address
EuVat is designed to take the Tax/Vat Id and the Billing Address Country to determine the Tax/Vat status. Therefore, and to be compliant with billing and book-keeping regulations, we advice to let your customers register or create new accounts only with entering their Billing Address.
To enable this, the following Template Files may require modifications as shown here:
template/customer/form/register.phtml
<?php /** * Create account form template * * @see Mage_Customer_Block_Form_Register */ // Enable the Address Fields $this->setShowAddressFields(true); ?>
Alternatively you may comment out the following lines:
template/customer/form/register.phtml
// Around Line 75: Comment out the following: <?php // if($this->getShowAddressFields()): ?><br/> <input type="hidden" name="create_address" value="1"/> <fieldset class="group-select wide"> <div class="head-alt2"> <h4 class="title"><?php echo $this->__('Address Information') ?></h4> </div> // Around Line 131: Comment out the following: </fieldset> <input type="hidden" name="default_billing" value="1"/> <input type="hidden" name="default_shipping" value="1"/> <?php // endif; ?> <fieldset class="group-select wide">
EuVat Customer Tax Status Email Block
EuVat offers to add Email Text Blocks to your transactional emails, with content depending on the customers EuVat Status. To add this block, add the following directive into the Email Template of your Transactional Email. At the position where you want the Email Text to appear:
{{block type="euvat/email_text" area="frontend" template="euvat/email/text.phtml" order=$order}}
This Block shows the Email Text as defined in the EuVat Settings...
Allowing to add wording such as:
- VAT excempt as transaction is between Businesses within the European Union
- or similar….
To modify the Email Block, modify its template file located per default in app/design/frontend/default/default/template/euvat/email/text.phtml
. In that folder there are also other block templates to be used alternatively or as template to create your own.
Example
Open the Email Template of your choice using System
» Transactional Emails
, or add a Magento Default Email Template, and add the Email Block into your Email Template:
Email Template Example (Order Invoice)
<style type="text/css"> body,td { color:#2f2f2f; font:11px/1.35em Verdana, Arial, Helvetica, sans-serif; } </style> <div style="font:11px/1.35em Verdana, Arial, Helvetica, sans-serif;"> <table cellspacing="0" cellpadding="0" border="0" width="98%" style="margin-top:10px; font:11px/1.35em Verdana, Arial, Helvetica, sans-serif; margin-bottom:10px;"> <tr> ... ... {{layout area="frontend" handle="sales_email_order_invoice_items" invoice=$invoice order=$order}} {{block type="euvat/email_text" area="frontend" template="euvat/email/text.phtml" order=$order}} <p>{{var comment}}</p> <p> Thank you again,<br/><strong>{{var order.getStoreGroupName()}}</strong> </p> </td> </tr> </table> </td> </tr> </table>
This example is allowing to add the EuVat Tax Status wording from its settings to the Order Invoice Email Template, right after the invoiced items list. Use this to add any required text to the Invoice (or any other transactional Email) that is required by the Tax Status of your customer.
Suggested Changes to your Template
1. Show Tax Summary for Zero Tax
The display of the Tax Summary is controlled in your Frontend Template. To always show the Tax Summary the following frontend template files require modification:
template/checkout/total/tax.phtml
<?php global $taxIter; $taxIter++; ?> <?php // Line 2: Modified to always show the Tax Summary, also for zero tax: ?> <?php // if ($this->helper('tax')->displayFullSummary() && $this->getTotal()->getValue()!=0): ?> <?php if ($this->helper('tax')->displayFullSummary()): ?> <?php $isTop = 1; ?> // Around Line 32 change to: <?php /* if ($this->helper('tax')->displayFullSummary() && $this->getTotal()->getValue()!=0): */ ?> <?php if ($this->helper('tax')->displayFullSummary()): ?>
Also configure Magento to show the Tax Summary:
On Magento 1.3.2.4: System
» Configuration
» Tax
» Display
: Display Zero Tax Subtotal » Yes
On Magento 1.4.0.x: System
» Configuration
» Tax
» Shopping Cart Display Settings
: Display Zero Tax Subtotal » Yes
Translation and Customization of Messages
EuVat delivers with language files for English (en_US) and German (de_DE). The language files are located in:
locale/en_US/Pisc_Euvat.csv locale/de_DE/Pisc_Euvat.csv
To customize the default Messages, you may put the language file entries to be customized into the customized language file of your Frontend Template:
Customized Translations for your Template
app/design/frontend/default/<your-template>/locale/en_US/translate.csv app/design/frontend/default/<your-template>/locale/de_DE/translate.csv