Neu - Lieferzeit in Wochen / Monaten statt Tagen SHOP-4080 - wo finde ich diese Möglichlichkeit im Admin Bereich

netsrakt

Mitglied
9. März 2023
24
4
Hallo,

mit dem JTL Shop Update auf 5.3.1 ist folgendes neu hinzugekommen:
- Lieferzeit in Wochen / Monaten statt Tagen SHOP-4080.

Frage: Wo finde ich diese Möglichkeit im Admin Bereich und wie kann ich es umsetzten?

Danke für euer Hilfe
Gruß Thomas
 

OliverS

Sehr aktives Mitglied
Mitarbeiter
1. April 2022
121
57
Hückelhoven
Dazu gibt es keine explizite Einstellmöglichkeit im Backend. Es wird automatisch umgerechnet. Ab 15 Tagen wird in Wochen umgerechnet, ab 61 Tagen in Monate. Gerechnet wird dann mit 7 Tagen pro Woche und 30 Tagen pro Monat.

Es gibt defines dafür, um das anzupassen: DELIVERY_TIME_DAYS_TO_WEEKS_LIMIT, DELIVERY_TIME_DAYS_TO_MONTHS_LIMIT, DELIVERY_TIME_DAYS_PER_WEEK und DELIVERY_TIME_DAYS_PER_MONTH. Das wäre dann aber auf eigene Gefahr.
 
  • Gefällt mir
Reaktionen: recent.digital

John

Sehr aktives Mitglied
3. März 2012
3.351
758
Berlin
Ich kann das Ergebnis von JTLs Rechnung nicht ganz nachvollziehen.

Ich habe einem Artikel 58 Tage zusätzliche Bearbeitungszeit gegeben zuzüglich 1-3 Tage aus der Versandart des Shops.
Dem Kunden werden im Frontend "ca 3 Monate" angezeigt.

Ich würde mir die Berechnung gerne mal anschauen, finde das aber nicht...bin auch nicht der Shop Quellcode Kenner.

@OliverS kannst Du mir sagen, in welcher Datei die Berechnung erfolgt?

John
 

John

Sehr aktives Mitglied
3. März 2012
3.351
758
Berlin
OK, ich habe es gefunden.

Code:
ifndef('DELIVERY_TIME_DAYS_TO_WEEKS_LIMIT', 15);
ifndef('DELIVERY_TIME_DAYS_TO_MONTHS_LIMIT', 61);
ifndef('DELIVERY_TIME_DAYS_PER_WEEK', 7);
ifndef('DELIVERY_TIME_DAYS_PER_MONTH', 30);

    public static function getDeliverytimeEstimationText(int $minDeliveryDays, int $maxDeliveryDays): string
    {
        switch (true) {
            case ($maxDeliveryDays < \DELIVERY_TIME_DAYS_TO_WEEKS_LIMIT):
                $minDelivery = $minDeliveryDays;
                $maxDelivery = $maxDeliveryDays;
                $languageVar = $minDeliveryDays === $maxDeliveryDays
                    ? 'deliverytimeEstimationSimple'
                    : 'deliverytimeEstimation';
                break;
            case ($maxDeliveryDays < \DELIVERY_TIME_DAYS_TO_MONTHS_LIMIT):
                $minDelivery = (int)\ceil($minDeliveryDays / \DELIVERY_TIME_DAYS_PER_WEEK);
                $maxDelivery = (int)\ceil($maxDeliveryDays / \DELIVERY_TIME_DAYS_PER_WEEK);
                $languageVar = $minDelivery === $maxDelivery
                    ? 'deliverytimeEstimationSimpleWeeks'
                    : 'deliverytimeEstimationWeeks';
                break;
            default:
                $minDelivery = (int)\ceil($minDeliveryDays / \DELIVERY_TIME_DAYS_PER_MONTH);
                $maxDelivery = (int)\ceil($maxDeliveryDays / \DELIVERY_TIME_DAYS_PER_MONTH);
                $languageVar = $minDelivery === $maxDelivery
                    ? 'deliverytimeEstimationSimpleMonths'
                    : 'deliverytimeEstimationMonths';


Das ist aber arg grobschlechtig gemacht.
In meinem Fall (58+3 Tage) / 30 = 2,03 Monate und dann mit ceil() auf 3 aufgerundet.

Wieso wird hier mit ceil() generell aufgerundet, satt mit round() korrekt zu arbeiten?
Persönlich finde ich Monate überflüssig und würde immer nur auf maximal Wochen runden.
 

MichaelH

Sehr aktives Mitglied
17. November 2008
14.231
1.802
Wir haben noch nie die JTL-Lieferzeit verwendet, sondern verwenden den Lieferstatus beim Artikel.
Da haben wir eine ganze Liste für unterschiedlichste Verwendung und das klappt super.

Eine automatische Berechnung benötigen wir jedoch nicht, sondern stellen den Status eben manuell ein und ändern diesen im Bedarfsfall.

Bei Massenänderungen auch über die Ameise, so steht bei uns nun vielfach
z.B.
"Lieferzeit 2-3 Werktage, Versand am 2.1.2025"
"Lieferzeit 5-10 Werktage, Versand am 9.1.2025"
etc.
da wir bis 2.1. geschlossen haben.