Neu 5.5.0 wenn nur eine Versandart existiert, kein Checkout möglich...

elcheffe

Sehr aktives Mitglied
7. Juli 2010
594
77
... da die Zahlungsarten nicht angezeigt/geladen werden.

Bei zwei Versandarten muss man Eine aktiv auswählen. Dann werden auch die Zahlungsarten eingeblendet.


Und ohne Zahlungsart geht es natürlich auch im Checkout nicht weiter.
Workaround: zweite Versandart als Dummy anlegen.


Könnt ja mal checken ob ihr das reproduzieren könnt (Nova Template).
 
  • Gefällt mir
Reaktionen: sah

NoOne

Sehr aktives Mitglied
16. März 2024
454
150
HolyMoly... Ich hab schon herumgerätselt, was da passiert. Danke für den Tipp mit nur einer qualifizierten Versandart...

Fix dafür (funktioniert zumindest bei mir):
In der /includes/src/Router/Controller/CheckoutController.php die Funktion getActiveShippingMethod hiermit ersetzen:

PHP:
public function getActiveShippingMethod(array $shippingMethods): int
    {
        if (isset($_SESSION['Versandart'])) {
            $_SESSION['AktiveVersandart'] = (int)$_SESSION['Versandart']->kVersandart;
        } elseif (!empty($_SESSION['AktiveVersandart']) && GeneralObject::hasCount($shippingMethods)) {
        $active  = (int)$_SESSION['AktiveVersandart'];
            $reduced = \array_reduce($shippingMethods, static function ($carry, $item) use ($active) {
                return (int)$item->kVersandart === $active ? (int)$item->kVersandart : $carry;
            }, 0);
            if ($reduced !== (int)$_SESSION['AktiveVersandart']) {
                $_SESSION['AktiveVersandart'] = $this->getShippingService()->getFirstShippingMethod(
                    \array_map(
                        static function (stdClass $shippingMethod): ShippingDTO {
                            return ShippingDTO::fromLegacyObject($shippingMethod);
                        },
                        $shippingMethods
                    ),
                    $this->customerGroupID,
                    (int)($_SESSION['Zahlungsart']->kZahlungsart ?? '0'),
                )->kVersandart ?? 0;
            }
        } else {
            $_SESSION['AktiveVersandart'] = $this->getShippingService()->getFirstShippingMethod(
                \array_map(
                    static function (stdClass $shippingMethod): ShippingDTO {
                        return ShippingDTO::fromLegacyObject($shippingMethod);
                    },
                    $shippingMethods
                ),
                $this->customerGroupID,
                $_SESSION['Zahlungsart']->kZahlungsart ?? 0,
            )->kVersandart ?? 0;
        }
        
        return (int)$_SESSION['AktiveVersandart'];
    }

Hier ist genau markiert, was mit dem obigen Code ersetzt werden muss: https://gitlab.com/jtl-software/jtl...CheckoutController.php?ref_type=tags#L767-802

Technischere Erklärung:
Das ist die gleiche Funktion, aber vertauscht bei der Übergabe an getFirstShippingMehtod die Reihenfolge der Parameter. Ursprünglich wurde die Zahlungsart vor der Kundengruppe übergeben und das ist exakt falsch herum.

Ich hab das auch mit mehreren qualifizierten Versandarten getestet, das funktioniert nach der Änderung ebenfalls noch.
 
  • Gefällt mir
  • Ich liebe es
Reaktionen: sah und noEE

christian1701

Sehr aktives Mitglied
19. Juli 2007
2.919
112
Wien
Was heisst in dem Fall Gelöst und Zielversion Shop 5.5.1
Geben tuts die ja noch nicht, oder?
Ich möcht da nicht selbst herumändern wenn der Bugfix morgen vielleicht kommt.
 
Zuletzt bearbeitet:

taylor-wheels

Mitglied
25. März 2024
3
1
Mal ehrlich aus meiner Sicht - einfach absolut geschäftsschädigend. Man macht nach Updates natürlich Testbestellungen, um zu sehen, ob alles noch funktioniert. Aber für einige Läder oder Kundengruppen gibt es nur ein Versandart. Für derartige Fehler sollte ein sofortiges Update nachgeschoben werden. Der ganze Spaß mit der Fehlersuche kostet mich locker über 500 Euro. Zahlt das JTL für mich?

Für mich ist der Fall auch erst gelöst, wenn der Bugfix verfügbar ist!

Sorry JTL: Das ist dilettantisch!!! :mad::mad::mad:
 
  • Gefällt mir
Reaktionen: sah

NoOne

Sehr aktives Mitglied
16. März 2024
454
150
"Sofort" ein Bugfix ist unrealistisch. Auch Bugfixes müssen vorher durch eine QA. Den Hotfix da oben konnte ich jetzt auch nur bei mir testen, aber da es ein relativ einfacher Fehler ist, einfach nur Parameter vertauscht, ist unwahrscheinlich, dass der Bugfix schlussendlich großartig anders aussieht.

