Index: /model/wpsg_product.class.php
===================================================================
--- /model/wpsg_product.class.php	(revision 8423)
+++ /model/wpsg_product.class.php	(revision 8424)
@@ -996,4 +996,60 @@
 		}
 		
+		/**
+		 * Soll beim Speichern und beim kauf der Bestand im Produkt aus dem Variantenbestand berechnet werden?
+		 * @return bool
+		 * @throws Exception
+		 */
+		public function isCalcStockFromVariStock(): bool {
+			
+			$meta_value = $this->getMeta('wpsg_vp_product_stock_nocalc', false, '0');
+			
+			if ($meta_value === '0') {
+			
+				return match($this->shop->get_option('wpsg_vp_product_stock_nocalc')) {
+					'1' => false,
+					default => true
+				};
+				
+			} else {
+				
+				return match($meta_value) {
+					'2' => true,
+					'1' => false,
+					default => throw new \Exception(wpsg_translate(__('UngÃŒltiger META Wert (#1#) bei wpsg_vp_product_stock_nocalc', 'wpsg'), $meta_value))
+				};
+				
+			}
+			
+		}
+		
+		/**
+		 * Soll der Bestand in der Variante beim Kauf reduziert werden
+		 * @return bool
+		 * @throws Exception
+		 */
+		public function isReduceVariStockEnabled(): bool {
+			
+			$meta_value = $this->getMeta('wpsg_vp_product_stock_varinotchange', false, '0');
+			
+			if ($meta_value === '0') {
+			
+				return match($this->shop->get_option('wpsg_vp_product_stock_varinotchange')) {
+					'1' => false,
+					default => true
+				};
+				
+			} else {
+				
+				return match($meta_value) {
+					'2' => true,
+					'1' => false,
+					default => throw new \Exception(wpsg_translate(__('UngÃŒltiger META Wert (#1#) bei wpsg_vp_product_stock_varinotchange', 'wpsg'), $meta_value))
+				};
+				
+			}
+			
+		}
+		
 		/* Statische Funktionen */
 
