Mwst-Umstellung Navision & Business Central (Mehrwertsteuer/Umsatzsteuer)

Nav123: Navision, Showare, OrderApp

Kurzübersicht

  1. Schnellstmöglich für die Mehrwertsteuerumstellung vornehmen: Einrichten neuer Sachkonten für neue Steuersätze (Mehrwertsteuer und Vorsteuer)
  2. Neu-Anlegen und Einrichten der neuen (MwSt.-)Produktbuchungsgruppen
  3. Schnellstmöglich: Erweitern der UVA um die neuen Meldepositionen für die Umsatzsteuervoranmeldung
  4. Schnellstmöglich: Prüfen, ob Sie die Spalten Allgemeine Produktbuchungsgruppe (Business Central), Produktbuchungsgruppe (Navision) und die Spalte MwSt. Produktbuchungsgruppe (beide Versionen) in den Einkaufsbestellungen & Verkaufsaufträgen, -Rechnungen,- Gutschriften anzeigen oder sehen können, und ob Sie diese auch editieren können. Durchlesen dieser Anleitung hier, ob alle Schritte klar sind und alles vorbereitet ist.
  5. Am Tag vor der Mehrwertsteuerumstellung, nach Betriebsende, z.B. am 30.6.2020 oder 31.12.2020 (Corona Konjunkturpaket mit Mehrwertsteuersenkung):
    a) Abfakturieren aller gelieferten Aufträge, Buchen aller erfassten Rechnungen und Gutschriften.
    b) Laufen-Lassen der Beleg-Konvertierung (ändert auch die Artikelstammdaten)
  6. Ab dem ersten Tag nach der Mehrwertsteuerumstellung, je nach Bedarf: Evtl. Ändern der (MwSt.-)Produktbuchungsgruppe pro Zeile in den Einkauf/Verkauf-Zeilen, Überprüfen bei jedem Beleg, ob der Endbetrag stimmt.

Voraussetzungen für eine einfache Mehrwertsteuerumstellung in Navision oder Business Central

Sollte diese Seite hier „Komisch“ dargestellt werden (ohne Bild, ohne Formatierung, Ohne Inhaltsverzeichnis), dann rufen Sie sie bitte hier erneut auf.

Wenn Sie die Mehrwertsteuer Produktbuchungsgruppen und die Produktbuchungsgruppen so eingerichtet haben, wie ich es empfehle, dann sind Sie nun aus dem Schneider. Sie benötigen etwa 5 Minuten um die Mehrwertsteuerumstellung vorzubereiten und nach Geschäftsschluss am Tag vor der Mehrwertsteuerumstellung noch einmal ca. 5 Minuten, um die Mehrwertsteuer zu ändern. Dies gilt sowohl für das alte Navision (Dynamics Nav, Attain) als auch für Business Central. Das macht(e) dann auch die Umstellung für die Umsatzsteuersenkung (Mehrwertsteuersenkung) für Corona in 2020 (Konjunkturpaket / Konjunkturprogramm) sehr einfach, genauso wie die am 31.12.2020 folgende Umsatzsteuererhöhung (Mehrwertsteuererhöhung) infolge des 2020er Corona Konjunkturpaketes.

Wie erkennen Sie eine „einfache“ Einrichtung der Buchungsgruppen in Navision / Attain / Business Central? Woran erkennen Sie, dass die Vorbereitung der Mehrwertsteuereinrichtung für die Mehrwertsteuerumstellung leicht ist? Ganz einfach: Schauen Sie bitte in Ihre MwSt.-Produktbuchungsgruppen und in Ihre Produktbuchungsgruppen (Navision) bzw. Allgemeinen Produktbuchungsgruppen (Business Central). Sie sollten in etwa so aussehen:

Ansicht der Allgemeinen Produktbuchungsgruppen in Navision / Business Central für eine leichte Änderung der Mehrwertsteuer
Ansicht der Allgemeinen Produktbuchungsgruppen in Navision / Business Central für eine leichte Änderung der Mehrwertsteuer

Ansicht der Produktbuchungsgruppen in Microsoft Dynamics NAVision / Attain. Auch hier ist die Änderung der Mehrwertsteuer sehr einfach.
Ansicht der Produktbuchungsgruppen in Microsoft Dynamics NAVision / Attain. Auch hier ist die Änderung der Mehrwertsteuer sehr einfach.

Screenshot (Mehrwertsteuer) Mwst.-Produktbuchungsgruppen  Navision RTC/Business Central
Ansicht der (Mehrwertsteuer) MwSt.-Produktbuchungsgruppen in Microsoft Navision RTC/Business Central

Screenshot (Mehrwertsteuer) Mwst.-Produktbuchungsgruppen  Microsoft Dynamics NAVision / Attain
Ansicht der (Mehrwertsteuer) MwSt.-Produktbuchungsgruppen in Microsoft Dynamics NAVision / Attain

Idealerweise haben Sie genau eine MwSt.-Produktbuchungsgruppe und genau eine Produktbuchungsgruppe pro umzustellendem Mehrwertsteuersatz. Vielleicht auch zwei oder drei. Aber nicht zehn oder hundert. Darauf kommt es bei der Änderung der Vorsteuer / Mehrwertsteuer an!
Hinweis: Die Produktbuchungsgruppen sind nur relevant, wenn Sie Mehrwersteuerabhängige Erlös- oder Aufwandskonten haben, z.B. 8300 Erlöse 19% (SKR03) / 4400 Erlöse 19% (SKR04) und 8300 Erlöse 7% (SKR03) / 4300 Erlöse 7% (SKR04). Wenn Sie allerdings „Massen von Buchungsgruppen“ haben, dann sind Sie ein Fall für Einheitlich oder Das passt alles nicht. Aber: Die hier gezeigte Vorgehensweise funktioniert auch dann! Sie ist nur aufwändiger.

Wenn Sie auch steuerabhängige Aufwandskonten / Wareneinkaufskonten haben (z.B. 3010 (Skr03) / 5300 (SKR04) Wareneinkauf bzw. Wareneingang 7% und 3030 (SKR03) / 5400 (SKR04) Einkauf Roh-, Hilfs- und Betriebsstoffe 19%), dann gelten alle hier aufgeführten und dargestellten Vorgehensweisen auch für die Einkaufkonten.

Datev SKR03 Vorgehen Hinweis

Wenn Sie eine Datev-Verbindung benutzten, dann benötigen Sie (in Absprache mit Ihrem Datev-Steuerberater) evtl. ein anderes Vorgehen! Daten benutzt z.B. im SKR03 identische Konten für 7%/5% (Erlöse 8300, Aufwendungen 3300) und 19%/16% (Erlöse 8400, Aufwendungen 8400). Datev erkennt hier die Vorsteuer bzw. Mehrwertsteuer Steuerklasse alleine anhand des Leistungszeitraumes. Wie Datev hier periodenfremde Gutschriften verarbeitet ist noch in Klärung)

Überprüfen Sie dazu auch bitte Ihre UVA (Umsatzsteuervoranmeldung). Wenn diese auf MwSt.-Produktbuchungsgruppen und MwSt.- Geschäftsbuchungsgruppen aufbaut, dann werden Sie auch hier sehr schnell die nötigen Änderungen für die Umsatzsteueränderung drin haben. Siehe dazu weiter unten.

Sie können die gesamte Änderung der Mehrwertsteuer / Vorsteuer auch komplett von Hand, ganz ohne Umstellungstools/Werkzeuge durchführen!

