ich hab nochwas : gib mal einen ungültigen couponcode ein, also abgelaufen z.b. oder maximale verwendung erreicht usw und versuch dann `n checkout (lässt sich auf dem demoshop nachstellen)
die ot_coupn leitet dich zunächst mal weiter auf die checkout_payment, egal ob 1page checkout oder nicht, zudem bleibt der ungültige code in der session wodurch für den User ein checkout unmöglich wird solange er keinen zweiten, gültigen couponcode hat, da es m.E. noch keine Möglichkeit für den User gibt, den ungültigen Code wieder zu entfernen(!?).
meine Lösung mfür check 1page ja/nein und entfernen der ungültigen cc_id hier :
in includes/modules/order_total/ot_coupon (aus aktuellem v2 powerpack)
function collect_posts() {
global $xtPrice;
if ($_SESSION['cc_id'] != '') {
// INFOS ÜBER KUPON AUSLESEN
$coupon_query = xtc_db_query("select coupon_type, coupon_start_date, coupon_expire_date, coupon_minimum_order, coupon_id, uses_per_user, uses_per_coupon from " . TABLE_COUPONS . " where coupon_id = '" . (int) $_SESSION['cc_id'] . "' and coupon_active = 'Y' limit 1");
$coupon_result = xtc_db_fetch_array($coupon_query);
//total10 Quickfix Redirect-QF: bisher keinerlei Überprüfung auf 1-Pagecheckout vorhanden, ungültige Codes führen den User aktuell immer auf die checkout_payment,
//zudem gibt es für den Kunden keine Möglichkeit mehr, den ungültigen Code zu entfernen , wir löschen daher die $_SESSION['cc_id'] wenn der eingegebene Code ungültig ist, Ausnahme bei Nichterreichen des Mindestbestellwerts.
if (CHECKOUT_AJAX_STAT=='true') {
$t10_checkout_destination = FILENAME_CHECKOUT;
} else {
$t10_checkout_destination = FILENAME_CHECKOUT_PAYMENT;
}
if ($coupon_result['coupon_type'] != 'G') {
// ERROR : LAUFZEIT HAT NOCH NICHT BEGONNEN
if ($coupon_result['coupon_start_date'] > date('Y-m-d H:i:s')) {
unset($_SESSION['cc_id']);
xtc_redirect(xtc_href_link($t10_checkout_destination, 'error_message=' . urlencode(ERROR_INVALID_STARTDATE_COUPON), 'SSL'));
}
// ERROR : LAUFZEIT BEENDET
if ($coupon_result['coupon_expire_date'] < date('Y-m-d H:i:s')) {
unset($_SESSION['cc_id']);
xtc_redirect(xtc_href_link($t10_checkout_destination, 'error_message=' . urlencode(ERROR_INVALID_FINISDATE_COUPON), 'SSL'));
}
// ERROR : MINDESTBESTELLWERT NICHT ERREICHT
if ($coupon_result['coupon_minimum_order'] > $_SESSION['cart']->show_total()) {
xtc_redirect(xtc_href_link($t10_checkout_destination, 'info_message=' . urlencode(ERROR_MINIMUM_ORDER_COUPON_1 . ' ' . $xtPrice->xtcFormat($coupon_result['coupon_minimum_order'], true) . ' ' . ERROR_MINIMUM_ORDER_COUPON_2), 'SSL'));
}
// ERROR : GESAMTES VERWENDUNGSLIMIT ÜBERSCHRITTEN
$coupon_count = xtc_db_query("select coupon_id from " . TABLE_COUPON_REDEEM_TRACK . " where coupon_id = '" . $coupon_result['coupon_id'] . "'");
if (xtc_db_num_rows($coupon_count) >= $coupon_result['uses_per_coupon'] && $coupon_result['uses_per_coupon'] > 0) {
unset($_SESSION['cc_id']);
xtc_redirect(xtc_href_link($t10_checkout_destination, 'error_message=' . urlencode(ERROR_INVALID_USES_COUPON . $coupon_result['uses_per_coupon'] . TIMES), 'SSL'));
}
// ERROR : VERWENDUNGSLIMIT FÜR EINZELNEN KUNDEN ÜBERSCHRITTEN
$coupon_count_customer = xtc_db_query("select coupon_id from " . TABLE_COUPON_REDEEM_TRACK . " where coupon_id = '" . $coupon_result['coupon_id'] . "' and customer_id = '" . (int) $_SESSION['customer_id'] . "'");
if (xtc_db_num_rows($coupon_count_customer) >= $coupon_result['uses_per_user'] && $coupon_result['uses_per_user'] > 0) {
unset($_SESSION['cc_id']);
xtc_redirect(xtc_href_link($t10_checkout_destination, 'error_message=' . urlencode(ERROR_INVALID_USES_USER_COUPON . $coupon_result['uses_per_user'] . TIMES), 'SSL'));
}
}
}
}