@@ -1376,5 +1432,5 @@
 
         /**
-         * @param int $product_key
+         * @param string|int $product_key
          * @param bool $noCache
          * @return wpsg_product
Index: /mods/wpsg_mod_productvariants.class.php
===================================================================
--- /mods/wpsg_mod_productvariants.class.php	(revision 8423)
+++ /mods/wpsg_mod_productvariants.class.php	(revision 8424)
@@ -1640,14 +1640,11 @@
 		} // private function setProductVariation($product_id, $field, $value)
 
-		private function setStockFromVariation($product_id) {
+		private function setStockFromVariation(string|int $product_key) {
 			
 			// Die Funktion berechnet den Bestand auch im Backend
-			if ($this->shop->get_option('wpsg_vp_product_stock_nocalc') === '1') return;
-
-			if ($this->isVariantsProductKey($product_id)) {
-				$arr = $this->explodeProductKey($product_id);
-				$product_id = $arr['product_id'];
-			}
-
+			if (!wpsg_product::getInstance($product_key)->isCalcStockFromVariStock()) return;
+
+			$product_id = $this->shop->getProduktID($product_key);
+			
 			$sql = "SELECT SUM(PVI.`stock`) AS SU FROM `".WPSG_TBL_PRODUCTS_VARIATION."` AS PVI
 						LEFT JOIN `".WPSG_TBL_VARIANTS_VARI."` AS VVI ON PVI.`variation_id`= VVI.`id`
@@ -2026,5 +2023,7 @@
 		public function reduceStock($produkt_key, $menge, $reduce = true) {
  
-			if ($this->shop->get_option('wpsg_vp_product_stock_varinotchange') !== '1') {
+			$oProduct = wpsg_product::getInstance($produkt_key);
+			
+			if ($oProduct->isReduceVariStockEnabled()) {
 				
 				$arVar = $this->explodeProductKey($produkt_key);
@@ -2071,5 +2070,7 @@
 			}
 
-			if ($this->shop->get_option('wpsg_vp_product_stock_nocalc') === '1') {
+			$oProduct = wpsg_product::getInstance($produkt_key);
+			
+			if (!$oProduct->isCalcStockFromVariStock()) {
 				
 				// Produktbestand reduzieren
Index: /mods/wpsg_mod_stock.class.php
===================================================================
--- /mods/wpsg_mod_stock.class.php	(revision 8423)
+++ /mods/wpsg_mod_stock.class.php	(revision 8424)
@@ -307,9 +307,10 @@
 		} // public function setOrderStatus($order_id, $status_id, $inform)
 
-		public function basket_updateProduktFromSession(&$product_index, &$stock)
-		{
-
+		public function basket_updateProduktFromSession(&$product_index, &$stock) {
+			
 			$product_key = $_SESSION['wpsg']['basket'][$product_index]['id'];
 
+			$oProduct = wpsg_product::getInstance($product_key);
+			
 			if (!$this->checkBestand($product_key, $stock)) {
 
@@ -320,5 +321,5 @@
 					$stock = $this->getBestand($product_key);
 
-					if ($this->shop->get_option('wpsg_vp_product_stock_varinotchange')) {
+					if (!$oProduct->isReduceVariStockEnabled()) {
 					
 						if ($this->shop->hasMod('wpsg_mod_productvariants')) {
@@ -361,5 +362,8 @@
 			//$ses_amount = max(array($this->getAmountSession($product_key), $this->getAmountSessionById($this->shop->getProduktId($product_key))));
 
+			$oProduct = wpsg_product::getInstance($product_key);
+			
 			if ($this->shop->hasMod('wpsg_mod_productvariants') && $this->shop->callMod('wpsg_mod_productvariants', 'isVariantsProductKey', array($product_key))) {
+				
 				$ses_amount = $this->getAmountSession($product_key);
 
@@ -379,5 +383,5 @@
 					$amount_stock = $this->getBestand($product_key);
 
-					if ($this->shop->get_option('wpsg_vp_product_stock_varinotchange') === '1') {
+					if (!$oProduct->isReduceVariStockEnabled()) {
 					
 						if ($this->shop->hasMod('wpsg_mod_productvariants')) {
@@ -512,4 +516,6 @@
 		public function getBestand($product_key) {
 
+			$oProduct = wpsg_product::getInstance($product_key);
+			
 			$arStock = array();
 
@@ -540,5 +546,6 @@
 			} else if ($this->shop->hasMod('wpsg_mod_productvariants') && $this->shop->callMod('wpsg_mod_productvariants', 'isVariantsProductKey', [$product_key])) {
 				
-				if ($this->shop->get_option('wpsg_vp_product_stock_varinotchange') === '1') {
+				if (!$oProduct->isReduceVariStockEnabled()) {
+				//if ($this->shop->get_option('wpsg_vp_product_stock_varinotchange') === '1') {
 					
 					$product_id = $this->shop->getProduktID($product_key);
@@ -618,8 +625,10 @@
 		 */
 		public function checkBestand($produkt_key, $menge) {
-
+			
 			$product_id = $this->shop->getProduktID($produkt_key);
 			$product_data = $this->shop->cache->loadProduct($product_id);
 
+			$oProduct = wpsg_product::getInstance($product_id);
+			
 			if ($this->shop->hasMod('wpsg_mod_productgroups')) {
 
@@ -647,5 +656,6 @@
 			$product_stock = $this->getBestand($produkt_key);
  
-			if ($this->shop->get_option('wpsg_vp_product_stock_varinotchange') ==='1') {
+			if (!$oProduct->isReduceVariStockEnabled()) {
+			//if ($this->shop->get_option('wpsg_vp_product_stock_varinotchange')) {
 			
 				if ($this->shop->hasMod('wpsg_mod_productvariants')) {
Index: /views/mods/mod_stock/product_addedit_content.phtml
===================================================================
--- /views/mods/mod_stock/product_addedit_content.phtml	(revision 8423)
+++ /views/mods/mod_stock/product_addedit_content.phtml	(revision 8424)
@@ -5,4 +5,7 @@
      */
 
+	/** @var wpsg_product $oProduct */
+	$oProduct = $this->view['oProduct'];
+	
 ?>
 
@@ -26,5 +29,29 @@
     <br />
 
-    <div class="info"><?php echo __('Lagerbestand = Bestand(Variante 1) + Bestand(Variante 2) + Bestand(Variante X)','wpsg'); ?></div>
+	<?php if ($this->hasMod('wpsg_mod_productvariants')) { ?>
+	
+		<?php echo wpsg_drawForm_Select('meta[wpsg_vp_product_stock_nocalc]', __('Produktbestand nach Kauf', 'wpsg'), [
+			'0' => wpsg_translate(
+				__('Voreinstellung (#1#)', 'wpsg'),
+				(($this->get_option('wpsg_vp_product_stock_nocalc') === '1')?'nicht berechnen':'berechnen')
+			),
+			'2' => __('berechnen'),
+			'1' => __('nicht berechnen')
+		], $oProduct->getMeta('wpsg_vp_product_stock_nocalc'), [
+			'hint' => __('Ist hier "berechnen" eingestellt, wird beim Ãndern des Bestandes einer Variante der Bestand im Produkt aus den Varianten ermittelt. (Lagerbestand im Produkt = Bestand(Variante 1) + Bestand(Variante 2) + ... )', 'wpsg')
+		]); ?>
+	
+		<?php echo wpsg_drawForm_Select('meta[wpsg_vp_product_stock_varinotchange]', __('Produktbestand in Varianten nicht verringern', 'wpsg'), [
+			'0' => wpsg_translate(
+				__('Voreinstellung (#1#)', 'wpsg'),
+				(($this->get_option('wpsg_vp_product_stock_varinotchange') === '1')?'nicht verringern':'verringern')
+			),
+			'2' => __('verringern'),
+			'1' => __('nicht verringern')
+		], $oProduct->getMeta('wpsg_vp_product_stock_varinotchange'), [
+			'hint' => __('Ist hier "nicht verringern" aktiviert, so wird der Bestand in der Variante beim Kauf nicht reduziert.', 'wpsg')
+		]); ?>
+	
+	<?php } ?>
 
     <?php /* Mailbenachrichtigung beim Erreichen des Minimalbestandes des Produktes */ ?>
