Meiner Meinung nach rundest Du zu oft. Versuch mal
Delphi-Quellcode:
cast(
round(BruttoSumme * (MwStSatz / (MwStSatz + 100)), 2)
as NUMERIC(18,2)) as Mwst,
cast(
BruttoSumme - (round(BruttoSumme * (MwStSatz / (MwStSatz + 100)), 2))
as NUMERIC(18,2)) as Netto
Kann's momentan nicht selbst testen, sorry.
Es muss so oft gerundet werden, da sonst mit den falschen Werte gerechnet wird. BruttoSumme (das ist Positionsumme) kann bis zu 4 Nachkommastellen haben. Vor dem weiterrechnen muss die auf 2 Stellen gerundet werden, da die Gesamtsummen der Rechnung 2 Nachkommastellen haben müssen. Wenn ich das Runden zum Testen mal *komplett* entferne, stimmt MwSt aber Netto ist immer noch unverändert falsch. Edit: BruttoSumme ist hier die Summe aller einzelnen Rechnungspositionen. Die Summe wird hier gerundet. Und nicht die einzelnen Rechnungspositionen.