Dieser Leitfaden hier geht davon aus, dass die Einrichtung der Mehrwertsteuer (Mehrwertsteuereinrichtung) bzw. der Vorsteuer (Vorsteuereinrichtung) bereits vorgenommen ist. Evtl. wird es hierzu noch einmal einen gesonderten Leitfaden zur Einrichtung der Mehrwertsteuer (Mehrwertsteuereinrichtung) geben.

Vorbereitung zur Mehrwertsteueränderung

Diese Anleitung wurde konkret für das Jahr 2020 mit der Umstellung von 19% auf 16 % und später wieder Rückstellung auf 19% erstellt. Sie gilt aber grundsätzlich für jede Mehrwertsteuerumstellung / Mehrwertsteueränderung in Navision / Attain / Business Central. Sie gilt gleichlautend auch z.B. für die Umstellung von 7% auf 5% und jede andere Steueränderung.
Tipp: Üben Sie diese Umstellung einmal in Ihrer Testumgebung.

  1. Sollten Sie noch aus der Zeit von vor dem 1.1.2007 Ihre alten 16% MwSt.-Produktbuchungsgruppen haben, so deutet dies auf eine mangelhafte Datenpflege hin, zu der wir uns einmal unterhalten sollten. Sie sollten aus verschiedenen Gründen keine Daten älter als 10 (11) Jahre in Ihrem Navision haben. In diesem Fall gibt es aber eine kleine Erleichterung: Sie können diese Einrichtung einfach jetzt weiter benutzen!
  2. Dieser Block gilt ebenfalls auch z.B. für die Umstellung von 7% auf 5% und jede andere Steuerumstellung.
  3. Anlegen der neuen MwSt.-Produktbuchungsgruppe, z.B. „16%“ oder „V16“ oder „Voll16“. Orientieren Sie sich hierbei einfach an der später abzulösenden Mehrwertsteuerproduktbuchungsgruppe.
  4. Bei Bedarf (siehe weiter oben) legen Sie ebenfalls eine neue passende allgemeine Produktbuchungsgruppe an.
  5. Richten Sie auch die Buchungsgruppenmatrix und die MwSt. Buchungsmatrix passend dazu ein. Denken Sie bitte daran, dass Sie in allen Navisionversionen leicht (Business Central) bis kinderleicht (Navision) die Einrichtung aus einer anderen Buchungsmatrixeinrichtung kopieren können!
Beispiel der Mwst. Buchungsmatrix Einrichtung für 16% im SKR03 für Navision / Business central
Einrichtung der MwSt. Buchungsmatrix für 16% im SKR03 in Navision RTC / Business Central
Screenshot der Mehrwertsteuer Buchungsmatrix Einrichtung für 16% im SKR03 in Navision / Attain / Dynamics NAV
Einrichtung der Mehrwertsteuer Buchungsmatrix für 16% im SKR03 in Navision / Dynamics NAV / Attain
Screenshot der neuen Buchungsgruppen und Mehrwertsteuer Buchungsgruppen in Navision am Beispiel für das Corona Konjunkturpaket 2020 für die Mehrwertsteuer Umstellung

Beispiel für die neuen Produktbuchungsgruppen und Mehrwertsteuer Produktbuchungsgruppen in Navision am Beispiel des Corona Konjunkturpakets 2020 für die Mehrwertsteuer Umstellung

6. Erweitern Sie Ihre Umsatzsteuervoranmeldung um die neuen UVA-Meldepositionen.
51 Umsätze zu 16 % MwSt. (51 war die Meldeposition für 16% bis 2006, vermutlich wird sie auch für die 16% Mehrwertsteuer des Corona Konjunkturpakets 2020 genutzt werden)
?? Umsätze zu 5 % MwSt. (Hier wurde derzeit noch keine Umsatzsteuervoranmeldung Positionsnummer für die Umsatzsteueränderung im Zusammenhang mit dem Corona Konjunkturpaket bekanntgegeben).

Umsatzsteuer-voranmeldung UVA im „alten“ Navision (Bis 2009R2, z.B. Navision 2.01,2.60,3.01…, Attain):
Finanzmanagement oder Finanzbuchhaltung, Periodische Aktivitäten, MwSt., MwSt. Abrechnung.

Screenshot der Mehrwertsteuerabrechnung im Navision vor Business Central

Umsatzsteuer-voranmeldung UVA im „neuen“ Navision, alles ab Version 2013, 2015, 2016, 2017, 2018. nicht Business Central:
Strg+F3 im Windowsclient (öffnet das Suchfeld rechts oben), dann Umsatzsteuer eingeben. Direkt den Eintrag Umsatzsteuer auswählen. Hier unter Aufgaben/MwSt.-Abrechnung auswählen.

Screenshot der UVA Umsatzsteuervoranmeldung Einrichtung im Navision RTC Windows-Client



Business Central Webclient:
Alt+Q, MwSt, evtl. auf Alle Anzeigen.
„MwSt.-Abrechnung“ anklicken.

Screenshot der Umsatzsteuervoranmeldung im Business Central Webclient

Das „Zauberwort“ heißt dabei jedesmal MwSt.-Abrechnung.
Orientieren Sie sich beim Anlegen der beiden neuen UVA Meldepositionen jeweils an den bereits vorhandenen 7% (86) bzw. 19% (81).

Umstellung der Mehrwertsteuer MwSt.

Hier wird die einfache Version beschrieben: Von Hand, abends, nach der letzten Buchung am letzten Tag der alten MwSt (Mehrwertsteuer). Ist dies organisatorisch bei Ihnen nicht zu bewerkstelligen, dann sind Sie auch ein Kandidat für Wenn das alles nicht passt.

  1. Navision & Business Central: Fakturieren Sie alle gelieferten Aufträge ab! Sammelrechnungen wo möglich, Aufträge durchsehen. Die Berichte zu nicht fakturierten Lieferungen helfen Ihnen dabei. Sie bekommen auch einen schnellen Überblick auf diesem Weg:
    I. nach dem Abfakturieren alle alten VK Belege löschen: Stapelverarbeitung „Erledigte Aufträge löschen“.
    II. die Tabelle 37 (Einkauf: Tabelle 39) über den Designer starten („Run“)
Screenshot der Designeransicht, in allen Navisionversionen gleich (außer die DOS Version).
Designeransicht in Business Central / Navision

III. Filtern auf die Spalte Lief. nicht fakt.xxxx: <> 0

Ansicht der möglichen Filterfelder in Business Central
Ansicht der möglichen Filterfelder in Business Central

Screenshot eines Filterfeldes in Navision / Attain
Ansicht eines Filterfeldes in Navision / Attain

Hinweis: Sie müssen bei allen vier sinnvollen Filterfeldern (Siehe Screenshot Business Central) das gleiche Ergebnis bekommen! Wenn Sie bei einem Filter <> 0 auf verschiedenen Feldern verschiedene Zeilen sehen, dann hat jemand Ihr Navision kaputt gemacht. Sie haben dann auch Probleme wie z.B. nicht abrechenbare und daher nicht löschbare Verkaufsaufträge.
IV. Markieren Sie alle Zeilen (STRG+A), kopieren Sie diese nach Excel, und machen Sie dort eine Pivotanalyse auf die Belegnummer.
Sie wissen nicht wie man eine Pivotanalyse in Excel macht? Dann sollten Sie mal mit mir über eine Excelschulung reden. Diese Funktion ist kinderleicht und macht riesigen Spaß, Sie brauchen kein anderes BI (Business Intelligence) Tool mehr!

