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: Versandart nur bis zu einem bestimmten Preis.

    Baltazar80

    • Fördermitglied
    • Beiträge: 52
    Versandart nur bis zu einem bestimmten Preis.
    am: 03. März 2014, 00:02:56
    Hallo Leute,

    kann mir einer sagen, wie ich eine Versandart nur bis zu einem bestimmten Preis anbieten kann?

    Um es zu mal deutlicher zu erklären:

    Ich habe ein paar Artikel, die ich anstatt per Paket auch per Brief senden möchte, aber nur bis zu einem Bestellwert in Höhe von 10 Euro. (Zu beachten: nur ein paar Aritkel, nicht alle)
    Also wenn der Bestellwert über 10 Euro ist, soll die Versandart nicht mehr mit angeboten werden.

    Ich habe es vorläufig mit Tabellarische Versandkosten gelöst, aber leider kann ich da nicht angeben, dass es ab 10,- Euro nicht angeboten werden soll, sondern ich habe ab 10,- Euro Versandkosten in Höhe von 4,90 Euro angegeben, genau wie DHL Paket Versandkosten.

    Ich habe Artikelabhängige Versandarten installiert und kann somit jetzt auswählen, bei welchen Artikeln die Tabellarische Versandkosten nicht mit angeboten werden sollen, das klappt soweit.

    Aber wenn jetzt einer ein Artikel kauft bei dem auch Tabellarische Versandkosten mit angeboten wird und die Bestellung über 10 Euro beträgt, werden die Versandkosten trotzdem angezeigt, zwar mit 4,90 Euro, aber dann tauchen zwei Versandarten auf mit dem gleichen Preis.

    - Tabellarische Versandkosten - 4,90 Euro
    - DHL Versand - 4,90 Euro

    Erstens ist das dann doppelt gemoppelt und zweitens, möchte ich nicht, dass die Kunden Tabellarische Versandkosten auswählen können, denn sonst muss ich in der JTL Wawi immer kontrollieren, ob die Tabllarischen Versandkosten jetzt per Briefversand oder per DHL Paketversan sind.

    Ich hoffe Ihr versteht, wie ich das meine, und könnt mir eine Lösung vorschlagen.

    Vielen Dank.



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

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.868
    • Geschlecht:
    Re: Versandart nur bis zu einem bestimmten Preis.
    Antwort #1 am: 03. März 2014, 02:34:48
    Schau dir mal mein Nachnahme-Modul "cod advanced" an.
    Daraus kannst du Analogien schließen und es für deinen Zweck anwenden.

    Gruß,
    noRiddle

    Baltazar80

    • Fördermitglied
    • Beiträge: 52
    Re: Versandart nur bis zu einem bestimmten Preis.
    Antwort #2 am: 04. März 2014, 20:29:13
    Vielen Dank noRiddle,

    das härt sich eigentlich ganz gut an, und ich dene Umbennen Sollte auch kein Problem sein, dass z.B. anstatt Nachnahme, Briefversand dort steht.

    Aber das Modul wird ja erst bei Zahlungsarten angezeigt, gibt es da eine Möglichkeit, das Modul dann bei Versandarten anzeigen zu lassen?

    Danke nochmal.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.868
    • Geschlecht:
    Re: Versandart nur bis zu einem bestimmten Preis.
    Antwort #3 am: 05. März 2014, 01:18:15
    Ach, ich Trollo, cod ist ja ein Zahlungsmodul und nicht ein Versandmodul  :doh:.
    Sorry.
    Dann geht das so nicht, müsste ich mir auch erst anschauen, kannst das jedenfalls in dem entsprechenden /includes/modules/shipping/MODUL.php so code-technisch ändern, daß das macht was du möchtest.

    Gruß,
    noRiddle

    Baltazar80

    • Fördermitglied
    • Beiträge: 52
    Re: Versandart nur bis zu einem bestimmten Preis.
    Antwort #4 am: 06. März 2014, 15:31:11
    Danke nochmal,

    naja so code-technisch habe ich es nicht so drauf, wüsste jetzt nicht was da gändert werden muss, bin eigentlich nur einer der Anleitungen befolgt und code Stellen per copy & paste einfügt.

    Also so ein fertiges Versandmodul gibt es wohl nicht, dass nur eine Versandart bis zu einem bestimmten Betrag erlaubt?

    Baltazar80

    • Fördermitglied
    • Beiträge: 52
    Re: Versandart nur bis zu einem bestimmten Preis.
    Antwort #5 am: 06. März 2014, 19:58:12
    Ich hoffe Ihr könnt mir etwas behilflich sein. Ich habe jetzt mal den Code von dem cod advanced angeschaut und mir mal die entsprechenden Stellen rausgesucht, ich glaube das wären folgende Stellen:

    Code: PHP  [Auswählen]
            function install() {
                xtc_db_query("insert into ".TABLE_CONFIGURATION." ( configuration_key, configuration_value,  configuration_group_id, sort_order, set_function, date_added) values ('MODULE_PAYMENT_COD_STATUS', 'True',  '6', '1', 'xtc_cfg_select_option(array(\'True\', \'False\'), ', now())");
                xtc_db_query("insert into ".TABLE_CONFIGURATION." ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_COD_ALLOWED', '', '6', '0', now())");
                xtc_db_query("insert into ".TABLE_CONFIGURATION." ( configuration_key, configuration_value,  configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_PAYMENT_COD_ZONE', '0', '6', '2', 'xtc_get_zone_class_title', 'xtc_cfg_pull_down_zone_classes(', now())");
                xtc_db_query("insert into ".TABLE_CONFIGURATION." ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_COD_SORT_ORDER', '0',  '6', '0', now())");
                xtc_db_query("insert into ".TABLE_CONFIGURATION." ( configuration_key, configuration_value,  configuration_group_id, sort_order, set_function, use_function, date_added) values ('MODULE_PAYMENT_COD_ORDER_STATUS_ID', '0','6', '0', 'xtc_cfg_pull_down_order_statuses(', 'xtc_get_order_status_name', now())");
                // BOC new to limit sub_total value where cod allowed
                xtc_db_query("insert into ".TABLE_CONFIGURATION." ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_COD_LIMIT_ALLOWED', '', '6', '3', now())");
                // EOC new to limit sub_total value where cod allowed
            }
     

    und:

    Code: PHP  [Auswählen]
     
    function keys() {
            // added new key to limit sub_total value where cod allowed
                return array ('MODULE_PAYMENT_COD_STATUS', 'MODULE_PAYMENT_COD_ALLOWED', 'MODULE_PAYMENT_COD_ZONE', 'MODULE_PAYMENT_COD_ORDER_STATUS_ID', 'MODULE_PAYMENT_COD_SORT_ORDER', 'MODULE_PAYMENT_COD_LIMIT_ALLOWED');
            }
     

    Könnte ich das jetzt bei den tabellerischen Versandkosten wie folgt übernehmen?

    Code: PHP  [Auswählen]
    function install() {
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) VALUES ('MODULE_SHIPPING_TABLE_STATUS', 'True', '6', '0', 'xtc_cfg_select_option(array(\'True\', \'False\'), ', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_TABLE_ALLOWED', '', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_TABLE_COST', '25:8.50,50:5.50,10000:0.00', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_SHIPPING_TABLE_MODE', 'weight', '6', '0', 'xtc_cfg_select_option(array(\'weight\', \'price\'), ', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_TABLE_HANDLING', '0', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_SHIPPING_TABLE_TAX_CLASS', '0', '6', '0', 'xtc_get_tax_class_title', 'xtc_cfg_pull_down_tax_classes(', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_SHIPPING_TABLE_ZONE', '0', '6', '0', 'xtc_get_zone_class_title', 'xtc_cfg_pull_down_zone_classes(', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_TABLE_SORT_ORDER', '0', '6', '0', now())");
              // BOC new to limit sub_total value where table allowed
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHPPING_TABLE_LIMIT_ALLOWED', '', '6', '3', now())");
          // EOC new to limit sub_total value where table allowed
        }
     

    und:

    Code: PHP  [Auswählen]
    function keys() {
          return array('MODULE_SHIPPING_TABLE_STATUS', 'MODULE_SHIPPING_TABLE_COST', 'MODULE_SHIPPING_TABLE_MODE', 'MODULE_SHIPPING_TABLE_HANDLING','MODULE_SHIPPING_TABLE_ALLOWED', 'MODULE_SHIPPING_TABLE_TAX_CLASS', 'MODULE_SHIPPING_TABLE_ZONE', 'MODULE_SHIPPING_TABLE_SORT_ORDER', 'MODULE_SHIPPING_TABLE_LIMIT_ALLOWED');
        }
     

    Also, ich hätte sozusagen folgende Stellen hinzugefügt:

    oben am Code:

    Code: PHP  [Auswählen]
    // BOC new to limit sub_total value where table allowed
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHPPING_TABLE_LIMIT_ALLOWED', '', '6', '3', now())");
          // EOC new to limit sub_total value where table allowed

    und untem am Code:
    Code: PHP  [Auswählen]
    'MODULE_SHIPPING_TABLE_LIMIT_ALLOWED'
     

    Könnte man das so machen, oder ist das total falsch? Kenne mich da leider nicht so sehr aus.
    Am oberen Code weiß ich z.B. gar nicht was das bedeuted '', '6', '3', now())")

    Ich hoffe ihr könnt mir da etwas behilflich sein.
    Danke.

    Baltazar80

    • Fördermitglied
    • Beiträge: 52
    Re: Versandart nur bis zu einem bestimmten Preis.
    Antwort #6 am: 07. März 2014, 01:09:41
    So, ich habe es hinbekommen mit dem flat Versandmodul.
    Ich habe das Modul flat komplett kopiert, zu flat2 umbenannt und ein paar Änderungen von noRiddles cod advanced Modul rauskopiert.

    Ich weiß zwar nicht, ob das jetzt code-technisch alles richtig ist, aber es funktioniert.

    Folgendes habe ich geändert, falls es noch jemand auch so nutzen möchte:

    Datei: includes/modules/shipping/flat2.php

    (flat2.php ist eine Kopie von flat.php wo jedes vorkommende "flat" mit "flat2" ersetzt wurde und jedes "FLAT" durch "FLAT2"):

    Zitat
    Suche:
    Code: PHP  [Auswählen]
    this->enabled = ((MODULE_SHIPPING_FLAT2_STATUS == 'True') ? true : false);

    Und füge danach ein:
    Code: PHP  [Auswählen]
    $this->limit_subtotal = MODULE_SHIPPING_FLAT2_LIMIT_ALLOWED;

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

    Und ersatzte mit:
    Code: PHP  [Auswählen]
    global $xtPrice,$order;
             
              // BOC limit sum where flat2 allowed
            if($this->limit_subtotal && ($xtPrice->xtcRemoveCurr($_SESSION['cart']->show_total()) >= $this->limit_subtotal)) return;
          // EOC limit sum where flat2 allowed
    Zitat
    Suche:
    Code: PHP  [Auswählen]
    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_FLAT2_SORT_ORDER', '0', '6', '0', now())");

    Und füge danach ein:
    Code: PHP  [Auswählen]
    // BOC new to limit sub_total value where flat2 allowed
          xtc_db_query("insert into ".TABLE_CONFIGURATION." ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_FLAT2_LIMIT_ALLOWED', '', '6', '3', now())");
          // EOC new to limit sub_total value where flat2 allowed

    Zitat
    Suche:
    Code: PHP  [Auswählen]
    function keys() {
          return array('MODULE_SHIPPING_FLAT2_STATUS', 'MODULE_SHIPPING_FLAT2_COST','MODULE_SHIPPING_FLAT2_ALLOWED', 'MODULE_SHIPPING_FLAT2_TAX_CLASS', 'MODULE_SHIPPING_FLAT2_ZONE', 'MODULE_SHIPPING_FLAT2_SORT_ORDER');
        }

    Und ersetzte mit:
    Code: PHP  [Auswählen]
    function keys() {
          return array('MODULE_SHIPPING_FLAT2_STATUS', 'MODULE_SHIPPING_FLAT2_COST','MODULE_SHIPPING_FLAT2_ALLOWED', 'MODULE_SHIPPING_FLAT2_TAX_CLASS', 'MODULE_SHIPPING_FLAT2_ZONE', 'MODULE_SHIPPING_FLAT2_SORT_ORDER', 'MODULE_SHIPPING_FLAT2_LIMIT_ALLOWED');
        }

    Das wars, so funktioniert das Modul bei mir und wird nur bis zu dem Betrag angezeigt, welches im Backand eingegeben wurde.

    Dann muss man noch die Sprachdateien anpassen unter:

    lang/german/modules/shipping/flat2.php

    (Diese Datei wurde wieder von flat.php kopiert und jedes Wort "FLAT" wurde mit "FLAT2" ersetzt,
    danach noch folgendes in der Datei unten hinzufügen:

    Code: PHP  [Auswählen]
    //BOC new constant to be able to limit sum where flat 2allowed, noRiddle
    define('MODULE_SHIPPING_FLAT2_LIMIT_ALLOWED_TITLE', 'Ab welchem Betrag soll die Versandart nicht mehr erlaubt werden');
    define('MODULE_SHIPPING_FLAT2_LIMIT_ALLOWED_DESC', '(Es wird mit der Zwischensumme (subtotal) verglichen, welche gerundet wird.<br />Das bedeutet also, da&szlig; der nur reine Warenwert, ohne Versandkosten und evtl. Zuschl&auml;ge ber&uuml;cksichtigt wird.)');
    //EOC new constant to be able to limit sum where flat2 allowed, noRiddle

    Mounty2010

    • Neu im Forum
    • Beiträge: 12
    Re: Versandart nur bis zu einem bestimmten Preis.
    Antwort #7 am: 11. Juli 2022, 00:32:01
    So, ich habe es hinbekommen mit dem flat Versandmodul.
    Hallo Baltazar80,
    ich wollte mich recht herzlich für deine Anleitung und deine Arbeit bedanken.
    Ich habe mir heute aus deiner Anleitung ebenfalls ein Versandmodul gemacht,
    welches nur bis zu einem bestimmten Betrag zur Auswahl steht / angezeigt wird.

    Vielen Dank, du hast mir sehr geholfen !

    Einen Hinweis habe ich noch zu den Änderungen. An einer Stelle schreibst du ...
    Zitat
    Suche:
    Code: PHP  [Auswählen]
    global $order;
     
    Und ersatzte mit:
    Code: PHP  [Auswählen]
    global $xtPrice,$order;
             
              // BOC limit sum where flat2 allowed
            if($this->limit_subtotal && ($xtPrice->xtcRemoveCurr($_SESSION['cart']->show_total()) >= $this->limit_subtotal)) return;
          // EOC limit sum where flat2 allowed
     

    Diese Zeile gibt es 2 mal in dieser Datei. Ich habe dann einfach angenommen, dass du den Code
    strikt von oben nach unten abgearbeitet hast. Da deine vorherigen Änderungen bereits nach dem
    ersten Vorkommen dieser Zeile waren, habe mich für das zweite Vorkommen entschieden.

    Genauer wäre an der Stelle diese Beschreibung, da sie eindeutig die Funktion benennt:
    Zitat
    Suche:
    Code: PHP  [Auswählen]
        function quote($method = '') {
          global $order;
     
    Und ersatzte mit:
    Code: PHP  [Auswählen]
        function quote($method = '') {
          global $xtPrice,$order;
             
              // BOC limit sum where flat2 allowed
            if($this->limit_subtotal && ($xtPrice->xtcRemoveCurr($_SESSION['cart']->show_total()) >= $this->limit_subtotal)) return;
          // EOC limit sum where flat2 allowed
     

    HINWEIS: für die Shop Version 2.0.7.1 muss die erste Änderung so lauten ...

    Zitat
    Suche:
    Code: PHP  [Auswählen]
    $this->enabled = ((defined('MODULE_SHIPPING_FLAT2_STATUS') && MODULE_SHIPPING_FLAT2_STATUS == 'True') ? true : false);
     
    Und füge danach ein:
    Code: PHP  [Auswählen]
    $this->limit_subtotal = MODULE_SHIPPING_FLAT2_LIMIT_ALLOWED;
     

    5 Antworten
    3412 Aufrufe
    16. Oktober 2014, 19:31:08 von martinr
    2 Antworten
    2822 Aufrufe
    12. Mai 2010, 08:23:36 von dragonfly76
    4 Antworten
    3498 Aufrufe
    13. Juli 2011, 16:44:41 von michaeld
    8 Antworten
    6472 Aufrufe
    20. September 2012, 23:11:28 von Hajö