Hierfür relevante Scripte und Funktionen:
basket_b2b_html.php | basket/ | Templatescript, welches die Ausgabe des änderbaren Warenkorbes layoutet. |
ro_basket_b2b_html.php | basket/ | Adäquates Templatescript, welches die Ausgabe des Read-Only-Warenkorbes layoutet. |
basket.php | html/ | Steuerscript, welches die Daten für die Warenkorb-Templates organisiert und dem Template bereitstellt. |
ps_checkout.php | classes/ | Klassen- und Funktionsbibliothek für den Warenkorb |
standard_shipping.php |
classes/
shipping/
|
Eine der Shipping-Module, welches als Standard-Versand-Variante geladen wird. Das Objekt _SHIPPING in ps_checkout.php basiert auf diese hier definierte Objektklasse ($this->_SHIPPING = new $filename()) und seiner wichtigen Funktionen wie z.B. die get_tax_rate()
|
jos_vm_shipping_rate | MySQL | Enthält die Kosten und den MwSt.-Satz für die Versandarten sowie Gebietsangaben und Gewichtsbereiche. |
jos_vm_tax_rate | MySQL | Enthält die konkreten Prozentangaben für die MwSt.-Sätze. |
Fehlerursache 1 - in standard_shipping.php
Dieser Fehler tritt erst auf mit der Version 1.1.4 von VM und war vorher nicht feststellbar.
Grund für den Fehler ist eine falsche IF-Behandlung für $state in der standard_shipping.php. Die Korrektur geht am einfachsten wie folgt: In Zeile ca. 182 f. innerhalb der Funktion get_tax_rate() folgendes ersetzen:
classes/shipping/standard_shipping.php get_tax_rate()
if ($state) {
$q .= " AND tax_state = '" . $state . "'";
}
ersetzen durch:
classes/shipping/standard_shipping.php get_tax_rate()
if( !empty($state)) {
$q .= " AND (tax_state='$state' OR tax_state=' $state ' OR tax_state='-')";
}
Zum einen kommte es mitunter in der DB-Tabelle jos_vm_tax_rate zu unterschiedlichen Einträgen im Feld tax_state. Mal steht dort "-" und mal " - ". Damit funktionierte die ursprüngliche Vergleichsabfrage nicht immer zuverlässig, weshalb beide Varianten in den Query eingebaut wurden.
Zum anderen ist $state im Fall von Dtld. leer, weil es hier keine Staaten wie in Amerika gibt, die unterschiedliche MwSt-Sätzen haben könnten, weshalb dann hier eine Zuordnung notw. wäre. Unsere Bundesländer sind in diesem Fall bedeutungslos, weshalb ein "-" im Feld tax_state stehen sollte. Wenn aber $state leer ist sollte diese Query-Erweiterung gar nicht erst stattfinden, weil sie dann zu 0.00 als Ergebnis führt. Deshalb wurde also !empty() hinzugefügt.
Fehlerursache 2 - in ps_checkout.php
Auch beim Versenden der Order-Mails wird die MwSt nfür Versand nicht eingerechnet. Die Ursache hierfür ist zu suchen im Script ps_checkout.php in der Funktion email_receipt(), denn hier wird die ermittelt $order_shipping_tax gar nicht erst zur $order_tax hinzuaddiert, und somit schon an die Mailtemplates falsch übergeben. Also folgende Zeile ca. 1830 im Else-Zweig:
ersetzen durch:
classes/ps_checkout.php email_receipt()
else { $order_shipping = $db->f("order_shipping"); $order_shipping_tax = $db->f("order_shipping_tax"); $order_tax = $db->f("order_tax"); }
classes/ps_checkout.php email_receipt()
else { $order_shipping = $db->f("order_shipping"); $order_shipping_tax = $db->f("order_shipping_tax"); $order_tax = $db->f("order_tax") + $order_shipping_tax;
}