Als Ergebnis haben Sie nun in Excel eine Liste aller Verkaufsaufträge die noch abfakturiert werden müssen. In dieser Liste dürfen keine Angebote oder Rechnungen oder Gutschriften auftauchen! Das würde bedeuten, dass jemand Ihr Navision kaputt gemacht hat!

2. Stellen Sie Ihre Artikelstammdaten um.


Umstellen der Artikelstammdaten in Navision, Attain, Dynamics NAV


Gehen Sie auf die Artikelkarte (Oder Verwenden Sie mein Tool) -> Feld MwSt.-Produktbuchungsgruppe, Strg+H (Suchen & Ersetzen), und ersetzen Sie die alte MwSt.- Produktbuchungsgruppe durch die neue. Wiederholen Sie dies bei Bedarf auch noch für die Produktbuchungsgruppe.

Nicht in jedem Navision funktioniert das, und Sie müssen ja auch noch die Belege auf die neue Mehrwertsteuer umstellen. Und für das Corona-Konjunkturpaket 2020 muss das 2x durchgeführt werden: 1x am 30.6.2020 abends auf den neuen Steuersatz von 16% bzw. 5%, und dann noch mal am 31.12.2020 auf die alten Steuersätze, die vor Corona und dem Konjunkturpaket gültig waren. Benutzen Sie hier besser mein Konvertierungstool: Es ist kostenlos!

Stammdaten und Belege umstellen in Business Central mit der Mehrwertsteuerkonvertierung


Hier gibt es diese schöne Suchen & Ersetzen-Funktion leider nicht mehr. Alternative: Exportieren Sie Ihre Artikelstammdaten über die Rapid-Start-Funktion (in neueren Versionen: Daten-Migration), ersetzen Sie die Werte in Excel, und lesen Sie die Tabelle wieder zurück.
Aber seit Navision 2013 / Business Central gibt es ein wesentlich einfacheres Werkzeug: Das VAT Conversion Tool, oder auf Deutsch wesentlich sachlicher: Änderung des MwSt.-Satzes:

Screenshot zur Änderung des Mehrwertsteuersatzes / Mwst Satzes in Navision ab Version 2013 / Business Central
Änderung des MwSt.-Satzes in Navision ab Version 2013 / Business Central
Beginnen Sie mit der Einrichtung der MwSt.-Satzänderung

Ich empfehle folgende Einstellung:
Sachkonten aktualisieren: Nein. Normalerweise haben Sie getrennte Sachkonten nach Steuersatz, oder Neutrale Sachkonten, wie z.B. die Kostenkonten, die keiner Konvertierung bedürfen.
Artikel aktualisieren, Ressourcen aktualisieren, Artikelvorlagen aktualisieren:
Beides oder MwSt.-Produktbuchungsgruppe. Entscheidung siehe weiter oben.
Produktbuchungsgruppen aktualisieren: MwSt.-Produktbuchungsgruppe
Buch. Blätter: Bitte alle Buchungsblätter vor dem Stichtag durchbuchen.
Belege: Voreinstellungen übernehmen.

Einstellungen des FastTab Belege in der Einrichtung der MwSt.-Satzänderung


Über die Aktionen können Sie die Konvertierungsvorgabe (welche alte Gruppe auf welche neue Gruppe) einrichten, und am Stichtag, nach dem Abfakturieren aller Lieferungen, die Konvertierung laufen lassen:

Screenshot der Schaltflächen Mehrwertsteuerkonvertierung & Mehrwersteuerumstellung Navision ab 2013 & Business Central
Schaltflächen für die Mehrwertsteuerkonvertierung und die Mehrwertsteuerumstellung in Navision ab der Version 2013 und Business Central


Dies konvertiert alle Restbelege auf die neuen Steuersätze, genauer auf die neuen Buchungsgruppen. Sie benötigen später noch die Nachberechnung.

3. Testen: Erfassen Sie einen Auftrag für einen normalen Kunden. Navision und Business Central sollte nun den neuen Steuersatz berechnen.

Programmfehler in einigen Navision Versionen bei Rahmenbestellungen

Bei einer Kundenumstellung bin ich auf diesen Fehler gestoßen. Zumindest halte ich Ihn für einen Fehler.
Er äußert sich durch die Meldung “ Sie können nicht mehr als 0 Basiseinheiten erhalten.“ während der Mehrwertsteuerumstellung und wird in der Tabelle 39 Einkaufszeilen Purchase Line in der Nachverarbeitung des Feldes „Qty. to Receive“ verursacht. nach meiner Erfahrung nur beim Einsatz von Einkauf Rahmenbestellungen.


Fehlermeldung „Sie können nicht mehr als 0 Basiseinheiten erhalten“ bei Einkauf Rahmenbestellungen mit der Navision Mwst. Satz Änderung

(Fast) Die gleiche Meldung erhalten Sie auch im Verkauf, wenn Sie dort ebenfalls mit Rahmenaufträgen hantieren. In der Tabelle 37 Verkaufszeilen Sales Line erhalten Sie die Meldung „Sie können nicht mehr als 0 Basiseinheiten liefern“, ebenfalls in der Nachverarbeitung des korrespondierenden Feldes „Qty. to Ship“. Das im folgenden beschriebene Fehlerbild und die Lösung lauten gleichlautend für die Tabelle 37.

IF "Qty. to Receive" = Quantity - "Quantity Received" THEN
InitQtyToReceive
ELSE BEGIN
"Qty. to Receive (Base)" := CalcBaseQty("Qty. to Receive");
InitQtyToInvoice;
END;
IF ((("Qty. to Receive" < 0) XOR (Quantity < 0)) AND (Quantity <> 0) AND ("Qty. to Receive" <> 0)) OR
(ABS("Qty. to Receive") > ABS("Outstanding Quantity")) OR
(((Quantity < 0 ) XOR ("Outstanding Quantity" < 0)) AND (Quantity <> 0) AND ("Outstanding Quantity" <> 0))
THEN
ERROR(
Text008,
"Outstanding Quantity");
IF ((("Qty. to Receive (Base)" < 0) XOR ("Quantity (Base)" < 0)) AND ("Quantity (Base)" <> 0) AND ("Qty. to Receive (Base)" <> 0)) OR
(ABS("Qty. to Receive (Base)") > ABS("Outstanding Qty. (Base)")) OR
((("Quantity (Base)" < 0) XOR ("Outstanding Qty. (Base)" < 0)) AND ("Quantity (Base)" <> 0) AND ("Outstanding Qty. (Base)" <> 0))
THEN
ERROR(
Text009,
"Outstanding Qty. (Base)");

Hier wird das Feld „Qty. to Receive (Base)“ nicht immer korrekt umgerechnet!
Das brachte dann diese ziemlich quere Wertekombination:

Wert des Feldes Qty. to receive in der Tabelle 39: Er wurde bei der Mehrwerststeuerumstellung durch den Standard Navisionbericht korrekt auf null gestellt.

und

Wert des Feldes Qty. to receive (Base) in der Tabelle 39: Er wurde schlicht nicht umgerechnet! Der Erste Wert stand korrekt auf 0, der Basiswert (also über die Einheiten auf die Basiseinheit 1 umgerechnet) stand weiter auf der 95 (Hier war die Basiseinheit = 1).

In den Screenshots kann man sehen das Qty. to Receive korrekt auf null gestellt wurde, während Qty. to receive (base) einfach auf dem alten Wert (hier 95, da die Basiseinheit auf die Umrechnung 1 lautete) stehen gelassen wurde. Dadurch wird dann der Fehler aus Text009 geworfen: Sie können nicht mehr als 0 Basiseinheiten erhalten.

