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

elcheffe

Sehr aktives Mitglied
7. Juli 2010
602
81
... 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
485
168
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.934
119
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
6
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
485
168
"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
39
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
416
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
368
51
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 Vorschaubild aus dem Musterbeispiel geht nicht weg, wenn Bild übertragen wurde Allgemeine Fragen zu JTL-Shop 3
Neu DPD-Businessvertrag nicht möglich, wenn man Bestellungen aus Amazon abwickelt? JTL-ShippingLabels - Ideen, Lob und Kritik 0
Neu Datenabgleich schlägt fehl, wenn Hersteller zu Artikeln zugewiesen sind oder die Hersteller Bilder haben. WooCommerce-Connector 1
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
Seit Update auf 1.11.4 werden Rechnungen nicht mehr korrekt gespeichert / nur Mini-Ausschnitt sichtbar JTL-Wawi 1.11 4
Neu Firmensitz CH, Lager DE, Lieferung nur DE, Steuereinstellung? User helfen Usern - Fragen zu JTL-Wawi 7
Neu Varianten Artikel erstellen mit Lister 2.0 nur für Amazon Amazon-Lister - Ideen, Lob und Kritik 0
Neu Artikel KinderArtikel anlegen: Workflow "Artikel erstellt und Artikel geändert" werden NUR beim Vaterartikel gestartet User helfen Usern - Fragen zu JTL-Wawi 0
Neu Landingpage bei nur 1 Artikel in einer Kategorie Betrieb / Pflege von JTL-Shop 1
Neu Datenschutzinformation nur ohne Checkbox Allgemeine Fragen zu JTL-Shop 0
Neu Blog nur maximal 3 Kategorien Tiefe? Allgemeine Fragen zu JTL-Shop 2
Neu Amazon Lister 2.0 neues Angebot oder nur bestehende ändern ? Amazon-Lister - Fehler und Bugs 15
Neu Pickliste Hinweis anzeigen nur bei bestimmten Verkaufkanal User helfen Usern - Fragen zu JTL-Wawi 0
Neu Labeldrucker Toshiba B-EV4 druckt nur 2/3 des Versandlabels User helfen Usern 1
eBay-Vorlage übernimmt nur Nettopreis – Steuersatz bleibt immer auf 0,0 % JTL-Wawi 1.11 7
Packplatzwaage geht nur einmalig nach Zuweisung JTL-Wawi 1.11 10
In Diskussion WF funktioniert nur einen Tag lang JTL-Workflows - Fehler und Bugs 16
Neu Amazon-Bestellungen werden nur Verzögert importiert Amazon-Anbindung - Fehler und Bugs 4
Neu JTL-Shop Admin Bereich und Shop nur noch 504 Gateway Time-out ( Hosting über JTL ) User helfen Usern - Fragen zu JTL-Wawi 4
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 2
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 Eine Amazon-Abrechnung wurde mit Verspätung generiert und fehlt jetzt in WAWI Amazon-Anbindung - Fehler und Bugs 3
Neu Auftrag stornieren, nachdem eine Teillieferung retourniert wurde? Arbeitsabläufe in JTL-Wawi 1
Eine GTIN zwei Artikel JTL-Wawi 1.8 4
Neu JTL Wawo Objektverweis wurde nicht auf eine Objektinstanz festgelet JTL-Wawi - Fehler und Bugs 0
Neu Bitte legen Sie eine Retoure in JTL-Wawi an, damit eine korrekte Zuordnung zu den Stücklistenartikeln möglich ist. - WMS Retoure JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Neu PayPal-Meldung: XXX versendet nicht an diesen Ort. Verwenden Sie eine andere Adresse. Plugins für JTL-Shop 1
Neu Externer Beleg Vorlage - eine Katastrophe! Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 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 7
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

Ähnliche Themen