From 974abb1fc0d1d91743c06b24cd45125b74e6d568 Mon Sep 17 00:00:00 2001
From: Reinhold Kainhofer <reinhold@kainhofer.com>
Date: Sun, 8 Mar 2015 15:52:45 +0100
Subject: [PATCH] Move export format functionality to the view, fix VM2, etc.

---
 controllers/eurecap.php                       | 34 +++++++++++++----
 eurecap.php                                   | 10 +++--
 eurecap.script.php                            |  6 ++-
 eurecap.xml                                   | 21 +++++-----
 .../en-GB/en-GB.plg_vmextended_eurecap.ini    |  8 +++-
 .../en-GB.plg_vmextended_eurecap.sys.ini      |  8 +++-
 models/eurecap.php                            | 22 ++++++++++-
 models/eurecap_config.php                     |  3 +-
 views/eurecap/tmpl/default.php                | 38 ++++++++++++++-----
 views/eurecap/view.html.php                   | 23 +++++++++--
 views/eurecap/view.raw.php                    | 16 ++++++++
 11 files changed, 145 insertions(+), 44 deletions(-)

diff --git a/controllers/eurecap.php b/controllers/eurecap.php
index 617b308..52a9f85 100644
--- a/controllers/eurecap.php
+++ b/controllers/eurecap.php
@@ -17,7 +17,8 @@ if( !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not
 * http://www.open-tools.net
 */
 
-if(!class_exists('VmController'))require(VMPATH_ADMIN.DS.'helpers'.DS.'vmcontroller.php');
+defined ('VMPATH_ADMIN') or define ('VMPATH_ADMIN', JPATH_VM_ADMINISTRATOR);
+if(!class_exists('VmController')) require(VMPATH_ADMIN.DS.'helpers'.DS.'vmcontroller.php');
 
 
 /**
@@ -58,17 +59,34 @@ class VirtuemartControllerEuRecap extends VmController {
 		$this->display();
 	}
 
-	function export(){
-
-		vRequest::setVar('controller', $this->_cname);
-		vRequest::setVar('view', $this->_cname);
-// 		vRequest::setVar('layout', $layout);
+	function export($layout='export'){
+		$viewName = $this->_cname;
+		vRequest::setVar('controller', $viewName);
+		vRequest::setVar('view', $viewName);
+		vRequest::setVar('layout', $layout);
+		vRequest::setVar('task', $layout);
+// 		vRequest::setVar('format', 'raw');
+
+// $japp = &JApplication::getInstance("site"); // fetches the current application
+// $japp->setTemplate("", null); // sets an empty template, disables the default one
+// $document = &JFactory::getDocument(); // gets the document, that the user wants
+// $document->setType("raw"); // sets its type to raw
+// JRequest::setVar("format", "raw"); // this one is not obligatory, but my component uses this in the view later
+		
+// 		$document = JDocument::getInstance('raw');  //this new instance is a raw document object
+// 		$viewType = $document->getType();
+// 		// $viewname below is set in jinput or as you named it
+// 		$view = $this->getView($viewName, $viewType);
+// // 		$this->input->set('view', $viewName);
+// 		$this->input->set('view', $viewName);
 
 		$document = JFactory::getDocument();
+// 		$document->setType('raw');
 		$viewType = $document->getType();
-		$view = $this->getView($this->_cname, $viewType);
+		$view = $this->getView($viewName, $viewType);
 
-// 		$view->setLayout($layout);
+JFactory::getApplication()->enqueueMessage("Export function in controller", 'warning');
+		$view->setLayout($layout);
 
 		$this->display();
 	}
diff --git a/eurecap.php b/eurecap.php
index e7aa1c0..635da24 100644
--- a/eurecap.php
+++ b/eurecap.php
@@ -9,8 +9,10 @@ if( !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not
  *
  * @package	VirtueMart
  * @subpackage Plugins
- * @author Christopher Roussel
+ * @author Reinhold Kainhofer, Open Tools
  */
+defined ('VMPATH_ADMIN') or define ('VMPATH_ADMIN', JPATH_VM_ADMINISTRATOR);
+defined ('VMPATH_PLUGINLIBS') or define ('VMPATH_PLUGINLIBS', JPATH_VM_PLUGINS);
 if (!class_exists('vmExtendedPlugin')) require(VMPATH_PLUGINLIBS . DS . 'vmextendedplugin.php');
 
 class plgVmExtendedEuRecap extends vmExtendedPlugin {
@@ -75,7 +77,7 @@ class plgVmExtendedEuRecap extends vmExtendedPlugin {
 	}
 	
 	/** 
-	 * A helper function for the plugin installer: In VM 3.0.? the onVmAdminMenuItems trigger was added, which allows to dynamically
+	 * A helper function for the plugin installer: In VM 3.0.? the onVmAdminMenuItems trigger might added, which allows to dynamically
 	 * add admin menu items to the the backend. In earlier versions, we need to hardcode the menu item to the database. This function
 	 * decides whether the database entry is needed and if so, it adds it (otherwise it removes it, just in case).
 	 */
@@ -84,7 +86,9 @@ class plgVmExtendedEuRecap extends vmExtendedPlugin {
 		$db = JFactory::getDBO();
 		$db->setQuery("SELECT `id` FROM `#__virtuemart_adminmenuentries` WHERE `view` = 'eurecap'");
 		$exists = $db->loadResult();
-		if (version_compare($vmver, '3.0.3', 'lt')) {
+// 		$need_db_entry = version_compare($vmver, '3.0.3', 'lt');
+		$need_db_entry = true;
+		if ($need_db_entry) {
 			if (!$exists) {
 				// Before VM 3.0.3 => Need database entry (in the "Orders" section):
 				$q = "INSERT INTO `#__virtuemart_adminmenuentries` (`module_id`, `name`, `link`, `depends`, `icon_class`, `ordering`, `published`, `tooltip`, `view`, `task`) VALUES
diff --git a/eurecap.script.php b/eurecap.script.php
index 665af77..055df6e 100644
--- a/eurecap.script.php
+++ b/eurecap.script.php
@@ -3,7 +3,7 @@ defined('_JEXEC') or die('Restricted access');
 /**
  * Installation script for the plugin
  *
- * @copyright Copyright (C) 2013-2014 Reinhold Kainhofer, office@open-tools.net
+ * @copyright Copyright (C) 2015 Reinhold Kainhofer, office@open-tools.net
  * @license GPL v3+,  http://www.gnu.org/copyleft/gpl.html
  */
 defined('DS') or define('DS', DIRECTORY_SEPARATOR);
@@ -89,6 +89,10 @@ class plgVmExtendedEuRecapInstallerScript
      */
     public function uninstall(JAdapterInstance $adapter)
     {
+		$db = JFactory::getDBO();
+		$q = "DELETE FROM `#__virtuemart_adminmenuentries` WHERE `view` = 'eurecap' AND `task` = '' AND `module_id` = 2";
+		$db->setQuery($q);
+		$db->query();
 //         // Remove plugin table
 //         $db =& JFactory::getDBO();
 //         $db->setQuery('DROP TABLE IF EXISTS `#__virtuemart_shopper_plg_ordernumber`;');
diff --git a/eurecap.xml b/eurecap.xml
index 9be4506..f96e947 100644
--- a/eurecap.xml
+++ b/eurecap.xml
@@ -22,7 +22,8 @@
         <folder>controllers</folder>
         <folder>models</folder>
         <folder>views</folder>
-		<folder>helpers</folder>
+        <folder>fields</folder>
+        <folder>elements</folder>
     </files>
     <scriptfile>eurecap.script.php</scriptfile>
     <languages folder="language">
@@ -38,10 +39,10 @@
                 <field name="order_status" type="orderstatus" default="C,S" multiple="multiple" label="VMEXT_EU_RECAP_ORDERSTATUS" description="VMEXT_EU_RECAP_ORDERSTATUS_DESC "/>
                 <field name="shopper_groups" type="vmshoppergroups" multiple="multiple" label="VMEXT_EU_RECAP_SHOPPERGROUP" description="VMEXT_EU_RECAP_SHOPPERGROUP_DESC" />
                 <field name="vatid_userfield" type="vmuserfields" label="VMEXT_EU_RECAP_VATID_USERFIELD" multiple="multiple" default="opc_vat" description="VMEXT_EU_RECAP_VATID_USERFIELD_DESC" />
-                <field name="include_taxed_orders" type="radio" default="0" class="btn-group btn-group-yesno" label="VMEXT_EU_RECAP_INCLUDE_TAXED" description="VMEXT_EU_RECAP_INCLUDE_TAXED_DESC" >
+<!--                <field name="include_taxed_orders" type="radio" default="0" class="btn-group btn-group-yesno" label="VMEXT_EU_RECAP_INCLUDE_TAXED" description="VMEXT_EU_RECAP_INCLUDE_TAXED_DESC" >
                     <option value="1">JYES</option>
                     <option value="0">JNO</option>
-                </field>
+                </field>-->
                 <field name="include_free" type="radio" default="0" class="btn-group btn-group-yesno" label="VMEXT_EU_RECAP_INCLUDE_FREE" description="VMEXT_EU_RECAP_INCLUDE_FREE_DESC" >
                     <option value="1">JYES</option>
                     <option value="0">JNO</option>
@@ -59,11 +60,12 @@
 <!--                     <option value="payment">VMEXT_EU_RECAP_TAXATION_MOMENT_PAYMENT</option> -->
                     <option value="invoice">VMEXT_EU_RECAP_TAXATION_MOMENT_INVOICE</option>
                 </field>
-                <field name="export_format" type="list" default="full" label="VMEXT_EU_RECAP_EXPORT_FORMAT" description="VMEXT_EU_RECAP_EXPORT_FORMAT_DESC" >
+<!--                <field name="export_format" type="list" default="full" label="VMEXT_EU_RECAP_EXPORT_FORMAT" description="VMEXT_EU_RECAP_EXPORT_FORMAT_DESC" >
                     <option value="full">VMEXT_EU_RECAP_EXPORT_FULL</option>
                     <option value="AT_xml">VMEXT_EU_RECAP_EXPORT_AT_XML</option>
                     <option value="DE_csv">VMEXT_EU_RECAP_EXPORT_DE_CSV</option>
-                </field>
+                    <option value="SK_xml">VMEXT_EU_RECAP_EXPORT_SK_XML</option>
+                </field>-->
                 <field name="vendor_vatid" type="text" scope="com_virtuemart" default="" label="VMEXT_EU_RECAP_VENDOR_VATID" description="VMEXT_EU_RECAP_VENDOR_VATID_DESC"/>
                 <field name="taxnr" type="text" scope="com_virtuemart" default="" label="VMEXT_EU_RECAP_TAXNR" description="VMEXT_EU_RECAP_TAXNR_DESC"/>
             </fieldset>
@@ -78,10 +80,10 @@
         <param name="order_status" type="vmorderstates" default="C,S" multiple="multiple" label="VMEXT_EU_RECAP_ORDERSTATUS" description="VMEXT_EU_RECAP_ORDERSTATUS_DESC "/>
         <param name="shopper_groups" type="vmshoppergroups" multiple="multiple" label="VMEXT_EU_RECAP_SHOPPERGROUP" description="VMEXT_EU_RECAP_SHOPPERGROUP_DESC" />
         <param name="vatid_userfield" type="vmuserfields" label="VMEXT_EU_RECAP_VATID_USERFIELD" multiple="multiple" default="opc_vat" description="VMEXT_EU_RECAP_VATID_USERFIELD_DESC" />
-        <param name="include_taxed_orders" type="radio" default="0" class="btn-group btn-group-yesno" label="VMEXT_EU_RECAP_INCLUDE_TAXED" description="VMEXT_EU_RECAP_INCLUDE_TAXED_DESC" >
+<!--         <param name="include_taxed_orders" type="radio" default="0" class="btn-group btn-group-yesno" label="VMEXT_EU_RECAP_INCLUDE_TAXED" description="VMEXT_EU_RECAP_INCLUDE_TAXED_DESC" > 
             <option value="1">JYES</option>
             <option value="0">JNO</option>
-        </param>
+		</param>-->
         <param name="include_free" type="radio" default="0" class="btn-group btn-group-yesno" label="VMEXT_EU_RECAP_INCLUDE_FREE" description="VMEXT_EU_RECAP_INCLUDE_FREE_DESC" >
             <option value="1">JYES</option>
             <option value="0">JNO</option>
@@ -98,11 +100,6 @@
 <!--             <option value="payment">VMEXT_EU_RECAP_TAXATION_MOMENT_PAYMENT</option> -->
             <option value="invoice">VMEXT_EU_RECAP_TAXATION_MOMENT_INVOICE</option>
         </param>
-        <param name="export_format" type="list" default="full" label="VMEXT_EU_RECAP_EXPORT_FORMAT" description="VMEXT_EU_RECAP_EXPORT_FORMAT_DESC" >
-            <option value="full">VMEXT_EU_RECAP_EXPORT_FULL</option>
-            <option value="AT_xml">VMEXT_EU_RECAP_EXPORT_AT_XML</option>
-            <option value="DE_csv">VMEXT_EU_RECAP_EXPORT_DE_CSV</option>
-        </param>
         <param name="vendor_vatid" type="text" scope="com_virtuemart" default="" label="VMEXT_EU_RECAP_VENDOR_VATID" description="VMEXT_EU_RECAP_VENDOR_VATID_DESC"/>
         <param name="taxnr" type="text" scope="com_virtuemart" default="" label="VMEXT_EU_RECAP_TAXNR" description="VMEXT_EU_RECAP_TAXNR_DESC"/>
     </params>
diff --git a/language/en-GB/en-GB.plg_vmextended_eurecap.ini b/language/en-GB/en-GB.plg_vmextended_eurecap.ini
index 3f94fa8..fe7eac0 100644
--- a/language/en-GB/en-GB.plg_vmextended_eurecap.ini
+++ b/language/en-GB/en-GB.plg_vmextended_eurecap.ini
@@ -5,8 +5,10 @@ COM_VIRTUEMART_EU_RECAP="EU Sales Report"
 ; COM_VIRTUEMART_EU_RECAP="EU Recapitulative Statement"
 VMEXT_EU_RECAP_SETTINGS_TITLE="Configuration of the EU Sales Report"
 VMEXT_EU_RECAP_VIEW_TITLE_DATE="EU Sales Report for the period from %s to %s"
+VMEXT_EU_RECAP_VIEW_EXPLANATION="EU-based businesses selling to other businesses providing a valid EU VAT ID do not have to charge VAT for these sales (&quot;reverse charge&quot;). However, merchants regularly have to report  those untaxed sales by submitting a list of VAT IDs and the total order amount for each VAT ID in the so-called EU Sales report or EU Recapitulative Statement. This component helps extracting and exporting this list. It is your responsibility to cross-check the generated file for correctness. We are not tax advisors and cannot take any responsibility for wrong submissions."
 
 VMEXT_EU_RECAP_LIST_MONTH="Period"
+VMEXT_EU_RECAP_LIST_PERIOD="Period: "
 VMEXT_EU_RECAP_LIST_YEAR="Year"
 
 ; VMEXT_EU_RECAP_RECHECK_EUVATID="(Re-)Check EU VAT IDs"
@@ -14,13 +16,15 @@ VMEXT_EU_RECAP_SETTINGS="Settings"
 COM_VIRTUEMART_EU_RECAP_SETTINGS="Settings"
 COM_VIRTUEMART_EU_RECAP_LIST="Report"
 VMEXT_EU_RECAP_EXPORT="Export"
-VMEXT_EU_RECAP_EXPORT_FULL="Full dataset (country-independend), CSV format"
+VMEXT_EU_RECAP_EXPORT_FULL="Full dataset (country-independent), CSV format"
 VMEXT_EU_RECAP_EXPORT_AT_XML="Austrian XML format"
 VMEXT_EU_RECAP_EXPORT_DE_CSV="German CSV format"
+VMEXT_EU_RECAP_EXPORT_SK_XML="Slovak XML format"
 
 VMEXT_EU_RECAP_EXPORT_TB_FULL="Export (full, csv)"
 VMEXT_EU_RECAP_EXPORT_TB_AT_XML="Export (AT, xml)"
 VMEXT_EU_RECAP_EXPORT_TB_DE_CSV="Export (DE, csv)"
+VMEXT_EU_RECAP_EXPORT_TB_SK_XML="Export (SK, xml)"
 
 VMEXT_EU_RECAP_FORM_NOTFOUND="Configuration form not available"
 
@@ -36,7 +40,7 @@ VMEXT_EU_RECAP_INCLUDE_TAXED="Include sales that were taxed"
 VMEXT_EU_RECAP_INCLUDE_TAXED_DESC="Select whether to also include sales where VAT was charged, even though a (possibly invalid) VATID was given."
 VMEXT_EU_RECAP_INCLUDE_FREE="Include free orders"
 VMEXT_EU_RECAP_INCLUDE_FREE_DESC="Select whether all orders are included or only orders with an order total larger than 0. In the first case, all free orders will also be included."
-VMEXT_EU_RECAP_EXPORT_FORMAT="Export format"
+VMEXT_EU_RECAP_EXPORT_FORMAT="Default export format"
 VMEXT_EU_RECAP_EXPORT_FORMAT_DESC="Select the format for the data export. Several countries have their own custom format that needs to be used to import the report into the official tax rporting system."
 VMEXT_EU_RECAP_REPORTSETTINGS="General Settings for the EU Sales Report"
 VMEXT_EU_RECAP_FREQUENCY="Frequency of the Report"
diff --git a/language/en-GB/en-GB.plg_vmextended_eurecap.sys.ini b/language/en-GB/en-GB.plg_vmextended_eurecap.sys.ini
index 3f94fa8..fe7eac0 100644
--- a/language/en-GB/en-GB.plg_vmextended_eurecap.sys.ini
+++ b/language/en-GB/en-GB.plg_vmextended_eurecap.sys.ini
@@ -5,8 +5,10 @@ COM_VIRTUEMART_EU_RECAP="EU Sales Report"
 ; COM_VIRTUEMART_EU_RECAP="EU Recapitulative Statement"
 VMEXT_EU_RECAP_SETTINGS_TITLE="Configuration of the EU Sales Report"
 VMEXT_EU_RECAP_VIEW_TITLE_DATE="EU Sales Report for the period from %s to %s"
+VMEXT_EU_RECAP_VIEW_EXPLANATION="EU-based businesses selling to other businesses providing a valid EU VAT ID do not have to charge VAT for these sales (&quot;reverse charge&quot;). However, merchants regularly have to report  those untaxed sales by submitting a list of VAT IDs and the total order amount for each VAT ID in the so-called EU Sales report or EU Recapitulative Statement. This component helps extracting and exporting this list. It is your responsibility to cross-check the generated file for correctness. We are not tax advisors and cannot take any responsibility for wrong submissions."
 
 VMEXT_EU_RECAP_LIST_MONTH="Period"
+VMEXT_EU_RECAP_LIST_PERIOD="Period: "
 VMEXT_EU_RECAP_LIST_YEAR="Year"
 
 ; VMEXT_EU_RECAP_RECHECK_EUVATID="(Re-)Check EU VAT IDs"
@@ -14,13 +16,15 @@ VMEXT_EU_RECAP_SETTINGS="Settings"
 COM_VIRTUEMART_EU_RECAP_SETTINGS="Settings"
 COM_VIRTUEMART_EU_RECAP_LIST="Report"
 VMEXT_EU_RECAP_EXPORT="Export"
-VMEXT_EU_RECAP_EXPORT_FULL="Full dataset (country-independend), CSV format"
+VMEXT_EU_RECAP_EXPORT_FULL="Full dataset (country-independent), CSV format"
 VMEXT_EU_RECAP_EXPORT_AT_XML="Austrian XML format"
 VMEXT_EU_RECAP_EXPORT_DE_CSV="German CSV format"
+VMEXT_EU_RECAP_EXPORT_SK_XML="Slovak XML format"
 
 VMEXT_EU_RECAP_EXPORT_TB_FULL="Export (full, csv)"
 VMEXT_EU_RECAP_EXPORT_TB_AT_XML="Export (AT, xml)"
 VMEXT_EU_RECAP_EXPORT_TB_DE_CSV="Export (DE, csv)"
+VMEXT_EU_RECAP_EXPORT_TB_SK_XML="Export (SK, xml)"
 
 VMEXT_EU_RECAP_FORM_NOTFOUND="Configuration form not available"
 
@@ -36,7 +40,7 @@ VMEXT_EU_RECAP_INCLUDE_TAXED="Include sales that were taxed"
 VMEXT_EU_RECAP_INCLUDE_TAXED_DESC="Select whether to also include sales where VAT was charged, even though a (possibly invalid) VATID was given."
 VMEXT_EU_RECAP_INCLUDE_FREE="Include free orders"
 VMEXT_EU_RECAP_INCLUDE_FREE_DESC="Select whether all orders are included or only orders with an order total larger than 0. In the first case, all free orders will also be included."
-VMEXT_EU_RECAP_EXPORT_FORMAT="Export format"
+VMEXT_EU_RECAP_EXPORT_FORMAT="Default export format"
 VMEXT_EU_RECAP_EXPORT_FORMAT_DESC="Select the format for the data export. Several countries have their own custom format that needs to be used to import the report into the official tax rporting system."
 VMEXT_EU_RECAP_REPORTSETTINGS="General Settings for the EU Sales Report"
 VMEXT_EU_RECAP_FREQUENCY="Frequency of the Report"
diff --git a/models/eurecap.php b/models/eurecap.php
index 81db64d..c90e240 100644
--- a/models/eurecap.php
+++ b/models/eurecap.php
@@ -135,7 +135,8 @@ class VirtuemartModelEuRecap extends VmModel {
 		if ($settings['include_free']==0) {
 			$where[] = "`o`.`order_total` > 0";
 		}
-		if ($settings['include_taxed_orders']==0) {
+		$include_taxed_orders = vRequest::getVar('include_taxed_orders', 0);
+		if (!$include_taxed_orders) {
 			$where[] = "`o`.`order_tax` = 0";
 		}
 		$where[] = '`ui`.`address_type` = "BT"';
@@ -247,5 +248,24 @@ class VirtuemartModelEuRecap extends VmModel {
 		$listHTML = JHtml::_ ('select.genericlist', $options, 'year', 'size="7" class="inputbox" onchange="this.form.submit();" ', 'text', 'value', $selected);
 		return $listHTML;
 	}
+	
+	public function renderExportFormatList($pathes=array(), $selected='full') {
+        jimport('joomla.filesystem.folder');
+        $templates = array();
+        foreach ($pathes as $tmplpath) {
+			if (!JFolder::exists($tmplpath)) continue;
+			$templates = array_merge($templates, JFolder::files($tmplpath, 'export_.*\.php'));
+        }
+        sort($templates, SORT_STRING);
+        $templates = array_unique($templates);
+        
+        foreach ($templates as $tmpl) {
+			$value = substr($tmpl, 7, -4); // Cut off export_ and .php
+			$options[] = JHtml::_('select.option', vmText::_('VMEXT_EU_RECAP_EXPORT_' . strtoupper($value)), $value);
+        }
+        $listHTML = JHtml::_ ('select.genericlist', $options, 'export_format', 'size="7" class="inputbox" ', 'text', 'value', $selected);
+        return $listHTML;
+	}
+
 
 }
diff --git a/models/eurecap_config.php b/models/eurecap_config.php
index 427c044..e53a095 100644
--- a/models/eurecap_config.php
+++ b/models/eurecap_config.php
@@ -63,8 +63,9 @@ class VirtuemartModelEuRecap_config extends VmModel {
 			$registry->loadString($settings_str);
 			// Take the settings and load all missing values from the defaults in the xml file:
 			$settings = $registry->toArray();
+			$form = JForm::getInstance('eurecap-vmconfig', $path, array(), false, '//vmconfig | //config[not(//vmconfig)]');
+// 			$form = vmPlugin::loadConfigForm($path, 'eurecap');
 
-			$form = vmPlugin::loadConfigForm($path, 'eurecap');
 			$form->bind(array('settings'=>$settings));
 			$fieldSets = $form->getFieldsets();
 			foreach ($fieldSets as $name => $fieldSet) {
diff --git a/views/eurecap/tmpl/default.php b/views/eurecap/tmpl/default.php
index b9e5845..13b1584 100644
--- a/views/eurecap/tmpl/default.php
+++ b/views/eurecap/tmpl/default.php
@@ -26,23 +26,38 @@ $myCurrencyDisplay = CurrencyDisplay::getInstance();
 
 
 ?>
+<pre><?php print_r(vRequest::getRequest()); ?></pre>
 <form action="index.php" method="post" name="adminForm" id="adminForm">
+	<?php echo $this->addStandardHiddenToForm(); ?>
+
     <div id="header">
         <h2><?php echo vmText::sprintf('VMEXT_EU_RECAP_VIEW_TITLE_DATE', vmJsApi::date( $this->from_period, 'LC',true) , vmJsApi::date( $this->until_period, 'LC',true) ); ?></h2>
+        <p><?php echo vmText::_('VMEXT_EU_RECAP_VIEW_EXPLANATION'); ?> </p>
         <div id="filterbox">
-            <table>
-                <tr>
-                    <td align="left" width="100%">
-						<?php if ($this->frequency<12) {
-							echo vmText::_('VMEXT_EU_RECAP_LIST_MONTH') . $this->period_lists['month_list']; 
-						} ?>
-                        <?php echo vmText::_('VMEXT_EU_RECAP_LIST_YEAR') . $this->period_lists['year_list'];
+            <table width="100%">
+                <tr width="100%">
+                    <td align="left">
+						<?php 
+						echo vmText::_('VMEXT_EU_RECAP_LIST_PERIOD');
+						if ($this->frequency<12) {
+							echo $this->period_lists['month_list']; 
+						} 
+						echo $this->period_lists['year_list'];
 
                         if(VmConfig::get('multix','none')!='none'){
                             $vendorId = vRequest::getInt('virtuemart_vendor_id',1);
                             echo ShopFunctions::renderVendorList($vendorId,false);
-                        } ?>
-                        <button class="btn btn-small" onclick="this.form.submit();"><?php echo vmText::_('COM_VIRTUEMART_GO'); ?>
+                        } ?><br>
+                        <label><input type="checkbox" <?php if ($this->include_taxed_orders) { ?>checked <?php } ?> name="include_taxed_orders" value="true" style="    vertical-align: middle; position: relative; bottom: 1px;">&nbsp;&nbsp;&nbsp;<?php echo vmText::_('VMEXT_EU_RECAP_INCLUDE_TAXED'); ?></label>
+                        
+					</td>
+					<td align="left" width="5%">
+                        <button class="btn btn-small" name="Go" onclick="this.form.task.value=''; this.form.submit();"><?php echo vmText::_('COM_VIRTUEMART_GO'); ?></button>
+                    </td>
+                    <td width="30%"></td>
+					<td align="right" width>
+						<?php echo $this->export_format_list; ?>
+                        <button class="btn btn-small" name="format" value="raw" onclick="this.form.task.value='export'; this.form.submit();"><?php echo vmText::_('VMEXT_EU_RECAP_EXPORT'); ?>
                         </button>
                     </td>
                 </tr>
@@ -75,9 +90,11 @@ $myCurrencyDisplay = CurrencyDisplay::getInstance();
                     <th>
                         <?php echo $this->sort('`sum_order_total`', 'VMEXT_EU_RECAP_ORDERTOTALS') ; ?>
                     </th>
+<?php if ($this->include_taxed_orders) { ?>
                     <th>
                         <?php echo $this->sort('`sum_order_tax`', 'VMEXT_EU_RECAP_ORDERTAXES') ; ?>
                     </th>
+<?php } ?>
                 </tr>
             </thead>
             <tbody>
@@ -130,9 +147,11 @@ $myCurrencyDisplay = CurrencyDisplay::getInstance();
                     <td align="right">
 		                <?php echo $myCurrencyDisplay->priceDisplay($r['sum_order_total']); ?>
                     </td>
+<?php if ($this->include_taxed_orders) { ?>
                     <td align="right">
 		                <?php echo $myCurrencyDisplay->priceDisplay($r['sum_order_tax']); ?>
                     </td>
+<?php } ?>
                 </tr>
                 <?php
 	    	$i = 1-$i;
@@ -149,7 +168,6 @@ $myCurrencyDisplay = CurrencyDisplay::getInstance();
         </table>
     </div>
 
-	<?php echo $this->addStandardHiddenToForm(); ?>
 </form>
 
 <?php AdminUIHelper::endAdminArea(); ?>
diff --git a/views/eurecap/view.html.php b/views/eurecap/view.html.php
index 09d6ac1..fe766b8 100644
--- a/views/eurecap/view.html.php
+++ b/views/eurecap/view.html.php
@@ -22,6 +22,7 @@ if(!defined('VM_VERSION') or VM_VERSION < 3){
 	// VM2 has class VmView instead of VmViewAdmin:
 	if(!class_exists('VmView'))      require(VMPATH_ADMIN.DS.'helpers'.DS.'vmview.php');
 	class VmViewAdmin extends VmView {}
+	defined ('VMPATH_PLUGINLIBS') or define ('VMPATH_PLUGINLIBS', JPATH_VM_PLUGINS);
 } else {
 	if(!class_exists('VmViewAdmin')) require(VMPATH_ADMIN.DS.'helpers'.DS.'vmviewadmin.php');
 }
@@ -119,6 +120,16 @@ class VirtuemartViewEuRecap extends VmViewAdmin {
 // 		$bar->appendButton('Link', 'export', 'VMEXT_EU_RECAP_FULLEXPORT', 'index.php?option=com_virtuemart&view=eurecap&task=export&format=raw&layout=export_full&month='.$month.'&year='.$year);
 		$bar->appendButton('Link', 'export', 'VMEXT_EU_RECAP_EXPORT_TB_' . $settings['export_format'], 'index.php?option=com_virtuemart&view=eurecap&task=export&format=raw&layout=export&month='.$month.'&year='.$year);
 
+		$user = JFactory::getUser();
+		if($user->authorise('core.admin', 'com_virtuemart') or $user->authorise('core.manager', 'com_virtuemart')){
+			$vendorId = vRequest::getInt('virtuemart_vendor_id');
+		} else {
+			$vendorId = VmConfig::isSuperVendor();
+		}
+		$vendorModel = VmModel::getModel('vendor');
+		$vendor = $vendorModel->getVendor($vendorId);
+		$vendor->vendorFields = $vendorModel->getVendorAddressFields($vendorId);
+		$this->assignRef('vendor', $vendor);
 
 		$this->frequency = $settings['frequency'];
 		$period_list = array();
@@ -131,12 +142,15 @@ class VirtuemartViewEuRecap extends VmViewAdmin {
 
 		$this->assignRef('from', $model->from);
 		$this->assignRef('until', $model->until);
-
+		
+		$this->include_taxed_orders = vRequest::getVar('include_taxed_orders', 0);
+		
 		$this->addStandardDefaultViewLists($model);
 		$euIntracommunityRevenue = $model->getEuRecap();
 		$this->assignRef('report', $euIntracommunityRevenue);
-		
-		$this->assignRef('export_format', $settings['export_format']);
+
+		$this->export_format_list = $model->renderExportFormatList($this->_path['template'], $settings['export_format']);
+// 		$this->assignRef('export_format', $settings['export_format']);
 
 		$pagination = $model->getPagination();
 		$this->assignRef('pagination', $pagination);
@@ -152,7 +166,8 @@ class VirtuemartViewEuRecap extends VmViewAdmin {
 		$path = VMPATH_ROOT .DS. 'plugins' .DS. 'vmextended' . DS . $this->getName() . DS . $this->getName() . '.xml';
 		if (file_exists($path)){
 
-			$form = vmPlugin::loadConfigForm($path, $this->getName());
+// 			$form = vmPlugin::loadConfigForm($path, $this->getName());
+			$form = JForm::getInstance($this->getName().'-vmconfig', $path, array(), false, '//vmconfig | //config[not(//vmconfig)]');
 
 			// load config
 			$eurecapSettingsModel = VmModel::getModel("eurecap_config");
diff --git a/views/eurecap/view.raw.php b/views/eurecap/view.raw.php
index e6d9de8..e17ccbb 100644
--- a/views/eurecap/view.raw.php
+++ b/views/eurecap/view.raw.php
@@ -63,6 +63,22 @@ class VirtuemartViewEuRecap extends VmViewAdmin {
 		
 		$this->assignRef('settings', $settings);
 
+		$user = JFactory::getUser();
+		if($user->authorise('core.admin', 'com_virtuemart') or $user->authorise('core.manager', 'com_virtuemart')){
+			$vendorId = vRequest::getInt('virtuemart_vendor_id');
+		} else {
+			$vendorId = VmConfig::isSuperVendor();
+		}
+		$vendorModel = VmModel::getModel('vendor');
+		$vendor = $vendorModel->getVendor($vendorId);
+		$vendor->vendorFields = $vendorModel->getVendorAddressFields($vendorId);
+		$this->assignRef('vendor', $vendor);
+
+		$oldformat = isset($settings['export_format'])?$settings['export_format']:'full';
+		$settings['export_format'] = vRequest::getVar('export_format', $oldformat);
+		if ($oldformat != $settings['export_format'])
+			$settingsModel->saveConfig(array('settings'=>$settings));
+		
 		$this->assignRef('export_format', $settings['export_format']);
 		parent::display($tpl);
 	}
-- 
GitLab