Geben Sie eine Rechnungsposition ein Sachkonto in Microsoft Dynamics NAV 2009 Rundung Rechnung stimmt der MwSt.-Betrag

Gilt für: Dynamics NAV 2009

Dieser Artikel gilt für Microsoft Dynamics NAV 2009 für alle Länder und alle Gebietsschemas.

Problembeschreibung


Wenn Sie eine Rechnungsposition für das Sachkonto, der als ein Rechnungsrundungskonto in Debitorenbuchungsgruppe in Microsoft Dynamics NAV 2009 angegeben ist eingeben, wird der Betrag der Mehrwertsteuer (MwSt.) falsch berechnet. Steuerbetrag für das Rechnungsrundungskonto in den Sachposten muss NULL sein.
Dieses Problem tritt in den folgenden Produkten auf:
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Servicepack 1 (SP1)
  • Microsoft Dynamics NAV 2009

Problemlösung


Hotfix-Informationen

Ein unterstützter Hotfix ist inzwischen von Microsoft erhältlich. Allerdings ist es lediglich zur Behebung dieses Problems. Wenden Sie es nur auf Systeme an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise noch getestet. Wenn Ihr System durch dieses Problem nicht schwerwiegend beeinträchtigt ist, empfehlen wir, dass Sie warten auf das nächste Servicepack für Microsoft Dynamics NAV 2009 oder die nächste Microsoft Dynamics NAV-Version, die diesen Hotfix enthält.

Hinweis In besonderen Fällen bestimmt Gebühren fallen normalerweise Support aufrufen Wenn Experte Support für Microsoft Dynamics und zugehörige Produkte storniert werden können, dass ein bestimmtes Update Ihr Problem behebt. Die normalen Supportkosten gilt für zusätzliche Supportfragen und Probleme, die nicht für das betreffende Update qualifizieren.


Informationen zur Installation

Microsoft bietet Programmierbeispiele lediglich zur Veranschaulichung, ohne ausdrückliche oder konkludente Gewährleistung. Dies beinhaltet, ist jedoch nicht beschränkt auf, konkludente Gewährleistungen der Tauglichkeit oder Eignung für einen bestimmten Zweck. Dieser Artikel setzt voraus, dass Sie mit der von Beispielen verwendeten Programmiersprache und den Tools, die zum Erstellen und Debuggen von Prozeduren verwendet werden, vertraut sind. Microsoft-Supportmitarbeiter können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, sie werden jedoch diese Beispiele nicht verändern um eine erweiterte Funktionalität aufzuzeigen oder Prozeduren entwickeln, die Ihren Anforderungen entsprechen.

Hinweis Bevor Sie diesen Hotfix installieren, stellen Sie sicher, dass alle Microsoft Navision-Clientbenutzer vom System abgemeldet werden. Dies gilt auch für Clientbenutzer der Microsoft Navision Application Services (NAS). Sie sollte nur-Client-Benutzers, der angemeldet ist, wenn Sie diesen Hotfix installieren.

Muss eine Entwicklerlizenz verfügen, um diesen Hotfix installieren können.

Es wird empfohlen, das Benutzerkonto im Fenster Windows-Benutzernamen oder im Fenster Datenbank-Anmeldenamen "SUPER" Rollen-ID zugewiesen werden Wenn das Benutzerkonto die Rollen-ID "SUPER" nicht zugeordnet werden kann, müssen Sie sicherstellen, dass das Benutzerkonto die folgenden Berechtigungen verfügt:
  • Änderungsberechtigung für das Objekt, das Sie ändern.
  • Ausführungsberechtigung für System Object ID 5210 und System Object ID 9015 -Objekt.


Hinweis Sie müssen keinen Datenspeicher Rechte nur Daten zu reparieren.

Ändern von Code

