Seltsamer Filter unter Bestellungen > Bestelldatum

Hallo Community,

vielleicht kann das mal jemand testen:
Es geht um den Filter bei Bestellungen > Bestelldatum.

Wenn ich eintrage: von 2023-12-19 bis 2023-12-19 wird keine Bestellung ausgegeben.
Wenn ich eintrage: von 2023-12-19 bis 2023-12-20 werden alle Bestellungen vom 19.12.23 ausgegeben.
Keine weiteren Filter sind sonst aktiv.

Bei ersterem hätte ich erwartet: exakt alle Bestellungen vom 19.12.23. Bei der zweiten Abfrage hätte ich erwartet vom 19.12. + 20.12.23.

Habe ich hier ein Logikproblem, oder Shopware?

Zudem könnte etwas mehr Platz bereitstehen für das übergebene Datum:
grafik

Kann das jemand bitte testen? Wenn das Problem auch jemand anderes hat, erstelle ich ein Ticket.
Ich kann mir vorstellen, dass irgendwie intern mit dem 12 Stunden System (also am und pm) gerechnet wird und daher ein skuriller Tageswechsel zustande kommt, wenn man das in das 24 Stunden System überträgt. Shopware ist auf Deutsch einstellt.

Shopware 6.5.5.2

grafik

Filter vom 01.12.2023 - 02.12.2023 zeigt nur die Bestellungen vom 01.12.2023 an

Bestellungen, welche das Datum des rechten Filters (bis) haben werden nicht angezeigt.

Wenn ich die Bestellung bis 02.12.2023 anzeigen möchte, dann muss ich bis 03.12.2023 auswählen.

It’s not a bug, it’s Shopware logic…

Ticket ist erstellt, bitte voten: Shopware Issuetracker

Scheinbar sollte das Ticket bereits umgesetzt sein, allerdings besteht das Probem mit Version 6.6.5.1 bei mir weiterhin. Wenn ich alle Bestellungen vom 08.08.24 anzeigen lassen möchte (Filter vom 08.08-08.0824), wird keine Bestellung angezeigt, obwohl es einige Bestellungen zu diesem Tag gibt.

Voten kann man ja dafür nicht mehr…

Ich habe es Shopware direkt nochmal gemeldet, danke fürs Testen in der aktuellen Version.

Update: neues Ticket ist aufgemacht: Date filter in the orders does not work as expected (reopen NEXT-32904) · Issue #4557 · shopware/shopware · GitHub

Das Problem ist vermutlich, das der intern beim Enddatum 00:00:00 als Uhrzeit verwendet bzw. gar keine Uhrzeit angibt (also nur das Datum). Kenne das Problem aus anderen Programmierungen. Für die DB sieht das dann eben so aus

2024-08-08 00:00:00 - 2024-08-08 00:00:00

Wenn also nicht jemand zufällig genau um Mitternacht bestellt hat, findet diese Abfrage nichts. Sie müsste so aussehen

2024-08-08 00:00:00 - 2024-08-08 23:59:59

Sicher?
Dann sollte man nach meinem Verständnis bei dieser Logik bei der Eingabe 24.8. bis 25.8. nur Einträge vom 24.8. finden.
Es werden aber die Einträge vom 24. und vom 25. gefunden.

Ich muss nochmal blöd fragen… Wie vote ich nochmal genau auf GitHub?

Wenn ich eintrage: von 2023-12-19 bis 2023-12-20 werden alle Bestellungen vom 19.12.23 ausgegeben.

Filter vom 01.12.2023 - 02.12.2023 zeigt nur die Bestellungen vom 01.12.2023 an

Darauf hatte ich mich bezogen. Wenn es bei Dir so funktioniert 24. -25. zeigt beide Tage, dann wäre es ja korrekt.

Nachtrag, eben in einem „sauberen“ Testshop (6.6.5.1, ohne Plugins) probiert, Bestellung vom 24.05. wird nur gefunden, wenn ich 24.-25.05 angebe, bei 24.-24.05 sagt er „Noch keine Bestellungen“.

Sorry, es ist schon so wie du es beschreibst.
Gestern Abend geriet mir die Anzeige meiner Bestellungen etwas durcheinander, weil Shopware offenbar nicht mit der lokalen Zeit, sondern mit UTC rechnet.

Und die Uhrzeit ist auch verschwunden - vorher konnte man nach Uhrzeiten eingrenzen.

Uhrzeit ist mir persönlich nicht so wichtig zu filtern. Hat vielleicht einen Grund warum es weggefallen ist. Vielleicht wirklich Probleme mit unterschiedlichen Systemzeiten.

Die Datumseingrenzung muss nur exakt so funktionieren wie es intuitiv richtig ist.

Wenn man sich die übergebenen Werte ansieht, habe ich es schon genau richtig geahnt:

{
  "gte": "2024-09-18T00:00:00",
  "lte": "2024-09-18T00:00:00"
}

in dem Hidden Field steht aber kurioserweise

value="2024-09-18T23:59:59"

Also geht das nun in der aktuellsten Version 6.6.8.2 oder nicht?

Ansonsten kannst du @Anotherone diese Erkenntnis als issue eröffnen bei Gitlab?

Es gibt im Code eine Stelle, die eigentlich die korrekte Endzeit setzen soll:

            if (this.dateValue.to) {
                const to = new Date(this.dateValue.to);
                to.setHours(23, 59, 59);
                this.dateValue.to = to.toISOString();
            }

Nur leider greift das nicht… immer. Habe eben herausgefunden, das der Filter (fast) funktioniert, wenn man das Enddatum nicht als letztes setzt. D.h. am besten zuerst das Enddatum setzen und dann das Startdatum, dann funktioniert es (bei mir) so:

{
  "gte": "2024-09-18T00:00:00",
  "lte": "2024-09-18T22:59:59.000Z"
}

mal abgesehen davon, das da 22:59:59 steht… Könnte an der UTC liegen. Suche noch nach der Lösung, das es generell sauber funktioniert.