Index: /changelog
===================================================================
--- /changelog	(revision 7646)
+++ /changelog	(revision 7649)
@@ -326,3 +326,4 @@
 - Bugfix: Speichern von Rabatt % Werten in Kundengruppen/Produktgruppen und Produkten korrigiert
 - Feature: Zahlungsart "Kostenfrei" fÃŒr Bestellungen die mit 0,- durchgefÃŒhrt werden / Task  #709
+- Feature: FÃŒllmengen ÃŒberarbeitet (Bezugseinheit und Umrechnung im Produkt unterschiedlich und definierbar)
 - Technisch: Ausgabe Overview wird zwischengespeichert, um Performance zu erhÃ¶hen
Index: /controller/wpsg_ShopController.class.php
===================================================================
--- /controller/wpsg_ShopController.class.php	(revision 7646)
+++ /controller/wpsg_ShopController.class.php	(revision 7649)
@@ -1124,5 +1124,5 @@
 
 			}
-
+			
 			return true;
 
@@ -1651,6 +1651,15 @@
 			}
 
-			if (isset($this->view['data']['ptemplate_file'])) $template_file = WPSG_PATH_PRODUKTTEMPLATES.$this->view['data']['ptemplate_file'];
-			else $template_file = WPSG_PATH_PRODUKTTEMPLATES.'standard.phtml';
+			if (isset($this->view['data']['ptemplate_file'])) {
+				
+				$template = $this->view['data']['ptemplate_file'];
+				$template_file = WPSG_PATH_PRODUKTTEMPLATES.$this->view['data']['ptemplate_file'];
+				
+			} else {
+				
+				$template = 'standard.phtml';
+				$template_file = WPSG_PATH_PRODUKTTEMPLATES.'standard.phtml';
+				
+			}
 
 			$this->callMods('renderProdukt_templateSelect', array(&$this->view['data'], &$template_file));
@@ -1666,5 +1675,16 @@
 			else if (file_exists($template_file_uv) && $this->get_option('wpsg_ignoreuserview') != '1') $template_file = $template_file_uv;
 			else if (file_exists($template_file_uv_old) && $this->get_option('wpsg_ignoreuserview') != '1') $template_file = $template_file_uv_old;
-
+			else {
+				
+				$arTemplate = $this->loadProduktTemplates(false, true);
+				
+				foreach ($arTemplate as $k => $v) {
+					
+					if (basename($v) === $template) $template_file = $v;
+					
+				}
+								
+			}
+			
 			if (!is_file($template_file)) { wpsg_debug(wpsg_translate(__('Das Template (#1#) fÃŒr ein Produkt (ID:#2#) scheint nicht zu existieren!', 'wpsg'), $template_file, $produkt_id)); return; }
 
@@ -2210,7 +2230,6 @@
 		 * LÃ€dt die verfÃŒgbaren Produkttemplates
 		 */