Merkwürdigerweise konnte ich auf die Schnelle keinen offiziellen Fix dazu finden. Daher hier mein Korrekturvorschlag:


IF „Qty. to Receive“ = Quantity – „Quantity Received“ THEN
InitQtyToReceive
ELSE BEGIN
„Qty. to Receive (Base)“ := CalcBaseQty(„Qty. to Receive“);
InitQtyToInvoice;
END;




"Qty. to Receive (Base)" := CalcBaseQty("Qty. to Receive");
IF "Qty. to Receive" = Quantity - "Quantity Received" THEN
  InitQtyToReceive
ELSE
  InitQtyToInvoice;

Beachten Sie bitte die Vorbereitungen!
Die hier angebotene Konvertierung arbeitet wie folgt:
Sie durchläuft alle Artikel & Ressourcen (keine Sachkonten, keine …), und ändert die (MwSt.-)Produktbuchungsgruppen entsprechend der Vorgabe:

Screenshot der neu einzurichtenden Produktbuchungsgruppen in Navision am Beispiel des Konjunkturpakets Corona 2020 für die Mehrwertsteuer Umstellung
Beispiel für neu einzurichtenden Produktbuchungsgruppen & Mehrwertsteuerproduktbuchungsgruppen in Navision am Beispiel des Konjunkturpakets Corona 2020 für die Mehrwertsteuer Umstellung (Einrichtung in Business Central ähnlich)

Im Artikelstamm werden alle (MwSt.-) Produktbuchungsruppen von dem Wert Links (Code) auf den Wert Rechts (Neue…) umgestellt, WENN der Wert rechts ausgefüllt ist.

Im Einkauf & Verkauf werden alle verbliebenen Artikelzeilen & Ressourcenzeilen mit Mengen ebenso umgestellt (Einkauf Anfrage, Einkauf Bestellung, Verkauf Angebot, Verkauf Aufträge, Einkauf & Verkauf Rechnungen & Gutschriften).
Ausnahme Teilgelieferte (und damit zwingend Teilberechnete) Zeilen: Diese werden aufgeteilt, für die Restlieferung wird eine neue Zeile mit neuen Buchungsgruppen eingetragen.

Das Tool ist auf einfachste Lesbarkeit getrimmt, sodass man schnell eigene Erweiterungen hinzufügen kann.
Ich empfehle unbedingt einen frühzeitigen Testlauf!

Dieser Bericht orientiert sich am Navision-Standard. Testen Sie es bitte ausgiebig in einer Testumgebung. Anpassungen, welche sich nicht sauber in den Standard integrieren, funktionieren hiermit nicht.
Natürlich erfolgt das Nutzen dieses Tools komplett auf Ihr eigenes Risiko. Bitte überprüfen Sie den Code, ob er bei Ihnen passt. Ich lehne ausdrücklich jede Haftung für dieses Tool in jeglicher Form ab.
Ich kann Sie gerne bei der Mehrwertsteuerumstellung (2020: Mehrwertsteuersenkung im Zusammenhang mit dem Corona Konjunkturpaket) unterstützen und auch prüfen, ob dieses Tool, gegebenenfalls mit Modifikationen, bei Ihnen „passt“. Allerdings sind die verfügbaren Termine hierfür schon am 12.6.2020 knapp.

Bericht für die Massenumstellung der Artikel, Sachkonten, noch nicht gelieferten Verkaufsaufträge und Einkaufsbestellungen (alle Belege in T36 Verkaufskopf & T38 Einkaufskopf sowie den zugehörigen Zeilen).
Sachkonten werden mit diesem Bericht nicht umgestellt, das macht i.d.R. keinen Sinn. Spezialfälle wie Verpackungsverodnung, Leergutverwaltung, eine gesonderte Rückstandsverwaltung etc. sind natürlich in diesem Bericht nicht enthalten und müssen, passend zu Ihrer Datenbank, dazu programmiert werden. Die Logik sollte ab etwa Navision 3.01 passen: Englische Felder, Feld Status im Belegkopf. Der Code sollte auch als Basis für AL gut sein, störende Leerelemente habe ich bereits entfernt. Allerdings hat Business Central bereits alles eingebaut, was Sie zur Umstellung der Mehrwertsteuer und der Buchungsgruppen benötigen.

