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: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    am: 20. August 2013, 15:29:48
    Hallo Community.
    Da ich nun mehrfach gehört habe, daß Shopbetreiber die Möglichkeit mit Nachnahme zu zahlen auf einen Höchst-Warenwert begrenzen möchten damit nicht Bestellungen für beispielsweise 3000;- EUR mit Nachnahme gezahlt werden können, habe ich das cod-Modul mal angepasst.

    Außerdem wurde (insofern aktiviert) Nachnahme auch dann auf der checkout_payment-Seite angezeigt wenn der Kunde eine Versandart gewählt hat die entweder
    • keine Nachnahme zulässt oder
    • in der Zusammenfassung in ot_cod_fee bewußt keine Gebühr eingetragen wurde

    Beides habe ich behoben.

    Features:
    • Man kann nun bei dem Modul, Module => Zahlungsoptionen => Nachnahme (cod), einen Maximalwert eintragen ab welchem man die Zahlung per Nachnahme nicht mehr wünscht.
      Die Zahlungsart Nachnahme wird bei Erreichen des Betrages autom. gar nicht mehr zur Auswahl angezeigt.
      Verglichen wird der Maximalwert mit dem reinen Warenwert (= subtotal), also berücksichtig nicht Versandkosten oder andere Zuschläge.
    • Wenn in der Zusammenfassung, Module => Zusammenfassung => ot_cod_fee, für eine Versandart keine Gebühr eingetragen wurde oder für eine Versandart sogar gar nicht vorgesehen ist eine Gebühr eintragen zu können, wird das Nachnahme-Modul ebenfalls autom. nicht auf checkout_payment angezeigt.
    • Mindestbestellwert
    • Rechnungsadresse = Lieferadresse

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Erweiterung getestet für aktuelles Release 1.06 rev 4642.

    Einbau:
    - Im Backend => Module => Zahlungsoptionen => cod deinstallieren
    - In /includes/modules/payment cod.php mit der aus dem Paket austauschen
    - In /lang/SPRACHE/modules/payment die Sprachdateien cod.php austauschen
    - Im Backend => Module => Zahlungsoptionen => cod wieder installieren
    - dort ggfls. max-Bestellwert eintragen

    Gruß,
    noRiddle

    [EDIT Tomcraft 20.08.2013: Modul aktualisiert.]
    [EDIT Tomcraft 20.08.2013: Modul aktualisiert.]
    [EDIT Tomcraft 21.08.2013: Modul aktualisiert.]
    [EDIT Tomcraft 21.08.2013: Modul aktualisiert.]
    [EDIT Tomcraft 23.08.2013: Modul aktualisiert.]
    [EDIT Tomcraft 25.02.2015: Modul aktualisiert und Screenshot ergänzt.]
    [EDIT Tomcraft 02.03.2015: Modul aktualisiert.]
    [EDIT Tomcraft 21.06.2017: Modul aktualisiert.]
    [EDIT Tomcraft 23.06.2017: Modul aktualisiert.]

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

    web0null

    • Experte
    • Beiträge: 1.998
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #1 am: 20. August 2013, 15:51:11
    Hi noRiddle, gerade geladen, werd ich gleich mal beäugeln.

    Ein großes
    :thx:  :pro:

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #2 am: 20. August 2013, 16:04:58
    Danke Tomcraft für's verschieben, du bist ja ganz schnell :-).

    @web0null
    Ja, bitte testen.
    Habe es zwar getestet, man kann aber ja auch mal was übersehen ;-).

    Gruß,
    noRiddle

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #3 am: 20. August 2013, 16:06:27
    Gern geschehen.

    Folgendes habe ich festgestellt:
    • Nachnahme-Modul wird weiterhin angezeigt, auch wenn "ot_cod_fee" deinstalliert ist
    • Sprachkonstanten für "MODULE_PAYMENT_COD_LIMIT_ALLOWED" fehlen
    Grüße

    Torsten

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #4 am: 20. August 2013, 16:15:50
    Punkt 1.: Das war schon immer so, mal schauen ob ich das auch behebe ;-).
    Punkt 2.: Upps, jau habe ich vergessen, hier neues Paket, diesmal mt Sprachdateien und kurzer Installationsanleitung, sorry.

    Gruß,
    noRiddle

    *NACHTRAG*
    Tomcraft, vielleicht könntest du noch unter "Einbau:" die Korrektur reinkopieren ?

    Einbau:
    - Im Backend => Module => Zahlungsoptionen => cod deinstallieren
    - In /includes/modules/payment cod.php mit der aus dem Paket austauschen
    - In /lang/SPRACHE/modules/payment die Sprachdateien cod.php austauschen
    - Im Backend => Module => Zahlungsoptionen => cod wieder installieren
    - dort ggfls. max-Bestellwert eintragen

    [EDIT Tomcraft 20.08.2013: Modul in Beitrag 1 aktualisiert.]

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #5 am: 20. August 2013, 16:21:31
    Oh man, in der Ordnerstruktur im Paket noch einen Fehler, fehlt der Ordner payment in den lang-Ordnern, deshalb nochmals  :oops:.
    Ist nicht mein Tag :hüstel:

    Gruß,
    noRiddle

    [EDIT Tomcraft 20.08.2013: Modul in Beitrag 1 aktualisiert.]

    web0null

    • Experte
    • Beiträge: 1.998
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #6 am: 20. August 2013, 16:40:06
    Ich denke statt:
    Code: PHP  [Auswählen]
    if(round($order->info['subtotal']) >= $this->limit_subtotal) return;
    würde ich es so schreiben:
    Code: PHP  [Auswählen]
    if($this->limit_subtotal && round($order->info['subtotal']) >= $this->limit_subtotal) return;

    Dann kann nämlich das Feld auch leer bleiben, bzw. von Anfang an mal leer bleiben.
    Code: PHP  [Auswählen]
    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())");

    Gruß

    web0null

    • Experte
    • Beiträge: 1.998
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #7 am: 20. August 2013, 17:34:38
    Zitat
    Nachnahme-Modul wird weiterhin angezeigt, auch wenn "ot_cod_fee" deinstalliert ist

    Ja das sollte doch auch so sein, ich muss ja keine Gebühr verlangen, kann aber trotzdem Nachnahme anbieten!?

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #8 am: 20. August 2013, 17:48:16
    Das war auch meine Denkweise und habe ich vorhin mit noRiddle telefonisch geklärt. Ich denke er wird es nochmal entsprechend überarbeiten.

    Ich denke statt:
    Code: PHP  [Auswählen]
    if(round($order->info['subtotal']) >= $this->limit_subtotal) return;
    würde ich es so schreiben:
    Code: PHP  [Auswählen]
    if($this->limit_subtotal && round($order->info['subtotal']) >= $this->limit_subtotal) return;

    Dann kann nämlich das Feld auch leer bleiben, bzw. von Anfang an mal leer bleiben.
    Code: PHP  [Auswählen]
    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())");
    [...]

    Macht meiner Meinung nach auch Sinn! :pro:

    Nachtrag: In der "/lang/german/modules/payment/cod.php" sind noch Umlaute ohne Entities. :!:

    Grüße

    Torsten

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #9 am: 20. August 2013, 18:38:35
    Gut, web0null, machen wir so ;-).

    Außerdem Anzeige bei gewissen Konstellationen gefixt:
    Nun wird Nachnahme auf checkout_payment nicht angezeigt wenn
    • in der Zusammenfassung bei ot_cod_fee bei der vom Kunden gewählten Versandart kein Betrag angegeben wurde
    • die Versandart keine Nachnahme zulässt weil gar nicht in ot_cod_fee vorhanden
      Das wird wohl in zukünftigen Versionen damit gelöst, daß die installierten Versandmodule automatisch in ot_cod_fee importiert werden, man müsste dann nur noch überlegen ob es Versandarten gibt die gar keine Nachnahme anbieten, da kann man das fee-Feld dann einfach leer lassen.
      Dann, in der zukünftigen Version, würden diese Zeilen
      // BOC dont't show cod on checkout_pament when shipping module doesn't offer cod
      if (count($cod_zones) == 0) return;
      // EOC dont't show cod on checkout_pament when shipping module doesn't offer cod

      nicht mehr gebraucht.
    • der max-Betrag bei dem man Nachnahme zulassen möchte überschritten wird

    Hier also jetzt die (vorerst ?) letzte Version.

    Gruß,
    noRiddle

    [EDIT Tomcraft 21.08.2013: Modul in Beitrag 1 aktualisiert.]

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #10 am: 20. August 2013, 18:41:01
    Das mit den Umlauten jetzt erst gesehen, sorry.
    Bin schon überall auf UTF-8, Macht der Gewohnheit ;-).

    Gruß,
    noRiddle

    [EDIT Tomcraft 21.08.2013: Modul in Beitrag 1 aktualisiert.]

    web28

    • modified Team
    • Beiträge: 9.404
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #11 am: 20. August 2013, 20:46:43
    Zitat
    Da ich nun mehrfach gehört habe, daß Shopbetreiber die Möglichkeit mit Nachnahme zu zahlen auf einen Höchst-Warenwert begrenzen möchten damit nicht Bestellungen für beispielsweise 3000;- EUR mit Nachnahme gezahlt werden können, habe ich das cod-Modul mal angepasst.

    Was ist bei Shops mit mehreren Währungen? Ist eine Währungskorrektur berücksichtigt? (Immer wichtig beim Vergleich von Preisen)

    Gruss Web28

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #12 am: 21. August 2013, 00:59:56
    Hey web28.
    Der max-Wert wird im Backend als integer oder float eingegeben, ohne Währung (wie ja eigtl. immer).
    Der Vergleich geschieht mit round($order['subtotal']), also vor der Preisformatierung.
    Mir scheint, alles im grünen Bereich ;-).
    Lasse mich aber gerne eines besseren belehren.

    Gruß,
    noRiddle

    web0null

    • Experte
    • Beiträge: 1.998
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #13 am: 21. August 2013, 03:35:15
    Nö das:
    Code: PHP  [Auswählen]
    for ($i = 0; $i < count($cod_zones); $i++) {
                if ($cod_zones[$i] == $order->delivery['country']['iso_code_2']) {
                  $cod_cost = $cod_zones[$i + 1];
                  $cod_country = true;
                  break;
                } elseif ($cod_zones[$i] == '00') {
                  $cod_cost = $cod_zones[$i + 1];
                  $cod_country = true;
                  break;
                // BOC dont't show cod on checkout_pament when cod fee in ot_cod_fee empty
                } else if ($cod_zones[$i] == 0) {
                    return;
                }
                // EOC dont't show cod on checkout_pament when cod fee in ot_cod_fee empty
                $i++;
              }
    Geht nicht ganz, und zwar:

    $cod_zones[$i] == 0
    geht da unten nicht mehr, weil der '00'er
    $cod_zones[$i] == '00'
    ja eigentlich immer vorhanden ist, bzw. sein sollte, und somit immer vorher greift.

    ... und $cod_zones[$i] ist ja der erste wert also 'DE' 'AT' '00' usw., damit kann er eigentlich auch nicht 0 sein.

    Also müsste es der zweite Wert $cod_zones[$i + 1] sein, aber auch nicht dort unten.

    Mein Vorschlag wäre dann:

    Code: PHP  [Auswählen]
    for ($i = 0; $i < count($cod_zones); $i++) {
                if ($cod_zones[$i] == $order->delivery['country']['iso_code_2'] || $cod_zones[$i] == '00') {
                  $cod_cost = $cod_zones[$i + 1];
                  if ($cod_cost == '') return;
                  $cod_country = true;
                  break;
                }
                $i++;
              }

    Damit kann man z. B. eingeben;
    • DE:4.00 Modul wird angezeigt bei DE mit 4,00€
    • DE:0.00 Modul wird angezeigt bei DE mit 0,00€
    • DE:        Modul wird bei DE NICHT angezeigt

    Dann kann man für jedes beliebige Land pro Versandart die Nachnahme ganz deaktivieren, bzw. hat auch die Möglichkeit das Modul anzuzeigen mit 0.00€.

    Gruß

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: MODUL: Erweitertes Nachnahme (cod) Zahlungsmodul
    Antwort #14 am: 21. August 2013, 04:03:10
    Hi web0null, sehe du bist auch noch wach.
    Bin anderer Meinung.
    • Wieso ist $cod_zones[$i] == '00' immer vorhanden ?
    • Was hat denn if ($cod_cost == '') return; innerhalb der ersten Schleife zu suchen ?
    • $code_zone ist ein Array, ja, und wenn nichts eingetragen ist
      - und dafür ist mein von dir kritisierter Code -
      ist das Array leer.
      Man könnte auch schreiben:
      • if($cod_zones[$i] == '') oder
      • if(empty($cod_zones[$i]))
      Ich schreibe ja nicht if($cod_zones == '0') sondern if($cod_zones == 0)
      Wahrscheinlich würde auch gehen if($cod_zones == NULL), das habe ich aber nicht getestet.

    Funktioniert alles, komplett durchgetestet,... denke ich ;-).

    Gruß,
    noRiddle
    Shop Hosting
    7 Antworten
    5237 Aufrufe
    12. November 2011, 12:56:25 von Tomcraft
    13 Antworten
    16387 Aufrufe
    11. August 2013, 14:27:18 von miCro2k
    8 Antworten
    5537 Aufrufe
    07. Mai 2013, 18:15:27 von ShopNix
    10 Antworten
    8643 Aufrufe
    22. August 2013, 23:30:14 von ReEdit