Index: /model/wpsg_product.class.php
===================================================================
--- /model/wpsg_product.class.php	(revision 7276)
+++ /model/wpsg_product.class.php	(revision 7277)
@@ -401,8 +401,11 @@
 		 * @param $product_key Produktkey
 		 * @param $taxView Anzuzeigende Steuer
-		 */
-		public function getPrice($product_key = false, $taxView = false) {
+		 * @param int $amount Menge des Produktes im Warenkorb. bei false wird in die Session geschaut
+		 * @param double $weight Gewicht des Produktes im Warenkob, bei false wird anhand der Session ermittelt 
+		 * @param boolean $scalePrice Wenn False, dann wird der Staffelpreis ignoriert
+		 */
+		public function getPrice($product_key = false, $taxView = false, $amount = false, $weight = false, $scalePrice = true) {
  
-			$cache_key = 'price_'.strval($product_key).'_'.strval($taxView);
+			$cache_key = 'price_'.strval($product_key).'_'.strval($taxView).'_'.strval($amount).'_'.strval($weight).'_'.strval($scalePrice);
 			
 			if (!isset($this->_cache[$cache_key])) {
@@ -421,12 +424,16 @@
 				}
 				
-				// Staffelpreis
-				$this->shop->callMod('wpsg_mod_scaleprice','product_getPrice', [&$this, &$price_netto, &$price_brutto, $product_key]);
+				if ($scalePrice) {
+					
+					// Staffelpreis
+					$this->shop->callMod('wpsg_mod_scaleprice','product_getPrice', [&$this, &$price_netto, &$price_brutto, $product_key, $amount, $weight]);
+					
+				}
 				
 				// Varianten 
-				$this->shop->callMod('wpsg_mod_productvariants', 'product_getPrice', [&$this, &$price_netto, &$price_brutto, $product_key]);
+				$this->shop->callMod('wpsg_mod_productvariants', 'product_getPrice', [&$this, &$price_netto, &$price_brutto, $product_key, $amount, $weight]);
 				
 				// Rabatte
-				$this->shop->callMod('wpsg_mod_discount', 'product_getPrice', [&$this, &$price_netto, &$price_brutto, $product_key]);
+				$this->shop->callMod('wpsg_mod_discount', 'product_getPrice', [&$this, &$price_netto, &$price_brutto, $product_key, $amount, $weight]);
 				 
 				if ($taxView === false)
Index: /mods/wpsg_mod_basic.class.php
===================================================================
--- /mods/wpsg_mod_basic.class.php	(revision 7276)
+++ /mods/wpsg_mod_basic.class.php	(revision 7277)
@@ -299,7 +299,9 @@
 		 * @param double $price_netto
 		 * @param double $price_brutto
-		 * @param string $product_key
-		 */
-		public function product_getPrice(&$oProduct, &$price_netto, &$price_brutto, $product_key) { }
+		 * @param string $product_key		 * 
+		 * @param int Menge fÃŒr Staffelpreise wenn false, dann aus der Session
+		 * @param double $weight Gewicht des Produktes im Warenkob, bei false wird anhand der Session ermittelt
+		 */
+		public function product_getPrice(&$oProduct, &$price_netto, &$price_brutto, $product_key, $amount, $weight) { }
 		
 		/**
Index: /mods/wpsg_mod_discount.class.php
===================================================================
--- /mods/wpsg_mod_discount.class.php	(revision 7276)
+++ /mods/wpsg_mod_discount.class.php	(revision 7277)
@@ -307,5 +307,5 @@
 		} // public function loadProduktArray(&$produkt_data)
 		
-		public function product_getPrice(&$oProduct, &$price_netto, &$price_brutto, $product_key) {
+		public function product_getPrice(&$oProduct, &$price_netto, &$price_brutto, $product_key, $amount, $weight) {
 			
 			$arDiscountTypes = $this->getHierarchie();
Index: /mods/wpsg_mod_productvariants.class.php
===================================================================
--- /mods/wpsg_mod_productvariants.class.php	(revision 7276)
+++ /mods/wpsg_mod_productvariants.class.php	(revision 7277)
@@ -906,5 +906,5 @@
         } // public function produkt_ajax()
 		
-		public function product_getPrice(&$oProduct, &$price_netto, &$price_brutto, $product_key) {
+		public function product_getPrice(&$oProduct, &$price_netto, &$price_brutto, $product_key, $amount, $weight) {
 			
 			if ($this->isVariantsProduct($oProduct->id)) {
Index: /mods/wpsg_mod_scaleprice.class.php
===================================================================
--- /mods/wpsg_mod_scaleprice.class.php	(revision 7276)
+++ /mods/wpsg_mod_scaleprice.class.php	(revision 7277)
@@ -221,19 +221,14 @@
 		} // public function admin_presentation_submit()
 		
-		public function product_bottom(&$produkt_id, $template_index) 
+		public function product_bottom(&$produkt_key, $template_index) 
 		{ 
 			
 			if ($this->shop->get_option('wpsg_mod_scaleprice_showProductInfo') != '1') return;
-				
-			$product_data = $this->shop->loadProduktArray($produkt_id);
-	 
-			if ($product_data['wpsg_mod_scaleprice_activ'] != '1') return;
-			 
-			if ($this->shop->getFrontendTaxview() == WPSG_BRUTTO) $product_price = $product_data['preis'];
-			else $product_price = $product_data['preis_netto'];
-			
-			$this->shop->view['wpsg_mod_scaleprice']['base'] = $product_price;
-			
-			$this->shop->view['wpsg_mod_scaleprice']['scale'] = $this->db->fetchAssoc("
+			
+			$oProduct = wpsg_product::getInstance($this->shop->getProduktID($produkt_key));
+						
+			if ($oProduct->wpsg_mod_scaleprice_activ != '1') return;
+									
+			$arScale = $this->db->fetchAssoc("
 				SELECT
 					S.`scale`, S.`value`
@@ -241,78 +236,31 @@
 					`".WPSG_TBL_SCALEPRICE."` AS S
 				WHERE
-					S.`product_id` = '".wpsg_q($produkt_id)."'
+					S.`product_id` = '".wpsg_q($this->shop->getProduktID($produkt_key))."'
 				ORDER BY
 					S.`scale` ASC
 			");
-			
-			foreach ((array)$this->shop->view['wpsg_mod_scaleprice']['scale'] as $k => $v)
-			{
-				
-				$backend_value = $v['value'];
-
-				if ($this->shop->getBackendTaxView() === WPSG_NETTO && $this->shop->getFrontendTaxView() === WPSG_BRUTTO)
-				{
-					
-					$this->shop->view['wpsg_mod_scaleprice']['scale'][$k]['value'] = wpsg_calculatePreis(
-						$backend_value, 
-						WPSG_BRUTTO,
-						$this->shop->getCalcTaxValue($product_data['mwst_key'])
-					);
-					
-				}
-				else if ($this->shop->getBackendTaxView() === WPSG_BRUTTO && $this->shop->getFrontendTaxView() === WPSG_NETTO)
-				{
-					
-					$this->shop->view['wpsg_mod_scaleprice']['scale'][$k]['value'] = wpsg_calculatePreis(
-						$backend_value,
-						WPSG_NETTO,
-						$this->shop->getCalcTaxValue($product_data['mwst_key'])
-					);
-					
-				}
-				
-				// Eventuell rabattierten Staffelpreis berechnen
-				if ($this->shop->hasMod('wpsg_mod_discount'))
-				{
-				
-					$discount_backend_value = $this->shop->callMod('wpsg_mod_discount', 'getDiscountPrice', array($produkt_id, $backend_value));
-					
-					if ($this->shop->getBackendTaxView() === WPSG_NETTO && $this->shop->getFrontendTaxView() === WPSG_BRUTTO)
-					{
-						
-						$this->shop->view['wpsg_mod_scaleprice']['scale'][$k]['value'] = wpsg_calculatePreis(
-							$discount_backend_value, 
-							WPSG_BRUTTO, 
-							$this->shop->getCalcTaxValue($product_data['mwst_key'])
-						);
-						
-					}
-					else if ($this->shop->getBackendTaxView() === WPSG_BRUTTO && $this->shop->getFrontendTaxView() === WPSG_NETTO)
-					{
-						
-						$this->shop->view['wpsg_mod_scaleprice']['scale'][$k]['value'] = wpsg_calculatePreis(
-							$discount_backend_value,
-							WPSG_NETTO,
-							$this->shop->getCalcTaxValue($product_data['mwst_key'])
-						);
-						
-					}
-					else
-					{
-						
-						$this->shop->view['wpsg_mod_scaleprice']['scale'][$k]['value'] = $discount_backend_value;
-						
-					}
-					
-				}
-				
-			}
-			 
-			if (!wpsg_isSizedArray($this->shop->view['wpsg_mod_scaleprice']['scale'])) return;
-			
-			$this->shop->view['wpsg_mod_scaleprice']['typ'] = $product_data['wpsg_mod_scaleprice_typ'];
+						
+			if (!wpsg_isSizedArray($arScale)) return;
+			
+			foreach ($arScale as $k => $v) {
+				
+				if ($oProduct->wpsg_mod_scaleprice_typ === self::TYP_QUANTITY) {
+				
+					$arScale[$k]['value'] = $oProduct->getPrice($produkt_key, $this->shop->getFrontendTaxview(), $v['scale'], false);
+					
+				} else {
+					
+					$arScale[$k]['value'] = $oProduct->getPrice($produkt_key, $this->shop->getFrontendTaxview(), false, $v['scale']);
+					
+				}
+				
+			}
+			
+			$this->shop->view['wpsg_mod_scaleprice']['base'] = $oProduct->getPrice($produkt_key, $this->shop->getFrontendTaxview(),false, false, false);
+			$this->shop->view['wpsg_mod_scaleprice']['scale'] = $arScale;			
+			$this->shop->view['wpsg_mod_scaleprice']['typ'] = $oProduct->wpsg_mod_scaleprice_typ;
 			
 			$this->shop->render(WPSG_PATH_VIEW.'/mods/mod_scaleprice/product_bottom.phtml');
-			
+			  
 		} // public function product_bottom(&$produkt_id, $template_index)
 		
@@ -323,5 +271,5 @@
 		 * @param string ProduktschlÃŒssel
 		 */
-		public function product_getPrice(&$oProduct, &$price_netto, &$price_brutto, $product_key) { 
+		public function product_getPrice(&$oProduct, &$price_netto, &$price_brutto, $product_key, $amount, $weight) { 
 			 
 			if ($product_key === false) $product_key = $oProduct->id;
@@ -331,9 +279,13 @@
 				if ($oProduct->wpsg_mod_scaleprice_typ == wpsg_mod_scaleprice::TYP_QUANTITY) {
 					
-					$amount_basket = 0;
-					
-					// Menge im Warenkorb bestimmen
-					foreach ($_SESSION['wpsg']['basket'] as $product_index => $basket_data) if ($this->shop->getProduktID($basket_data['id']) == $oProduct->id) $amount_basket += $basket_data['menge'];
-					
+					if ($amount === false) {
+					
+						$amount_basket = 0;
+					
+						// Menge im Warenkorb bestimmen
+						foreach ($_SESSION['wpsg']['basket'] as $product_index => $basket_data) if ($this->shop->getProduktID($basket_data['id']) == $oProduct->id) $amount_basket += $basket_data['menge'];
+					
+					} else $amount_basket = $amount;
+						
 					$scale = $amount_basket;
 					
@@ -342,6 +294,22 @@
 					$weight_basket = 0;
 					
-					// Menge im Warenkorb bestimmen
-					foreach ($_SESSION['wpsg']['basket'] as $product_index => $basket_data) if ($this->shop->getProduktID($basket_data['id']) == $oProduct->id) $weight_basket += $basket_data['menge'] * $this->shop->callMod('wpsg_mod_weight', 'getWeight', [$product_key]);
+					if ($weight === false) {
+					
+						// Menge im Warenkorb bestimmen					
+						foreach ($_SESSION['wpsg']['basket'] as $product_index => $basket_data) {
+							
+							if ($this->shop->getProduktID($basket_data['id']) == $oProduct->id) {
+								
+								$weight_basket += $basket_data['menge'] * $this->shop->callMod('wpsg_mod_weight', 'getWeight', [$product_key]);
+								
+							}
+							
+						}
+						
+					} else {
+						
+						$weight_basket += $weight;
+						
+					}
 					 
 					$scale = $weight_basket;
@@ -506,4 +474,2 @@
 		
 	} // class wpsg_mod_scaleprice extends wpsg_mod_basic
-
-?>
Index: /views/produkttemplates/standard.phtml
===================================================================
--- /views/produkttemplates/standard.phtml	(revision 7276)
+++ /views/produkttemplates/standard.phtml	(revision 7277)
@@ -280,6 +280,6 @@
 		</div>
 		<?php /* Varianten ENDE */ ?>
-
-		<?php $this->callMods('product_bottom', array(&$this->view['data']['id'], $this->getTemplateIndex())); ?>
+		
+		<?php $this->callMods('product_bottom', array(&$this->view['data']['product_key'], $this->getTemplateIndex())); ?>
 		
 		<div class="wpsg_product_buttonarea">