OBJECT Report 50086 VAT Conversion Toolkit RTH
{
  OBJECT-PROPERTIES
  {
    Date=24.06.20;
    Time=15:47:07;
  }
  DATAITEMS
  {
    { PROPERTIES
      {
        DataItemTable=Table27;
        DataItemTableView=SORTING(No.);
        OnAfterGetRecord=BEGIN
                           CLEAR(DoModify);
                           IF "TranslatePPG?"("Gen. Prod. Posting Group") THEN BEGIN
                             VALIDATE("Gen. Prod. Posting Group",TranslatePPG("Gen. Prod. Posting Group"));
                             DoModify := TRUE;
                           END;
                           IF "TranslateVatPPG?"("VAT Prod. Posting Group") THEN BEGIN
                             VALIDATE("VAT Prod. Posting Group",TranslateVatPPG("VAT Prod. Posting Group"));
                             DoModify := TRUE;
                           END;
                           IF DoModify THEN BEGIN
                             MODIFY;
                             Log("No.",'Item Translated',STRSUBSTNO('%1 %2',"Gen. Prod. Posting Group","VAT Prod. Posting Group"));
                           END ELSE
                             CurrReport.SKIP;
                         END;

        ReqFilterFields=No.,Gen. Prod. Posting Group,VAT Prod. Posting Group;
      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Header;
            SectionWidth=12000;
            SectionHeight=423;
          }
          CONTROLS
          {
            { 1119455000;TextBox;0    ;0    ;3300 ;423  ;FontSize=9;
                                                         FontBold=Yes;
                                                         SourceExpr=TABLECAPTION }
          }
           }
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=423;
          }
          CONTROLS
          {
            { 1119455006;TextBox;0    ;0    ;1500 ;423  ;SourceExpr="No." }
            { 1119455008;TextBox;1650 ;0    ;4500 ;423  ;SourceExpr=Description }
          }
           }
      }
       }
    { PROPERTIES
      {
        DataItemTable=Table156;
        DataItemTableView=SORTING(No.);
        OnAfterGetRecord=BEGIN
                           CLEAR(DoModify);
                           IF "TranslatePPG?"("Gen. Prod. Posting Group") THEN BEGIN
                             VALIDATE("Gen. Prod. Posting Group",TranslatePPG("Gen. Prod. Posting Group"));
                             DoModify := TRUE;
                           END;
                           IF "TranslateVatPPG?"("VAT Prod. Posting Group") THEN BEGIN
                             VALIDATE("VAT Prod. Posting Group",TranslateVatPPG("VAT Prod. Posting Group"));
                             DoModify := TRUE;
                           END;
                           IF DoModify THEN BEGIN
                             MODIFY;
                             Log("No.",'Ressource Translated',STRSUBSTNO('%1 %2',"Gen. Prod. Posting Group","VAT Prod. Posting Group"));
                           END ELSE
                             CurrReport.SKIP;
                         END;

        ReqFilterFields=No.,Gen. Prod. Posting Group,VAT Prod. Posting Group;
      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Header;
            SectionWidth=12000;
            SectionHeight=423;
          }
          CONTROLS
          {
            { 1119455001;TextBox;0    ;0    ;3300 ;423  ;FontSize=9;
                                                         FontBold=Yes;
                                                         SourceExpr=TABLECAPTION }
          }
           }
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=423;
          }
          CONTROLS
          {
            { 1119455010;TextBox;1650 ;0    ;4500 ;423  ;SourceExpr=Name }
            { 1119455011;TextBox;0    ;0    ;1500 ;423  ;SourceExpr="No." }
          }
           }
      }
       }
    { PROPERTIES
      {
        DataItemTable=Table36;
        DataItemTableView=SORTING(Document Type,No.);
        DataItemVarName=SaleHeader;
        ReqFilterFields=Document Type,Order Date,Posting Date;
      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Header;
            SectionWidth=12000;
            SectionHeight=423;
          }
          CONTROLS
          {
            { 1119455002;TextBox;0    ;0    ;3300 ;423  ;FontSize=9;
                                                         FontBold=Yes;
                                                         SourceExpr=TABLECAPTION }
          }
           }
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=423;
          }
          CONTROLS
          {
            { 1119455012;TextBox;0    ;0    ;1500 ;423  ;SourceExpr="Document Type" }
            { 1119455014;TextBox;1650 ;0    ;2550 ;423  ;SourceExpr="No." }
          }
           }
      }
       }
    { PROPERTIES
      {
        DataItemIndent=1;
        DataItemTable=Table37;
        DataItemTableView=SORTING(Document Type,Document No.,Line No.)
                          WHERE(Type=FILTER(Item|Resource),
                                No.=FILTER(<>''));
        DataItemVarName=SaleLine;
        OnAfterGetRecord=VAR
                           NewLine@1000000000 : Record 37;
                         BEGIN
                           Log(TABLECAPTION,'Translate',GETPOSITION);
                           IF (Quantity > "Quantity Shipped") OR (Quantity = 0) THEN BEGIN
                             UnlockSalesHeader(SaleHeader);
                             IF "Quantity Shipped" = 0 THEN BEGIN // No Shippment till now
                               IF "TranslatePPG?"("Gen. Prod. Posting Group") THEN BEGIN
                                 VALIDATE("Gen. Prod. Posting Group",TranslatePPG("Gen. Prod. Posting Group"));
                                 DoModify := TRUE;
                               END;
                               IF "TranslateVatPPG?"("VAT Prod. Posting Group") THEN BEGIN
                                 VALIDATE("VAT Prod. Posting Group",TranslateVatPPG("VAT Prod. Posting Group"));
                                 DoModify := TRUE;
                               END;
                               IF DoModify THEN
                                 MODIFY(TRUE);
                             END ELSE BEGIN
                               //Insert the new Line with the outstanding Qty.
                               WITH NewLine DO BEGIN
                                 NewLine := SaleLine;
                                 "Line No." += 1;
                                 "Quantity Shipped" := 0;
                                 "Qty. Shipped (Base)" := 0;
                                 "Return Qty. Received" := 0;
                                 "Return Qty. Received (Base)" := 0;
                                 "Quantity Invoiced" := 0;
                                 "Qty. Invoiced (Base)" := 0;
                                 "Reserved Quantity" := 0;
                                 "Reserved Qty. (Base)" := 0;
                                 "Qty. to Ship" := 0;
                                 "Qty. to Ship (Base)" := 0;
                                 "Return Qty. to Receive" := 0;
                                 "Return Qty. to Receive (Base)" := 0;
                                 "Qty. to Invoice" := 0;
                                 "Qty. to Invoice (Base)" := 0;
                                 "Qty. Shipped Not Invoiced" := 0;
                                 "Return Qty. Rcd. Not Invd." := 0;
                                 "Shipped Not Invoiced" := 0;
                                 "Return Rcd. Not Invd." := 0;
                                 "Qty. Shipped Not Invd. (Base)" := 0;
                                 "Ret. Qty. Rcd. Not Invd.(Base)" := 0;
                                 "Shipped Not Invoiced (LCY)" := 0;
                                 "Return Rcd. Not Invd. (LCY)" := 0;

                                 IF "TranslatePPG?"("Gen. Prod. Posting Group") THEN
                                   VALIDATE("Gen. Prod. Posting Group",TranslatePPG("Gen. Prod. Posting Group"));
                                 IF "TranslateVatPPG?"("VAT Prod. Posting Group") THEN
                                   VALIDATE("VAT Prod. Posting Group",TranslateVatPPG("VAT Prod. Posting Group"));
                                 WHILE NOT INSERT DO
                                   "Line No." += 100;
                                 VALIDATE(Quantity,SaleLine."Outstanding Quantity"); //Nachverarbeitung laufen lassen, z.B. Pfand
                                 MODIFY;
                               END;
                               //Store the old line w/o the outstanding Qty (= 100% Shipped)
                               VALIDATE(Quantity,"Quantity Shipped");
                               MODIFY;
                             END;
                           END;
                         END;

        DataItemLink=Document Type=FIELD(Document Type),
                     Document No.=FIELD(No.);
      }
      SECTIONS
      {
      }
       }
    { PROPERTIES
      {
        DataItemTable=Table38;
        DataItemTableView=SORTING(Document Type,No.);
        DataItemVarName=PurchHeader;
        ReqFilterFields=Document Type,Order Date,Posting Date;
      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Header;
            SectionWidth=12000;
            SectionHeight=423;
          }
          CONTROLS
          {
            { 1119455003;TextBox;0    ;0    ;3300 ;423  ;FontSize=9;
                                                         FontBold=Yes;
                                                         SourceExpr=TABLECAPTION }
          }
           }
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=423;
          }
          CONTROLS
          {
            { 1119455016;TextBox;0    ;0    ;1500 ;423  ;SourceExpr="Document Type" }
            { 1119455017;TextBox;1650 ;0    ;2550 ;423  ;SourceExpr="No." }
          }
           }
      }
       }
    { PROPERTIES
      {
        DataItemIndent=1;
        DataItemTable=Table39;
        DataItemTableView=SORTING(Document Type,Document No.,Line No.)
                          WHERE(Type=FILTER(Item),
                                No.=FILTER(<>''));
        DataItemVarName=PurchLine;
        OnAfterGetRecord=VAR
                           NewLine@1000000000 : Record 39;
                         BEGIN
                           Log(TABLECAPTION,'Translate',GETPOSITION);
                           IF (Quantity > "Quantity Received") OR (Quantity = 0) THEN BEGIN
                             UnlockPurchHeader(PurchHeader);

                             IF ("Quantity Received" = 0) OR "Drop Shipment" THEN BEGIN // No Shippment till now
                               IF "TranslatePPG?"("Gen. Prod. Posting Group") THEN BEGIN
                                 VALIDATE("Gen. Prod. Posting Group",TranslatePPG("Gen. Prod. Posting Group"));
                                 DoModify := TRUE;
                               END;
                               IF "TranslateVatPPG?"("VAT Prod. Posting Group") THEN BEGIN
                                 VALIDATE("VAT Prod. Posting Group",TranslateVatPPG("VAT Prod. Posting Group"));
                                 DoModify := TRUE;
                               END;
                               IF DoModify THEN
                                 MODIFY(TRUE);
                             END ELSE BEGIN
                               //Insert the new Line with the outstanding Qty.
                               WITH NewLine DO BEGIN
                                 NewLine := PurchLine;
                                 "Line No." += 1;
                                 "Quantity Received" := 0;
                                 "Qty. Received (Base)" := 0;
                                 "Quantity Invoiced" := 0;
                                 "Qty. Invoiced (Base)" := 0;
                                 "Reserved Quantity" := 0;
                                 "Reserved Qty. (Base)" := 0;
                                 "Qty. to Receive" := 0;
                                 "Qty. to Receive (Base)" := 0;
                                 "Qty. to Invoice" := 0;
                                 "Qty. to Invoice (Base)" := 0;
                                 "Qty. Rcd. Not Invoiced" := 0;
                                 "Qty. Rcd. Not Invoiced (Base)" := 0;
                                 "Amt. Rcd. Not Invoiced" := 0;

                                 IF "TranslatePPG?"("Gen. Prod. Posting Group") THEN
                                   VALIDATE("Gen. Prod. Posting Group",TranslatePPG("Gen. Prod. Posting Group"));
                                 IF "TranslateVatPPG?"("VAT Prod. Posting Group") THEN
                                   VALIDATE("VAT Prod. Posting Group",TranslateVatPPG("VAT Prod. Posting Group"));
                                 WHILE NOT INSERT DO
                                   "Line No." += 100;
                                 VALIDATE(Quantity,PurchLine."Outstanding Quantity");
                                 MODIFY;
                               END;
                               //Store the old line w/o the outstanding Qty (= 100% Shipped)
                               VALIDATE(Quantity,"Quantity Received");
                               MODIFY;
                             END;
                           END;
                         END;

        DataItemLink=Document Type=FIELD(Document Type),
                     Document No.=FIELD(No.);
      }
      SECTIONS
      {
      }
       }
    { PROPERTIES
      {
        DataItemTable=Table2000000026;
        DataItemTableView=SORTING(Number)
                          WHERE(Number=CONST(1));
        DataItemVarName=LockHeaders;
        OnAfterGetRecord=BEGIN
                           WITH TmpT36 DO BEGIN
                             IF FINDSET THEN REPEAT
                               SaleHeader.GET("Document Type","No.");
                               SaleHeader.Status := TmpT36.Status;
                               SaleHeader.MODIFY;
                             UNTIL NEXT = 0;
                           END;
                           WITH TmpT38 DO BEGIN
                             IF FINDSET THEN REPEAT
                               PurchHeader.GET("Document Type","No.");
                               PurchHeader.Status := TmpT38.Status;
                               PurchHeader.MODIFY;
                             UNTIL NEXT = 0;
                           END;
                         END;

      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=423;
          }
          CONTROLS
          {
            { 1119455005;Label  ;4200 ;0    ;3150 ;423  ;FontSize=9;
                                                         FontBold=Yes;
                                                         CaptionML=[DEU=Fertig....;
                                                                    ENU=finish....] }
          }
           }
      }
       }
  }
