Index: /lib/wpsg_basket.class.php
===================================================================
--- /lib/wpsg_basket.class.php	(revision 7326)
+++ /lib/wpsg_basket.class.php	(revision 7327)
@@ -375,5 +375,5 @@
 					K.`id` = '".wpsg_q($order['k_id'])."'
 			");
-			
+			 
 			$this->arCheckout = array(
 				'firma' => $kunde['firma'],
@@ -401,4 +401,16 @@
 			);
 			
+			if (wpsg_isSizedInt($order['shipping_adress_id'])) {
+				
+				$shipping_adress = $this->db->fetchRow("SELECT * FROM `".WPSG_TBL_ADRESS."` WHERE `id` = '".wpsg_q($order['shipping_adress_id'])."' "); 
+			
+				foreach (['title', 'name', 'vname', 'firma', 'strasse', 'nr', 'plz', 'ort', 'land', 'tel'] as $sk) {
+					
+					$this->arCheckout['shipping_'.$sk] = $shipping_adress[$sk];
+					
+				}
+				
+			}
+			
 			if ($this->shop->hasMod('wpsg_mod_autodebit'))
 			{
@@ -1217,43 +1229,317 @@
 		{
 			
-			if ($this->o_id > 0 && false)
+							
+			$arReturn = array();
+			
+			if (wpsg_isSizedInt($_SESSION['wpsg']['order_id'])) $arReturn['oOrder'] = wpsg_order::getInstance($_SESSION['wpsg']['order_id']);
+			
+			$noMwSt = false;
+			
+			if (isset($this->arCheckout['land'])) {
+			
+				$land = $this->shop->db->fetchRow("SELECT * FROM `".WPSG_TBL_LAND."` WHERE `id` = '".wpsg_q($this->arCheckout['land'])."'");
+			
+				if ($land['mwst'] == '1' || $this->shop->get_option('wpsg_kleinunternehmer') == '1') $noMwSt = true;
+				else if ($land['mwst'] == '2' && wpsg_isSizedString($this->arCheckout['ustidnr'])) $noMwSt = true;
+				else $noMwSt = false;
+				
+			}
+			
+			$arReturn['noMwSt'] = $noMwSt;
+			$arReturn['produkte'] = array();
+			$arReturn['mwst'] = array();
+			$arReturn['sum'] = array(
+				'preis' => 0,
+				'preis_netto' => 0,
+				'preis_brutto' => 0,
+				'preis_gesamt_brutto' => 0,
+				'preis_gesamt_netto' => 0,
+				'preis_payment' => 0,
+				'preis_shipping' => 0,
+				'preis_shipping_netto' => 0,
+				'preis_shipping_brutto' => 0,
+				'preis_rabatt' => 0
+			);
+			
+			// Hier sammel ich die Produktpreise
+			$arProductPrice = array(
+				WPSG_NETTO => array(),
+				WPSG_BRUTTO => array()
+			);
+			
+			foreach ($this->arProdukte as $product_index => &$b)
+			{
+				
+				$produkt_id = $this->shop->getProduktID($b['id']);
+				
+				wpsg_addSet($arReturn['menge'], $b['menge']);
+				
+				$country = $this->shop->getDefaultCountry();
+				
+				if (is_numeric($produkt_id))
+				{
+					
+					// Preis wird berechnet daher entfernen
+					unset($b['preis']);
+					unset($b['preis_netto']);
+					unset($b['preis_brutto']);
+					unset($b['mwst_key']); // Key muss auch gelÃ¶scht werden, damit die loadProduktArray den Preis korrekt ermittelt (Sonst funktioniert es beim 2. Mal nicht)
+					
+					// in $b sind eventuell auch Moduldaten drin (Produktvariablen)
+					$this->shop->country = $land['id'];
+					$b = $this->shop->loadProduktArray($produkt_id, $b, true);
+					//$this->shop->country = 0;
+					
+					if (wpsg_isSizedInt($b['euleistungsortregel']))
+					{
+						
+						$this->shop->showEULayer = true;
+						$country = $this->shop->getFrontendCountry();
+						
+					}
+					
+					if ($backend === true)
+					{
+						$country = wpsg_country::getInstance($this->arCheckout['land']);
+					}
+					
+					$b['productkey'] = $b['id'];
+					
+				}
+				
+				$this->shop->callMods('basket_toArray', array(&$b, $backend, $noMwSt));
+				$this->checkMwSt($b['mwst_key'], $country, $arReturn);
+				
+				if ($noMwSt)
+				{
+					
+					// Damit erreiche ich, dass 0% angezeigt wird, wenn keine MwSt. berechnet wird
+					$this->arProdukte[$product_index]['mwst_key'] = false;
+					
+					$price_product_netto = $b['preis_netto'];
+					$price_product_brutto = $b['preis_netto'];
+					
+				}
+				else
+				{
+					
+					$price_product_netto = $b['preis_netto'];
+					$price_product_brutto = $b['preis_brutto'];
+					
+				}
+				
+				// Hier wird entschieden ob der gerundete oder der genaue Wert zum Gesamtpreis hinzuaddiert wird
+				if ($this->shop->addRoundedValues === true)
+				{
+					
+					$b['preis_netto'] = round($price_product_netto, 2);
+					$b['preis_brutto'] = round($price_product_brutto, 2);
+					
+				}
+				else
+				{
+					
+					$b['preis_netto'] = $price_product_netto;
+					$b['preis_brutto'] = $price_product_brutto;
+					
+				}
+				
+				$price_sum_netto = $b['preis_netto'] * $b['menge'];
+				$price_sum_brutto = $b['preis_brutto'] * $b['menge'];
+				
+				if ($this->shop->getFrontendTaxView() == WPSG_NETTO) $b['preis'] = round($b['preis_netto'], 2);
+				else $b['preis'] = round($b['preis_brutto'], 2);
+				
+				$arProductPrice[WPSG_NETTO][$b['mwst_key'].'_'.$country->id][] = $price_sum_netto;
+				$arProductPrice[WPSG_BRUTTO][$b['mwst_key'].'_'.$country->id][] = $price_sum_brutto;
+				
+				$b['product_index'] = $product_index;
+				$arReturn['produkte'][$product_index] = $b;
+				
+			} // foreach Produkte
+							
+			// Die Basis der Preisberechnung, wenn Brutto, dann wird Netto berechnet
+			if ($this->shop->getFrontendTaxview() == WPSG_NETTO)
+			{
+				
+				$base = WPSG_NETTO;
+				$calc = WPSG_BRUTTO;
+				
+			}
+			else
+			{
+				
+				$base = WPSG_BRUTTO;
+				$calc = WPSG_NETTO;
+				
+			}
+			
+			// Jetzt die jeweilige Steuer berechnen, damit die Anzeige stimmt
+			foreach ($arProductPrice[$base] as $tax_key_lang => $tax)
+			{
+				
+				$arTaxKey = explode('_', $tax_key_lang);
+				$country_id = $arTaxKey[1];
+				$country_id = $this->arCheckout['land'];
+				$country = wpsg_country::getInstance($country_id);
+				$tax_key = $arTaxKey[0];
+				
+				if ($noMwSt === true) $tax_value = 0; else $tax_value = $country->getTax($tax_key);
+				
+				$sum_tax_value = round(wpsg_calculateSteuer(array_sum($tax), $base, $tax_value), 2);
+				
+				wpsg_addSet($arReturn['sum']['mwst'], $sum_tax_value);
+				
+				if ($calc === WPSG_NETTO)
+				{
+					
+					$sum_netto = round(wpsg_calculatePreis(array_sum($tax), WPSG_NETTO, $tax_value), 2);
+					$sum_brutto = array_sum($tax);
+					
+				}
+				else
+				{
+					
+					$sum_netto = array_sum($tax);
+					$sum_brutto = round(wpsg_calculatePreis(array_sum($tax), WPSG_BRUTTO, $tax_value), 2);
+					
+					// Rundungsfehler abfangen
+					if (abs($price_sum_brutto - $sum_brutto) < 0.02) $sum_brutto = $price_sum_brutto;
+					
+				}
+				
+				wpsg_addSet($arReturn['sum']['preis_netto'], $sum_netto);
+				wpsg_addSet($arReturn['sum']['preis_gesamt_netto'], $sum_netto);
+				wpsg_addSet($arReturn['sum']['preis_brutto'], $sum_brutto);
+				wpsg_addSet($arReturn['sum']['preis_gesamt_brutto'], $sum_brutto);
+				
+				if (!$noMwSt)
+				{
+					/*
+					if ((isset($this->arOrder['price_frontend'])) && ($this->arOrder['price_frontend'] == WPSG_BRUTTO))
+					{
+						wpsg_addSet($arReturn['mwst'][$tax_key_lang]['sum'], $sum_tax_value);
+						wpsg_addSet($arReturn['mwst'][$tax_key_lang]['base_value'], $sum_brutto);
+
+					}
+					else if ((isset($this->arOrder['price_frontend'])) && ($this->arOrder['price_frontend'] == WPSG_NETTO))
+					{
+						wpsg_addSet($arReturn['mwst'][$tax_key_lang]['sum'], $sum_tax_value);
+						wpsg_addSet($arReturn['mwst'][$tax_key_lang]['base_value'], $sum_netto);
+
+					}
+					else */
+					{
+						wpsg_addSet($arReturn['mwst'][$tax_key_lang]['sum'], $sum_tax_value);
+						wpsg_addSet($arReturn['mwst'][$tax_key_lang]['base_value'], $sum_brutto);
+						
+					}
+					
+				}
+				
+			}
+			
+			if ($base === WPSG_NETTO)
+			{
+				
+				wpsg_addSet($arReturn['sum']['preis'], $arReturn['sum']['preis_netto']);
+				wpsg_addSet($arReturn['sum']['preis_gesamt'], $arReturn['sum']['preis_gesamt_netto']);
+				
+			}
+			else
+			{
+				
+				wpsg_addSet($arReturn['sum']['preis'], $arReturn['sum']['preis_brutto']);
+				wpsg_addSet($arReturn['sum']['preis_gesamt'], $arReturn['sum']['preis_gesamt_brutto']);
+				
+			}
+			
+			if ($backend)
+			{
+				$arReturn['backend'] = $backend;
+				$arReturn['price_frontend'] = $this->arOrder['price_frontend'];
+				$arReturn['order_rabatt'] = $this->arOrder['price_rabatt'];
+				$arReturn['gs_value'] = $this->arOrder['price_gs'];
+				
+			}
+			
+			// Gutschein einberechnen
+			$this->shop->callMod('wpsg_mod_gutschein', 'basket_toArray_gs', array(&$this, &$arReturn));
+			
+			// Staffelrabatt
+			$this->shop->callMod('wpsg_mod_discount', 'basket_toArray_discount', array(&$this, &$arReturn));
+			
+			// Kundendaten einfÃŒgen
+			$arReturn['checkout'] = $this->arCheckout;
+						
+			$this->shop->callMods('basket_toArray_preshippayment', array(&$this, &$arReturn));
+			
+			// Die Versandkosten fÃŒr den Warenkorb berechnen
+			// Dies darf im checkout2 nicht passieren, oder wenn der Parameter auf true
+			//			if (false && $this->o_id > 0)
+			if ($this->o_id > 0)
 			{
 				
 				$order_data = $this->shop->cache->loadOrder($this->o_id);
-				$custom_data = @unserialize($order_data['custom_data']);
-				
-				if (is_array($custom_data['basket']))
-				{
-					
-					$arBasket = $custom_data['basket'];
-					
-					// Ich vereinige die Checkoutdaten mit den Kundendaten aus der Datenbank
-					// Damit sind hier die aktuellen Werte aus der Datenbank enthalten
-					$arBasket['checkout'] = wpsg_array_merge($arBasket['checkout'], $this->shop->cache->loadKunden($arBasket['checkout']['k_id']));
-					
-					// FÃŒr das Backend eventuell Preise drehen
-					if ($backend === true)
-					{
-						
-						if ($this->shop->get_option('wpsg_preisangaben') == WPSG_NETTO)
+				$price_shipping = $order_data['price_shipping'];
+				$price_payment = $order_data['price_payment'];
+				$arReturn['sum']['preis_payment_brutto'] = $order_data['price_payment_brutto'];
+				$arReturn['sum']['preis_payment_netto'] = $order_data['price_payment_netto'];
+				$arReturn['sum']['preis_shipping_brutto'] = $order_data['price_shipping_brutto'];
+				$arReturn['sum']['preis_shipping_netto'] = $order_data['price_shipping_netto'];
+				
+				/*
+
+				if ($this->shop->getFrontendTaxview() == WPSG_BRUTTO)
+				{
+
+					$arReturn['sum']['preis_payment_brutto'] = $price_payment;
+					$arReturn['sum']['preis_payment_netto'] = wpsg_calculatePreis($price_payment, WPSG_NETTO, $order_data['mwst_payment']);
+
+					$arReturn['sum']['preis_shipping_brutto'] = $price_shipping;
+					$arReturn['sum']['preis_shipping_netto'] = wpsg_calculatePreis($price_shipping, WPSG_NETTO, $order_data['mwst_shipping']);
+
+				}
+				else
+				{
+
+					$arReturn['sum']['preis_payment_netto'] = $price_payment;
+					$arReturn['sum']['preis_payment_brutto'] = wpsg_calculatePreis($price_payment, WPSG_BRUTTO, $order_data['mwst_payment']);
+
+					$arReturn['sum']['preis_shipping_netto'] = $price_shipping;
+					$arReturn['sum']['preis_shipping_brutto'] = wpsg_calculatePreis($price_shipping, WPSG_BRUTTO, $order_data['mwst_shipping']);
+
+				}
+				*/
+			}
+			else
+			{
+				
+				// Bin mir nicht sicher warum die Versandkosten/Zahlungskosten im Checkout nicht berechnet wurde
+				// Aufgrund von PayPal (PayPal Plus) brauch ich sie aber
+				//if (!isset($_REQUEST['wpsg_checkout2']) && !$clearVK)
+				{
+					
+					if ($backend) $arReturn['backend'] = true;
+					else $arReturn['backend'] = false;
+					
+					if (!$backend)
+					{
+						
+						/*
+						 * PrÃŒfen ob die gesetzte Zahlungsart auch in den VerfÃŒgbaren ist
+						 * Ist fÃŒr die Auswahl der LÃ€nder, Zahlungsarten und Versandarten im Warenkorb nÃ¶tig geworden
+						 */
+						if (wpsg_isSizedInt($arReturn['checkout']['shipping']) && !@array_key_exists($arReturn['checkout']['shipping'], $this->shop->arShipping))
 						{
 							
-							if (isset($arBasket['sum']['preis_payment_netto'])) $arBasket['sum']['preis_payment'] = $arBasket['sum']['preis_payment_netto'];
-							if (isset($arBasket['sum']['preis_shipping_netto'])) $arBasket['sum']['preis_shipping'] = $arBasket['sum']['preis_shipping_netto'];
-							if (isset($arBasket['sum']['gs_netto'])) $arBasket['sum']['gs'] = $arBasket['sum']['gs_netto'];
-							if (isset($arBasket['sum']['preis_rabatt_netto'])) $arBasket['sum']['preis_rabatt'] = $arBasket['sum']['preis_rabatt_netto'];
-							if (isset($arBasket['sum']['preis_netto'])) $arBasket['sum']['preis'] = $arBasket['sum']['preis_netto'];
-							if (isset($arBasket['sum']['preis_gesamt_netto'])) $arBasket['sum']['preis_gesamt'] = $arBasket['sum']['preis_gesamt_netto'];
+							unset($arReturn['checkout']['shipping']);
 							
 						}
-						else
+						
+						if (wpsg_isSizedInt($arReturn['checkout']['payment']) && !array_key_exists($arReturn['checkout']['payment'], $this->shop->arPayment))
 						{
 							
-							if (isset($arBasket['sum']['preis_payment_brutto'])) $arBasket['sum']['preis_payment'] = $arBasket['sum']['preis_payment_brutto'];
-							if (isset($arBasket['sum']['preis_shipping_brutto'])) $arBasket['sum']['preis_shipping'] = $arBasket['sum']['preis_shipping_brutto'];
-							if (isset($arBasket['sum']['gs_brutto'])) $arBasket['sum']['gs'] = $arBasket['sum']['gs_brutto'];
-							if (isset($arBasket['sum']['preis_rabatt_brutto'])) $arBasket['sum']['preis_rabatt'] = $arBasket['sum']['preis_rabatt_brutto'];
-							if (isset($arBasket['sum']['preis_brutto'])) $arBasket['sum']['preis'] = $arBasket['sum']['preis_brutto'];
-							if (isset($arBasket['sum']['preis_gesamt_brutto'])) $arBasket['sum']['preis_gesamt'] = $arBasket['sum']['preis_gesamt_brutto'];
+							unset($arReturn['checkout']['payment']);
 							
 						}
@@ -1261,401 +1547,47 @@
 					}
 					
-					$arBasket['oOrder'] = wpsg_order::getInstance($this->o_id);
-					
-					return $arBasket;
-					
-				}
-				
-			} else {
-				
-				$arReturn = array();
-				
-				if (wpsg_isSizedInt($_SESSION['wpsg']['order_id'])) $arReturn['oOrder'] = wpsg_order::getInstance($_SESSION['wpsg']['order_id']);
-				
-				$noMwSt = false;
-				
-				if (isset($this->arCheckout['land'])) {
-				
-					$land = $this->shop->db->fetchRow("SELECT * FROM `".WPSG_TBL_LAND."` WHERE `id` = '".wpsg_q($this->arCheckout['land'])."'");
-				
-					if ($land['mwst'] == '1' || $this->shop->get_option('wpsg_kleinunternehmer') == '1') $noMwSt = true;
-					else if ($land['mwst'] == '2' && wpsg_isSizedString($this->arCheckout['ustidnr'])) $noMwSt = true;
-					else $noMwSt = false;
-					
-				}
-				
-				$arReturn['noMwSt'] = $noMwSt;
-				$arReturn['produkte'] = array();
-				$arReturn['mwst'] = array();
-				$arReturn['sum'] = array(
-					'preis' => 0,
-					'preis_netto' => 0,
-					'preis_brutto' => 0,
-					'preis_gesamt_brutto' => 0,
-					'preis_gesamt_netto' => 0,
-					'preis_payment' => 0,
-					'preis_shipping' => 0,
-					'preis_shipping_netto' => 0,
-					'preis_shipping_brutto' => 0,
-					'preis_rabatt' => 0
-				);
-				
-				// Hier sammel ich die Produktpreise
-				$arProductPrice = array(
-					WPSG_NETTO => array(),
-					WPSG_BRUTTO => array()
-				);
-				
-				foreach ($this->arProdukte as $product_index => &$b)
-				{
-					
-					$produkt_id = $this->shop->getProduktID($b['id']);
-					
-					wpsg_addSet($arReturn['menge'], $b['menge']);
-					
-					$country = $this->shop->getDefaultCountry();
-					
-					if (is_numeric($produkt_id))
-					{
-						
-						// Preis wird berechnet daher entfernen
-						unset($b['preis']);
-						unset($b['preis_netto']);
-						unset($b['preis_brutto']);
-						unset($b['mwst_key']); // Key muss auch gelÃ¶scht werden, damit die loadProduktArray den Preis korrekt ermittelt (Sonst funktioniert es beim 2. Mal nicht)
-						
-						// in $b sind eventuell auch Moduldaten drin (Produktvariablen)
-						$this->shop->country = $land['id'];
-						$b = $this->shop->loadProduktArray($produkt_id, $b, true);
-						//$this->shop->country = 0;
-						
-						if (wpsg_isSizedInt($b['euleistungsortregel']))
+					// Versandarten kÃ¶nnen gruppiert sein, vorher trennen
+					if (wpsg_isSizedString($arReturn['checkout']['shipping']) && preg_match('/(.*)\-(.*)/', $arReturn['checkout']['shipping']))
+					{
+						
+						$arShipping = explode('-', $arReturn['checkout']['shipping']);
+						
+						// Ich simuliere hier die Berechnung in einem Extra Array, da die Funktion leider so gebaut ist
+						// Sonst ist die Grundlage fÃŒr die Berechnung nicht die Selbe
+						$arBasketPreShipping = $arReturn;
+						
+						foreach ($arShipping as $shipping)
 						{
 							
-							$this->shop->showEULayer = true;
-							$country = $this->shop->getFrontendCountry();
-							
-						}
-						
-						if ($backend === true)
-						{
-							$country = wpsg_country::getInstance($this->arCheckout['land']);
-						}
-						
-						$b['productkey'] = $b['id'];
-						
-					}
-					
-					$this->shop->callMods('basket_toArray', array(&$b, $backend, $noMwSt));
-					$this->checkMwSt($b['mwst_key'], $country, $arReturn);
-					
-					if ($noMwSt)
-					{
-						
-						// Damit erreiche ich, dass 0% angezeigt wird, wenn keine MwSt. berechnet wird
-						$this->arProdukte[$product_index]['mwst_key'] = false;
-						
-						$price_product_netto = $b['preis_netto'];
-						$price_product_brutto = $b['preis_netto'];
-						
-					}
-					else
-					{
-						
-						$price_product_netto = $b['preis_netto'];
-						$price_product_brutto = $b['preis_brutto'];
-						
-					}
-					
-					// Hier wird entschieden ob der gerundete oder der genaue Wert zum Gesamtpreis hinzuaddiert wird
-					if ($this->shop->addRoundedValues === true)
-					{
-						
-						$b['preis_netto'] = round($price_product_netto, 2);
-						$b['preis_brutto'] = round($price_product_brutto, 2);
-						
-					}
-					else
-					{
-						
-						$b['preis_netto'] = $price_product_netto;
-						$b['preis_brutto'] = $price_product_brutto;
-						
-					}
-					
-					$price_sum_netto = $b['preis_netto'] * $b['menge'];
-					$price_sum_brutto = $b['preis_brutto'] * $b['menge'];
-					
-					if ($this->shop->getFrontendTaxView() == WPSG_NETTO) $b['preis'] = round($b['preis_netto'], 2);
-					else $b['preis'] = round($b['preis_brutto'], 2);
-					
-					$arProductPrice[WPSG_NETTO][$b['mwst_key'].'_'.$country->id][] = $price_sum_netto;
-					$arProductPrice[WPSG_BRUTTO][$b['mwst_key'].'_'.$country->id][] = $price_sum_brutto;
-					
-					$b['product_index'] = $product_index;
-					$arReturn['produkte'][$product_index] = $b;
-					
-				} // foreach Produkte
-								
-				// Die Basis der Preisberechnung, wenn Brutto, dann wird Netto berechnet
-				if ($this->shop->getFrontendTaxview() == WPSG_NETTO)
-				{
-					
-					$base = WPSG_NETTO;
-					$calc = WPSG_BRUTTO;
-					
-				}
-				else
-				{
-					
-					$base = WPSG_BRUTTO;
-					$calc = WPSG_NETTO;
-					
-				}
-				
-				// Jetzt die jeweilige Steuer berechnen, damit die Anzeige stimmt
-				foreach ($arProductPrice[$base] as $tax_key_lang => $tax)
-				{
-					
-					$arTaxKey = explode('_', $tax_key_lang);
-					$country_id = $arTaxKey[1];
-					$country_id = $this->arCheckout['land'];
-					$country = wpsg_country::getInstance($country_id);
-					$tax_key = $arTaxKey[0];
-					
-					if ($noMwSt === true) $tax_value = 0; else $tax_value = $country->getTax($tax_key);
-					
-					$sum_tax_value = round(wpsg_calculateSteuer(array_sum($tax), $base, $tax_value), 2);
-					
-					wpsg_addSet($arReturn['sum']['mwst'], $sum_tax_value);
-					
-					if ($calc === WPSG_NETTO)
-					{
-						
-						$sum_netto = round(wpsg_calculatePreis(array_sum($tax), WPSG_NETTO, $tax_value), 2);
-						$sum_brutto = array_sum($tax);
-						
-					}
-					else
-					{
-						
-						$sum_netto = array_sum($tax);
-						$sum_brutto = round(wpsg_calculatePreis(array_sum($tax), WPSG_BRUTTO, $tax_value), 2);
-						
-						// Rundungsfehler abfangen
-						if (abs($price_sum_brutto - $sum_brutto) < 0.02) $sum_brutto = $price_sum_brutto;
-						
-					}
-					
-					wpsg_addSet($arReturn['sum']['preis_netto'], $sum_netto);
-					wpsg_addSet($arReturn['sum']['preis_gesamt_netto'], $sum_netto);
-					wpsg_addSet($arReturn['sum']['preis_brutto'], $sum_brutto);
-					wpsg_addSet($arReturn['sum']['preis_gesamt_brutto'], $sum_brutto);
-					
-					if (!$noMwSt)
-					{
-						/*
-						if ((isset($this->arOrder['price_frontend'])) && ($this->arOrder['price_frontend'] == WPSG_BRUTTO))
-						{
-							wpsg_addSet($arReturn['mwst'][$tax_key_lang]['sum'], $sum_tax_value);
-							wpsg_addSet($arReturn['mwst'][$tax_key_lang]['base_value'], $sum_brutto);
-	
-						}
-						else if ((isset($this->arOrder['price_frontend'])) && ($this->arOrder['price_frontend'] == WPSG_NETTO))
-						{
-							wpsg_addSet($arReturn['mwst'][$tax_key_lang]['sum'], $sum_tax_value);
-							wpsg_addSet($arReturn['mwst'][$tax_key_lang]['base_value'], $sum_netto);
-	
-						}
-						else */
-						{
-							wpsg_addSet($arReturn['mwst'][$tax_key_lang]['sum'], $sum_tax_value);
-							wpsg_addSet($arReturn['mwst'][$tax_key_lang]['base_value'], $sum_brutto);
-							
-						}
-						
-					}
-					
-				}
-				
-				if ($base === WPSG_NETTO)
-				{
-					
-					wpsg_addSet($arReturn['sum']['preis'], $arReturn['sum']['preis_netto']);
-					wpsg_addSet($arReturn['sum']['preis_gesamt'], $arReturn['sum']['preis_gesamt_netto']);
-					
-				}
-				else
-				{
-					
-					wpsg_addSet($arReturn['sum']['preis'], $arReturn['sum']['preis_brutto']);
-					wpsg_addSet($arReturn['sum']['preis_gesamt'], $arReturn['sum']['preis_gesamt_brutto']);
-					
-				}
-				
-				if ($backend)
-				{
-					$arReturn['backend'] = $backend;
-					$arReturn['price_frontend'] = $this->arOrder['price_frontend'];
-					$arReturn['order_rabatt'] = $this->arOrder['price_rabatt'];
-					$arReturn['gs_value'] = $this->arOrder['price_gs'];
-					
-				}
-				
-				// Gutschein einberechnen
-				$this->shop->callMod('wpsg_mod_gutschein', 'basket_toArray_gs', array(&$this, &$arReturn));
-				
-				// Staffelrabatt
-				$this->shop->callMod('wpsg_mod_discount', 'basket_toArray_discount', array(&$this, &$arReturn));
-				
-				// Kundendaten einfÃŒgen
-				$arReturn['checkout'] = $this->arCheckout;
-				
-				$this->shop->callMods('basket_toArray_preshippayment', array(&$this, &$arReturn));
-				
-				// Die Versandkosten fÃŒr den Warenkorb berechnen
-				// Dies darf im checkout2 nicht passieren, oder wenn der Parameter auf true
-				//			if (false && $this->o_id > 0)
-				if ($this->o_id > 0)
-				{
-					
-					$order_data = $this->shop->cache->loadOrder($this->o_id);
-					$price_shipping = $order_data['price_shipping'];
-					$price_payment = $order_data['price_payment'];
-					$arReturn['sum']['preis_payment_brutto'] = $order_data['price_payment_brutto'];
-					$arReturn['sum']['preis_payment_netto'] = $order_data['price_payment_netto'];
-					$arReturn['sum']['preis_shipping_brutto'] = $order_data['price_shipping_brutto'];
-					$arReturn['sum']['preis_shipping_netto'] = $order_data['price_shipping_netto'];
-					
-					/*
-	
-					if ($this->shop->getFrontendTaxview() == WPSG_BRUTTO)
-					{
-	
-						$arReturn['sum']['preis_payment_brutto'] = $price_payment;
-						$arReturn['sum']['preis_payment_netto'] = wpsg_calculatePreis($price_payment, WPSG_NETTO, $order_data['mwst_payment']);
-	
-						$arReturn['sum']['preis_shipping_brutto'] = $price_shipping;
-						$arReturn['sum']['preis_shipping_netto'] = wpsg_calculatePreis($price_shipping, WPSG_NETTO, $order_data['mwst_shipping']);
-	
-					}
-					else
-					{
-	
-						$arReturn['sum']['preis_payment_netto'] = $price_payment;
-						$arReturn['sum']['preis_payment_brutto'] = wpsg_calculatePreis($price_payment, WPSG_BRUTTO, $order_data['mwst_payment']);
-	
-						$arReturn['sum']['preis_shipping_netto'] = $price_shipping;
-						$arReturn['sum']['preis_shipping_brutto'] = wpsg_calculatePreis($price_shipping, WPSG_BRUTTO, $order_data['mwst_shipping']);
-	
-					}
-					*/
-				}
-				else
-				{
-					
-					// Bin mir nicht sicher warum die Versandkosten/Zahlungskosten im Checkout nicht berechnet wurde
-					// Aufgrund von PayPal (PayPal Plus) brauch ich sie aber
-					//if (!isset($_REQUEST['wpsg_checkout2']) && !$clearVK)
-					{
-						
-						if ($backend) $arReturn['backend'] = true;
-						else $arReturn['backend'] = false;
-						
-						if (!$backend)
-						{
-							
-							/*
-							 * PrÃŒfen ob die gesetzte Zahlungsart auch in den VerfÃŒgbaren ist
-							 * Ist fÃŒr die Auswahl der LÃ€nder, Zahlungsarten und Versandarten im Warenkorb nÃ¶tig geworden
-							 */
-							if (wpsg_isSizedInt($arReturn['checkout']['shipping']) && !@array_key_exists($arReturn['checkout']['shipping'], $this->shop->arShipping))
+							$basket_calc = $arBasketPreShipping;
+							
+							$this->shop->callMods('calcShipping', array(&$basket_calc, $shipping));
+							
+							wpsg_addSet($arReturn['sum']['preis_shipping'], $basket_calc['sum']['preis_shipping']);
+							wpsg_addSet($arReturn['sum']['preis_shipping_brutto'], $basket_calc['sum']['preis_shipping_brutto']);
+							wpsg_addSet($arReturn['sum']['preis_shipping_netto'], $basket_calc['sum']['preis_shipping_netto']);
+							
+							wpsg_addSet($arReturn['shipping']['mwst'], $basket_calc['shipping']['mwst']);
+							wpsg_addSet($arReturn['shipping']['preis_shipping_netto'], $basket_calc['shipping']['preis_shipping_netto']);
+							wpsg_addSet($arReturn['shipping']['preis_shipping_brutto'], $basket_calc['shipping']['preis_shipping_brutto']);
+							
+							foreach ($basket_calc['mwst'] as $tax_key => $mwst)
 							{
 								
-								unset($arReturn['checkout']['shipping']);
+								$this->shop->basket->checkMwSt(substr($tax_key, 0, 1), $this->shop->getDefaultCountry(), $arReturn);
 								
-							}
-							
-							if (wpsg_isSizedInt($arReturn['checkout']['payment']) && !array_key_exists($arReturn['checkout']['payment'], $this->shop->arPayment))
-							{
-								
-								unset($arReturn['checkout']['payment']);
-								
-							}
-							
-						}
-						
-						// Versandarten kÃ¶nnen gruppiert sein, vorher trennen
-						if (wpsg_isSizedString($arReturn['checkout']['shipping']) && preg_match('/(.*)\-(.*)/', $arReturn['checkout']['shipping']))
-						{
-							
-							$arShipping = explode('-', $arReturn['checkout']['shipping']);
-							
-							// Ich simuliere hier die Berechnung in einem Extra Array, da die Funktion leider so gebaut ist
-							// Sonst ist die Grundlage fÃŒr die Berechnung nicht die Selbe
-							$arBasketPreShipping = $arReturn;
-							
-							foreach ($arShipping as $shipping)
-							{
-								
-								$basket_calc = $arBasketPreShipping;
-								
-								$this->shop->callMods('calcShipping', array(&$basket_calc, $shipping));
-								
-								wpsg_addSet($arReturn['sum']['preis_shipping'], $basket_calc['sum']['preis_shipping']);
-								wpsg_addSet($arReturn['sum']['preis_shipping_brutto'], $basket_calc['sum']['preis_shipping_brutto']);
-								wpsg_addSet($arReturn['sum']['preis_shipping_netto'], $basket_calc['sum']['preis_shipping_netto']);
-								
-								wpsg_addSet($arReturn['shipping']['mwst'], $basket_calc['shipping']['mwst']);
-								wpsg_addSet($arReturn['shipping']['preis_shipping_netto'], $basket_calc['shipping']['preis_shipping_netto']);
-								wpsg_addSet($arReturn['shipping']['preis_shipping_brutto'], $basket_calc['shipping']['preis_shipping_brutto']);
-								
-								foreach ($basket_calc['mwst'] as $tax_key => $mwst)
+								if (!array_key_exists($tax_key, $arBasketPreShipping['mwst']))
 								{
 									
-									$this->shop->basket->checkMwSt(substr($tax_key, 0, 1), $this->shop->getDefaultCountry(), $arReturn);
-									
-									if (!array_key_exists($tax_key, $arBasketPreShipping['mwst']))
-									{
-										
-										// Satz war vorher noch nicht drin
-										$arReturn['mwst'][$tax_key]['sum'] += $mwst['sum'];
-										$arReturn['mwst'][$tax_key]['base_value'] += $mwst['base_value'];
-										
-									}
-									else
-									{
-										
-										$arReturn['mwst'][$tax_key]['sum'] += ($mwst['sum'] - $arBasketPreShipping['mwst'][$tax_key]['sum']);
-										$arReturn['mwst'][$tax_key]['base_value'] += ($mwst['base_value'] - $arBasketPreShipping['mwst'][$tax_key]['base_value']);
-										
-									}
+									// Satz war vorher noch nicht drin
+									$arReturn['mwst'][$tax_key]['sum'] += $mwst['sum'];
+									$arReturn['mwst'][$tax_key]['base_value'] += $mwst['base_value'];
 									
 								}
-								
-								if (wpsg_isSizedArray($arReturn['shipping']['methods'])) $arReturn['shipping']['methods'][] = $shipping;
-								else $arReturn['shipping']['methods'] = array($shipping);
-								
-							}
-							
-							//wpsg_debug($arReturn);die();
-							
-							// In den Produktdaten sind die fÃŒr das Produkt zulÃ€ssigen Versandarten gespeichert, hier entferne ich noch die die in dieser Bestellung nicht gewÃ€hlt wurden
-							foreach ($arReturn['produkte'] as &$p)
-							{
-								
-								if (wpsg_isSizedString($p['allowedshipping']))
+								else
 								{
 									
-									$arAllowedShipping = explode(',', $p['allowedshipping']);
-									
-									foreach ($arAllowedShipping as $shipping)
-									{
-										
-										if (!in_array($shipping, $arReturn['shipping']['methods'])) unset($arReturn['shipping']['methods'][$shipping]);
-										
-									}
-									
-									$p['order_allowedshipping'] = $arAllowedShipping;
+									$arReturn['mwst'][$tax_key]['sum'] += ($mwst['sum'] - $arBasketPreShipping['mwst'][$tax_key]['sum']);
+									$arReturn['mwst'][$tax_key]['base_value'] += ($mwst['base_value'] - $arBasketPreShipping['mwst'][$tax_key]['base_value']);
 									
 								}
@@ -1663,243 +1595,271 @@
 							}
 							
-							// Anteilig und kein eindeutiger Satz, wenn zusammengesetzte Versandart
-							unset($arReturn['shipping']['mwst']);
-							$arReturn['shipping']['tax_rata'] = true;
+							if (wpsg_isSizedArray($arReturn['shipping']['methods'])) $arReturn['shipping']['methods'][] = $shipping;
+							else $arReturn['shipping']['methods'] = array($shipping);
 							
 						}
-						else
+						
+						//wpsg_debug($arReturn);die();
+						
+						// In den Produktdaten sind die fÃŒr das Produkt zulÃ€ssigen Versandarten gespeichert, hier entferne ich noch die die in dieser Bestellung nicht gewÃ€hlt wurden
+						foreach ($arReturn['produkte'] as &$p)
 						{
 							
-							$this->shop->callMods('calcShipping', array(&$arReturn, $arReturn['checkout']['shipping']));
+							if (wpsg_isSizedString($p['allowedshipping']))
+							{
+								
+								$arAllowedShipping = explode(',', $p['allowedshipping']);
+								
+								foreach ($arAllowedShipping as $shipping)
+								{
+									
+									if (!in_array($shipping, $arReturn['shipping']['methods'])) unset($arReturn['shipping']['methods'][$shipping]);
+									
+								}
+								
+								$p['order_allowedshipping'] = $arAllowedShipping;
+								
+							}
 							
 						}
 						
-						$this->shop->callMods('calcPayment', array(&$arReturn));
-						
-					}
-					
-				}
+						// Anteilig und kein eindeutiger Satz, wenn zusammengesetzte Versandart
+						unset($arReturn['shipping']['mwst']);
+						$arReturn['shipping']['tax_rata'] = true;
+						
+					}
+					else
+					{
+						
+						$this->shop->callMods('calcShipping', array(&$arReturn, $arReturn['checkout']['shipping']));
+						
+					}
+					
+					$this->shop->callMods('calcPayment', array(&$arReturn));
+					
+				}
+				
+			}
+			/*
+			// Zahlungskosten der Summe hinzurechnen
+			if (isset($arReturn['sum']['preis_payment_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_payment_netto'];
+			if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_payment_brutto'];
+
+			// Versandkosten der Summe hinzurechnen
+			if (isset($arReturn['sum']['preis_shipping_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_shipping_netto'];
+			if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_shipping_brutto'];
+			*/
+			if ($backend)
+			{
+				
+				// Preise so anzeigen wie im Backend eingestellt
+				$price_option = $this->shop->get_option('wpsg_preisangaben');
+				foreach ($arReturn['produkte'] as $produkt_key => &$p) {
+					//if ($arReturn['price_frontend'] == WPSG_NETTO)
+					if ($price_option == WPSG_NETTO)
+					{
+						$p['preis'] = $p['preis_netto'];
+					}
+					else
+					{
+						$p['preis'] = $p['preis_brutto'];
+					}
+				}
+				
 				/*
+								// Zahlungskosten der Summe hinzurechnen
+								if (isset($arReturn['sum']['preis_payment_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_payment_netto'];
+								if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_payment_brutto'];
+				
+								// Versandkosten der Summe hinzurechnen
+								if (isset($arReturn['sum']['preis_shipping_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_shipping_netto'];
+								if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_shipping_brutto'];
+				*/
+				//if ($arReturn['price_frontend'] == WPSG_NETTO)
+				if ($price_option == WPSG_NETTO)
+				{
+					$taxp = 0.0;
+					//$taxp = $this->addMwSt($arReturn, $arReturn['sum']['preis_payment_netto']);
+					//$taxs = $this->addMwSt($arReturn, $arReturn['sum']['preis_shipping_netto']);
+					//$taxp = abs($taxp);
+					//$taxs = abs($taxs);
+					
+					$mb = new wpsg_mod_basic;
+					//$t = $this->shop->get_option('wpsg_mod_targo_mwst');	// 0=anteilig, sonst a,b,c,d,e
+					$pricep = $arReturn['sum']['preis_payment_brutto'];
+					$prices = $arReturn['sum']['preis_shipping_brutto'];
+					unset($arReturn['sum']['preis_payment_netto']);
+					unset($arReturn['sum']['preis_payment_brutto']);
+					unset($arReturn['sum']['preis_shipping_netto']);
+					unset($arReturn['sum']['preis_shipping_brutto']);
+					
+					$id = $arReturn['checkout']['payment'];
+					$tax_keyp = $this->shop->arPayment[$id]['mwst'];
+					$mb->setPaymentKosten($arReturn, $pricep, $tax_keyp);
+					$taxp = $arReturn['payment']['mwst'];
+					
+					$id = $arReturn['checkout']['shipping'];
+					$tax_keys = $this->shop->arShipping[$id]['mwst'];
+					$mb->setShippingKosten($arReturn, 'x', $prices, $tax_keys);
+					$taxs = $arReturn['shipping']['mwst'];
+					
+					if ($this->shop->addRoundedValues === true)
+					{
+						
+						$arReturn['sum']['preis_payment_brutto'] = round($arReturn['sum']['preis_payment_brutto'], 2);
+						$arReturn['sum']['preis_payment_netto'] = round($arReturn['sum']['preis_payment_netto'], 2);
+						$arReturn['sum']['preis_shipping_brutto'] = round($arReturn['sum']['preis_shipping_brutto'], 2);
+						$arReturn['sum']['preis_shipping_netto'] = round($arReturn['sum']['preis_shipping_netto'], 2);
+						
+					}
+					else
+					{
+						
+						$arReturn['sum']['preis_payment_brutto'] = $arReturn['sum']['preis_payment_netto'] + $taxp;
+						$arReturn['sum']['preis_payment_netto'] = $arReturn['sum']['preis_payment_netto'];
+						$arReturn['sum']['preis_shipping_brutto'] = $arReturn['sum']['preis_shipping_netto'] + $taxs;
+						$arReturn['sum']['preis_shipping_netto'] = $arReturn['sum']['preis_shipping_netto'];
+						
+					}
+					
+					// Zahlungskosten der Summe hinzurechnen
+					if (isset($arReturn['sum']['preis_payment_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_payment_netto'];
+					if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_payment_brutto'];
+					
+					// Versandkosten der Summe hinzurechnen
+					if (isset($arReturn['sum']['preis_shipping_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_shipping_netto'];
+					if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_shipping_brutto'];
+					
+					foreach ($arReturn['mwst'] as $key => $value) {
+						$arReturn['sum']['preis_gesamt_netto'] += $value['sum'];
+					}
+					$arReturn['sum']['preis'] = $arReturn['sum']['preis_netto'];
+					$arReturn['sum']['preis_gesamt'] = $arReturn['sum']['preis_gesamt_netto'];
+					$arReturn['sum']['preis_payment'] = $arReturn['sum']['preis_payment_netto'];
+					$arReturn['sum']['preis_shipping'] = $arReturn['sum']['preis_shipping_netto'];
+					$arReturn['sum']['preis_rabatt'] = $arReturn['sum']['preis_rabatt_netto'];
+					if (array_key_exists('gs', $arReturn['sum']))
+					{
+						$arReturn['sum']['gs'] = $arReturn['sum']['gs_netto'];
+					}
+					
+				}
+				else	// if ($price_option == WPSG_NETTO)
+				{
+					$taxp = 0;
+					$mb = new wpsg_mod_basic;
+					//$t = $this->shop->get_option('wpsg_mod_targo_mwst');	// 0=anteilig, sonst a,b,c,d,e
+					$pricep = $arReturn['sum']['preis_payment_brutto'];
+					$prices = $arReturn['sum']['preis_shipping_brutto'];
+					unset($arReturn['sum']['preis_payment_netto']);
+					unset($arReturn['sum']['preis_payment_brutto']);
+					unset($arReturn['sum']['preis_shipping_netto']);
+					unset($arReturn['sum']['preis_shipping_brutto']);
+					
+					$id = $arReturn['checkout']['payment'];
+					$tax_keyp = wpsg_getStr($this->shop->arPayment[$id]['mwst']);
+					$mb->setPaymentKosten($arReturn, $pricep, $tax_keyp);
+					$taxp = $arReturn['payment']['mwst'];
+					
+					$id = $arReturn['checkout']['shipping'];
+					$tax_keys = wpsg_getStr($this->shop->arShipping[$id]['mwst']);
+					$mb->setShippingKosten($arReturn, 'x', $prices, $tax_keys);
+					$taxs = $arReturn['shipping']['mwst'];
+					
+					//$taxp = $this->addMwSt($arReturn, $arReturn['sum']['preis_payment_brutto']);
+					//$taxs = $this->addMwSt($arReturn, $arReturn['sum']['preis_shipping_brutto']);
+					//$taxp = abs($taxp);
+					//$taxs = abs($taxs);
+					
+					if ($this->shop->addRoundedValues === true)
+					{
+						
+						$arReturn['sum']['preis_payment_brutto'] = round($arReturn['sum']['preis_payment_brutto'], 2);
+						$arReturn['sum']['preis_payment_netto'] = round($arReturn['sum']['preis_payment_brutto'] - $taxp, 2);
+						$arReturn['sum']['preis_shipping_brutto'] = round($arReturn['sum']['preis_shipping_brutto'], 2);
+						$arReturn['sum']['preis_shipping_netto'] = round($arReturn['sum']['preis_shipping_brutto'] - $taxs, 2);
+						
+					}
+					else
+					{
+						
+						$arReturn['sum']['preis_payment_brutto'] = $arReturn['sum']['preis_payment_netto'];
+						$arReturn['sum']['preis_payment_netto'] = $arReturn['sum']['preis_payment_brutto'] - $taxp;
+						$arReturn['sum']['preis_shipping_brutto'] = $arReturn['sum']['preis_shipping_brutto'];
+						$arReturn['sum']['preis_shipping_netto'] = $arReturn['sum']['preis_shipping_brutto'] - $taxs;
+						
+					}
+					
+					// Zahlungskosten der Summe hinzurechnen
+					if (isset($arReturn['sum']['preis_payment_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_payment_netto'];
+					if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_payment_brutto'];
+					
+					// Versandkosten der Summe hinzurechnen
+					if (isset($arReturn['sum']['preis_shipping_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_shipping_netto'];
+					if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_shipping_brutto'];
+					
+					$arReturn['sum']['preis'] = $arReturn['sum']['preis_brutto'];
+					$arReturn['sum']['preis_gesamt'] = $arReturn['sum']['preis_gesamt_brutto'];
+					$arReturn['sum']['preis_payment'] = $arReturn['sum']['preis_payment_brutto'];
+					$arReturn['sum']['preis_shipping'] = $arReturn['sum']['preis_shipping_brutto'];
+					$arReturn['sum']['preis_rabatt'] = wpsg_getFloat($arReturn['sum']['preis_rabatt_brutto']);
+					if (array_key_exists('gs', $arReturn['sum']))
+					{
+						$arReturn['sum']['gs'] = $arReturn['sum']['gs_brutto'];
+					}
+				}	// else if ($price_option == WPSG_NETTO)
+				
+			}
+			else 	// if ($backend)
+			{
+				
 				// Zahlungskosten der Summe hinzurechnen
 				if (isset($arReturn['sum']['preis_payment_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_payment_netto'];
 				if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_payment_brutto'];
-	
+				
 				// Versandkosten der Summe hinzurechnen
 				if (isset($arReturn['sum']['preis_shipping_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_shipping_netto'];
 				if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_shipping_brutto'];
-				*/
-				if ($backend)
-				{
-					
-					// Preise so anzeigen wie im Backend eingestellt
-					$price_option = $this->shop->get_option('wpsg_preisangaben');
-					foreach ($arReturn['produkte'] as $produkt_key => &$p) {
-						//if ($arReturn['price_frontend'] == WPSG_NETTO)
-						if ($price_option == WPSG_NETTO)
-						{
-							$p['preis'] = $p['preis_netto'];
-						}
-						else
-						{
-							$p['preis'] = $p['preis_brutto'];
-						}
-					}
-					
-					/*
-									// Zahlungskosten der Summe hinzurechnen
-									if (isset($arReturn['sum']['preis_payment_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_payment_netto'];
-									if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_payment_brutto'];
-					
-									// Versandkosten der Summe hinzurechnen
-									if (isset($arReturn['sum']['preis_shipping_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_shipping_netto'];
-									if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_shipping_brutto'];
-					*/
-					//if ($arReturn['price_frontend'] == WPSG_NETTO)
-					if ($price_option == WPSG_NETTO)
-					{
-						$taxp = 0.0;
-						//$taxp = $this->addMwSt($arReturn, $arReturn['sum']['preis_payment_netto']);
-						//$taxs = $this->addMwSt($arReturn, $arReturn['sum']['preis_shipping_netto']);
-						//$taxp = abs($taxp);
-						//$taxs = abs($taxs);
-						
-						$mb = new wpsg_mod_basic;
-						//$t = $this->shop->get_option('wpsg_mod_targo_mwst');	// 0=anteilig, sonst a,b,c,d,e
-						$pricep = $arReturn['sum']['preis_payment_brutto'];
-						$prices = $arReturn['sum']['preis_shipping_brutto'];
-						unset($arReturn['sum']['preis_payment_netto']);
-						unset($arReturn['sum']['preis_payment_brutto']);
-						unset($arReturn['sum']['preis_shipping_netto']);
-						unset($arReturn['sum']['preis_shipping_brutto']);
-						
-						$id = $arReturn['checkout']['payment'];
-						$tax_keyp = $this->shop->arPayment[$id]['mwst'];
-						$mb->setPaymentKosten($arReturn, $pricep, $tax_keyp);
-						$taxp = $arReturn['payment']['mwst'];
-						
-						$id = $arReturn['checkout']['shipping'];
-						$tax_keys = $this->shop->arShipping[$id]['mwst'];
-						$mb->setShippingKosten($arReturn, 'x', $prices, $tax_keys);
-						$taxs = $arReturn['shipping']['mwst'];
-						
-						if ($this->shop->addRoundedValues === true)
-						{
-							
-							$arReturn['sum']['preis_payment_brutto'] = round($arReturn['sum']['preis_payment_brutto'], 2);
-							$arReturn['sum']['preis_payment_netto'] = round($arReturn['sum']['preis_payment_netto'], 2);
-							$arReturn['sum']['preis_shipping_brutto'] = round($arReturn['sum']['preis_shipping_brutto'], 2);
-							$arReturn['sum']['preis_shipping_netto'] = round($arReturn['sum']['preis_shipping_netto'], 2);
-							
-						}
-						else
-						{
-							
-							$arReturn['sum']['preis_payment_brutto'] = $arReturn['sum']['preis_payment_netto'] + $taxp;
-							$arReturn['sum']['preis_payment_netto'] = $arReturn['sum']['preis_payment_netto'];
-							$arReturn['sum']['preis_shipping_brutto'] = $arReturn['sum']['preis_shipping_netto'] + $taxs;
-							$arReturn['sum']['preis_shipping_netto'] = $arReturn['sum']['preis_shipping_netto'];
-							
-						}
-						
-						// Zahlungskosten der Summe hinzurechnen
-						if (isset($arReturn['sum']['preis_payment_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_payment_netto'];
-						if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_payment_brutto'];
-						
-						// Versandkosten der Summe hinzurechnen
-						if (isset($arReturn['sum']['preis_shipping_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_shipping_netto'];
-						if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_shipping_brutto'];
-						
-						foreach ($arReturn['mwst'] as $key => $value) {
-							$arReturn['sum']['preis_gesamt_netto'] += $value['sum'];
-						}
-						$arReturn['sum']['preis'] = $arReturn['sum']['preis_netto'];
-						$arReturn['sum']['preis_gesamt'] = $arReturn['sum']['preis_gesamt_netto'];
-						$arReturn['sum']['preis_payment'] = $arReturn['sum']['preis_payment_netto'];
-						$arReturn['sum']['preis_shipping'] = $arReturn['sum']['preis_shipping_netto'];
-						$arReturn['sum']['preis_rabatt'] = $arReturn['sum']['preis_rabatt_netto'];
-						if (array_key_exists('gs', $arReturn['sum']))
-						{
-							$arReturn['sum']['gs'] = $arReturn['sum']['gs_netto'];
-						}
-						
-					}
-					else	// if ($price_option == WPSG_NETTO)
-					{
-						$taxp = 0;
-						$mb = new wpsg_mod_basic;
-						//$t = $this->shop->get_option('wpsg_mod_targo_mwst');	// 0=anteilig, sonst a,b,c,d,e
-						$pricep = $arReturn['sum']['preis_payment_brutto'];
-						$prices = $arReturn['sum']['preis_shipping_brutto'];
-						unset($arReturn['sum']['preis_payment_netto']);
-						unset($arReturn['sum']['preis_payment_brutto']);
-						unset($arReturn['sum']['preis_shipping_netto']);
-						unset($arReturn['sum']['preis_shipping_brutto']);
-						
-						$id = $arReturn['checkout']['payment'];
-						$tax_keyp = wpsg_getStr($this->shop->arPayment[$id]['mwst']);
-						$mb->setPaymentKosten($arReturn, $pricep, $tax_keyp);
-						$taxp = $arReturn['payment']['mwst'];
-						
-						$id = $arReturn['checkout']['shipping'];
-						$tax_keys = wpsg_getStr($this->shop->arShipping[$id]['mwst']);
-						$mb->setShippingKosten($arReturn, 'x', $prices, $tax_keys);
-						$taxs = $arReturn['shipping']['mwst'];
-						
-						//$taxp = $this->addMwSt($arReturn, $arReturn['sum']['preis_payment_brutto']);
-						//$taxs = $this->addMwSt($arReturn, $arReturn['sum']['preis_shipping_brutto']);
-						//$taxp = abs($taxp);
-						//$taxs = abs($taxs);
-						
-						if ($this->shop->addRoundedValues === true)
-						{
-							
-							$arReturn['sum']['preis_payment_brutto'] = round($arReturn['sum']['preis_payment_brutto'], 2);
-							$arReturn['sum']['preis_payment_netto'] = round($arReturn['sum']['preis_payment_brutto'] - $taxp, 2);
-							$arReturn['sum']['preis_shipping_brutto'] = round($arReturn['sum']['preis_shipping_brutto'], 2);
-							$arReturn['sum']['preis_shipping_netto'] = round($arReturn['sum']['preis_shipping_brutto'] - $taxs, 2);
-							
-						}
-						else
-						{
-							
-							$arReturn['sum']['preis_payment_brutto'] = $arReturn['sum']['preis_payment_netto'];
-							$arReturn['sum']['preis_payment_netto'] = $arReturn['sum']['preis_payment_brutto'] - $taxp;
-							$arReturn['sum']['preis_shipping_brutto'] = $arReturn['sum']['preis_shipping_brutto'];
-							$arReturn['sum']['preis_shipping_netto'] = $arReturn['sum']['preis_shipping_brutto'] - $taxs;
-							
-						}
-						
-						// Zahlungskosten der Summe hinzurechnen
-						if (isset($arReturn['sum']['preis_payment_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_payment_netto'];
-						if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_payment_brutto'];
-						
-						// Versandkosten der Summe hinzurechnen
-						if (isset($arReturn['sum']['preis_shipping_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_shipping_netto'];
-						if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_shipping_brutto'];
-						
-						$arReturn['sum']['preis'] = $arReturn['sum']['preis_brutto'];
-						$arReturn['sum']['preis_gesamt'] = $arReturn['sum']['preis_gesamt_brutto'];
-						$arReturn['sum']['preis_payment'] = $arReturn['sum']['preis_payment_brutto'];
-						$arReturn['sum']['preis_shipping'] = $arReturn['sum']['preis_shipping_brutto'];
-						$arReturn['sum']['preis_rabatt'] = wpsg_getFloat($arReturn['sum']['preis_rabatt_brutto']);
-						if (array_key_exists('gs', $arReturn['sum']))
-						{
-							$arReturn['sum']['gs'] = $arReturn['sum']['gs_brutto'];
-						}
-					}	// else if ($price_option == WPSG_NETTO)
-					
-				}
-				else 	// if ($backend)
-				{
-					
-					// Zahlungskosten der Summe hinzurechnen
-					if (isset($arReturn['sum']['preis_payment_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_payment_netto'];
-					if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_payment_brutto'];
-					
-					// Versandkosten der Summe hinzurechnen
-					if (isset($arReturn['sum']['preis_shipping_netto'])) $arReturn['sum']['preis_gesamt_netto'] += $arReturn['sum']['preis_shipping_netto'];
-					if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_gesamt_brutto'] += $arReturn['sum']['preis_shipping_brutto'];
-					
-					// Preisangaben fÃŒrs Frontend
-					if ($this->shop->getFrontendTaxview() == WPSG_NETTO)
-					{
-						
-						if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_gesamt'] += $arReturn['sum']['preis_shipping_netto'];
-						if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_gesamt'] += $arReturn['sum']['preis_payment_netto'];
-						
-						if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_shipping'] = $arReturn['sum']['preis_shipping_netto'];
-						if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_payment'] = $arReturn['sum']['preis_payment_netto'];
-						
-					}
-					else
-					{
-						
-						if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_gesamt'] += $arReturn['sum']['preis_shipping_brutto'];
-						if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_gesamt'] += $arReturn['sum']['preis_payment_brutto'];
-						
-						if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_shipping'] = $arReturn['sum']['preis_shipping_brutto'];
-						if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_payment'] = $arReturn['sum']['preis_payment_brutto'];
-						
-					}
-					
-				}	// else if ($backend)
-				
-				// Leere MwSt. SÃ€tze entfernen
-				foreach ((array)$arReturn['mwst'] as $k => $v)
-				{
-					if ($v['sum'] <= 0) unset($arReturn['mwst'][$k]);
-				}
-				
-				// Negative Bestellungen Verhindern
-				if (isset($arReturn['sum']['preis_netto']) && $arReturn['sum']['preis_netto'] < 0) $arReturn['sum']['preis_netto'] = 0;
-				if (isset($arReturn['sum']['preis_brutto']) && $arReturn['sum']['preis_brutto'] < 0) $arReturn['sum']['preis_brutto'] = 0;
-				if (isset($arReturn['sum']['preis']) && $arReturn['sum']['preis'] < 0) $arReturn['sum']['preis'] = 0;
-				if (isset($arReturn['sum']['preis_gesamt_netto']) && $arReturn['sum']['preis_gesamt_netto'] < 0) $arReturn['sum']['preis_gesamt_netto'] = 0;
-				if (isset($arReturn['sum']['preis_gesamt_brutto']) && $arReturn['sum']['preis_gesamt_brutto'] < 0) $arReturn['sum']['preis_gesamt_brutto'] = 0;
-				if (isset($arReturn['sum']['preis_gesamt']) && $arReturn['sum']['preis_gesamt'] < 0) $arReturn['sum']['preis_gesamt'] = 0;
-				
-				$this->shop->callMods('basket_toArray_final', array(&$this, &$arReturn));
-				
-			}
+				
+				// Preisangaben fÃŒrs Frontend
+				if ($this->shop->getFrontendTaxview() == WPSG_NETTO)
+				{
+					
+					if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_gesamt'] += $arReturn['sum']['preis_shipping_netto'];
+					if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_gesamt'] += $arReturn['sum']['preis_payment_netto'];
+					
+					if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_shipping'] = $arReturn['sum']['preis_shipping_netto'];
+					if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_payment'] = $arReturn['sum']['preis_payment_netto'];
+					
+				}
+				else
+				{
+					
+					if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_gesamt'] += $arReturn['sum']['preis_shipping_brutto'];
+					if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_gesamt'] += $arReturn['sum']['preis_payment_brutto'];
+					
+					if (isset($arReturn['sum']['preis_shipping_brutto'])) $arReturn['sum']['preis_shipping'] = $arReturn['sum']['preis_shipping_brutto'];
+					if (isset($arReturn['sum']['preis_payment_brutto'])) $arReturn['sum']['preis_payment'] = $arReturn['sum']['preis_payment_brutto'];
+					
+				}
+				
+			}	// else if ($backend)
+			
+			// Leere MwSt. SÃ€tze entfernen
+			foreach ((array)$arReturn['mwst'] as $k => $v)
+			{
+				if ($v['sum'] <= 0) unset($arReturn['mwst'][$k]);
+			}
+			
+			// Negative Bestellungen Verhindern
+			if (isset($arReturn['sum']['preis_netto']) && $arReturn['sum']['preis_netto'] < 0) $arReturn['sum']['preis_netto'] = 0;
+			if (isset($arReturn['sum']['preis_brutto']) && $arReturn['sum']['preis_brutto'] < 0) $arReturn['sum']['preis_brutto'] = 0;
+			if (isset($arReturn['sum']['preis']) && $arReturn['sum']['preis'] < 0) $arReturn['sum']['preis'] = 0;
+			if (isset($arReturn['sum']['preis_gesamt_netto']) && $arReturn['sum']['preis_gesamt_netto'] < 0) $arReturn['sum']['preis_gesamt_netto'] = 0;
+			if (isset($arReturn['sum']['preis_gesamt_brutto']) && $arReturn['sum']['preis_gesamt_brutto'] < 0) $arReturn['sum']['preis_gesamt_brutto'] = 0;
+			if (isset($arReturn['sum']['preis_gesamt']) && $arReturn['sum']['preis_gesamt'] < 0) $arReturn['sum']['preis_gesamt'] = 0;
+			
+			$this->shop->callMods('basket_toArray_final', array(&$this, &$arReturn));
+		
 			
 			// LÃ€nderdetails laden
