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: Error & Warnings in Zusammenhang mit versandkostenfreier Lieferung

    ELF-K11

    • Frisch an Board
    • Beiträge: 57
    • Geschlecht:
    Hallo,

    vielleicht hat hier jemand eine Lösung für folgendes Problem.

    modified eCommerce Shopsoftware v2.0.7.2 rev 14622 dated: 2022-07-04
    Datenbank Version: "MOD_2.0.7.2"

    Installierte und aktive Zhlungsmodule:
    • micropayment Kreditkarte
    • micropayment Sofort
    • EU-Standard Bank Transfer
    • Rechnung
    Installierte und aktive Versandmodule:
    • Pauschale Versandkosten
    • Versandkostenfrei
    In Zusammenhang mit versandkostenfreier Lieferung habe ich bemerkt, dass bei der Zehlungsweise "Kreditkarte" es zu einem API-CALL-Failure kommt (geht aus einer automatisch von Zahlungsdienstleister versendeten Mail hervor). Die Zahlung selbst erfolgt korrekt, nur die Bestätigungsmail an den Kunden, die der Shop versendet wird nicht ausgelöst. Das passiert aber nur, wenn die Lieferung Versandkostenfrei ist.

    Hier Auszüge aus den Logfiles des Shops:

    Code: XML  [Auswählen]
    ERROR found for URL: /shop/callback/micropayment/notification.php?....&function=billing    {}    {}
    [2023-12-09 22:43:45]    [error]    [modified]    [pid:24935]    Undefined constant "MODULE_SHIPPING_FREE_TEXT_TITLE" in File: /.../shop/includes/external/micropayment/send_order.php on Line: 80    {}    {}

    Code: XML  [Auswählen]
    [2023-12-09 22:43:45]    [warning]    [modified]    [pid:24935]    WARNING found for URL: /shop/callback/micropayment/notification.php?&function=billing    {}    {}
    [2023-12-09 22:43:45]    [warning]    [modified]    [pid:24935]    include(/.../shop/lang/german/modules/shipping/free.php): Failed to open stream: No such file or directory in File: /.../shop/includes/external/micropayment/send_order.php on Line: 79    {}    {}

    Code: XML  [Auswählen]
    [2023-12-09 22:43:45]    [warning]    [modified]    [pid:24935]    WARNING found for URL: /shop/callback/micropayment/notification.php?&function=billing    {}    {}
    [2023-12-09 22:43:45]    [warning]    [modified]    [pid:24935]    include(): Failed opening  '/.../shop/lang/german/modules/shipping/free.php' for inclusion (include_path='.:/usr/local/php81/share/php81') in File: /.../shop/includes/external/micropayment/send_order.php on Line: 79    {}    {}

    Im Verzeichnis "/.../shop/lang/german/modules/shipping/" gibt es keine 'free.php'-Datei, sondern eine 'freeamount.php'. Diese scheint zwar wohl die benötigten Texte zu liefern, wird jedoch nicht benutzt.

    Das Problem habe ich an den Zahlungsdienstleister gemeldet. Die Aussage, die ich als Antwort erhielt: "....hier würde ich Sie vertrauensvoll an den Shophersteller verweisen. Die Versandmethode benötigt laut laut Fehlermeldung die free.php, das ist jedoch keine Datei aus unserem Modul, sondern eine Datei aus dem Shop. "

    Es gab dazu noch einen Verweis auf ein ähnliches Topic hier im Forum: https://www.modified-shop.org/forum/index.php?topic=24476.0

    Dieses habe ich mir durchgelesen. Es gibt aber dort, für mich,  zu viele und mich verwirrende Vorschläge oder Lösungen, für Shopversion 1.06 (?), wo das Problem schon mal auftrat.

    Was mir noch auffällt ist, dass es zwei 'send_order.php'-Dateien gibt, mit unterschiedlichem code den Abschnitt "shipping method" betreffend. Eine liegt im Modulverzeichnis des Zahlungsdienstleisters im Shop, die andere in der Shoproot.

    Hier die Auszüge daraus:

    send_order.php des Zahlungsdienstleisters:

    Code: PHP  [Auswählen]
     //shipping method
        if ($order->info['shipping_class'] != '') {
            $shipping_class = explode('_', $order->info['shipping_class']);
            include (DIR_FS_CATALOG . 'lang/'.$order->info['language'].'/modules/shipping/'.$shipping_class[0].'.php');
            $shipping_method = constant(strtoupper('MODULE_SHIPPING_'.$shipping_class[0].'_TEXT_TITLE'));
        }
        $smarty->assign('SHIPPING_METHOD', $shipping_method);

    send_order.php des Shops:

    Code: PHP  [Auswählen]
    //shipping method
      $shipping_class = explode('_', $order->info['shipping_class']);
      if ($order->info['shipping_class'] != '' && $shipping_class[0] != 'free') {
        include_once (DIR_FS_CATALOG . 'lang/'.$order->info['language'].'/modules/shipping/'.$shipping_class[0].'.php');
        $shipping_method = constant(strtoupper('MODULE_SHIPPING_'.$shipping_class[0].'_TEXT_TITLE'));
      } else {
        include_once (DIR_FS_CATALOG . 'lang/'.$order->info['language'].'/modules/order_total/ot_shipping.php');
        $shipping_method = FREE_SHIPPING_TITLE;
      }
      $smarty->assign('SHIPPING_METHOD', $shipping_method);
      $smarty->assign('SHIPPING_CLASS', $shipping_class[0]);

    Der Code in der Datei des Shops ähnelt am ehesten einer der vorgschlagenen Lösungen aus dem oben erwähnten anderen ähnlichen Topic.

    Ich hoffe, es gibt irgendeine Möglichkeit das Problem zu lösen, wobei ich mich auch frage, wie es dazu kommen kann, dass noch immer "free.php" auftaucht, obwohl es diese Datei gar nicht gibt ?

    Gruß
    E.

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

    awids

    • Experte
    • Beiträge: 3.803
    • Geschlecht:
    Kann dazu jetzt nicht viel sagen, ohne mich tiefer damit zu beschäftigen (wofür mir die Zeit fehlt), aber ich wollte wenigstens mal ein Lob für dich da lassen, weil du so viele Informationen dazugeschrieben hast, welche relevant sein könnten. (PHP-Version wäre noch interessant.) Wenn das alle so machen würden, würde man hier auch anständig helfen können, statt dem ständigen Rätselraten und häppchenweiser Informationen, die man dem Fragesteller aus der Nase ziehen muss. Darum DANKE!

    benax

    • Mitglied
    • Beiträge: 129
    • Geschlecht:
    Hallo ELF-K11,
    das, was Du da beschreibst, liese sich am einfachsten erklären, mit einem installierten Versandmodul das den Modulnamen "free" hat.
    Dazu gibt es keine Sprachdateien und die Fehlermeldungen wären reproduzierbar.
    Du hast die Versandart "Versandkostenfrei", Modulname "freeamount" installiert.
    Gibt es den bei Dir eine Datei "/includes/modules/shipping/free.php"?
    Hast Du Zugriff auf Deine Datenbank? Z. B. mit phpMyAdmin?
    Dann könntest Du checken ob in der Tabelle configuration unter dem configuration_key MODULE_SHIPPING_INSTALLED ein Eintrag free.php vorhanden ist.
    Bei Dir dürfte da nur flat.php;freeamount.php drin stehen.
    Das sind so meine ersten Gedanken, wo ich anfangen würde zu suchen  ‘:-/

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.007
    • Geschlecht:
    @ELF-K11
    Ich schließe mich dem Lob awids  ausdrücklich an. Top.

    Poste mal bitte die /includes/modules/shipping/free.php  in Code-tags.

    Gruß,
    noRiddle

    ELF-K11

    • Frisch an Board
    • Beiträge: 57
    • Geschlecht:
    Hallo,

    danke erstmal für die bisherigen Kommentare.

    @awids:
    Man tut was man kann  :lol: .
     Die PHP-Version für den Shop ist 8.1

    @benax:
    Das Versandmodul "free" kenne ich nicht und habe es auch nicht installiert.
    Das Modul, welches ich installiert habe heißt "Versandkostenfrei".
    Wie schon in meinem Einleitungstext erwähnt, gibt es keine Datei "free.php" in '.../includes/modules/shipping'.
    In der Datenbank gibte unter dem configuration_key MODULE_SHIPPING_INSTALLED die Einträge flat.php und freeamount.php. Damit liegst Du richtig, denn diese beiden Module sind auch installiert.

    @noRiddle(revilonetz):

    Auch Danke. Aber auch hier der Hinweis - den Code einer Datei namens free.php kann ich nicht posten, mangels vorhandensein dieser Datei.

    Gruß
    E.

    Timm

    • Fördermitglied
    • Beiträge: 6.260
    Moin

    Die gepostete Codestelle aus der includes/external/micropayment/send_order.php

    Code: PHP  [Auswählen]
    //shipping method
      $shipping_class = explode('_', $order->info['shipping_class']);
      if ($order->info['shipping_class'] != '' && $shipping_class[0] != 'free') {
        include_once (DIR_FS_CATALOG . 'lang/'.$order->info['language'].'/modules/shipping/'.$shipping_class[0].'.php');
        $shipping_method = constant(strtoupper('MODULE_SHIPPING_'.$shipping_class[0].'_TEXT_TITLE'));
      } else {
        include_once (DIR_FS_CATALOG . 'lang/'.$order->info['language'].'/modules/order_total/ot_shipping.php');
        $shipping_method = FREE_SHIPPING_TITLE;
      }
      $smarty->assign('SHIPPING_METHOD', $shipping_method);
      $smarty->assign('SHIPPING_CLASS', $shipping_class[0]);

    gibt es so weder in der ursprünglichen Shopversion 2.0.7.2, noch in dem neusten Update des micropayment Moduls.

    Ich würde mal den Live Shop herunterladen und gegen die 2.0.7.2 Vollversion vergleichen. Dann wirst du Unterschiede feststellen. Mögliche Updates von zb Paypal oder Micropayment beachten und nicht einfach die 2.0.7.2 Dateien wieder hochladen.

    Das schließt aber nicht aus, dass es auch mit den aktuellen Dateien nicht funktioniert. Könnte dennoch einen Fehler geben. Aber das kann man nur wissen, wenn du die korrekten Dateien im Shop hast.

    Gruß Timm

    benax

    • Mitglied
    • Beiträge: 129
    • Geschlecht:
    Ich schlage vor die send_order.php des Zahlungsdienstleisters abzuändern und der Logik der send_order.php des Shops zu folgen. Dort wird mit
    Code: PHP  [Auswählen]
    $shipping_class[0] != 'free'
    ein mögliches Modul free auch ausgeschlossen.

    Also von
    Code: PHP  [Auswählen]
     //shipping method
    if ($order->info['shipping_class'] != '') {
      $shipping_class = explode('_', $order->info['shipping_class']);
      include (DIR_FS_CATALOG . 'lang/'.$order->info['language'].'/modules/shipping/'.$shipping_class[0].'.php');
      $shipping_method = constant(strtoupper('MODULE_SHIPPING_'.$shipping_class[0].'_TEXT_TITLE'));
     }
     $smarty->assign('SHIPPING_METHOD', $shipping_method);

    ändern zu:

    Code: PHP  [Auswählen]
    //shipping method
    if ($order->info['shipping_class'] != '') {
      $shipping_class = explode('_', $order->info['shipping_class']);
      if ($shipping_class[0] != 'free') {
        include (DIR_FS_CATALOG . 'lang/'.$order->info['language'].'/modules/shipping/'.$shipping_class[0].'.php');
        $shipping_method = constant(strtoupper('MODULE_SHIPPING_'.$shipping_class[0].'_TEXT_TITLE'));
      }
    }
    $smarty->assign('SHIPPING_METHOD', $shipping_method);

    awids

    • Experte
    • Beiträge: 3.803
    • Geschlecht:
    Schau mal bitte, ob du im Backend unter Module > Zusammenfassung > Versandkosten (ot_shipping) die Option "Versandkostenfrei erlauben" aktiviert hast. Ich denke mal, das "free" geht von hier aus.

    Code: PHP  [Auswählen]
      function quote() {
        global $xtPrice, $free_shipping_value_over;
       
        $this->quotes = array(
          'id' => 'free',
          'module' => FREE_SHIPPING_TITLE
        );

        $this->quotes['methods'] = array(
          array(
            'id'    => 'free',
            'title' => sprintf(FREE_SHIPPING_DESCRIPTION, $xtPrice->xtcFormat($free_shipping_value_over, true, 0, true)),
            'cost'  => 0
          )
        );

        if(xtc_not_null($this->icon)) {
          $this->quotes['icon'] = xtc_image($this->icon, FREE_SHIPPING_TITLE);
        }

        return array($this->quotes);
      }

    Da du schon freeamount.php installiert hast, benötigst du diese Einstellung gar nicht und kannst sie deaktivieren.

    ELF-K11

    • Frisch an Board
    • Beiträge: 57
    • Geschlecht:
    Hallo,

    @Timm:

    Die von Dir re-gepostete Codestelle stammt aus den Installationsdaeien des Shops 2.0.7.2 und ist aus der send_order.php in der Shoproot. Ich habe das Installationspaket lokal und dort gerade nachgeschaut.

    @benax & awids:

    Danke für die Hinweise. Ich werde dem morgen nachgehen, jetzt bin ich zu müde  :thumbs:

    Timm

    • Fördermitglied
    • Beiträge: 6.260
    Moin

    In deiner geposteten Fehlermeldung geht es doch um die  includes/external/micropayment/send_order.php und ich ging davon aus, dass der Code aus dieser Datei stammt. Und dort steht eigentlich nichts mit free drin. Kontrolliere die Datei mal.

    Gruß Timm

    ELF-K11

    • Frisch an Board
    • Beiträge: 57
    • Geschlecht:
    Hallo,

    danke für die Rückmeldungen.

    @Timm:

    Die in der Fehlermeldung geposteten Ausschnitte aus den 'send_order.php'-Dateien dienen eigentlich nur der Verdeutlichung, ich hoffte es wäre hilfreich, dadurch den Fehler, beschrieben in den geposteten Logdateien, besser zu verstehen.

    Gruß
    E.

    @awids:

    Ja, das ist aktiviert. Ich werde Deinem Tip folgend die Einstellung mal deaktivieren um zu sehen, ob es dadurch erledigt ist.
    Danke

    @benax:
    Danke auch Dir. Falls der Tip von awids nicht funktioniert, folgt als Nächstes Dein Hinweis.

    ELF-K11

    • Frisch an Board
    • Beiträge: 57
    • Geschlecht:
    Hallo,

    ich möchte zumindest das Ergebnis der Befolgung der Vorschläge mitteilen.

    Danke nochmals dafür.

    @awids:

    Ich habe deinen Vorschlag genommen und im Order Total Modul im ot_shipping "versandkostenfrei erlauben" auf 'false' gesetzt. Das Modul Versandkostenfrei habe ich unverändert aktiv gelassen.

    Ergebnis: Es gab keinen Fehlereintrag mehr in den Logdateien des Shops.

    @alle Anderen:

    Da der Vorschlag von awids derjenige ist, der einfach nur das Weglassen eines Häkchens erfordert und nicht Änderungen im Code vorsieht - und es mit der Kreditkartenzahlung auch bei Versandkostenfreier Bestellung damit jetzt funktioniert, möchte ich es auch dabei belassen.

    Dennoch stellt sich mir die Frage, ob es sich nicht doch insgesamt gesehen um einen Fehler im Shopsystem handelt und ich daher einen Fehlerreport erstellen sollte?

    Gruß
    E.
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware
    5 Antworten
    3463 Aufrufe
    22. Januar 2013, 13:15:47 von Webcraft Solutions
    2 Antworten
    578 Aufrufe
    09. November 2022, 18:17:04 von Roberto75