CODE
  {
    VAR
      GenProdPostingGrp@1000000000 : Record 251;
      VatProdPostingGrp@1000000001 : Record 324;
      TmpT36@1000000003 : TEMPORARY Record 36;
      TmpT38@1000000004 : TEMPORARY Record 38;
      LogCU@1119455000 : Codeunit 50003;
      DoModify@1000000002 : Boolean;

    PROCEDURE "TranslatePPG?"@1000000002(pOldPPG@1000000000 : Code[10]) : Boolean;
    BEGIN
      IF GenProdPostingGrp.Code <> pOldPPG THEN
        IF NOT GenProdPostingGrp.GET(pOldPPG) THEN
          CLEAR(GenProdPostingGrp);
      EXIT(GenProdPostingGrp."New Gen. Post.Grp" <> '');
    END;

    PROCEDURE TranslatePPG@1000000000(pOldPPG@1000000000 : Code[10]) : Code[10];
    BEGIN
      IF GenProdPostingGrp.Code <> pOldPPG THEN
        GenProdPostingGrp.GET(pOldPPG);
      EXIT(GenProdPostingGrp."New Gen. Post.Grp");
    END;

    PROCEDURE "TranslateVatPPG?"@1000000005(pOldPPG@1000000000 : Code[10]) : Boolean;
    BEGIN
      IF VatProdPostingGrp.Code <> pOldPPG THEN
        IF NOT VatProdPostingGrp.GET(pOldPPG) THEN
          CLEAR(VatProdPostingGrp);
      EXIT(VatProdPostingGrp."New VAT Prod. Posting Group" <> '');
    END;

    PROCEDURE TranslateVatPPG@1000000004(pOldPPG@1000000000 : Code[10]) : Code[10];
    BEGIN
      IF VatProdPostingGrp.Code <> pOldPPG THEN
        VatProdPostingGrp.GET(pOldPPG);
      EXIT(VatProdPostingGrp."New VAT Prod. Posting Group");
    END;

    PROCEDURE UnlockSalesHeader@1000000001(pHeader@1119455000 : Record 36);
    BEGIN
      IF pHeader.Status = pHeader.Status::Released THEN BEGIN
        Log('','Unlock',pHeader.GETPOSITION);
        TmpT36 := pHeader;
        IF TmpT36.INSERT THEN;
        pHeader.Status := pHeader.Status::Open;
        pHeader.MODIFY;
      END;
    END;

    PROCEDURE UnlockPurchHeader@1000000003(pHeader@1119455000 : Record 38);
    BEGIN
      IF pHeader.Status = pHeader.Status::Released THEN BEGIN
        Log('','Unlock',pHeader.GETPOSITION);
        TmpT38 := pHeader;
        IF TmpT38.INSERT THEN;
        pHeader.Status := pHeader.Status::Open;
        pHeader.MODIFY;
      END;
    END;

    PROCEDURE Log@1119455000(pKeyEntry@1000000006 : Text[1024];pLogEntry@1000000002 : Text[1024];pLogDetail@1000000003 : Text[1024]);
    VAR
      TimeOutput@1000000004 : Text[30];
    BEGIN
      LogCU.Log('Report',50085,pKeyEntry,pLogEntry,pLogDetail); //Comment this line if you don't have Logging
    END;

    BEGIN
    END.
  }
}

Nachberechnung von Belegen mit abweichender MwSt. (Mehrwertsteuer)

Im Einkauf wird dies die Regel sein, da sie Lieferantenrechnungen ja meist später erhalten. Im Verkauf sollten hier vor allem Gutschriften auftreten, weniger (am besten: gar keine) Rechnungen. Ein weiteres Problem: Alte Angebote. (Thema wird gerade überarbeitet.)

Angebote

Angebote sind einfach. Sie kommen zwangsläufig erst nach der Umstellung zur Auslieferung, daher werden diese einfach bei der Belegumstellung pauschal über alles auf den neuen Steuersatz umgestellt.

Nicht gelieferte Aufträge

Diese sind auch einfach. Hier gilt das gleiche wie bei den Angeboten. Es gilt immer das Leistungsprinzip, d.h. das Datum der Lieferung (i.d.R. das Datum des Verlassens unseres Einflussbereichses, also Zeitpunkt Warenausgang), was so nicht immer stimmt, aber i.d.R. so gelebt wird.
Bei meiner Steuerkonvertierung werden alle noch nicht gelieferten Zeilen umgestellt, alle teilgelieferten Zeilen aufgeteilt (alter/neuer Steuersatz), alle komplett gelieferten Zeilen ignoriert. Bitte erfassen Sie bei diesen Belegen keine Nachlieferung auf bereits komplett gelieferte Zeilen!

Einkauf Anfragen

Auch diese werden ja zwangsläufig erst nach der Umstellung geliefert, daher werden auch diese pauschal auf den neuen Steuersatz umgestellt.

Vorauszahlungen

