Post by micrdy » Thu Apr 23, 2015 5:36 pm

Hallo

OC 2.0.1.1
Ist es normal, dass wenn ich den Währungskurs im Backend ändere, dass dann auch die schon getätigten Bestellungen die Preise ändern? Das ist doch komisch. Die Preise sollten doch immer gleich bleiben.

Grüße

New member

Posts

Joined
Mon Mar 09, 2015 6:40 pm

Post by OSWorX » Thu Apr 23, 2015 7:49 pm

Höre ich heute zum ersten Mal.

Zunächst mal bitte wenn schon 2.x dann die neueste Version, in diesem Fall 2.0.2.0 verwenden.

Und wenn schon nicht im Einsatz sondern ältere 2.x dann damit gegenprüfen ob es damit auch auftritt.
Wenn, dann ist es ein Fehler.
Wenn nicht, dann war es ein Fehler der schon bereinigt wurde!

Full Stack Web Developer :: Dedicated OpenCart Development & Support DACH Region
Contact for Custom Work / Fast Support.


User avatar
Administrator

Posts

Joined
Mon Jan 11, 2010 10:52 pm
Location - Austria

Post by micrdy » Thu Apr 23, 2015 8:50 pm

Danke für die Antwort. Dann gehe ich mal davon aus, dass das Problem mit der Extension Currency Tools Pro zusammenhängt. Vielen Dank.

New member

Posts

Joined
Mon Mar 09, 2015 6:40 pm

Post by OSWorX » Thu Apr 23, 2015 9:00 pm

micrdy wrote:Danke für die Antwort. Dann gehe ich mal davon aus, dass das Problem mit der Extension Currency Tools Pro zusammenhängt. Vielen Dank.
Damit wären wir dann auch schon bei Punkt 3: immer alles in der 1. Nachricht mit anführen was zusätzlich installiert wurde!
Wird sicher damit zu tun haben denn bisher habe ich noch nie was davon gehört ...

Full Stack Web Developer :: Dedicated OpenCart Development & Support DACH Region
Contact for Custom Work / Fast Support.


User avatar
Administrator

Posts

Joined
Mon Jan 11, 2010 10:52 pm
Location - Austria

Post by micrdy » Fri Apr 24, 2015 3:25 pm

Habe auf StackOverflow gelesen, dass das eine Funktion ist, die so implementiert wurde?
Nach diesem Code ist das wohl so:

Code: Select all

$results = $this->model_sale_order->getOrders($filter_data);

        foreach ($results as $result) {
            $data['orders'][] = array(
                'order_id'      => $result['order_id'],
                'customer'      => $result['customer'],
                'status'        => $result['status'],
                'total'         => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
                'date_added'    => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
                'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])),
                'shipping_code' => $result['shipping_code'],
                'view'          => $this->url->link('sale/order/info', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, 'SSL'),
                'edit'          => $this->url->link('sale/order/edit', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, 'SSL'),
                'delete'        => $this->url->link('sale/order/delete', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, 'SSL')
            );
        }
Und bei deaktivieren der Extenstion besteht das Problem immer noch.

New member

Posts

Joined
Mon Mar 09, 2015 6:40 pm

Post by OSWorX » Fri Apr 24, 2015 4:07 pm

Nett wenn das so irgendwo steht ...
Diese Zeilen aber betreffen nur die Auftragsübersicht (Liste).
Darin werden keine bestehenden Aufträge geändert!

Zusätzlich habe ich mir jetzt sowohl model als auch controller diesbezüglich angesehen.
Und nichts gefunden was einen bestehenden Auftrag bzw. dessen Summen ändert.

Lasse mich aber gerne eines Besseren belehren - falls ich was übersehen habe.

Full Stack Web Developer :: Dedicated OpenCart Development & Support DACH Region
Contact for Custom Work / Fast Support.


User avatar
Administrator

Posts

Joined
Mon Jan 11, 2010 10:52 pm
Location - Austria

Post by micrdy » Fri Apr 24, 2015 5:18 pm

Doch. Diese Zeile:

Code: Select all

