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

  • Am 13.06.25 ist der Telefon-Support wegen einer internen Veranstaltung nicht erreichbar, der Ticket-Support nur eingeschränkt. Wir danken Ihnen für Ihr Verständnis!

elcheffe

Sehr aktives Mitglied
7. Juli 2010
574
74
... 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
354
121
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.880
101
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
1
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
354
121
"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
29
4
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
369
33
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;
         }
 
Ähnliche Themen
Titel Forum Antworten Datum
Teillieferung - Auf Pickliste nur, wenn Position komplett geliefert werden kann JTL-Wawi 1.9 0
Neu Bilderanzeige teilweise nur wenn der Nutzer angemeldet ist. Allgemeine Fragen zu JTL-Shop 1
Neu Zahlungsarten werden wenn Lieferland nicht Deutschland ist nicht angezeigt. Allgemeine Fragen zu JTL-Shop 2
Neu Wie kann ich Zubehör, welches beim DropshippingLieferanten UND im Standardlager verfügbar ist dropshippen, Wenn der Hauptartikel Dropshipping ist? Arbeitsabläufe in JTL-Wawi 5
Auftrag erweitern wenn Pickliste bereits vorhanden JTL-Wawi 1.9 0
In Diskussion E-Mail an die Produktion, wenn ein Kunde bezahlt hat. JTL-Workflows - Ideen, Lob und Kritik 3
Neu Fehler wenn Hersteller gesendet werden WooCommerce-Connector 9
In Diskussion Benachrichtigung wenn Auftrag nach Wahreneingang komplett Lieferbar. JTL-Workflows - Ideen, Lob und Kritik 1
Benachrichtigung wenn ausverkauft JTL-Wawi 1.9 3
Neu SHOP 5.4.1: Absturz beim Ändern von Mengen im Warenkorb, wenn Menge > Bestand JTL-Shop - Fehler und Bugs 1
Neu Kundendatenanonymisierung im Shop rückgängig machen, wenn in Wawi Storno rückgängig JTL-Shop - Fehler und Bugs 0
Neu JTL pos hängt sich auf und druckt keinen Bong mehr wenn ich ein Logo hinzufüge JTL-POS - Fehler und Bugs 1
Neu Exportformate liefern nur netto Werte für Versandkosten seit JTL Shop 5.5.0 Betrieb / Pflege von JTL-Shop 5
Neu Eingeschränktes Kundenkonto - nur Guthaben User helfen Usern - Fragen zu JTL-Wawi 6
Rechnung mailen nur noch ein kleiner Teil JTL-Wawi 1.9 0
Neu Video auf Mobilgeräten startet automatisch im Vollbildmodus anstatt nur wie eingebettet auf der Website Allgemeine Fragen zu JTL-Shop 0
Artikelübersicht - in Aufträgen - "Firma" fehlt weiterhin - nur der Name des Ansprechpartners wird angezeigt JTL-Wawi 1.10 2
Neu "Bilder zu Plattformen zuordnen" weist beim Import der Artikelstammdaten via Ameise nur einer von dreien JTL-POS Filialen zu. JTL-Ameise - Fehler und Bugs 2
Neu JTL-Connector: Wie kann man Bestände nur von einem Lager (WMS) übertragen? WooCommerce-Connector 3
Umlagerung -> FBA: keine Kartons, nur Palette möglich? JTL-Wawi 1.9 1
Neu JTL WaWi (SQL Server)soll nur auf PC laufen User helfen Usern - Fragen zu JTL-Wawi 9
Neu JTL 1.9.8.0 Suchergebnisse werden nicht gefiltert, sondern nur gelb markiert ? User helfen Usern - Fragen zu JTL-Wawi 4
Neu Ausliefern und Dokumente drucken nur mit WMS Mobile? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Gelöst SumUp am POS lässt nur Einstecken der Karte zu Allgemeine Fragen zu JTL-POS 1
Beantwortet Workflow: Zahlungserinnerung aus dem JTL Guid, versendet beim Testen mehr als nur 1 E-Mail JTL-Workflows - Fehler und Bugs 4
Neu Wie kann ich es so einstellen, dass die Verfügbarkeit schon in der Suche und der Kategorieübersicht angezeigt wird, anstatt nur auf der Artikelseite? Allgemeine Fragen zu JTL-Shop 0
DHL Höherversicherung nur in Abhängigkeit vom Warenwert JTL-Wawi 1.9 2
Neu Die Sprachvariable productInflowing nur das Datum anzeigen lassen Betrieb / Pflege von JTL-Shop 1
Neu Kindartikel zeigt nur Preis vom Vater an trotz Aufpreis Allgemeine Fragen zu JTL-Shop 0
Zebra ZD621 druckt nur halbe Etiketten, Druck bricht unten ab – Lösung? JTL-Wawi 1.9 6
Einen Artikel nur Teilweise gutschreiben, dabei mit Versandkosten verrechnen JTL-Wawi 1.7 0
Neu Amazon in EazyAuction einbinden - NUR FBM - FBA ausschließen Einrichtung und Installation von JTL-eazyAuction 2
Neu Artikeletikett - Barcode wird nicht oder nur teilweise gedruckt Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 3
Neu Ist das möglich? Verwiegepflicht nur bei bestimmtem Aufträgen? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Neu Nachricht wird nicht verschickt - Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt User helfen Usern - Fragen zu JTL-Wawi 1
Neu Per SQL eine Liste nicht lieferbarer Artikel im Auftrag erstellen User helfen Usern - Fragen zu JTL-Wawi 4
0% UST für eine Kundengruppe einstellen möglich? JTL-Wawi 1.9 1
Neu Doofinder kann keine Suchmaschine erstellen: Problem beim Versuch eine Suchmaschine zu erstellen Plugins für JTL-Shop 0
Neu Wie richte ich es so ein, dass alle vom Shop versendeten Mails per BBC an eine bestimmte Mail gehen (SMTP) Allgemeine Fragen zu JTL-Shop 1
Neu Gibt es eine Möglichkeit im On Page Composer einen Entwurf als Vollbild zu sehen? Ohne die Menüleiste des Editors nebendran? User helfen Usern - Fragen zu JTL-Wawi 6
Neu Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt User helfen Usern - Fragen zu JTL-Wawi 1
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt - Artikel JTL-Wawi 1.10 5
Neu Gleiche Artikel werden beim Kauf nicht als eine Auftragsposition zusammengefasst Otto.de - Anbindung (SCX) 0
Neu Wie läuft eine Bestellung ab und wie bekomme ich die Aufträge aus dem Shop in die Wawi übertragen? Betrieb / Pflege von JTL-Shop 0
Dateien Schreiben auf eine NAS JTL-Wawi 1.8 2
Neu Wie kann man PayPal-Kunden eine bestimmte Debitorennummer zuweisen? JTL Ameise - Eigene Exporte 18
Mehrere Rechnungskorrekturen auf eine Rechnung JTL-Wawi 1.7 9
Neu Wie kann ich dem Kunden eine Kopie des 80 mm breiten Kassenbons im DIN A4 Format zur Verfügung stellen? Fragen rund um LS-POS 11

Ähnliche Themen