rechtstexte für onlineshop
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Zahlungsoption nach Rechnungsadresse statt Lieferadresse

    siiilke

    • Fördermitglied
    • Beiträge: 142
    Hallo,

    ich habe in einem Shop die Zahlungsoptionen zum Einen nach Kundengruppe, zum anderen über die Zonenauswahl bei den einzelnen Zahlungsoptionen eingestellt.

    Nun richtet sich diese Zonenauswahl aber offensichtlich nach der Lieferadresse, nicht nach der Rechnungsadresse des Kunden.

    Ich möchte, dass die Zahlungsoption nach der Rechnungsadresse gewählt wird. D. h., wenn der Kunde eine Lieferung nach Deutschland bestellt, aber als Rechnungsadresse eine Anschrift im Ausland angibt, sollen nur die für das Ausland erlaubten Zahlungsoptionen angezeigt werden.

    Meine Idee bisher:
    ich ändere den Code in den jeweiligen payment-modulen.

    Find ich aber nicht wirklich optimal.
    Gibt es eine elegantere Art, das zu lösen? Insbesondere eine, die ohne Code-Änderungen auskommt?

    Danke für jeden Hinweis!

    Sonnigen Gruß

    Silke

    Linkback: https://www.modified-shop.org/forum/index.php?topic=33835.0

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Re: Zahlungsoption nach Rechnungsadresse statt Lieferadresse
    Antwort #1 am: 28. Oktober 2015, 18:17:03
    Nach diesem Code aus der /checkout_payment.php
    Code: PHP  [Auswählen]
    if ($order->billing['country']['iso_code_2'] != '' && $order->delivery['country']['iso_code_2'] == '') {
        $_SESSION['delivery_zone'] = $order->billing['country']['iso_code_2'];
    } else {
        $_SESSION['delivery_zone'] = $order->delivery['country']['iso_code_2'];
    }

    und diesem Code aus /includes/classes/payment.php
    Code: PHP  [Auswählen]
    for ($i = 0, $n = sizeof($include_modules); $i < $n; $i++) {
              if (!in_array($include_modules[$i]['class'], $unallowed_modules)) {
                // check if zone is alowed to see module
                if (constant('MODULE_PAYMENT_' . strtoupper(str_replace('.php', '', $include_modules[$i]['file'])) . '_ALLOWED') != '') {
                  $unallowed_zones = explode(',', constant('MODULE_PAYMENT_' . strtoupper(str_replace('.php', '', $include_modules[$i]['file'])) . '_ALLOWED'));
                } else {
                  $unallowed_zones = array();
                }
                if ((isset($_SESSION['delivery_zone']) && in_array($_SESSION['delivery_zone'], $unallowed_zones) == true) || count($unallowed_zones) == 0) {
                  if ($include_modules[$i]['file']!='' && $include_modules[$i]['file']!='no_payment') {

                  include_once(DIR_WS_LANGUAGES . $_SESSION['language'] . '/modules/payment/' . $include_modules[$i]['file']);
                  include_once(DIR_WS_MODULES . 'payment/' . $include_modules[$i]['file']);

                  }
                  if (class_exists($include_modules[$i]['class'])) {
                    $GLOBALS[$include_modules[$i]['class']] = new $include_modules[$i]['class'];
                  }
                }
              }
            }

    zu schließen sollte die Rechnungsadresse berücksichtigt werden,
    insofern $order->billing['country']['iso_code_2'] nicht leer ist, will sagen, eine Rechnungsadresse vorhanden ist.
    Wann die Rechnungsadresse genau leer ist und wann nicht habe ich noch nicht nachvollzogen.
    Ich vermute aber, daß es da einen Haken gibt, nämlich den, daß die Rechnungsadresse nur dann gefüllt ist, oder besser, nur dann von der Versandadresse abweicht, wenn sie auf der checkout_payment.php-Seite explizit geändert (oder aus vorhandenen Adressen ausgewählt) wird.
    Dann ist es aber ja (fast) zu spät weil die Zahlungsmodule bereits geladen sind. Eigentlich müssten nach Rechnungsadress-Änderung und Speichern jedoch nur noch die Zahlungsmodule angezeigt werden die für die Rechnungsadress-Zone erlaubt sind. Kann es gerade nicht testen. Teste du doch mal.

    Gruß,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Re: Zahlungsoption nach Rechnungsadresse statt Lieferadresse
    Antwort #2 am: 28. Oktober 2015, 19:16:14
    *NACHTRAG*
    Also, ich hab's mir mal interessehalber genauer angeschaut.
    Ändere den oben zitierten Code aus der /checkout_payment.php in
    Code: PHP  [Auswählen]
    if ($order->billing['country']['iso_code_2'] != '' && $order->delivery['country']['iso_code_2'] == '') {
        $_SESSION['delivery_zone'] = $order->billing['country']['iso_code_2'];
    } else {
        $_SESSION['delivery_zone'] = $order->billing['country']['iso_code_2']; //changed from $this->delivery
    }

    (Kommentar beachten)
    und nach Rechnungsadress-Änderung, abweichend von der Versandadresse, wird nach Speichern die Rechnungsadresse berücksichtigt und es werden nur noch die für diese Adresse erlaubten Zahlungsmodule angezeigt.

    Gruß,
    noRiddle

    *NACHTRAG 2*
    Wäre eigtl. ein nettes Feature das über's Backend einstellbar zu machen...

    beento

    • Neu im Forum
    • Beiträge: 2
    Re: Zahlungsoption nach Rechnungsadresse statt Lieferadresse
    Antwort #3 am: 11. Februar 2019, 09:51:12
    Hallo,
    die Umstellung der Zahlungsoptionen nach Rechnungsadresse funktioniert. Soweit super.
    Bei der Zusammenfassung werden dann aber die Versandkosten nicht mehr angezeigt. Woran liegt dies? KAnn jemand helfen?

    Zur Zeit Verwendete Shopversion 2.0.0.0

    Viele Grüße
    Henrik

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Re: Zahlungsoption nach Rechnungsadresse statt Lieferadresse
    Antwort #4 am: 11. Februar 2019, 10:12:59
    • Schau mal wie alt das ist...
    • Welche Shop-Version hast du ?
    • Was genau möchtest du machen/erreichen ?
    • $_SESSION['delivery_zone'] wird an mehereren Stellen des Shops definiert und benutzt.
      Das Ganze muß genau analysiert werden und ich bin mir nicht sicher ob mein Vorschlag überhaupt für die damals aktuelle Shop-Version (Okt. 2015) gestimmt hat.

    Gruß,
    noRiddle

    beento

    • Neu im Forum
    • Beiträge: 2
    Re: Zahlungsoption nach Rechnungsadresse statt Lieferadresse
    Antwort #5 am: 11. Februar 2019, 11:34:47
    Hallo,
    erst einmal vielen Dank, dass sich jemand dieses Thema nach  so langer Zeit antut. Das Alter dieses Threads ist mir bewusst. Leider wurde dein *Nachtrag 2* nicht weiter verfolgt obwohl es eigtl. wichtig ist, da nicht jede Zahlungsmethode auch im Ausland funktioniert.

    Hintergrund ist eine Shop-Tiefenprüfung vom Händlerbund und dies ist nun (fast) die letzte Baustelle welche bemängelt wird. Wir verwenden Version 2.0.0 aber kein Standard-Template.

    Die Bezahlarten sollten sich der Rechnungsadresse anpassen da z.B. Giropay aus Austria nicht funktioniert.
    Die Code-Änderung wie im Thread beschrieben tut genau das. Leider sind dann die Versandkosten, auf der Zusammenfassung (checkout_confirmation.php) nicht mehr dabei. Diese müssen natürlich nach wie vor ausgewiesen werden, egal von wo der Kunde bestellt und an welchen Ort die Rechnungsstellung erfolgt.

    Viele Grüße
    Henrik
               
    anything