Magento Reporting - Ist es ein Eimer von UTC?

7

Ich hatte erwartet, dass die Magento-Berichterstattung (insbesondere der Bericht über Verkäufe> Bestellungen) die Tage nach Ortszeit belasten würde.

Dies scheint zumindest unter Magento 1.14.2.2 nicht der Fall zu sein. Durch den Vergleich der Rohaufträge mit dem Auftragsbericht wird deutlich, dass einige Aufträge im Bericht nicht korrekt erfasst werden, da sie im Gegensatz zur lokalen Zeitzone per UTC ausgeführt werden.

Die Zeitzone ist im System korrekt eingestellt und die Lebensdauerstatistik wurde aktualisiert.

Ich habe es mit Magento 1.9.2.2 versucht und das Ergebnis scheint von der lokalen Zeitzone abhängig zu sein. Ich denke, dies bedeutet, dass es ein Konfigurationsproblem oder vielleicht ein Fehler sein könnte.

Kann jemand dieses Problem bestätigen oder ablehnen?

surjikal
quelle
Ich habe festgestellt, dass UTC die Zeitzone ist, die in der Datenbank gespeichert ist. Dann wird es unter Verwendung der Geschäftskonfiguration konvertiert, wenn es dem Kunden / im Administrator usw.
angezeigt
Ja, aber ich denke, das, worüber ich mich wundere, ist, wenn es läuft group by, um die Summen zu erhalten, macht es das auf UTC oder Ortszeit? Der Zeitstempel wird auf einen Tagesbereich gekürzt.
Surjikal
Soweit ich weiß, sind alle Zeiten in der Datenbank utc. Die Gruppe von wird also nicht UTC sein. Wenn es dann auf der Seite angezeigt wird, wird es konvertiert. Ich musste einen Code zurücksetzen, den ich beim Speichern der Datenbankzeit auf die zentrale Standardzeit erzwungen hatte, da die Berichte um 5 Stunden verschoben waren. So kann ich herausfinden, wie es in der Datenbanktabelle ist.
RussellAlbin

Antworten:

2

Ich kann dieses Verhalten in 1.14.2.3 bestätigen und es scheint ein Fehler zu sein.

Wenn Sie sich ansehen, wie die Berichtsaggregation funktioniert, werden Sie feststellen, dass in Mage_Reports_Model_Resource_Report_Abstract::_getTableDateRangeSelect()der Gruppe nach Datum folgendermaßen vorgegangen wird:

$select  = $adapter->select()
    ->from(
        array($alias => $table),
        $adapter->getDatePartSql(
            $this->getStoreTZOffsetQuery(array($alias => $table), $alias . '.' . $column, $from, $to)
        )
    )
    ->distinct(true);

Wo getStoreTZOffsetQuery()soll eine Zeitzonenkonvertierung von UTC in die aktuelle Administratorzeitzone durchgeführt werden?

Ich habe nicht weiter debuggt, um herauszufinden, wo es schief geht, daher habe ich leider auch keine Lösung dafür.

Fabian Schmengler
quelle