Antwort #3 am: 26. Februar 2020, 10:53:42
Ich habe mich mal an die Idee von @Firebird ran gewagt. Dazu erweiterte ich die Funktion
process() in includes/modules/order_total/
ot_total.php um die Abfrage ob als Versandart selfpickup gewählt wurde.
function process
() { global $order, $xtPrice; if (in_array("selfpickup_selfpickup", $_SESSION['shipping'], true)) { if ($_SESSION['customers_status']['customers_status_show_price_tax'] != 0) { $this->output[] = array('title' => $this->title_fee . ':', 'text' => '<b>' . $xtPrice->xtcFormat(($order->info['total']*1.08375), true) . '</b>', 'value' => $xtPrice->xtcFormat(($order->info['total']*1.08375), false)); } if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) { $this->output[] = array('title' => MODULE_ORDER_TOTAL_TOTAL_TITLE_NO_TAX_BRUTTO
. ':', 'text' => '<b>' . $xtPrice->xtcFormat($order->info['tax'] + ($order->info['total']*1.08375), true) . '</b>', 'value' => $xtPrice->xtcFormat(($order->info['total']*1.08375) + $order->info['tax'], false)); } if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 0) { $this->output[] = array('title' => MODULE_ORDER_TOTAL_TOTAL_TITLE_NO_TAX
. ':', 'text' => '<b>' . $xtPrice->xtcFormat(($order->info['total']*1.08375), true) . '</b>', 'value' => $xtPrice->xtcFormat(($order->info['total']*1.08375), false)); } } else { if ($_SESSION['customers_status']['customers_status_show_price_tax'] != 0) { $this->output[] = array('title' => $this->title . ':', 'text' => '<b>' . $xtPrice->xtcFormat($order->info['total'], true) . '</b>', 'value' => $xtPrice->xtcFormat($order->info['total'], false)); } if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) { $this->output[] = array('title' => MODULE_ORDER_TOTAL_TOTAL_TITLE_NO_TAX_BRUTTO
. ':', 'text' => '<b>' . $xtPrice->xtcFormat($order->info['tax'] + $order->info['total'], true) . '</b>', 'value' => $xtPrice->xtcFormat($order->info['total'] + $order->info['tax'], false)); } if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 0) { $this->output[] = array('title' => MODULE_ORDER_TOTAL_TOTAL_TITLE_NO_TAX
. ':', 'text' => '<b>' . $xtPrice->xtcFormat($order->info['total'], true) . '</b>', 'value' => $xtPrice->xtcFormat($order->info['total'], false)); } }} Die entsprechende Sprachdatei wurde demnach auch um drei weitere Einträge ergänzt: MODULE_NAME
_FEE.
Wenn jetzt jemand per selfpickup bestellt und cash als Zahlungsmethode wählt, funktioniert die Lösung auf den ersten Blick richtig. In der E-Mail und der Shop Statistik wird der Preis entsprechend richtig eingetragen. Allerdings wenn man per PayPal bezahlt, wird der erhöhte Preis nicht an PayPal übergeben.
Wo muss man etwas ändern damit PayPal den neuen Preis richtig übermittelt bekommt?
Edit: Code formatiert