Hallo,
ich bin gerade dabei, eine Umbuchungsfunktion zu entwickeln; d.h., bei einer abgeschlossenen Bestellung soll ein Produkt durch ein anderes ersetzt werden.
Nach etwas Reverse Engineering erschien es unkompliziert machbar, jedoch hänge ich momentan an einem Problem, das alles ins Wanken bringt : Gesamtpreis und Steuern der geänderten Bestellung werden nicht korrekt berechnet.
Nachfolgend der vereinfachte Code:
PHP-Code:
// - $order (Order) die Bestellung, die manipuliert werden soll
// - $oldProductId (int) ID des Produkts, das ersetzt werden soll
// - $newProductId (int) ID des neuen Produkts
// - $newQuantity (int) Anzahl des neuen Produkts
[gelöscht]
Für eine Bestellung beobachte ich folgendes beispielhaftes Verhalten:
Code:
== Vorher == Betrag
Gesamt: 79.00
Gesamt ohne Steuern: 66.39
MwSt. (19 %): 12.61
== Nachher ==
Gesamt: 83.19 (falsch | statt 99.00)
Gesamt ohne Steuern: 83.19 (korrekt | 83.19 + 0.19 MwSt. × 83.19 = 99.0)
MwSt. (19 %): 12.61 (falsch | s. o.!)
MwSt. (19 %): 13.28 (falsch | keine Ahnung, wie der Wert zustande kommt)
(Zwischensumme jeweils identisch zu Gesamtbetrag)
Ich bin mir nicht wirklich sicher, ob und wie ich mit $cart umgehen muss. Ohne das Setzen einer Cart kam es jedoch zu einem Zugriff auf ein null-Objekt.
Momentan habe ich noch die Hoffnung, dass nur eine Kleinigkeit fehlt und dass nicht die Funktionsweise von Isotope diese "Hack" deutlich erschwert. Habt ihr eine Idee, worin der Fehler liegen könnte?
Besten Dank im Voraus und viele Grüße,
JaiBee
---
Isotope 2.2.0
Contao 3.4.0
Lesezeichen