Egal, ob selbst geleistete Vorauszahlungen oder empfangene Vorauszahlungen: Die sind unschön. Das einfachste Vorgehen bei Steuersenkungen: Telefonieren Sie mit Ihrem Kunden, und fragen Sie, wie Sie die x.xx Euro zurücküberweisen oder zurückzahlen sollen. Vielleicht können Sie das Gespräch ja derart lenken, dass der Kunde auf die Rückerstattung verzichtet.
Ansonsten dürfte es auch noch einfach sein, den Beleg normal durchlaufen zulassen. Beim Ausbuchen der Vorauszahlung wird eine Differenz auf dem Konto stehen bleiben (die echte Lieferung/Rechnung erfolgte ja mit dem verringerten Steuersatz), genauso wie bei verrechneten Gutschriften. Vielleicht können Sie diese ja gegen einen anderen offenen Betrag ausziffern, der Abgleich erfolgt dann später bei einem Kontenabgleich.
Im Falle einer Steuererhöhung (vermutlich immer der Fall, außer 2020 im Rahmen des Corona Konjunkturpaketes) denken Sie über die Möglichkeit nach, die Differenz einfach selber zu tragen. Jede Tätigkeit die Sie zum Klären aufnehmen, wird Sie mehr kosten als „die paar Cent Differenz“. Sprechen Sie beide Möglichkeiten mit Ihrem Steuerberater ab.

Einkauf Bestellungen nicht geliefert

Diese werden wie die Verkaufsaufträge behandelt. Der korrekte Steuersatz muss bei der Rechnungserfassung geprüft werden.

Einkaufbestellungen oder Verkaufsaufträge, die vor dem Stichtag erfasst wurden

…mit nachträglicher Lieferung vor dem Stichtag

Tragen Sie pro Zeile in den Spalten Allgemeine Produktbuchungsgruppe (Business Central) oder Produktbuchungsgruppe (Navision) bzw. MwSt. Produktbuchungsgruppe (beide Versionen, also Navision genauso wie Business Central) die korrekte Buchungsgruppe ein.
Kontrollieren Sie vor dem Verbuchen mit der Belegstatistik, ob die richtigen Steuersätze gezogen wurden.

…mit Lieferung nach dem Stichtag

Hier sollten durch die Belegkonvertierung bereits die richtigen Buchungsgruppen eingetragen sein. Prüfen Sie pro Zeile in den Spalten Allgemeine Produktbuchungsgruppe (Business Central) oder Produktbuchungsgruppe (Navision) bzw. MwSt.-Produktbuchungsgruppe (beide Versionen, also Navision genauso wie Business Central) die korrekte Buchungsgruppe.
Kontrollieren Sie vor dem Verbuchen mit der Belegstatistik, ob die richtigen Steuersätze gezogen wurden.

Gutschriften (Einkauf wie Verkauf)

Gutschriften, die sich auf eine Warenlieferung beziehen, erzeugen Sie bitte über Beleg kopieren, Zeilen NICHT neu berechnen. Hierbei werden die (MwSt.) Produktbuchungsgruppen aus dem Ursprungsbeleg übernommen. Sie können jedoch selber die Buchungsgruppen entsprechend der letzten beiden Punkte beliebig korrigieren.

Gutscheine (Mehrzweckgutscheine, Einzweckgutscheine)

Diese sind sowieso kribbelig und müssen jeweils in ihre Prozesse eingegliedert werden. Grund: Einzweckgutscheine sind -vereinfacht- Umsatz. Sie müssen sofort beim Verkauf mit dem entsprechenden Steuersatz als Umsatzsteuer über Navision oder Business Central versteuert werden – ganz normal wie ein Warenverkauf. Ein Einzweckgutschein liegt vor, wenn der Steuersatz der später dafür erhältlichen Leistung beim Verkauf des Gutscheines bekannt ist.
Das Finanzamt liebt Einzweckgutscheine!
Bei Mehrzweckgutscheinen steht der Steuersatz der später dafür einzutauschenden Leistungen/Güter hingegen nicht fest. Das kann sogar in einem Unternehmen für ein Produkt der Fall sein! Sind Sie z.B. in der Gastronomie tätig und verkaufen Wertgutscheine für Essen, so könnte der Kunde später für den Gutschein Speisen/Nahrung/Essen zum Mitnehmen (To Go) erwerben: Verminderter Steuersatz. Er/Sie könnte den Gutschein aber auch verwenden, um die Nahrung in Ihren Gasträumen einzunehmen: Verminderter Steuersatz. Bei Weihnachtsbäumen mit -ich glaube- 5 Steuersätzen, bei Kaffeegetränken mit der Abhängigkeit von der Milchmenge und anderen, sehr sehr kranken Ideen der deutschen Steuerbehörden hört dieser Unsinn noch lange nicht auf. Diese Gutscheine sind daher Mehrzweckgutscheine, die bei der Abgabe an den Kunden als steuerfreier Umsatz (Sie sind also durchaus Gewinn oder Einnahme!) zu verbuchen sind. Noch spannender ist es bei der Corona-Mehrwertsteuerumstellung: Gutscheine haben i.d.R. eine Laufzeit von mindestens einem Jahr. Somit ist alleine daher nicht bekannt, ob Navision bzw. Business Central 5%, 7%, 16% oder 19% buchen soll.
Obwohl die Finanzämter Einzweckgutscheine lieben (sie bekommen sofort ihren Anteil vom Kuchen), empfehle ich aus all diesen Gründen die Verwendung und damit Verbuchung von Gutscheinen als Mehrzweckgutschein. Außerdem empfehle ich dies einheitlich zu machen, d.h. nicht zu mischen. Corona gibt hier die nötige Argumentation vor.

Schwierig sind hier bereits ausgegebene Einzweckgutscheine! Diese wurden i.d.R. bereits vor einer Steuerumstellung verkauft, und damit zu dem bis dahin gültigen Steuersatz versteuert (Die Mehrwertsteuer wurde bereits an die Finanzbehörden abgeführt). Und dann werden Sie nachträglich zum Erwerb von anders versteuerten Leistungen genutzt.
Hier gibt es zwei Möglichkeiten:
1. „Was solls“: Gutschein direkt gegen die Warenabgabe buchen. Vermutlich werden auch sehr strenge Betriebsprüfer und Wirtschaftsprüfer in diesen exotischen Fällen beide Augen zudrücken, denn auch ihnen sollte der Wahnsinn bewusst sein, der hier von dem Gesetzgeber mal wieder sehenden Auges verursacht wurde.
2. Den Gutschein bei der Einlösung mit dem alten Steuersatz gut schreiben und in der gleichen Buchung mit dem neuen Steuersatz wertstellen. Somit ergibt sich die Differenz sowohl im Nettowert als auch in der abzuführenden Mehrwertsteuer. Danach kann die Warenabgabe / Leistung gegen den (nun frisch mit der korrekten Mehrwertsteuer versehenen) Gutschein gebucht werden.

Vereinheitlichen der MwSt. Produktbuchungsgruppen

Wenn Sie Ihre Warenstatistik über die Produktbuchungsgruppen und -noch schlimmer- auch noch über die MwSt.-Produktbuchungsgruppen abbilden, dann haben Sie in der Regel dutzende oder gar hunderte von Allgemeinen Produktbuchungsgruppen und MwSt.-Produktbuchungsgruppen.
Die Produktbuchungsgruppen ließen sich noch durch eine Umstellung der UVA (Umsatzsteuervoranmeldung) auf MwSt.-Buchungsgruppen lösen. Bei den MwSt.-Produktbuchungsgruppen geht das dann nicht mehr so „elegant“. In diesem Fall sind Sie vermutlich ein Kandidat für den Absatz Wenn das alles nicht passt.

