WBCE Home | WBCE Hilfe | WBCE Addon Repository | Impressum | Datenschutz

WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 27.09.2018 07:26:39

florian
Projektmanagement und Support WBCE CMS

Bakery "vergisst" Bestellungen

Ziemlich großes Problem: Bisweilen kommt es wohl vor, dass bei Bestellungen die Bestätigungsseite nach - vermeintlich - erfolgreichem Abschluss der Bestellung angezeigt wird, jedoch keine Mails an den Besteller oder den Shopbetreiber versendet werden und vor allem sich der Vorgang auch nicht in der Datenbank wiederfinden lässt.
Dennoch werden Bestellvorgangsnummer (order_id) und Rechnungsnummer weiter hochgezählt, aber eben bei der order_id mit Lücke dazwischen.

Mir ist es bislang nicht gelungen, das Problem nachzustellen bzw. hervorzurufen,  ich habe nur von einer Kundin entsprechende Problembeschreibungen erhalten und sehe dort in der Datenbank das o.g. Erscheinungsbild.

Meine Vermutung ist, dass es irgendwie mit dem Mechanismus in der view.php zusammenhängt, der dafür sorgen soll, dass nicht abgeschlossene Bestellungen nach einer Stunde gelöscht werden.

if (empty($_SESSION['bakery']['order_id'])) {
		$now = time();
		$database->query("INSERT INTO ".TABLE_PREFIX."mod_bakery_customer (order_date) VALUES ('$now')");
		$order_id = $database->get_one("SELECT LAST_INSERT_ID()");
		$_SESSION['bakery']['order_id'] = $order_id;

		// Delete db records of not submitted orders older than 1 hour
		$outdate = $now - (60 * 60 * 1);
		$query_outdated_orders = $database->query("SELECT order_id FROM ".TABLE_PREFIX."mod_bakery_customer WHERE order_date < $outdate AND submitted = 'no'");
		if ($query_outdated_orders->numRows() > 0) {
			while ($outdated_orders = $query_outdated_orders->fetchRow()) {
				$outdated_order_id = stripslashes($outdated_orders['order_id']);

				// First put not sold items back to stock...
				$query_order = $database->query("SELECT item_id, quantity FROM ".TABLE_PREFIX."mod_bakery_order WHERE order_id = '$outdated_order_id'");
				if ($query_order->numRows() > 0) {
					while ($order = $query_order->fetchRow()) {
						$item_id  = stripslashes($order['item_id']);
						$quantity = stripslashes($order['quantity']);
						// Query item stock
						$query_items = $database->query("SELECT stock FROM ".TABLE_PREFIX."mod_bakery_items WHERE item_id = '$item_id'");
						$item = $query_items->fetchRow();
						$stock = stripslashes($item['stock']);
						// Only use stock admin if stock is not blank
						if (is_numeric($stock) && !empty($stock)) {
							// Update stock to required quantity
							$database->query("UPDATE ".TABLE_PREFIX."mod_bakery_items SET stock = stock + '$quantity' WHERE item_id = '$item_id'");
						}
					}
				}
				
				// ...then delete not submitted orders
				$database->query("DELETE FROM ".TABLE_PREFIX."mod_bakery_customer WHERE order_id = '$outdated_order_id' AND submitted = 'no'");
				$database->query("DELETE FROM ".TABLE_PREFIX."mod_bakery_order WHERE order_id = '$outdated_order_id'");
			}
		}			
	}

Die Seite liegt bei 1&1, WBCE 1.3.2, PHP 7.0.32, Bakery 1.84.
Als Zahlungsmethode ist nur "Rechnung" aktiviert (also kein externer Dienst wie Paypal usw).

Auf der besagten Seite habe ich den oben geposteten Code erst einmal auskommentiert, optimal ist das aber natürlich auch nicht, zumal ich (noch) nicht weiß, ob dann dieses Problem tatsächlich nicht mehr auftritt.

Hat jemand möglicherweise schon mal ähnliches beobachtet oder eine Idee, wodurch das Problem verursacht wird und wie man es lösen könnte?

Ggf. Rückmeldungen auch per PM oder per Mail an info@meerwinck.com, falls hier jemand aus welchen Gründen auch immer nicht öffentlich in Erscheinung treten will.
Aufwand für lösungsorientierte Anpassungen am Code würden ggf. vergütet.

Last edited by florian (27.09.2018 07:32:41)

Online

Liked by:

ice

Board footer

Powered by FluxBB

up