Wird das Gesamtgewicht einer Bestellung in der Datenbank gespeichert? Ich finde ums Verr... nix! Wäre für den Export zu IntraShip von großem Nutzen.
Nein, wird nicht gespeichert... Aber Du kannst ja die bestellten Artikel auslesen und aus dem Artikelstammsatz dann das Gewicht ermitteln...
Hallo, wir benötigen auch das Gesamtgewicht der Bestellung. Habt ihr das schon igerndwie hinbekommen oder gibt es einen anderen Trick?
Das Gesamtgewicht der Bestellung soll in der SQL Tabelle stehen. Wir haben uns das OscWare Modul für Adressenexport von Gambio an Intraship gekauft. Jetzt wird aber kein Gewicht übernommen, da es allem Anschein nach ja auch nirgends gespeichert wird :/
Das ist nicht vorhanden, mit der Klassenüberladung kann man so etwas aber recht einfach und updatesicher lösen.... Folgenden SQL-Befehl auf die DB anwenden: PHP: ALTER TABLE `orders` ADD `orders_weight` FLOAT( 11.4 ) NOT NULL DEFAULT '0'; (`orders_weight` muss evtl. ein anderer Name werden, den Oscware braucht.) Folgenden Code als "user_classes\overloads\order\pt_weight_order.php" speichern: PHP: <?php/* -----------------------------------------------------------------------------------------$Id: pt_weight_order.php, 2013/01/18 Avenger $Copyright (c) 2013 Avenger, entwicklung@powertemplate.de Subclass "order" class, in order to add weight to order data,-----------------------------------------------------------------------------------------*/class pt_weight_order extends pt_weight_order_parent { function __construct($order_id = '') { parent::__construct($order_id); if ($order_id) { $cart=$_SESSION['cart']; if (sizeof($cart->contents)>0) { //If cart available, then check if the order has already a weight set. $sql=" SELECT orders_weight FROM ".TABLE_ORDERS." WHERE orders_id=".$order_id; $res=xtc_db_query($sql); $res=xtc_db_fetch_array($res); $weight=$res['orders_weight']; if (!$weight) { $weight=$cart->show_weight(); $sql=" UPDATE ".TABLE_ORDERS." SET orders_weight=".$weight." WHERE orders_id=".$order_id; $res=xtc_db_query($sql); } } } }}?> Was dieser Code macht, ist, dass er beim Öffnen einer gespeicherten "order" ($order_id <>'') und einem vorhandenen Warenkorb, das Warenkorbgewicht in der "order" speichert. Und da in der "send_order.php" die gespeicherte Order wieder aktiviert wird, können wir uns da einklinken... Cache löschen nicht vergessen!
Eine kleine Verbesserung noch: Da die "orders"-Klasse auch an anderen Stellen mit gesetztem "$orders_id" aufgerufen wird, wird die Behandlung auf den Fall begrenzt, dass sie im Kontext des "checkout_process.php"-Programms aufgerufen wird. Das geschieht mit PHP: if (basename($_SERVER['PHP_SELF'])==FILENAME_CHECKOUT_PROCESS) PHP: <?php/* -----------------------------------------------------------------------------------------$Id: pt_weight_order.php, 2013/01/18 Avenger $Copyright (c) 2013 Avenger, entwicklung@powertemplate.de Subclass "order" class, in order to add weight to order data,-----------------------------------------------------------------------------------------*/class pt_weight_order extends pt_weight_order_parent { function __construct($order_id = '') { parent::__construct($order_id); if ($order_id) { if (basename($_SERVER['PHP_SELF'])==FILENAME_CHECKOUT_PROCESS) { $cart=$_SESSION['cart']; if (sizeof($cart->contents)>0) { //If cart available, then check if the order has already a weight set. $sql=" SELECT orders_weight FROM ".TABLE_ORDERS." WHERE orders_id=".$order_id; $res=xtc_db_query($sql); $res=xtc_db_fetch_array($res); $weight=$res['orders_weight']; if (!$weight) { $weight=$cart->show_weight(); $sql=" UPDATE ".TABLE_ORDERS." SET orders_weight=".$weight." WHERE orders_id=".$order_id; $res=xtc_db_query($sql); } } } } }}?>
Hi Avenger, ich hab die Erweiterung soeben rausschmeissen müssen. Kein Kunde kam mehr am Button "KASSE" vorbei, kam nur noch eine weisse Seite. Ich werde das mal im Testshop probieren und berichten. Edit: So, meine Dusseligkeit! War ja auch abzusehen. Ich warne davor die Datei versehentlich nur "weight_order.php" zu nennen... Des funzt nicht...
Da jetzt ja dieser Code nur noch in der orders_process.php ausgeführt wird, kann man sich das erste einlesen des "orders_weight" sparen.... PHP: <?php/* -----------------------------------------------------------------------------------------$Id: pt_weight_order.php, 2013/01/21 Avenger $Copyright (c) 2013 Avenger, entwicklung@powertemplate.de Subclass "order" class, in order to add weight to order data,-----------------------------------------------------------------------------------------*/class pt_weight_order extends pt_weight_order_parent { function __construct($order_id = '') { parent::__construct($order_id); if ($order_id) { if (basename($_SERVER['PHP_SELF'])==FILENAME_CHECKOUT_PROCESS) { $cart=$_SESSION['cart']; if (sizeof($cart->contents)>0) { $weight=$cart->show_weight(); $sql=" UPDATE ".TABLE_ORDERS." SET orders_weight=".$weight." WHERE orders_id=".$order_id; $res=xtc_db_query($sql); } } } }}?> Das ist natürlich auch ein guter Platz, um updatesicher auch weitere Daten in die Bestellung einzuschleußen....