Dezimale Mengen
Ich habe für Kunde eine Lösung gesucht, welche den Verkauf von Meterware erlaubt. Die Aussage von den Entwicklern, daß hierfür kein Bedarf war und es deshalb nie in die Version 3.04 integriert wurde, kann ich nicht verstehen wenn ich all die Anfragen im Web sehe.
Hier die Lösung:1) Datenbank vorbereiten für dezimale Daten
Mit phpMyAdmin oder einem anderen Tool, dieses SQL script ausführen
ALTER TABLE orders_products MODIFY products_quantity decimal(4,2) NOT NULL default '0.00';
2) XTC mag keine Punkte und Komma’s in der Mengeneingabe
Die Eingaben in Mengen-Feldern werden in der Datei xtc_remove_non_numeric.inc.php im /inc Verzeichnis aufbereitet. Alles was keine Zahl ist wird entfernt. Hier müssen wir eine kleine Änderung machen. Die Funktion sollte dann wie folgt aussehen:
function xtc_remove_non_numeric($var)
{
$var = str_replace(',', '.', $var);
$var=ereg_replace('[^0-9.]','',$var);
return $var;
}
In Zeile 4 habe ich hinter ^0-9 einen Punkt gesetzt, was die Eingabe von Dezimalwerten erlaubt.
Zeile 3 wurde komplett neu eingefügt. Diese erlaubt die Eingabe eines Kommas und wandelt diesen in einen Punkt um.
3) Mengen werde zusammengerechnet
Wenn ich Artikel A mit 1,5m und noch einen Artikel A mit 2m bestelle, habe ich Artikel A mit 3,5m im Warenkorb. Das ist für manche Branchen nicht geeignet. Hier müssen wir XTC etwas manipulieren. Wir erzeugen automatisch ein Pseudo Attribut, welches jeden Artikel einzeln in den Warenkorb einfügen läßt. Hierzu müssen wir die Datei xtc_get_uprid.inc.php im /inc Verzeichnis verändern. Am Ende der Datei vor return $uprid folgendes einfügen:
if(!strpos($uprid, '{999}'))
$uprid = $uprid . '{999}' . time(); Dadurch wird dem Artikel (Attribute oder nicht) einmalig ein Pseudo Attribut zugewiesen mit der ID 999 und einem Wert der eine Zahl aus der Time Funktion ist. Somit laufen wir nicht in Gefahr die Nummer doppelt zu vergeben. Jeder Artikel wird dann extra aufgelistet.
4) Länge der Eingabefelder
Nun müssen wir nur noch die Länge der Eingabefelder anpassen. Hierzu die Datei product_info.php im Verzeichnis /includes/module öffnen und nach “products_qty” suchen.
$info_smarty->assign('ADD_QTY', xtc_draw_input_field('products_qty', '1', 'size="3"').' '.xtc_draw_hidden_field('products_id', $product->data['products_id']));Der Wert size sollte dann verändert werden. z.B. 5 (Je nach Bedarf)
Ich hoffe diese Informationen haben weitergeholfen.
Wenn jemand nach der für mich ultimativen xtc Version sucht, schaut hier mal rein: xtcModified





Hallo Stephan, kannst Du mir sagen wo ich die Zeile
$_POST['products_qty'] = str_replace(‘,’, ‘.’, $_POST['products_qty']);
einfügen muss bzw. wie die Datei heißt?
Danke Peter
hallo Tom,
ja kein Thema wollte es nur mitteilen.
die xtc Version 304 SP2.1 habe ich geflegt und viele
Fehler beseitigt. Ebenso alle Patches aufgenommen.
Somit hat die originale Version eben den Vorteil original zu sein,
Kunden können Fremdmodule dann besser installieren. Hatte jetzt
sogar eine Firma, die gestreikt haben bei einem meiner Kundenshops,
der auf der modified basierte (den hatte er woanders erworben),
ihr Template zu installieren.
Wir waren da deshalb einen anderen Weg gegangen.
Im Prinzip ist das auch schon eine kleine “modified” Version :-)
Gruß Stephan
hab den Fehler gefunden (trifft aber auf die 304 SP2.1 zu, die sich an dieser Stelle anscheinend etwas von der modified unterscheidet, denn sonst wäre der Fehler unvermeidbar) .
Da fehlte noch ein $_POST['products_qty'] = str_replace(‘,’, ‘.’, $_POST['products_qty']);
in den Warenkorb Aktionen.
Gruß Stephan
Hi Stephan, sorry fuer die spaete Antwort, aber der Zeitunterschied….
Ja, ich sollte erwaehnen, dass alle Aenderungen eigendlich fuer xtc-Modified ausgelegt sind. Das originale xtc habe ich auf Grund der vielen Fehler bereits in die Tonne geworfen.
da scheint es aber einen netten Bug zu geben….
Mal versucht 3,7 + 4,7 Mengen eines Artikels zusammen in den Warenkorb zu legen ?
Dann berechnet das System einen Preis im tausender Bereich…
Echt suspekt….