Hinweis Testen Sie Programmcodeverbesserungen generell erst in einem Testsytem, bevor Sie sie im Produktionssystem verwenden.
Gehen Sie folgendermaßen vor, um dieses Problem zu beheben:
  1. Erstellen Sie eine neue GetCPGInvRoundAcc -Funktion, die den Code für den Rückgabewert (Länge 20) in der Tabelle Verkaufszeile (37) verwendet. Um diese Funktion zu erstellen, gehen Sie folgendermaßen vor:
    1. Fügen Sie eine neue lokale Variable hinzu, und geben Sie die Variable wie folgt:
      • Name: Cust@1012
      • Datentyp: Datensatz
      • Untertyp: Kunden
    2. Fügen Sie eine neue lokale Variable hinzu, und geben Sie die Variable wie folgt:
      • Name: CustPostingGroup@1013
      • Datentyp: Datensatz
      • Untertyp: Debitorenbuchungsgruppe
    3. Fügen Sie eine neue lokale Variable hinzu, und geben Sie die Variable wie folgt:
      • Name: CustTemplate@1014
      • Datentyp: Datensatz
      • Untertyp: Debitorenvorlage
    4. Fügen Sie eine neue lokale Variable hinzu, und geben Sie die Variable wie folgt:
      • Name: SalesSetup@1008
      • Datentyp: Datensatz
      • Untertyp: Debitoren & Verkauf Einr.
    5. Fügen Sie den Code wie folgt:
      SalesSetup.GET;IF SalesSetup."Invoice Rounding" THEN BEGIN
      IF Cust.GET(SalesHeader."Bill-to Customer No.") THEN
      CustPostingGroup.GET(Cust."Customer Posting Group")
      ELSE
      IF CustTemplate.GET(SalesHeader."Sell-to Customer Template Code") THEN
      CustPostingGroup.GET(CustTemplate."Customer Posting Group");
      END;
      EXIT(CustPostingGroup."Invoice Rounding Account");
  2. Löschen Sie die folgenden lokalen Variablen in der Funktion CalcVATAmountLines Verkaufszeile (37):
    • Cust@1012
    • CustPostingGroup@1013
    • CustTemplate@1014
  3. Ändern Sie den Code in der Funktion CalcVATAmountLines Verkaufszeile (37) folgendermaßen:
    Vorhandener code
    WITH SalesLine DO BEGIN
    SETRANGE("Document Type",SalesHeader."Document Type");
    SETRANGE("Document No.",SalesHeader."No.");
    SalesSetup.GET;
    IF SalesSetup."Invoice Rounding" THEN BEGIN
    IF Cust.GET(SalesHeader."Bill-to Customer No.") THEN
    CustPostingGroup.GET(Cust."Customer Posting Group")
    ELSE
    IF CustTemplate.GET(SalesHeader."Sell-to Customer Template Code") THEN
    CustPostingGroup.GET(CustTemplate."Customer Posting Group");
    END;
    IF FINDSET THEN
    REPEAT
    IF NOT ZeroAmountLine(QtyType) THEN BEGIN
    IF (Type = Type::"G/L Account") AND NOT "Prepayment Line" THEN
    RoundingLineInserted := ("No." = CustPostingGroup."Invoice Rounding Account") OR RoundingLineInserted;
    IF "VAT Calculation Type" IN
    ["VAT Calculation Type"::"Reverse Charge VAT","VAT Calculation Type"::"Sales Tax"]

    Neuer code
    WITH SalesLine DO BEGIN
    SETRANGE("Document Type",SalesHeader."Document Type");
    SETRANGE("Document No.",SalesHeader."No.");
    IF FINDSET THEN
    REPEAT
    IF NOT ZeroAmountLine(QtyType) THEN BEGIN
    IF (Type = Type::"G/L Account") AND NOT "Prepayment Line" THEN
    RoundingLineInserted := ("No." = GetCPGInvRoundAcc) OR RoundingLineInserted;
    IF "VAT Calculation Type" IN
    ["VAT Calculation Type"::"Reverse Charge VAT","VAT Calculation Type"::"Sales Tax"]

  4. Erstellen Sie eine neue GetVPGInvRoundAcc -Funktion, die den Code (Länge 20) verwendet den Rückgabewert in der Tabelle "Einkaufszeile" (39). Um diese Funktion zu erstellen, gehen Sie folgendermaßen vor:
    1. Fügen Sie eine neue lokale Variable hinzu, und geben Sie die Variable wie folgt:
      • Name: Vendor@1000
      • Datentyp: Datensatz
      • Untertyp: Kreditor
    2. Fügen Sie eine neue lokale Variable hinzu, und geben Sie die Variable wie folgt:
      • Name: VendorPostingGroup@1001
      • Datentyp: Datensatz
      • Untertyp: Kreditorenbuchungsgruppe
    3. Fügen Sie eine neue lokale Variable hinzu, und geben Sie die Variable wie folgt:
      • Name: PurchSetup@1002
      • Datentyp: Datensatz
      • Untertyp: Kreditoren & Einkauf Einr.
    4. Fügen Sie den Code wie folgt:
      PurchSetup.GET;  IF PurchSetup."Invoice Rounding" THEN  
      IF Vendor.GET(PurchHeader."Pay-to Vendor No.") THEN
      VendorPostingGroup.GET(Vendor."Vendor Posting Group");
      EXIT(VendorPostingGroup."Invoice Rounding Account");

  5. Löschen Sie die folgenden lokalen Variablen in der Funktion CalcVATAmountLines in der Tabelle "Einkaufszeile" (39):
    • Vendor@1012
    • VendorPostingGroup@1013
  6. Ändern Sie den Code in der Funktion CalcVATAmountLines in der Tabelle "Einkaufszeile" (39):
    Vorhandener code
    WITH PurchLine DO BEGIN
    SETRANGE("Document Type",PurchHeader."Document Type");
    SETRANGE("Document No.",PurchHeader."No.");
    PurchSetup.GET;
    IF PurchSetup."Invoice Rounding" THEN BEGIN
    Vendor.GET(PurchHeader."Pay-to Vendor No.");
    VendorPostingGroup.GET(Vendor."Vendor Posting Group");
    END;
    IF FINDSET THEN
    REPEAT
    IF NOT ZeroAmountLine(QtyType) THEN BEGIN
    IF (Type = Type::"G/L Account") AND NOT "Prepayment Line" THEN
    RoundingLineInserted := ("No." = VendorPostingGroup."Invoice Rounding Account") OR RoundingLineInserted;
    IF "VAT Calculation Type" IN
    ["VAT Calculation Type"::"Reverse Charge VAT","VAT Calculation Type"::"Sales Tax"]

    Neuer code
    WITH PurchLine DO BEGIN
    SETRANGE("Document Type",PurchHeader."Document Type");
    SETRANGE("Document No.",PurchHeader."No.");
    IF FINDSET THEN
    REPEAT
    IF NOT ZeroAmountLine(QtyType) THEN BEGIN
    IF (Type = Type::"G/L Account") AND NOT "Prepayment Line" THEN
    RoundingLineInserted := ("No." = GetVPGInvRoundAcc) OR RoundingLineInserted;
    IF "VAT Calculation Type" IN
    ["VAT Calculation Type"::"Reverse Charge VAT","VAT Calculation Type"::"Sales Tax"]

Voraussetzungen

Sie müssen eines der folgenden Produkte verfügen, um diesen Hotfix installieren:
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Servicepack 1 (SP1)
  • Microsoft Dynamics NAV 2009

Informationen zur Deinstallation

Dieser Hotfix kann nicht entfernt werden.

Status


Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.
Hinweis Dies ist ein im Schnellverfahren veröffentlichter Artikel, der direkt in der Microsoft Support-Organisation erstellt wurde. Die hierin enthaltenen Informationen werden ohne Mängelgewähr in Reaktion auf neue Probleme bereitgestellt. Aufgrund der schnellen Bereitstellung kann das Material möglicherweise typografische Fehler enthalten und jederzeit ohne vorherige Ankündigung geändert werden. Weitere Hinweise finden Sie unter Geschäftsbedingungen .