QA findet halt immer unter Laborbedingungen statt. Es ist nahezu unmöglich, dass dabei jeder Fehler auffällt. Die Erwartung ist da auch einfach unrealistisch. Der Fehler tritt z. B. auch ungepatcht nicht bei mir auf, wenn für die Standardkundengruppe die Zahlungsarten geholt werden sollen. Dann sind beide Parameter = 1. Und wenn beide Parameter gleich sind, ist egal, in welcher Reihenfolge sie übergeben werden.
 

sfeider

Aktives Mitglied
12. Dezember 2011
2
0
Ich docke mich mal an die Fehlermeldung an.
Vielen Dank für den Bugfix! Ich rätsel nun seit 2 Stunden, was ich falsch eingestellt habe und wollte nun gerade ein Ticket erstellen.
 

JuMert

Aktives Mitglied
9. Februar 2023
38
5
HolyMoly... Ich hab schon herumgerätselt, was da passiert. Danke für den Tipp mit nur einer qualifizierten Versandart...

Fix dafür (funktioniert zumindest bei mir):
In der /includes/src/Router/Controller/CheckoutController.php die Funktion getActiveShippingMethod hiermit ersetzen:

PHP:
public function getActiveShippingMethod(array $shippingMethods): int
    {
        if (isset($_SESSION['Versandart'])) {
            $_SESSION['AktiveVersandart'] = (int)$_SESSION['Versandart']->kVersandart;
        } elseif (!empty($_SESSION['AktiveVersandart']) && GeneralObject::hasCount($shippingMethods)) {
        $active  = (int)$_SESSION['AktiveVersandart'];
            $reduced = \array_reduce($shippingMethods, static function ($carry, $item) use ($active) {
                return (int)$item->kVersandart === $active ? (int)$item->kVersandart : $carry;
            }, 0);
            if ($reduced !== (int)$_SESSION['AktiveVersandart']) {
                $_SESSION['AktiveVersandart'] = $this->getShippingService()->getFirstShippingMethod(
                    \array_map(
                        static function (stdClass $shippingMethod): ShippingDTO {
                            return ShippingDTO::fromLegacyObject($shippingMethod);
                        },
                        $shippingMethods
                    ),
                    $this->customerGroupID,
                    (int)($_SESSION['Zahlungsart']->kZahlungsart ?? '0'),
                )->kVersandart ?? 0;
            }
        } else {
            $_SESSION['AktiveVersandart'] = $this->getShippingService()->getFirstShippingMethod(
                \array_map(
                    static function (stdClass $shippingMethod): ShippingDTO {
                        return ShippingDTO::fromLegacyObject($shippingMethod);
                    },
                    $shippingMethods
                ),
                $this->customerGroupID,
                $_SESSION['Zahlungsart']->kZahlungsart ?? 0,
            )->kVersandart ?? 0;
        }
       
        return (int)$_SESSION['AktiveVersandart'];
    }

Hier ist genau markiert, was mit dem obigen Code ersetzt werden muss: https://gitlab.com/jtl-software/jtl...CheckoutController.php?ref_type=tags#L767-802

Technischere Erklärung:
Das ist die gleiche Funktion, aber vertauscht bei der Übergabe an getFirstShippingMehtod die Reihenfolge der Parameter. Ursprünglich wurde die Zahlungsart vor der Kundengruppe übergeben und das ist exakt falsch herum.

Ich hab das auch mit mehreren qualifizierten Versandarten getestet, das funktioniert nach der Änderung ebenfalls noch.
Eine Frage, kann ich den Code einfach 1:1 in der Datei ersetzen?
 

sah

Sehr aktives Mitglied
11. Juni 2021
413
40
Herten
Hier als diff
Diff:
--- CheckoutController.php.bak  2025-05-19 15:43:15.000000000 +0200
+++ CheckoutController.php      2025-06-10 11:36:14.358022274 +0200
@@ -781,8 +781,8 @@
                         },
                         $shippingMethods
                     ),
-                    (int)($_SESSION['Zahlungsart']->kZahlungsart ?? '0'),
                     $this->customerGroupID,
+                    (int)($_SESSION['Zahlungsart']->kZahlungsart ?? '0'),
                 )->kVersandart ?? 0;
             }
         } else {
@@ -793,8 +793,8 @@
                     },
                     $shippingMethods
                 ),
-                $_SESSION['Zahlungsart']->kZahlungsart ?? 0,
                 $this->customerGroupID,
+                $_SESSION['Zahlungsart']->kZahlungsart ?? 0,
             )->kVersandart ?? 0;
         }
 

alex9019

Sehr aktives Mitglied
17. Mai 2018
364
50
Ist das nun wirklich gelöst?

Ich habe heute von einem italienischen Kunden die Rückmeldung erhalten, dass die Zahlungsarten nicht angezeigt werden:

Screenshot 2025-10-16 221020.png

Wie es scheint, nur in der mobilen Version.

Habe es versucht nachzustellen und im Chrome Browser wurden diese nicht angezeigt.
Nach mehrmaligem klicken auf "Ulteriori" kamen sie dann irgendwann.