-		public function loadProduktTemplates($key = false, $fullpath = false, $view_path = false)
-		{
-
+		public function loadProduktTemplates($key = false, $fullpath = false, $view_path = false) {
+ 
 			$arTemplates = array();
 
@@ -2303,4 +2322,6 @@
             @closedir($handle);
 
+            $this->callMods('loadProduktTemplates', [&$arTemplates, $key, $fullpath, $view_path]);
+            
 			return $arTemplates;
 
Index: /lib/functions.inc.php
===================================================================
--- /lib/functions.inc.php	(revision 7646)
+++ /lib/functions.inc.php	(revision 7649)
@@ -1224,5 +1224,5 @@
 	 * Formatiert einen Double Wert fÃŒr Ausgaben im Frontend
 	 */
-	function wpsg_ff($value, $einheit = false, $keep = false)
+	function wpsg_ff($value, $einheit = false, $keep = false, $stellen = 2)
 	{
 		
@@ -1245,6 +1245,5 @@
 		else
 		{
-
-			$stellen = 2;
+ 
 			$value = doubleval($value);
 			   
@@ -1254,9 +1253,8 @@
 				preg_match('/0\.(0+)\d/', $value, $match);
 				
-				if (isset($match[1]))
-				{
+				if (isset($match[1])) {
 					
 					$stellen = strlen($match[1]) + $stellen;
-				
+					
 				}
 				
Index: /lib/wpsg_basket.class.php
===================================================================
--- /lib/wpsg_basket.class.php	(revision 7646)
+++ /lib/wpsg_basket.class.php	(revision 7649)
@@ -169,5 +169,5 @@
 			
 			$ses_data = array();
-			
+		 
 			$bOK = $this->shop->callMods('basket_produkttosession', array($produkt_key, &$menge, &$ses_data));
 			
Index: /lib/wpsg_db.class.php
===================================================================
--- /lib/wpsg_db.class.php	(revision 7646)
+++ /lib/wpsg_db.class.php	(revision 7649)
@@ -26,11 +26,9 @@
 		 * Gibt eine einzelne Zelle aus der Datenbank zurÃŒck
 		 */
-		function fetchOne($strQuery)
-		{
-			
-			global $wpdb;
-
-			if ($wpdb->query($strQuery) === false)
-			{
+		function fetchOne($strQuery) {
+			
+			global $wpdb;
+
+			if ($wpdb->query($strQuery) === false) {
 				
 				$this->handleError();
Index: /model/wpsg_product.class.php
===================================================================
--- /model/wpsg_product.class.php	(revision 7646)
+++ /model/wpsg_product.class.php	(revision 7649)
@@ -13,4 +13,5 @@
 
 		private $_cache = [];
+		private $arMeta = null;
 		
 		public $loadedData = array(); /* EnthÃ€lt die Daten, die ÃŒber den ShopController und die Module geladen / erweitert wurden */		
@@ -149,10 +150,14 @@
 		 * Gibt einen META Value zurÃŒck
 		 */
-		public function getMeta($meta_key)
-		{
-
-			$meta_value = $this->db->fetchOne("SELECT M.`meta_value` FROM `".WPSG_TBL_META."` AS M WHERE M.`meta_table` = 'WPSG_TBL_PRODUCTS' AND M.`meta_key` = '".wpsg_q($meta_key)."' AND `target_id` = '".wpsg_q($this->id)."' ");
-
-			return $meta_value;
+		public function getMeta($meta_key) {
+
+			if ($this->arMeta === null) {
+				
+				$this->arMeta = $this->db->fetchAssocField("SELECT M.`meta_key`, M.`meta_value` FROM `".WPSG_TBL_META."` AS M WHERE M.`meta_table` = 'WPSG_TBL_PRODUCTS' AND M.`target_id` = '".wpsg_q($this->id)."' ", "meta_key", "meta_value");
+				 				
+			}
+			
+			if (isset($meta_key, $this->arMeta)) return $this->arMeta[$meta_key];
+			else return '';
 
 		} // public function getMeta($meta_key)
Index: /mods/wpsg_mod_fuellmenge.class.php
===================================================================
--- /mods/wpsg_mod_fuellmenge.class.php	(revision 7646)
+++ /mods/wpsg_mod_fuellmenge.class.php	(revision 7649)
@@ -41,14 +41,4 @@
 			
 			dbDelta($sql);
-
-			// FÃŒllmenge nicht in WPSG_TBL_ORDERPRODUCT
-			/*
-			$sql = "CREATE TABLE ".WPSG_TBL_ORDERPRODUCT." (
-			  	feinheit varchar(50) NOT NULL,
-			  	fmenge varchar(50) NOT NULL
-			) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";
-			
-			dbDelta($sql);
-			*/
 			
 		}
@@ -214,5 +204,12 @@
 				
 			}
-
+			
+			$oProduct = wpsg_product::getInstance($produkt_id);
+			
+			if (isset($_REQUEST['fmenge_details']) && wpsg_checkInput($_REQUEST['fmenge_details'], WPSG_SANITIZE_CHECKBOX)) $oProduct->setMeta('fmenge_details', $_REQUEST['fmenge_details']);
+			if (isset($_REQUEST['wpsg_mod_fuellmenge_referencevalue']) && wpsg_checkInput($_REQUEST['wpsg_mod_fuellmenge_referencevalue'], WPSG_SANITIZE_FLOAT)) $oProduct->setMeta('wpsg_mod_fuellmenge_referencevalue', $_REQUEST['wpsg_mod_fuellmenge_referencevalue']);
+			if (isset($_REQUEST['referenceunit']) && wpsg_checkInput($_REQUEST['referenceunit'], WPSG_SANITIZE_TEXTFIELD)) $oProduct->setMeta('wpsg_mod_fuellmenge_referenceunit', $_REQUEST['referenceunit']);
+			if (isset($_REQUEST['wpsg_mod_fuellmenge_conversionvalue']) && wpsg_checkInput($_REQUEST['wpsg_mod_fuellmenge_conversionvalue'], WPSG_SANITIZE_FLOAT)) $oProduct->setMeta('wpsg_mod_fuellmenge_conversionvalue', $_REQUEST['wpsg_mod_fuellmenge_conversionvalue']);
+			
 		} // public function produkt_save(&$produkt_id)
 		
@@ -226,76 +223,92 @@
 		} // public function produkt_edit_sidebar(&$produkt_data)
 		 		
-		public function loadProduktArray(&$produkt)
-		{
-			
-			$arFeinheiten = explode(',', $this->shop->get_option('wpsg_mod_fuellmenge_einheit'));
-						
-			if ($this->shop->hasMod('wpsg_mod_productvariants') && $this->shop->callMod('wpsg_mod_productvariants', 'isVariantsProductKey', array($produkt['id'])))
-			{
-								
-				$variInfo = $this->shop->callMod('wpsg_mod_productvariants', 'getVariantenInfoArray', array($produkt['id']));
-				$produkt['fmenge'] += $variInfo['fmenge'];
-				
-			}
-
-			if (!wpsg_isSizedDouble($produkt['fmenge'])) $produkt['fmenge'] = 0;
-			$produkt['fmenge_preis'] = 0;
-
-			if (wpsg_isSizedString($produkt['feinheit']))
-			{
-
-				$produkt['feinheit'] = wpsg_getStr($arFeinheiten[$produkt['feinheit']]);
-
-
-			}
-			else
-			{
-					
-				$arFeinheitenValues = array_values($arFeinheiten);
-				$produkt['feinheit'] = $arFeinheitenValues[0];
-
-
-			}
-
-
-
-			if ($produkt['fmenge'] > 0) $produkt['fmenge_preis'] = $produkt['preis'] / $produkt['fmenge'] * wpsg_tf($this->shop->get_option('wpsg_mod_fuellmenge_bezug'));
-						
+		/*
+		public function loadProduktArray(&$produkt) {
+			
+			if (!isset($produkt['fmenge'])) $produkt['fmenge'] = 0; else $produkt['fmenge'] = wpsg_tf($produkt['fmenge']);
+			
+			$arValues = $this->calculateValues($produkt['preis'], $produkt['fmenge'], $produkt['id']);
+			die("=".$produkt['id']);
+			$produkt['fmenge'] = $arValues['fmenge'];			
+			$produkt['feinheit'] = $arValues['feinheit'];
+			$produkt['referencevalue'] = $arValues['feinheit'];
+			$produkt['referenceunit'] = $arValues['referenceunit'];
+			$produkt['fmenge_preis'] = $arValues['fmenge_preis'];
+			
 		} // public function renderProdukt_data(&$view)
+		*/
 		
 		/** Modulfunktionen */
-				
+		
+		/**
+		 * Bis Januar 202 waren die Einheiten als index gespeichert, das habe ich geÃ€ndert und daher diese Funktion
+		 * 		 
+		 * @param $feinheit
+		 * @return mixed
+		 */
 		public function getUnit($feinheit) {
 
-            $arFeinheiten = explode(',', $this->shop->get_option('wpsg_mod_fuellmenge_einheit'));
-            return $arFeinheiten[$feinheit];
-		    
+			if (is_numeric($feinheit)) {
+				
+				$arFeinheiten = explode(',', $this->shop->get_option('wpsg_mod_fuellmenge_einheit'));
+				
+				return $arFeinheiten[$feinheit];
+				
+			} else return $feinheit; 
+					    
         }
 		
-		public function renderPriceInfo($price, $fmenge, $feinheit, $layout = 0)
-		{
+		public function renderPriceInfo($price, $fmenge, $product_id, $layout = 1) {
 			
 			if ($price <= 0 || $fmenge <= 0) return;
-			
-			if (is_numeric($feinheit))
-			{
-				
-				$arFeinheiten = explode(',', $this->shop->get_option('wpsg_mod_fuellmenge_einheit'));
-				$feinheit = $arFeinheiten[$feinheit];
-				
-			}
+			 
+			$arValues = $this->calculateValues($price, $fmenge, $product_id);
 			
 			$this->shop->view['wpsg_mod_fuellmenge'] = array(
 			    'layout' => $layout,
-				'fmenge' => $fmenge,
-				'feinheit' => $feinheit,
-				'fmenge_preis' => $price / $fmenge * wpsg_tf($this->shop->get_option('wpsg_mod_fuellmenge_bezug'))
+				'fmenge' => $arValues['fmenge'],
+				'feinheit' => $arValues['feinheit'],
+				'referencevalue' => $arValues['referencevalue'],
+				'referenceunit' => $arValues['referenceunit'],
+				'fmenge_preis' => $arValues['fmenge_preis']
 			);
 						 			
 			$this->shop->render(WPSG_PATH_VIEW.'/mods/mod_fuellmenge/priceinfo.phtml');			
 			
-		} // public function renderPriceInfo($fmenge, $feinheit)
+		} 
+		
+		public function calculateValues($price, $fmenge, $product_id) {
+			 
+			$oProduct = wpsg_product::getInstance($product_id);
+			
+			$feinheit = $this->getUnit($oProduct->__get('feinheit'));
+			$fmenge_details = $oProduct->getMeta('fmenge_details'); // Erweitert
+			$referencevalue = wpsg_tf($oProduct->getMeta('wpsg_mod_fuellmenge_referencevalue'));
+			$referenceunit = $oProduct->getMeta('wpsg_mod_fuellmenge_referenceunit');
+			$conversionvalue = $oProduct->getMeta('wpsg_mod_fuellmenge_conversionvalue');
+			
+			if ($fmenge_details !== '1') {
+				
+				$conversionvalue = 1;
+				$referencevalue = $this->shop->get_option('wpsg_mod_fuellmenge_bezug');
+				$referenceunit = $feinheit;
+				
+			}
+			
+			// Umrechnung
+			$fmenge_reference = $fmenge  / $conversionvalue;
+			
+			$reference_price = $price / $fmenge_reference * $referencevalue;
+			
+			return [
+				'fmenge' => round($fmenge, 2),
+				'feinheit' => $feinheit,
+				'referencevalue' => $referencevalue,
+				'referenceunit' => $referenceunit,
+				'fmenge_preis' => round($reference_price, 2)
+			];
+			
+		}
 		
 	} // class wpsg_mod_fuellmenge extends wpsg_mod_basic
 
-?>
Index: /mods/wpsg_mod_productvars.class.php
===================================================================
--- /mods/wpsg_mod_productvars.class.php	(revision 7646)
+++ /mods/wpsg_mod_productvars.class.php	(revision 7649)
@@ -513,7 +513,7 @@
 
 			// Nix machen bei Warenkorbaktualisierung
-			if (isset($_REQUEST['wpsg_basket_refresh'])) return;
-
-			if ($bError === true) return -2; else return true;
+			if (isset($_REQUEST['wpsg_basket_refresh'])) return null;
+
+			if ($bError === true) return -2; else return null;
 
 		} // public function basket_produkttosession($produkt_key, $menge, &$ses_data)
Index: /views/admin/form/input.phtml
===================================================================
--- /views/admin/form/input.phtml	(revision 7646)
+++ /views/admin/form/input.phtml	(revision 7649)
@@ -8,5 +8,5 @@
 			<input 
 				type="<?php echo wpsg_getStr($this->view['field_config']['type'], 'text'); ?>"
-				class="form-control input-sm" 
+				class="form-control input-sm <?php echo wpsg_getStr($this->view['field_config']['input_class']); ?>" 
 				<?php if (!wpsg_isTrue($this->view['field_config']['autocomplete'])) { ?> autocomplete="off" <?php } ?>
 				name="<?php echo $this->view['field_name']; ?>"  
Index: /views/css/admin.css
===================================================================
--- /views/css/admin.css	(revision 7646)
+++ /views/css/admin.css	(revision 7649)
@@ -66,4 +66,10 @@
 #wpsg-bs .wpsg-wp-header-end { margin-top:-10px !important; }
 #wpsg-bs .wpsg_msg_wrap { margin-right:20px; }
+#wpsg-bs .d-flex { display:flex; }
+#wpsg-bs .w-100 { width:100%; }
+#wpsg-bs .justify-content_center { justify-content:center; }
+#wpsg-bs .align-items_center { align-items:center; }
+#wpsg-bs .justify-content_space-between {justify-content:space-between; }
+#wpsg-bs .grow-1 { flex-grow:1; }
 
 .wp-admin #wpsg-bs select { max-width:100%; padding-right:0; line-height:initial; }
Index: /views/mods/mod_fuellmenge/basket_row.phtml
===================================================================
--- /views/mods/mod_fuellmenge/basket_row.phtml	(revision 7646)
+++ /views/mods/mod_fuellmenge/basket_row.phtml	(revision 7649)
@@ -13,5 +13,5 @@
             
         <?php echo wpsg_translate(__('FÃŒllmenge:', 'wpsg')); ?>
-        <?php echo $this->callMod('wpsg_mod_fuellmenge', 'renderPriceInfo', [$this->view['p']['preis'], $this->view['p']['fmenge'], $this->view['p']['feinheit'], 1]); ?>            
+        <?php echo $this->callMod('wpsg_mod_fuellmenge', 'renderPriceInfo', [$this->view['p']['preis'], $this->view['p']['fmenge'], $this->view['p']['id'], 1]); ?>            
         
 	</div>
Index: /views/mods/mod_fuellmenge/overview_row.phtml
===================================================================
--- /views/mods/mod_fuellmenge/overview_row.phtml	(revision 7646)
+++ /views/mods/mod_fuellmenge/overview_row.phtml	(revision 7649)
@@ -13,5 +13,5 @@
 
         <?php echo wpsg_translate(__('FÃŒllmenge:', 'wpsg')); ?>
-        <?php echo $this->callMod('wpsg_mod_fuellmenge', 'renderPriceInfo', [$this->view['p']['preis'], $this->view['p']['fmenge'], $this->view['p']['feinheit'], 1]); ?>
+        <?php echo $this->callMod('wpsg_mod_fuellmenge', 'renderPriceInfo', [$this->view['p']['preis'], $this->view['p']['fmenge'], $this->view['p']['id'], 1]); ?>
 
     </div>
Index: /views/mods/mod_fuellmenge/priceinfo.phtml
===================================================================
--- /views/mods/mod_fuellmenge/priceinfo.phtml	(revision 7646)
+++ /views/mods/mod_fuellmenge/priceinfo.phtml	(revision 7649)
@@ -4,5 +4,5 @@
 	 * Anzeige der Grundpreisinformationen im Produkttemplate
 	 */
-
+	
 ?>
 
@@ -11,7 +11,7 @@
     <span class="wpsg_mod_fuellmenge_info"><?php echo wpsg_translate(
         __('#1# (#2# / #3#)', 'wpsg'),
-        wpsg_ff($this->view['wpsg_mod_fuellmenge']['fmenge'], $this->view['wpsg_mod_fuellmenge']['feinheit']),
-        wpsg_ff($this->view['wpsg_mod_fuellmenge']['fmenge_preis'], $this->get_option('wpsg_currency')),
-        wpsg_ff($this->get_option('wpsg_mod_fuellmenge_bezug'), $this->view['wpsg_mod_fuellmenge']['feinheit'])
+        wpsg_ff($this->view['wpsg_mod_fuellmenge']['fmenge'], $this->view['wpsg_mod_fuellmenge']['feinheit'], true, 0),
+        wpsg_ff($this->view['wpsg_mod_fuellmenge']['fmenge_preis'], $this->get_option('wpsg_currency'), true, 0),
+        wpsg_ff($this->view['wpsg_mod_fuellmenge']['referencevalue'],$this->view['wpsg_mod_fuellmenge']['referenceunit'], true, 0)
     ); ?></span>
     
@@ -20,6 +20,6 @@
     <div class="wpsg_mod_fuellmenge_info"><?php echo wpsg_translate(
         __('(#1# / #2#)', 'wpsg'),
-        wpsg_ff($this->view['wpsg_mod_fuellmenge']['fmenge_preis'], $this->get_option('wpsg_currency')),
-        wpsg_ff($this->get_option('wpsg_mod_fuellmenge_bezug'), $this->view['wpsg_mod_fuellmenge']['feinheit'])
+        wpsg_ff($this->view['wpsg_mod_fuellmenge']['fmenge_preis'], $this->get_option('wpsg_currency'), true, 0),
+        wpsg_ff($this->view['wpsg_mod_fuellmenge']['referencevalue'], $this->view['wpsg_mod_fuellmenge']['referenceunit'], true, 0)
     ); ?></div>
 
Index: /views/mods/mod_fuellmenge/produkt_edit_sidebar.phtml
===================================================================
--- /views/mods/mod_fuellmenge/produkt_edit_sidebar.phtml	(revision 7646)
+++ /views/mods/mod_fuellmenge/produkt_edit_sidebar.phtml	(revision 7649)
@@ -5,19 +5,140 @@
 	 */
 
+	$fmenge = wpsg_tf(wpsg_getFloat($this->view['data']['fmenge']));
+	
+	$arUnit = $this->view['data']['arFeinheiten'];
+	
+	$feinheit = $arUnit[0];
+	
+	if (is_numeric($this->view['data']['feinheit'])) {
+		
+		// Bis 01/2020 war der Index gespeichert
+		$feinheit_index = intval($this->view['data']['feinheit']);
+		if (isset($arUnit[$feinheit_index])) $feinheit = $arUnit[$feinheit_index];
+		
+	} else if (in_array($this->view['data']['feinheit'], $arUnit)) $feinheit = $this->view['data']['feinheit'];
+			
+	/** @var wpsg_product $oProduct */
+	$oProduct = $this->view['oProduct'];
+	
+	$referenceunit = $oProduct->getMeta('wpsg_mod_fuellmenge_referenceunit');
+	if (!wpsg_isSizedString($referenceunit)) $referenceunit = $feinheit;
+	
+	$referencevalue = $oProduct->getMeta('wpsg_mod_fuellmenge_referencevalue');
+	$conversionvalue = $oProduct->getMeta('wpsg_mod_fuellmenge_conversionvalue');
+	
 ?>
-<div id="wpsg_fuellmenge" class="panel panel-default">
+<div id="wpsg_fuellmenge" class="panel panel-default panel-fuellmenge" style="display:none; position:relative;">
 	<div class="panel-heading clearfix">
 		<h3 class="panel-title">
 			<span><?php echo __('FÃŒllmenge', 'wpsg'); ?> </span>
+
+			<a href="#" data-wpsg-tip="wpsg_mod_fuellmenge_product" rel="?page=wpsg-Admin&subaction=loadHelp&noheader=1&field=wpsg_mod_fuellmenge_product"
+			   class="glyphicon glyphicon glyphicon-question-sign form-control-feedback wpsg_mod_fuellmenge_product-tip" aria-hidden="true"></a>
+			
 		</h3>
 	</div>
 	<div class="panel-body">
-		<?php echo wpsg_drawForm_Input('fmenge', __('FÃŒllmenge', 'wpsg'), wpsg_tf(wpsg_getFloat($this->view['data']['fmenge']))); ?>
-		<?php echo wpsg_drawForm_Select('feinheit', __('Einheit', 'wpsg'), $this->view['data']['arFeinheiten'], wpsg_getStr($this->view['data']['feinheit'])); ?>
+		 
+		<div class="form-group form-group-sm form-select ">
+			<label class="col-sm-6 control-label"><?php echo __('Konfiguration', 'wpsg'); ?></label>
+			<div class="col-sm-6 d-flex align-items_center justify-content_space-between">
+				
+				<input type="text" name="fmenge" value="<?php echo $fmenge; ?>" class="fmenge" />
+				
+				<select name="feinheit" class="unit">
+					<?php foreach ($arUnit as $k => $v) { ?>
+					<option value="<?php echo $v; ?>" <?php echo (($v === $feinheit)?'selected="selected"':''); ?>><?php echo $v; ?></option>
+					<?php } ?>
+				</select>
+				
+			</div>
+			<div class="clearfix wpsg_clear"></div>
+		</div>
+
+		<div class="form-group form-group-sm form-select fmenge_details fmenge_details_1">
+			<label class="col-sm-6 control-label"><?php echo __('Bezugswert', 'wpsg'); ?></label>
+			<div class="col-sm-6 d-flex align-items_center justify-content_space-between">
+
+				<input type="text" name="wpsg_mod_fuellmenge_referencevalue" value="<?php echo $referencevalue; ?>" class="referencevalue fmenge_details fmenge_details_1" />
+
+				<select name="referenceunit" class="unit fmenge_details fmenge_details_1">
+					<?php foreach ($arUnit as $v) { ?>
+						<option value="<?php echo $v; ?>" <?php echo (($v === $referenceunit)?'selected="selected"':''); ?>><?php echo $v; ?></option>
+					<?php } ?>
+				</select>
+				
+				<span class="equal conversion" style="display:none;">â</span>
+
+				<input type="text" name="wpsg_mod_fuellmenge_conversionvalue" value="<?php echo $conversionvalue; ?>" class="conversion conversionvalue" />
+				
+				<span class="unit conversion conversion_unit" style="display:none;"></span>
+				
+			</div>
+		</div>
 		
-	<br /><br />
+		<?php echo wpsg_drawForm_Checkbox('fmenge_details', __('Erweitert', 'wpsg'), $oProduct->getMeta('fmenge_details')); ?>
+		
+		<br /><br />
 	
-	<a href="<?php echo WPSG_URL_WP; ?>wp-admin/admin.php?page=wpsg-Admin&action=module&modul=wpsg_mod_fuellmenge"><span class="wpsg-glyphicon glyphicon glyphicon-wrench"></span><?php echo __('Zur Konfiguration des FÃŒllmengenmoduls', 'wpsg'); ?></a>	
+		<a href="<?php echo WPSG_URL_WP; ?>wp-admin/admin.php?page=wpsg-Admin&action=module&modul=wpsg_mod_fuellmenge"><span class="wpsg-glyphicon glyphicon glyphicon-wrench"></span><?php echo __('Zur Konfiguration des FÃŒllmengenmoduls', 'wpsg'); ?></a>	
 	
 	</div>
 </div>
+
+<style>
+	
+	select.unit { width:75px; margin-left:5px; flex-shrink:0; }
+	span.unit { width:66px; margin-left:5px; flex-shrink:0; }
+	input.fmenge { width:100%; }
+	span.equal { padding:0 5px; }
+	input.referencevalue { width:100%; }
+	input.conversionvalue { width:100%; margin-right:9px; }
+	.wpsg_mod_fuellmenge_product-tip { color:#337ab7 !important; }
+	.wpsg_mod_fuellmenge_product-tip:focus, .wpsg_mod_fuellmenge_product-tip:active, .wpsg_mod_fuellmenge_product-tip:hover { text-decoration:none; }
+	
+</style>
+
+<script>
+	
+	jQuery(document).ready(function() {
+		
+		jQuery('select.unit').on('change', function() {
+			
+			var referenceunit = jQuery('select[name="referenceunit"]').val();
+			var unit = jQuery('select[name="feinheit"]').val();
+					 			
+			if (unit !== referenceunit) {
+
+				jQuery('.conversion').show();	
+				jQuery('.conversion_unit').html(unit);
+				
+			} else {
+
+				jQuery('.conversion').hide();
+				
+			}
+			
+		}).change();
+		
+		jQuery('#fmenge_details').on('change', function() {
+
+			jQuery('.fmenge_details').hide();
+			
+			if (jQuery(this).prop('checked')) {
+				
+				jQuery('.fmenge_details_1').show();
+				
+			} else {
+
+				jQuery('.fmenge_details_1').hide();
+				
+			}
+			
+		}).change();
+	
+		jQuery('#wpsg_fuellmenge').show();
+		
+	})
+	
+</script>
Index: /views/mods/mod_scaleprice/product_bottom.phtml
===================================================================
--- /views/mods/mod_scaleprice/product_bottom.phtml	(revision 7646)
+++ /views/mods/mod_scaleprice/product_bottom.phtml	(revision 7649)
@@ -28,5 +28,5 @@
 				<?php echo __(' kostet das Produkt ', 'wpsg'); ?>
 				<?php echo wpsg_ff($this->view['wpsg_mod_scaleprice']['base'], $this->get_option('wpsg_currency')); ?> <?php // echo $this->get_option('wpsg_mod_scaleprice_unit'); ?>
-				<?php $this->callMod('wpsg_mod_fuellmenge', 'renderPriceInfo', array($this->view['wpsg_mod_scaleprice']['base'], $this->view['data']['fmenge'], $this->view['data']['feinheit'])); ?>			
+				<?php $this->callMod('wpsg_mod_fuellmenge', 'renderPriceInfo', array($this->view['wpsg_mod_scaleprice']['base'], $this->view['data']['fmenge'], $this->view['data']['id'])); ?>			
 			</li>
 			<?php } ?>
@@ -42,5 +42,5 @@
 				<?php echo __(' kostet das Produkt ', 'wpsg'); ?>
 				<?php echo wpsg_ff($scale['value'], $this->get_option('wpsg_currency')); ?> <?php //echo $this->get_option('wpsg_mod_scaleprice_unit'); ?>
-				<?php $this->callMod('wpsg_mod_fuellmenge', 'renderPriceInfo', array($scale['value'], $this->view['data']['fmenge'] , $this->view['data']['feinheit'])); ?>
+				<?php $this->callMod('wpsg_mod_fuellmenge', 'renderPriceInfo', array($scale['value'], $this->view['data']['fmenge'] , $this->view['data']['id'])); ?>
 			</li>
 			<?php } ?>
Index: /views/produkttemplates/standard.phtml
===================================================================
--- /views/produkttemplates/standard.phtml	(revision 7646)
+++ /views/produkttemplates/standard.phtml	(revision 7649)
@@ -11,4 +11,7 @@
 	//$this->noReleatedProducts = true;
 
+	/** @var wpsg_product $oProduct */
+	$oProduct = $this->view['oProduct'];
+	
 ?>
 
@@ -159,5 +162,5 @@
 
 		<div class="wpsg_clear"></div>
-
+ 		
 		<?php /* Lagerbestand START*/?>
 		<?php if ($this->hasMod('wpsg_mod_stock') && $this->get_option('wpsg_mod_stock_showProduct') == '1') { ?>
@@ -181,27 +184,5 @@
 
 		<?php /* FÃŒllmengenanzeige START */ ?>
-		<?php if ($this->hasMod('wpsg_mod_fuellmenge')) { ?>
-		
-			<div class="wpsg_produkt_fuellmenge">
-			
-				<?php if (($this->view['data']['fmenge']) > '0') { ?>
-				
-					<span class="label label_fuellmenge"><?php echo wpsg_translate(__('FÃŒllmenge:', 'wpsg')); ?></span>
-					
-					<?php echo wpsg_translate(__('#1# (#2# / #3#)', 'wpsg'),							
-						'<span class="wpsg_fmenge">'.wpsg_ff($this->view['data']['fmenge'], '', true).'</span> '.$this->view['data']['feinheit'],
-						'<span class="fmenge_preis">'.wpsg_ff($this->view['data']['fmenge_preis'], $this->get_option('wpsg_currency')).'</span> ',
-						wpsg_ff($this->get_option('wpsg_mod_fuellmenge_bezug'), $this->view['data']['feinheit'])
-					); ?>
-					
-				<?php } else { ?>
-				
-					<label><?php echo wpsg_translate(__('', 'wpsg')); ?></label>
-					
-				<?php } ?>
-				
-			</div>
-
-		<?php } ?>
+		<?php echo $this->callMod('wpsg_mod_fuellmenge', 'renderPriceInfo', [$oProduct->getPrice($this->view['data']['product_key']), $this->view['data']['fmenge'], $oProduct->getId()]); ?>
 		<?php /* FÃŒllmengenanzeige ENDE */ ?>
 
Index: /views/produkttemplates/standard2.phtml
===================================================================
--- /views/produkttemplates/standard2.phtml	(revision 7646)
+++ /views/produkttemplates/standard2.phtml	(revision 7649)
@@ -195,29 +195,7 @@
 		<?php } ?>
 		<?php /* Lagerbestand ENDE*/?>
-
+		
 		<?php /* FÃŒllmengenanzeige START */ ?>
-		<?php if ($this->hasMod('wpsg_mod_fuellmenge')) { ?>
-		
-			<div class="wpsg_produkt_fuellmenge">
-			
-				<?php if (($this->view['data']['fmenge']) > '0') { ?>
-				
-					<span class="label label_fuellmenge"><?php echo wpsg_translate(__('FÃŒllmenge:', 'wpsg')); ?></span>
-					
-					<?php echo wpsg_translate(__('#1# (#2# / #3#)', 'wpsg'),							
-						'<span class="wpsg_fmenge">'.wpsg_ff($this->view['data']['fmenge'], '', true).'</span> '.$this->view['data']['feinheit'],
-						'<span class="fmenge_preis">'.wpsg_ff($this->view['data']['fmenge_preis'], $this->get_option('wpsg_currency')).'</span> ',
-						wpsg_ff($this->get_option('wpsg_mod_fuellmenge_bezug'), $this->view['data']['feinheit'])
-					); ?>
-					
-				<?php } else { ?>
-				
-					<label><?php echo wpsg_translate(__('', 'wpsg')); ?></label>
-					
-				<?php } ?>
-				
-			</div>
-
-		<?php } ?>
+		<?php echo $this->callMod('wpsg_mod_fuellmenge', 'renderPriceInfo', [$oProduct->getPrice($this->view['data']['product_key']), $this->view['data']['fmenge'], $oProduct->getId()]); ?>
 		<?php /* FÃŒllmengenanzeige ENDE */ ?>
 
Index: /views/warenkorb/checkout2.phtml
===================================================================
--- /views/warenkorb/checkout2.phtml	(revision 7646)
+++ /views/warenkorb/checkout2.phtml	(revision 7649)
@@ -50,5 +50,5 @@
 		
 		</div>
-						
+						 
 		<?php if ($this->callMods('checkout_handlePayment') === true) { ?>
 				