Oder Sie nutzen die Gelegenheit für eine radikale Umstellung, indem Sie sich an meinem zu Beginn dieses Artikels dargestellten Konzept orientieren. In diesem Fall folgen Sie bitte dem Abschnitt Vorbereitung. Tragen Sie hier als die neuen Buchungsgruppen nur die nötigen (!) neuen Buchungsgruppen (z.B. „16%“) ein! Bei der Umstellung ersetzen Sie dann alle alten Buchungsgruppen jeweils immer durch die gleiche neue Buchungsgruppe.
Und Ihre Warenstatistik machen Sie zukünftig über? Täterääätäää: Die Warenwirtschaft! Und nicht mehr über die Finanzbuchhaltung.

UVA Umsatzsteuervoranmeldung

Die Umsatzsteuervoranmeldung muss ebenfalls angepasst werden. Die neuen Steuerklassen sind in die UVA Abrechnung Einrichtung mit zu übernehmen.

Wenn das alles nicht passt…

Dann kontaktieren Sie mich bitte. Dann haben Sie vermutlich ein ziemlich großes Problem, alleine wegen der manchmal sehr kurzen Umstellungszeit. Gerade bei der für Corona in 2020 geplanten kurzzeitigen MwSt. Umstellung für 6 Monate von Juli 2020 bis Dezember 2020 benötigen Sie in diesem Fall vermutlich eine Unterstützung durch vorher zu erstellende Programme, die die nötigen Umstellungen für Sie zum Stichtag vornehmen.

MwSt.- Umstellung von 2006

Faustformel: Die Umstellungsprogramme für die MwSt. Umstellung vom 31.12.2006 auf den 1.1.2007 von 16% auf 19% und die damals veröffentlichten oder zur Verfügung gestellten Programme und Anleitungen sollten auch heute noch funktionieren!

Datumsabhängige MwSt. – Der Königsweg

Die Luxusvariante. Dieses Modul ist ein integrierbares Basismodul. I.d.R. muss es noch an kundenspezifische Ausprägungen angepasst werden. Anpassungen kommen nach Aufwand hinzu, ebenso die notwendigen Objekte (1 Form/Page, 1 Codeunit, 1 Tabelle). Änderungen sind z.B. in der Tabelle 37&39 nötig. Leider existiert dieses Modul noch nicht als Extension, ich versuche es aber bis Ende Juni hinzubekommen.
Funktion: Die MwSt.-Produktbuchungsgruppe wird in der Einkaufszeile (Tabelle 39) / Verkaufszeile (Tabelle 37) in Abhängigkeit vom Buchungsdatum gezogen. Dazu gibt es eine neue Tabelle MwSt. Produktbuchugsgruppe nach Datum, in der „MwSt.-Produktbuchungsgruppe“, „Ab Datum“, „Zu verwendende MwSt. Produktbuchungsgruppe“ eingetragen wird. In der Verkaufszeile & Einkaufszeile wird dann, abhängig vom Buchungsdatum, automatisch die richtige Produktbuchungsgruppe eingetragen. Bei der Umwandlung von Angeboten und beim Kopieren von Belegen (Einkauf- sowie Verkaufseitig) wird ebenfalls die korrekte MwSt. Produktbuchungsgruppe eingetragen. Jede sauber programmierte Erweiterung sollte damit auf Anhieb laufen. Jede unsauber programmierte muss entsprechend angepasst werden.

Buchbare Unterstützung

Wenn Sie meine Unterstützung benötigen, so geben Sie mir bitte bis 14 Tage vor der Umstellung (besser: Früher) abends Rückinfo in welchem Umfang Sie Unterstützung von mir anfordern möchten.
(Abrechnung jeweils nach Aufwand, die auf obiger Seite bereit gestellten Tools werden unentgeltlich zur Verfügung gestellt)

[_] Ich soll für Sie die neuen Sachkonten anlegen
… [_] und die zugehörigen Buchungsgruppen & deren Einrichtung vornehmen
… [_]Die neuen Sachkonten werden mir von Ihnen/Ihrem Steuerberater vorgegeben
… [_]Die neuen Sachkonten sollen von mir festgelegt werden.
Ich werde zum Testen einen neuen Beleg jeweils im EK & VK erstellen, mit vier Zeilen:
eine Zeile mit altem 19% Steuersatz, eine Zeile mit neuem 16% Steuersatz, eine Zeile mit altem 7% Steuersatz, eine Zeile mit neuem 5% Steuersatz, und dieses Ergebnis prüfen.

[_] Ich soll Ihnen meine Umsatzsteuerkonvertierung einspielen und grob anpassen.
(„Grob anpassen“ bedeutet, dass ich die fehlerfreie Kompilierbarkeit sicherstelle, die Objekte sind danach benutzbar. Eine fehlerfreie Konvertierung wird durch diesen Schritt explizit nicht zugesichert. Dies wird erst durch die optional nächste Option nach bestem Wissen und Gewissen sichergestellt).

[_] Ich soll einen Testlauf in Ihrer Datenbank auf folgenden Mandanten laufen lassen:
(Stellen Sie bitte sicher, dass auf Ihrem Server genug Speicherplatz für den/die zusätzlichen Mandanten bereit steht!)
[_] Ich soll einen Testlauf mit Ihren Daten auf meinem Rechner mit folgenden Mandanten laufen lassen:
(Stellen Sie bitte sicher, dass auf Ihrem Server genug Speicherplatz für die nötige Datensicherung ihrer Datenbank zur Verfügung steht. Ich werde die Datensicherung erstellen, die Daten kennwortgeschützt packen und zu mir über einen Dienstleister (z.B. WeTransfer) übertragen, und bei mir eine Testumgebung auf meinem PC mit diesen aktuellen Daten aufbauen).

Anmerkung zu diesem Testlauf:
Ich werde alle Verkauflieferungen abfakturieren.
Ich werde in dem/den Mandanten drei Testbelege jeweils für EK und für VK erstellen: Einen komplett ungelieferten. Dieser muss komplett umgestellt werden.
Einen komplett gelieferten und fakturierten. Dieser soll nicht verändert werden.
Einen Teilgelieferten, bei dem müssen für die Rückstände neue Zeilen entstehen.
Ich werde einen neuen Beleg im EK & VK erstellen, mit vier Zeilen, die natürlich auch geprüft werden. Hierbei wird auch sichergestellt, dass die nötigen Spalten für eine Nachfakturierung bei Ihnen sichtbar sind.
Eine Zeile mit altem 19% Steuersatz, eine Zeile mit neuem 16% Steuersatz, eine Zeile mit altem 7% Steuersatz, eine Zeile mit neuem 5% Steuersatz.

Bestandteil dieses Testlaufs ist eine bebilderte Schritt für Schritt Anleitung mit Bildschirmfotos aus IHREM Navision mit den nötigen Schritten für den 30.6.2020 abends.

Diese Schritte aus dieser Anleitung müssen Sie selber durchführen, ich kann leider aus Zeitgründen nicht bei allen Kunden die Umstellung selber vornehmen.
Anmerkung 2: Ich nehme die Anpassungen und Prüfungen natürlich wie immer nach bestem Wissen und Gewissen vor. Wie immer kann ich natürlich auch diesmal nicht für eine 100%ige Funktionalität garantieren. Evtl. nötige Nacharbeiten werde ich natürlich schnellstmöglich zu den üblichen Konditionen vornehmen. Stellen Sie bitte sicher, dass Ihre Datensicherung fehlerfrei läuft!