'total'  => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']), 
im controller der Auftragsliste passt den Preis an.

Code: Select all

$result["total"] 
ist der korrekte Wert aus der Datenbank der den Preis zum Bestellzeitpunkt angibt

Code: Select all

$result["curreny_value"] 
ist der aktuelle Wechselkurs

Und die format() Methode berechnet dann den aktuellen Preis daraus (inkl. Wechselkurs)
Und das vorgehen ist bei allen Order-Controllern gleich.
Was für ein sinnloses Feature.

New member

Posts

Joined
Mon Mar 09, 2015 6:40 pm

Post by OSWorX » Fri Apr 24, 2015 5:33 pm

Also, Kraut mit Rüben zu vermischen, bringt hier garnix.

Alles was mit

Code: Select all

$result
beginnt, ist ein Ergebnis aus der Datenbankabfrage.
Also hier alles was zur Bestellung gespeichert wurde.

In der Funktion

Code: Select all

format($number, $currency = '', $value = '', $format = true)
ist das hier:

Code: Select all

if ($value) {
			$value = $value;
		} else {
			$value = $this->currencies[$currency]['value'];
		}

		if ($value) {
			$value = (float)$number * $value;
		} else {
			$value = $number;
		}
heisst also dass WENN der Wert

Code: Select all

$value
übergeben wurde, er auch damit formatiert wird.
Ansonsten (!!) mit dem hier:

Code: Select all

$value = $this->currencies[$currency]['value'];
Was gleichbedeutend wäre mit dem aktuell umgerechneten Währungskurs.

Und

Code: Select all

$value
kommt wiederum aus der vorigen Datenbankabfrage und ist GLEICH mit dem bereits gespeicherten Wert:

Code: Select all

'currency_value'          => $order_query->row['currency_value'],
Heisst für mich wiederum, dass kein Wert gespeichert wurde, denn ansonsten würde er mit genau diesem rechnen.
Würde auch sonst keinen Sinn machen, denn Bestellwert bleibt immer gleich, egal wie sich eine Währung geändert hat.
Buchhalterisch ist das wieder ein anderes Thema ...

Und dass jetzt nach so vielen Jahren auf einmal diese Funktion geändert wurde, ist mir neu.
Sowie du der Einzige bist bei dem es jetzt so gerechnet würde.
Somit genug Zeit damit verplempert.

Full Stack Web Developer :: Dedicated OpenCart Development & Support DACH Region
Contact for Custom Work / Fast Support.


User avatar
Administrator

Posts

Joined
Mon Jan 11, 2010 10:52 pm
Location - Austria

Post by micrdy » Fri Apr 24, 2015 5:55 pm

Danke für deine ausführliche Antwort.

Zu deinem letzten Satz: Das hier ist ein Forum, in dem sich Nutzer austauschen und Hilfestellung brauchen. Daher hast du keine Zeit verplempert und mir sehr geholfen. Ich werde mich meinem Problem weiter annehmen. Mit dieser Einstellung gewinnst du keine Freunde. Trotzdem vielen Dank!

New member

Posts

Joined
Mon Mar 09, 2015 6:40 pm

Post by micrdy » Fri Apr 24, 2015 6:12 pm

Sorry nochmal ich. ;)

Also $result["value"] ist immer der Wechselkurs zum Bestellzeitpunkt. Dieser wird dann in format() multilpiziert:

Code: Select all

if ($value) {
			$value = (float)$number * $value;
		} else {
			$value = $number;
		}
Wieso wird der Wechselkurs denn überhaupt aus der Datenbank geholt und an format() übergeben? Oder sollte wenn alles normal funktioniert $value 0 sein? Bei den Orders sollte $value ja null sein, damit $value einfach $number bleibt. In $number steht ja schon der richtige Wert drin.

Da der Wert value ja im model/sale/order.php in Zeile 160 aus der DB geholt wird, ist er NIE null. Daher tritt immer die Multiplikation in Kraft.

New member

Posts

Joined
Mon Mar 09, 2015 6:40 pm
Who is online

Users browsing this forum: No registered users and 5 guests