Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware
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: andere Versandarten ab erreichtem Versandkostenfreibetrag ausblenden?

    FS72

    • Mitglied
    • Beiträge: 133
    Hallo zusammen,

    wie kann ich konfigurieren, dass die übrigen Versandarten nach dem erreichten Versandkostenfreibetrag automatisch ausgeblendet werden?

    Ich meine, ich hab das schon in einem anderen Shop konfiguriert. Bekomme es aber einfach nicht hin.
    Allerdings war das kein 2.0.

    VG Frank

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

    FS72

    • Mitglied
    • Beiträge: 133
    Ich habe versucht nach dieser Anleitung vorzugehen:
    https://www.modified-shop.org/forum/index.php?topic=33658.0

    Code: PHP  [Auswählen]
          if ( $xtPrice->xtcRemoveCurr($_SESSION['cart']->show_total()) > $xtPrice->xtcFormat(MODULE_SHIPPING_FREEAMOUNT_AMOUNT,true,0,true) ) {
            $this->enabled = false;
          }

    Allerdings gibt es mit dem neuen Versandkostenfrei-Modul mehrere Einträge für MODULE_SHIPPING_FREEAMOUNT_AMOUNT
    Ich brauche an der Stelle zB.
    MODULE_SHIPPING_FREEAMOUNT_AMOUNT_1

    Habt ihr evtl. einen Codeschnippsel für mich um den passenden Versandkostenfreibetrag zu holen?

    Danke im Voraus!

    VG Frank

    FS72

    • Mitglied
    • Beiträge: 133
    Hallo zusammen,

    ich habe mir inzwischen eine Lösung erarbeitet.
    Vielleicht kann es einer ebenfalls gebrauchen, bzw. vielleicht könnt Ihr das bei Euch mit testen?

    Bearbeite folgende Datei: /includes/moduls/shipping/deineversandart.php

    Suche:

    Code: PHP  [Auswählen]
    global $order;

    ersetze mit:

    Code: PHP  [Auswählen]
    global $order, $xtPrice;

    Suche:
    Code: PHP  [Auswählen]
    if ($check_flag == false) {
              $this->enabled = false;
            }

    füge danach ein:

    Code: PHP  [Auswählen]
          // Don't show ap module upon reaching freeamount value
          $query_check_countries_key = "select c.configuration_key as 'key' from " . TABLE_CONFIGURATION . " c where c.configuration_key like 'MODULE_SHIPPING_FREEAMOUNT_COUNTRIES_%' AND c.configuration_value like '%" . $order->delivery['country']['iso_code_2'] . "%';";      
          $query_check_countries_key = xtc_db_query($query_check_countries_key);
          if (xtc_db_num_rows($query_check_countries_key) > 0) {
            $tmp_keys = array();
            while ($check_keys = xtc_db_fetch_array($query_check_countries_key)) {
              $tmp_keys[] = "'MODULE_SHIPPING_FREEAMOUNT_AMOUNT_" . substr($check_keys['key'],-1)."'";
            }        
          }

          if (isset($tmp_keys) && count($tmp_keys) > 0) {        
            $tmp_keys = implode(",", $tmp_keys);
            $query_check_amount = "select min(c.configuration_value) as 'value' from " . TABLE_CONFIGURATION . " c where c.configuration_key in (" . $tmp_keys . ")";
            $query_check_amount = xtc_db_query($query_check_amount);
            if (xtc_db_num_rows($query_check_amount) > 0) {
              $check_amount = xtc_db_fetch_array($query_check_amount);
              $check_amount = $check_amount['value'];
            }
          }

          if (isset($check_amount) && $check_amount > 0) {
            if ( $xtPrice->xtcRemoveCurr($_SESSION['cart']->show_total()) > $xtPrice->xtcFormat($check_amount,true,0,true) ) {
              $this->enabled = false;
            }        
          }
          // Don't show ap module upon reaching freeamount value    
     

    VG Frank

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Ohne deinen Code verifiziert zu haben:
    Das hättest du einfacher haben können indem du die (leider noch) zwei Module für "Versandkostenfrei" installierst/aktivierst.
    • Backend => Module => Versandart => freeamount
    • Backend => Zusammenfassung => ot_shipping
      "Versandkostenfrei erlauben" aktivieren und die gleichen Werte eintragen wie bei freeamount

    Gruß,
    noRiddle

    FS72

    • Mitglied
    • Beiträge: 133
    Das neue Freeamount-Modul hat aber die Möglichkeit mehrere Zonen zu definieren, was ich auch nutze.

    VG Frank

    FS72

    • Mitglied
    • Beiträge: 133
    Ich habe zum Test meine Änderungen noch einmal raus genommen und die Einstellungen wie folgt gesetzt.

    • Backend => Module => Versandart => freeamount
    • Backend => Zusammenfassung => ot_shipping
      "Versandkostenfrei erlauben" aktivieren und die gleichen Werte eintragen wie bei freeamount

    In Freeamount habe ich aber 2 Zonen. 1x DE und 1x AT.

    In ot_shipping kann ich aber nur National oder International definieren.

    Und wie ich es mir gedacht habe, der Versandkostenfreibetrag gilt dann eben nicht nur für AT sondern International.

    Oder mache ich doch was falsch?

    VG Frank

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Nein, hast schon Recht. Wenn du die Zonen benötigst geht es nicht wie ich gesagt habe.
    Ich habe dazu in einem Ticket im Bug-Tracker, wo es um Ähnliches geht, noch etwas geschrieben.
    Ich bin der Meinung, daß
    • ein einziges "Versandkostenfrei"-Modul reichen sollte
      und
    • daß man einstellen können muß welche Versandarten bei Erreichen des Grenzwertes für "Versandkostenfrei" noch angezeigt werden sollen (z.B. selfpickup (= Selbstabholung)).
      Für das Beispiel gibt es schon einen Ansatz in der /checkout_shipping.php in der  2.0.2.2:
      defined('SHOW_SELFPICKUP_FREE') or define('SHOW_SELFPICKUP_FREE', 'false'); // default: 'false'

    Gruß,
    noRiddle
    0 Antworten
    1891 Aufrufe
    26. Juli 2010, 14:35:45 von Viol
    18 Antworten
    1675 Aufrufe
    04. November 2022, 09:00:35 von Michael.TB
               
    anything