Heya,
so, ich glaub ich hab`s auch schon, zumindest das von ADR oben beschriebene Problem der abbrechenden Kunden konnte ich lösen (noch offen : User die das ganze Fenster schließen und auch nicht zurück in den Shop kommen) falls ich nicht was übersehen habe, war`s einfacher als gedacht :
checkout.php aus der Shoprootebene , suche nach :
// Stock Check
$any_out_of_stock = false;
if (STOCK_CHECK == 'true') {
for ($i = 0, $n = sizeof($order->products); $i < $n; $i++) {
if (xtc_check_stock($order->products[$i]['id'], $order->products[$i]['qty']))
$any_out_of_stock = true;
}
// Out of Stock
if ((STOCK_ALLOW_CHECKOUT != 'true') && ($any_out_of_stock == true))
xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART));
}
Dieser sorgt ja dafür, dass der User auf den Warenkorb weitergeleitet wird wenn nicht genug Ware vorrätig ist, diese Überprüfung findet aber statt, BEVOR das sofortueberweisungsmodul nochmal aufgerufen wird und Gelegenheit bekommt seine tmp_order zu löschen (was es ja tut wenn es den Abbruch erkennt wie es in oben von ADR geschilderten Fällen ist).
Verschiebt man jetzt o.g. Block ein paar Zeilen weiter nach unten, läuft die _remove_order funktion aus`m pn_sofortueberweisung-modul wieder durch und das Problem ist gelöst.
o.g. Block muss dafür also nur oben ausgeschnitten, und UNTERHALB dieses blocks eingefügt werden:
$order = new order;
if (!$is_xajax) $payment_block = $checkout->getPaymentBlock($xtPrice, $payment_modules);
$check = explode(';', MODULE_PAYMENT_INSTALLED);
if(sizeof($check) <= 1)
$smarty->assign('ONE_PAYMENT', ' dn');
// Stock Check
$any_out_of_stock = false;
if (STOCK_CHECK == 'true') {
for ($i = 0, $n = sizeof($order->products); $i < $n; $i++) {
if (xtc_check_stock($order->products[$i]['id'], $order->products[$i]['qty']))
$any_out_of_stock = true;
}
// Out of Stock
if ((STOCK_ALLOW_CHECKOUT != 'true') && ($any_out_of_stock == true))
xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART));
}
man müsst` jetzt eigentlich nochmal gucken, was mit den Orders passiert die der Kunde auf der Sofo-Seite verlässt ohne Sie abzuschließen (also keine Rückleitung in den Shop) und was anderes ist mir dabei auch noch aufgefallen : wenn ich 2 Tabs offen habe im Shop (selbe session) und im ersten Tab zu Sofortueberweisung wechsle, wird mir die tmp Order angelegt, wenn ich nun aber mit dem zweiten Tab ebenfalls zur Kasse gehe, wird meine tmp_bestellung in diesem Moment gelöscht, somit könnte es zu Fällen kommen, wo man von sofo Geld erhält aber keinerlei Bestellung im Shop hat. Dieses Verhalten hat aber nichts mit meinem oben genannten Quickfix zu tun sondern besteht aktuell ganz generell ,also in jedem Shop.
Mit besten Grüßen aus Hamburg
Mario Braune