Herausgeputzte Stiefmutter

Stiefmutter herausgeputzt

Ich muss zugeben, dass ich das Thema Mehrwertsteuer bisher immer etwas stiefmütterlich behandelt habe. Nicht, dass ich auf Rechnungen keine MwSt (Abkürzung für Mehrwertsteuer) ausgwiesen oder gar dem Finanzamt verschwiegen hätte. Nein, ich hatte einfach den Faktor 19% fest einprogrammieriert und konnte so, wo immer es mir beliebte die MwSt berechnen. Dabei war mir schon immer klar, diese Quick-n-Dirty-Lösung musste irgendwann einer ordentlichen Implementierung weichen. Allerdings hielt mein Provisorium nun schon eine halbe Ewigkeit und ich hätte nicht im Traum daran gedacht, dass der MwSt-Satz für ein halbes Jahr gesenkt werden würde. (Immerhin galt der aktuelle MwSt-Satz bereits 13 Jahre und konnte daher leicht mit einer Naturkonstanten verwechselt werden.)

Jetzt ist es beschlossen: der MwSt-Satz beträgt ab dem ersten Juli 2020 16% (bzw. 5% für den ermäßigten Satz) und dann ab 2021 wieder 19% (bzw. 7%). Als ich davon erfuhr war mir klar, dass sich dieses Problem nicht durch ein einfaches Ersetzten des MwSt-Faktors (aus 19% mach 16%) lösen läßt. Die Zeit für eine ordentliche Implementierung war gekommen! Dabei mussten vor allem die folgenden Probleme angegangen werden:

  • Die 19% im Quellcode mussten durch etwas dynamisches ersetzt werden
  • Es müssen verschiedene MwSt-Sätze (normal und ermäßigt) abgebildet werden
  • Jedes Produkt muss einem MwSt-Satz zuzuordnen sein
  • Jede Postion in einer Rechnung und einem Angebot muss einem MwSt-Satz zuzuordnen sein
  • MwSt-Sätze können sich ändern - es muss also eine Historie geführt werden
  • Für die MwSt zählt das Datum der Leistungserbringung

Also ging ich daran die MwSt-Sätze in einer Tabelle abzubilden. Das hat nicht nur den Vorteil, dass es beliebig viele MwSt-Sätzte geben kann, diese können auch von Benutzer des Buchhaltungssystems selbst verwaltet werden. Den Produkten sowie den Rechnungs- und Angebotspositionen einen MwSt-Satz zuzuweisen war reine Fleißarbeit. Daraufhin konnte ich die Hardcoded-19%-Regeln durch eine VAT-API zur Berechnung der MwSt ersetzen. Dabei galt es zu beachten, dass die MwSt-Berechnung sowohl auf dem Server als auch auf Client-Seite (im Browser) statt findet. Die VAT-API musste also durch eine AJAX-Schnittstelle verbunden werden.

Das Problem der Änderungen an einem bestimmten Datum hatte ich bereits für die Produktpreise gelöst. Hier wird jeder Preis mit einem Datum markiert: "Neuer Preis € 20,- gültig ab 1. Dezember 2020." Das vereinfacht zum einen die zeitgenaue Umstellung von Preisen (ohne dass jemand um Mitternacht die neuen Preise eintragen muss) und führt außerdem Protokol, wie sich die Preise entwickelt haben. Das mag zunächst wie ein unnützes Nice-To-Have-Feature erscheinen, erlaubt es aber eine sechs Monate alte Rechnung zu korrigieren und die damals gültigen Preise zu verwenden. Also werden nun auch die MwSt-Sätze mit Historie gepflegt. Dadurch steigt natürlich wiederum die Komplexität der Berechnung: Für die Berechnung der MwSt wird also nicht nur der MwSt-Satz und der Nettobetrag, sondern auch noch ein Datum benötigt.

Das relevante Datum für die Berechnung der MwSt ist das Datum der Leistungserbringung. Egal ob das Unternehmen der Ist- oder der Soll-Besteuerung unterliegt und egal ob es sich um An-, Voraus- oder Abschlagszahlungen handelt. Es ist also durchaus möglich, dass in einer Rechnung 19% und 16% MwSt berechnet werden müssen. Beispielwesweise wenn eine Leistung im Juni und die anderen um Juli erbracht wurde, beide aber im Juli abgerechnet werden. Das macht naturlich die Ausweisung der MwSt auf Rechnungen wieder etwas komplexer. Auch Rabatte können nicht mehr einfach vom Netto-Betrag abgezogen werden. Diese müssen wiederum anteilig die MwSt der verschiedenen Sätze reduzieren. Gleiches gilt für Abschlagszahlungen (Anzahlungen) - auch hier müssen die Verhältnisse der MwSt-Sätze berücksichtigt werden.

So hat sich in der letzten Woche die Stiefmutter Mehrwertsteuer ganz schön herausgeputzt. Zusammen mit dem Shop-, Buchungs- und Veranstaltungssystem muss sich das Buchhaltungssystem nicht hinter dem Ofen verstecken. Im Gegenteil, Aschenputtel muss auf dem Ball ganz schön aufpassen, das nicht die Stiefmutter mit dem Prinzen tanzt.

16. Jun. 2020 (12:24) | gERD Schaufelberger

zur Liste

Suche

Aktuelle Artikel