Im Safari Browser wurden die Zahlungsarten umgehend angezeigt.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Kindartikel direkt anzeigen/auswählen wenn nur ein Kind vorhanden ist? User helfen Usern - Fragen zu JTL-Wawi 0
Neu JTL PayPal Checkout 5.3.0 mit Shop 5.5.2 - Artikel nur sichtbar wenn Kunde eingeloggt ist oder Artikel nicht verfügbar ist Plugins für JTL-Shop 6
Rückerstattung wenn Zahlung nicht automatisch sondern manuell zugewiesen worden sind JTL-Wawi 1.9 0
Neu Wms Artikeletikett drucken, wenn umgelagert wird Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Fehlerhafte Darstellung der Box Stücklistekomponenten, wenn Konfigurationsartikel enthalten JTL-Wawi - Fehler und Bugs 0
Neu Alarm SMS/E-Mail wenn der Worker nicht läuft Allgemeines zu den JTL-Connectoren 2
Workflow soll wenn Artikel 0 Bestand für 35 Tage hat diesen auf inaktiv setzen JTL-Wawi 1.10 4
Neu JTL Wawi braucht viel RAM und CPU wenn der Prozess lange läuft, ohne dass gearbeitet wird JTL-Wawi - Fehler und Bugs 3
Preis im Warenkorb für 10 min sichern, wenn Preis geändert wurde. Ist das möglich? Einrichtung JTL-Shop5 3
kann man inzwischen aus der Wawi auf kaufland Varianten bilden, wenn ja, ab welcher Version? kaufland.de - Anbindung (SCX) 0
Beantwortet Workflow Auftrag über FFN ausliefern wenn Ware eingelagert JTL-Workflows - Ideen, Lob und Kritik 6
Neu Artikel nur für Admin sichtbar Allgemeine Fragen zu JTL-Shop 2
Neu JTL 1.7.15.4 - Varianten zu bereits laufendem eBay-Angebot hinzufügen (nur Ameise). Richtige Vorgehensweise? User helfen Usern - Fragen zu JTL-Wawi 0
Beantwortet Slider nur noch mit Bild gefüllt Installation / Updates von JTL-Shop 1
Neu Google shopping export kein Auswahl , ob nur Väter oder Kindartikel exportiert werden sollen Technische Fragen zu Plugins und Templates 1
Neuer Verkaufspreis eines Artikels wird in Angeboten/Aufträgen nicht übernommen, sondern nur der frühere ... JTL-Wawi 1.10 5
nach update auf 1.10.11.0 nur 251 von 252 Steuerklassne JTL-Wawi 1.10 3
Neu Ausführungsplan nur einmal ausführen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Ameise Importiert nicht, sagt immer nur Testlauf. JTL-Ameise - Fehler und Bugs 10
Neu B2B Preis für JTL Wawi -> Amazon aktivieren, nur wie? User helfen Usern - Fragen zu JTL-Wawi 4
Neu JS nur auf auf spezifischer Seite nachladen Allgemeine Fragen zu JTL-Shop 1
Neu Bestimmte Kategorien oder Artikel nur nach Kundenlogin aufrufbar? Allgemeine Fragen zu JTL-Shop 3
Neu Google shopping export - neue Produkte markieren um eine Werbung nur für neue Produkte laufen zu lassen Technische Fragen zu Plugins und Templates 1
Neu Worker 2.0 - automatische Picklistenerstellung - bitte nur während der Bürozeiten JTL-Wawi - Ideen, Lob und Kritik 14
Neu Sendungsverfolgungsnummern werden nur teilweise übertragen JTL-Wawi - Fehler und Bugs 1
Neu Wawi/Shipping Labels druckt nur Adressetikett statt richtiges Versandlabel JTL-ShippingLabels - Fehler und Bugs 14
Neu Merkmalfilter - Nur Merkmale von Kindern filtern Allgemeine Fragen zu JTL-Shop 1
Neu 👉 Erfahrungen mit KI? Wir suchen Kunden für eine Case Study! News, Events und Umfragen 0
Neu Gutschriftmenge auf eine ausgestellte Teilrechnung reduziert offene Auftragsmenge JTL-Wawi - Fehler und Bugs 0
Neu Eine Rechnungsposition auf zwei Teilrechnungen berechnen - Wie löst ihr das? Arbeitsabläufe in JTL-Wawi 5
Worker Retouren Fehlermeldung "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt." JTL-Wawi 1.9 0
Neu Staging und Konten bitte eine Erklärung. Installation von JTL-Wawi 0
Neu Gibt es eine Möglichkeit Copilot Studio mit der JTL-Datenbank zu verbinden? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Nach Paypal-Leak, eine Alternative? JTL-Wawi - Ideen, Lob und Kritik 11
Neu BIO Zertifizierung - Kontrollstelle fordert jetzt eine Liste aller Artikel mit Sortierung Smalltalk 9
In Diskussion Ich habe eine neue TSE-Karte gekauft (Swissbit TSE). Wo finde ich den PIN und PUK? Einrichtung / Updates von JTL-POS 3
Eine Artikelnummern pro Shop ? Und einen Hauptartikel ? JTL-Wawi 1.8 2

Ähnliche Themen