GX-Task #68464
geschlossenImprove overload ability of CheckoutShippingContentControl::proceed() and ot_coupon::calculate_tax_deduction() | Überladbarkeit von CheckoutShippingContentControl::proceed() und ot_coupon::calculate_tax_deduction() verbessern
0%
Die Klassen CheckoutShippingContentControl und ot_coupon bieten durch neue Methoden bessere Möglichkeiten zur Überladbarkeit
Beschreibung
The third party developer Holger Schrörs from Xycons is complaining about the missing possibility to overload logic in CheckoutShippingContentControl::proceed() and ot_coupon::calculate_tax_deduction(), because the methods are much to long, so you cannot overload parts of it. The code should be split into several methods.
Example: In CheckoutShippingContentControl::proceed() it should be possible to overload the value of MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER
Ein Rabatt-Kupon hat einen festen oder einen prozentualen Rabatt. Ist es ein fester Betrag, kann er zusätzlich als versandkostenfrei bestimmt werden, andernfalls nicht. Ebenfalls kann ein Mindestbestellwert festgelegt werden, ab dem der Rabatt-Kupon gültig ist. Ob der Wert brutto oder netto verrechnet wird hängt von der Einstellung im ot_coupon-Zusamenfassung-Modul ab. Ebenso kann im ot_coupon-Zusamenfassung-Modul festgelegt werden, ob die Versandkosten an den Warenwert angerechnet werden sollen, was relevant für den Mindestbestellwert und die anteilge Verrechnung der MwSt. ist. Wenn man die Versandkosten nicht anrechnen möchte, muss die Anzeigereihenfolge auf 29 gestellt werden, also niedriger sein, als die Versandkosten. Ein Rabatt-Kupon reduziert den Warenwert, muss also auch die MwSt. entsprechend reduzieren. Daher ist im Zusammenfassung-Modul die Option "MwSt. neu berechnen" auf "Standard" zu setzen. Es ist auch möglich die MwSt. nicht zu reduzieren, indem die Option "None" gewählt wird. Ein Use-Case dafür ist mir aber nicht bekannt. Rabatt-Kupons können auch mit der Option "Credit Note" als Gutschrift behandelt werden. Dann wird buchalterisch nicht mehr der Warenwert reduziert und es kann über die Option "MwSt.-Satz" festgelegt werden, ob und welche Steuer enthalten ist, die dann ensprechend verrechnet wird. Gutschriften sind auch unüblich, hier eignet sich das Gutschein-System besser (ot_gv).
Beispiel 1: Kupon enthält MwSt.
Ein 10 EUR Rabatt-Kupon, der den Warenwert inkl. Versandkosten (aber nicht versandkostenfrei) und die MwSt. reduziert, macht dies anteilig.
Artikel A 19% MwSt.: 10 EUR brutto, 8,4034 EUR netto + 1,5966 19% MwSt.
Artikel B 7% MwSt.: 10 EUR brutto, 9,3458 EUR netto + 0,6542 7% MwSt.
Versandkosten 19% MwSt.: 10 EUR brutto, 8,4034 EUR netto + 1,5966 19% MwSt.
Das sind 20 EUR inkl. 19% MwSt. und 10 EUR inkl. 7% MwSt., also 66,667% 19% MwSt.-Anteil und 33,333% 7% MwSt.-Anteil, so dass bei einem Kuponwert von 10 EUR brutto dieser 33,3% 7% MwSt. und 66,7% 19% MwSt. enthält. Die Rechnung dazu lautet:
10 * 0,66667 = 6,6667
(6,6667 / 1,19 - 6,6667) * -1 = 1,0644
10 * 0,33333 = 3,3333
(3,3333 / 1,07 - 3,3333) * -1 = 0,2181
Bestellung ohne Kupon
Artikel A: 10 EUR
Artikel B: 10 EUR
Versandkosten: 10 EUR
inkl. 19& MwSt.: 3,19 EUR (3,1932)
inkl. 7% MwSt.: 0,65 EUR (0,6542)
Summe: 30 EUR
Bestellung mit 10 Kupon
Artikel A: 10 EUR
Artikel B: 10 EUR
Versandkosten: 10 EUR
Kupon: -10 EUR
inkl. 19& MwSt.: 2,13 EUR (3,1932 - 1,0644 = 2,1288)
inkl. 7% MwSt.: 0,44 EUR (0,6542 - 0,2181 = 0,4361)
Summe: 20 EUR
Beispiel 2: Kupon enthält keine MwSt.
Ein 10 EUR Rabatt-Kupon, der den Warenwert inkl. Versandkosten (aber nicht versandkostenfrei) und die MwSt. reduziert, macht dies anteilig.
Artikel A 19% MwSt.: 10 EUR brutto, 8,4034 EUR netto + 1,5966 19% MwSt.
Artikel B 7% MwSt.: 10 EUR brutto, 9,3458 EUR netto + 0,6542 7% MwSt.
Versandkosten 19% MwSt.: 10 EUR brutto, 8,4034 EUR netto + 1,5966 19% MwSt.
Das sind 16,8068 EUR exkl. 19% MwSt. und 9,3458 EUR exkl. 7% MwSt., also 64,26416116% 19% MwSt.-Anteil und 35,73553546% 7% MwSt.-Anteil, so dass bei einem Kuponwert von 10 EUR netto dieser 35,73553546% 7% MwSt. und 64,26416116% 19% MwSt. enthält. Die Rechnung dazu lautet:
10 * 0,6426416116 = 6,426416116
6,426416116 * 0,19 = 1,221019062
10 * 0,3573553546 = 3,573553546
3,573553546 * 0,07 = 0,250148748
Bestellung ohne Kupon
Artikel A: 8,40 EUR (8,4034)
Artikel B: 9,35 EUR (9,3458)
Versandkosten: 8,40 EUR (8,4034)
Summe netto: 26,15 EUR
zzgl. 19& MwSt.: 3,19 EUR (3,1932)
zzgl. 7% MwSt.: 0,65 EUR (0,6542)
Summe: 30 EUR
Bestellung mit 10 Kupon
Artikel A: 8,40 EUR (8,4034)
Artikel B: 9,35 EUR (9,3458)
Versandkosten: 8,40 EUR (8,4034)
Kupon: -10 EUR
Summe netto: 16,15 EUR (16,1526)
zzgl. 19& MwSt.: 1,97 EUR (3,1932 - 1,221019062 = 1,972180938)
zzgl. 7% MwSt.: 0,40 EUR (0,6542 - 0,250148748 = 0,404051252)
Summe: 18,53 EUR (18,52883219)
Beim Testen sollte auch die Einschränkung eines Kupons auf Artikel und Kategorien überprüft werden, da die Logik dazu ebenfalls neu geschrieben wurde.