tt_products Lieferkosten-berechnungs-skript

Berechnungsscript für tt_products

Wer die TYPO3 Extension tt_products schon mal benutzt hat weiss das man die Preise für die Lieferung der Produkte mit einem Script auf seine Bedürfnisse Anpassen kann.

Ins setup der TYPO3 Installation
plugin.tt_products.payment >
plugin.tt_products.payment {
  radio=0
  10.title = Bezahlung mit Rechnung
  20.title = Bezahlung mit Paypal
    
  plugin.tt_products.shipping {
    
    10 {
      title = Bezahlung mit Rechnung
      price =
      TAXincluded=1
      excludePayment=20
      price.type = count
      calculationScript = fileadmin/templates/script/script.php
    }
    
    20 {
      title = Bezahlung mit Paypal
      price =
      TAXincluded=1
      excludePayment=10
      price.type = count      
      calculationScript = fileadmin/templates/script/script.php
    }
  }
}

Die Anforderung in diesem Beispiel:
Egal wie viele Produkte im Warenkorb vorhanden sind es soll nur der höchste Lieferpreis eines Produktes verrechnet werden.

Da man den Lieferpreis pro Produkt angeben kann, und tt_products naturgemäss einfach alle Lieferpreise der Produkte zusammenzählt muss man diese Anforderung das nur der Höchste Lieferpreis verrechnet wird mit eben diesem Script regeln.

Das Script liegt im fileadmin, drum muss man evt noch erlauben das dort Dateien mit der Endung PHP hochgeladen werden dürfen.
Dafür habe ich in der localconf.php folgende Zeilen:

Datei Localconf.php
$TYPO3_CONF_VARS['BE']['fileExtensions']['webspace']['deny'] = 'php3,php4,php5'; //Endung .php weglassen
$TYPO3_CONF_VARS['BE']['fileDenyPattern'] = '';

...und hier noch der Inhalt des Berechnungsscript. Es werden die einzelnen Lieferpreis-Werte aus dem verschachtelten Array gelesen und nach dem grössten verglichen...

Datei script.php
<?php

$calculatedArray=$this->basket->itemArray;
  
$wert="0";
  
foreach($calculatedArray as $key => $values)
                                          {
    foreach($values as $key2 => $values2)   {
     
      foreach($values2 as $key3 => $values3)   {
        
        if(is_array($values3)){
          
          foreach($values3 as $key4 => $values4)               
            if($key4=="shipping"){
              if($wert<$values3[shipping]){
                $wert=$values3[shipping];
              }
            }
          }  
        }    
      }    
    }
  }  
  
$this->basket->calculatedArray['priceTax']['shipping']=$wert;
$this->basket->calculatedArray['priceNoTax']['shipping']=$wert;
  
return;
?> 
War das Ihnen eine Hilfe? ein "LIKE" wäre ein tolles "Dankeschön"