Tuesday, July 11, 2023

Fehlermeldung „Die Transaktion kann nicht abgeschlossen werden, da es zu Inkonsistenzen in der Sachpostentabelle kommt“, wenn Sie eine Einkaufsrechnung in der nordamerikanischen Version von Microsoft Dynamics NAV 2009 buchen – Microsoft-Support

Dieser Artikel gilt für Microsoft für die folgenden Länder und Sprachgebiete.

  • Englisch (Kanada) (en-ca)

  • Englisch (USA) (en-us)

  • Spanisch (Mexiko) (es-mx)

  • Französisch (Kanada) (fr-ca)

Symptome

Angenommen, Sie legen CAD als zusätzlichen Berichtswährungswert im Dialogfeld „Hauptbuch einrichten" in der nordamerikanischen Version von Microsoft Dynamics NAV 2009 fest. Wenn Sie eine Einkaufsrechnung buchen, die Steuern enthält, erhalten Sie die folgende Fehlermeldung:

Die Transaktion kann nicht abgeschlossen werden, da dies zu Inkonsistenzen in der Sachpostentabelle führt. Überprüfen Sie, wo und wie die CONSISTENT-Funktion in der Transaktion verwendet wird, um die Fehlerursache zu finden.

Dieses Problem tritt bei folgenden Produkten auf:

  • Die nordamerikanische Version von Microsoft Dynamics NAV 2009 R2

  • Die nordamerikanische Version von Microsoft Dynamics NAV 2009 Service Pack 1


Auflösung

Hotfix-Informationen

Ein unterstützter Hotfix ist jetzt von Microsoft verfügbar. Es dient jedoch lediglich der Behebung des in diesem Artikel beschriebenen Problems. Wenden Sie es nur auf Systeme an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise weiteren Tests unterzogen. Wenn Sie von diesem Problem nicht schwerwiegend betroffen sind, empfehlen wir Ihnen daher, auf das nächste Microsoft Dynamics NAV 2009 Service Pack oder die nächste Microsoft Dynamics NAV-Version zu warten, die diesen Hotfix enthält.

Hinweis: In besonderen Fällen können die Gebühren, die normalerweise für Supportanrufe anfallen, storniert werden, wenn ein Mitarbeiter des technischen Supports für Microsoft Dynamics und verwandte Produkte feststellt, dass ein bestimmtes Update Ihr Problem lösen wird. Für zusätzliche Supportfragen und Probleme, die für das jeweilige Update nicht in Frage kommen, fallen die üblichen Supportkosten an.



Installationsinformationen

Microsoft stellt Programmierbeispiele nur zur Veranschaulichung zur Verfügung, ohne ausdrückliche oder stillschweigende Gewährleistung. Dazu gehören unter anderem stillschweigende Garantien der Marktgängigkeit oder Eignung für einen bestimmten Zweck. In diesem Artikel wird davon ausgegangen, dass Sie mit der demonstrierten Programmiersprache und den Tools vertraut sind, die zum Erstellen und Debuggen von Prozeduren verwendet werden. Microsoft-Supporttechniker können dabei helfen, die Funktionalität einer bestimmten Prozedur zu erläutern, sie werden diese Beispiele jedoch nicht ändern, um zusätzliche Funktionalität bereitzustellen oder Prozeduren zu erstellen, die Ihren spezifischen Anforderungen entsprechen.

Hinweis Bevor Sie diesen Hotfix installieren, stellen Sie sicher, dass alle Benutzer des Microsoft Navision-Clients vom System abgemeldet sind. Dazu gehören Clientbenutzer von Microsoft Navision Application Services (NAS). Sie sollten der einzige Clientbenutzer sein, der angemeldet ist, wenn Sie diesen Hotfix implementieren.

Um diesen Hotfix zu implementieren, benötigen Sie eine Entwicklerlizenz.

Wir empfehlen, dem Benutzerkonto im Fenster „Windows-Anmeldungen" oder im Fenster „Datenbank-Anmeldungen" die Rollen-ID „SUPER" zuzuweisen. Wenn dem Benutzerkonto nicht die Rollen-ID „SUPER" zugewiesen werden kann, müssen Sie überprüfen, ob das Benutzerkonto über die folgenden Berechtigungen verfügt:

  • Die Änderungsberechtigung für das Objekt, das Sie ändern möchten.

  • Die Ausführungsberechtigung für das Systemobjekt-ID-5210-Objekt und für das Systemobjekt-ID-9015-Objekt.



Hinweis Sie müssen keine Rechte an den Datenspeichern haben, es sei denn, Sie müssen eine Datenreparatur durchführen.

Codeänderungen

Hinweis: Testen Sie Codekorrekturen immer in einer kontrollierten Umgebung, bevor Sie die Korrekturen auf Ihren Produktionscomputern anwenden.

Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:

  1. Ändern Sie den Code in den Feldern in der Tabelle „Sales Tax Amount Line" (10011) wie folgt:
    Vorhandener Code

     ...
    ESM=Es Informe jurisdicci¢n;
    FRC=Es ist eine Steuergerichtsbarkeit;
    ENC=Ist Berichtspflichtige Gerichtsbarkeit];
    Bearbeitbar = Nein }
    }
    SCHLÜSSEL
    {
    { ;Steuergebietscode für Schlüssel,Steuerstandortcode,Steuer %,Steuergruppencode,Ausgabe/Aktivierung,Steuertyp,Verwendungssteuer;
    ...

    Ersatzcode

     ...

    ESM=Es Informe jurisdicci¢n;
    FRC=Es ist eine Steuergerichtsbarkeit;
    ENC=Ist Berichtspflichtige Gerichtsbarkeit];
    Bearbeitbar = Nein }

    // Fügen Sie die folgende Zeile hinzu.
    { 10044; ;Steuerbasisbetrag FCY ;Dezimal }
    // Ende der hinzugefügten Zeile.

    }
    SCHLÜSSEL
    {
    { ;Steuergebietscode für Schlüssel,Steuerstandortcode,Steuer %,Steuergruppencode,Ausgabe/Aktivierung,Steuertyp,Verwendungssteuer;
    ...
  2. Ändern Sie den Code in der PostSalesTaxToGL-Funktion in der Sales-Post-Codeunit (80) wie folgt:
    Vorhandener Code

     ...
    ENDE;
    GenJnlLine."Steuerstandortcode" := TempSalesTaxAmtLine."Steuerstandortcode";
    WENN TempSalesTaxAmtLine."Tax Amount" <> 0 THEN BEGIN
    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt +

    // Folgende Zeilen löschen.
    CurrExchRate.ExchangeAmtLCYToFCY(
    UseDate,SalesHeader."Currency Code",TempSalesTaxAmtLine."Tax Amount",SalesHeader."Currency Factor");
    // Ende der gelöschten Zeilen.

    GenJnlLine."Quelle Curr. MwSt.-Betrag" :=
    SalesTaxCalculate.ArithmeticRound(RemSalesTaxSrcAmt,Currency."Amount Rounding Precision");
    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt - GenJnlLine."Source Curr. MwSt.-Betrag";
    RemSalesTaxAmt := RemSalesTaxAmt + TempSalesTaxAmtLine."Steuerbetrag";
    ...

    Ersatzcode

     ...
    ENDE;
    GenJnlLine."Steuerstandortcode" := TempSalesTaxAmtLine."Steuerstandortcode";
    WENN TempSalesTaxAmtLine."Tax Amount" <> 0 THEN BEGIN
    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt +

    // Fügen Sie die folgenden Zeilen hinzu.
    TempSalesTaxAmtLine."Tax Base Amount FCY" * TempSalesTaxAmtLine."Tax %" / 100;
    // Ende der hinzugefügten Zeilen.

    GenJnlLine."Quelle Curr. MwSt.-Betrag" :=
    SalesTaxCalculate.ArithmeticRound(RemSalesTaxSrcAmt,Currency."Amount Rounding Precision");
    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt - GenJnlLine."Source Curr. MwSt.-Betrag";
    RemSalesTaxAmt := RemSalesTaxAmt + TempSalesTaxAmtLine."Steuerbetrag";
    ...
  3. Ändern Sie den Code in der PostSalesTaxToGL-Funktion in der Purch.-Post Codeunit (90) wie folgt:
    Vorhandener Code

     ...
    ENDE;
    GenJnlLine."Steuerstandortcode" := TempSalesTaxAmtLine."Steuerstandortcode";
    WENN TempSalesTaxAmtLine."Tax Amount" <> 0 THEN BEGIN
    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt +

    // Folgende Zeilen löschen.
    CurrExchRate.ExchangeAmtLCYToFCY(
    Usedate,PurchHeader."Währungscode",TempSalesTaxAmtLine."Steuerbetrag",PurchHeader."Währungsfaktor");
    // Ende der gelöschten Zeilen.

    GenJnlLine."Quelle Curr. MwSt.-Betrag" :=
    SalesTaxCalculate.ArithmeticRound(RemSalesTaxSrcAmt,Currency."Amount Rounding Precision");
    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt - GenJnlLine."Source Curr. MwSt.-Betrag";
    RemSalesTaxAmt := RemSalesTaxAmt + TempSalesTaxAmtLine."Steuerbetrag";
    ...

    Ersatzcode

     ...
    ENDE;
    GenJnlLine."Steuerstandortcode" := TempSalesTaxAmtLine."Steuerstandortcode";
    WENN TempSalesTaxAmtLine."Tax Amount" <> 0 THEN BEGIN
    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt +

    // Fügen Sie die folgende Zeile hinzu.
    TempSalesTaxAmtLine."Tax Base Amount FCY" * TempSalesTaxAmtLine."Tax %" / 100;
    // Ende der hinzugefügten Zeile.

    GenJnlLine."Quelle Curr. MwSt.-Betrag" :=
    SalesTaxCalculate.ArithmeticRound(RemSalesTaxSrcAmt,Currency."Amount Rounding Precision");
    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt - GenJnlLine."Source Curr. MwSt.-Betrag";
    RemSalesTaxAmt := RemSalesTaxAmt + TempSalesTaxAmtLine."Steuerbetrag";
    ...
  4. Ändern Sie den Code in der PostProvincialSalesTaxToGL-Funktion in der Purch.-Post Codeunit (90) wie folgt:
    Vorhandener Code

     ...
    TaxJurisdiction.TESTFIELD("Steuerkonto (Käufe)");
    GenJnlLine."Konto-Nr." := TaxJurisdiction."Steuerkonto (Käufe)";
    ENDE;
    GenJnlLine.Amount := GenJnlLine."VAT Amount";

    // Folgende Zeilen löschen.
    GenJnlLine."Source Curr. VAT Base Amount" := 0;
    GenJnlLine."MwSt.-Grundbetrag (LCY)" := 0;
    GenJnlLine."VAT Base Amount" := 0;
    GenJnlLine."Quelle Curr. MwSt.-Betrag" := 0;
    // Ende der gelöschten Zeilen.

    GenJnlLine."Mehrwertsteuerbetrag (MW)" := 0;
    GenJnlLine."VAT Amount" := 0;
    GenJnlLine.Quantity := 0;
    GenJnlLine."VAT Difference" := 0;
    ...

    Ersatzcode

     ...
    TaxJurisdiction.TESTFIELD("Steuerkonto (Käufe)");
    GenJnlLine."Konto-Nr." := TaxJurisdiction."Steuerkonto (Käufe)";
    ENDE;
    GenJnlLine.Amount := GenJnlLine."VAT Amount";

    // Fügen Sie die folgenden Zeilen hinzu.
    GenJnlLine."Quellenwährungsbetrag" := GenJnlLine."Quellenwährungs-Mehrwertsteuerbetrag";
    GenJnlLine."Source Curr. VAT Base Amount" := 0;
    GenJnlLine."MwSt.-Grundbetrag (LCY)" := 0;
    GenJnlLine."VAT Base Amount" := 0;
    // Ende der hinzugefügten Zeilen.

    GenJnlLine."Mehrwertsteuerbetrag (MW)" := 0;
    GenJnlLine."VAT Amount" := 0;
    GenJnlLine.Quantity := 0;
    GenJnlLine."VAT Difference" := 0;
    ...
  5. Ändern Sie den Code in der AddSalesLine-Funktion in der Sales Tax Calculate Codeunit (398) wie folgt:
    Vorhandener Code 1

     ...
    "Round Tax" := TaxArea."Round Tax";
    TaxJurisdiction.GET("Steuerstandortcode");
    „Ist Berichtspflichtige Jurisdiktion" := („Tax Jurisdiction Code" = TaxJurisdiction."Meldepflichtige Jurisdiktion");
    ENDE;

    // Folgende Zeile löschen.
    "Tax Base Amount" := (SalesLine."Line Amount" - SalesLine."Inv. Discount Amount") / ExchangeFactor;
    // Ende der gelöschten Zeile.

    "Line Amount" := SalesLine."Line Amount" / ExchangeFactor;
    „Steuerpflichtig" := SalesLine."Steuerpflichtig";
    Menge := SalesLine."Menge (Basis)";
    "Invoice Discount Amount" := SalesLine."Inv. Discount Amount";
    ...

    Ersatzcode 1

     ...
    "Round Tax" := TaxArea."Round Tax";
    TaxJurisdiction.GET("Steuerstandortcode");
    „Ist Berichtspflichtige Jurisdiktion" := („Tax Jurisdiction Code" = TaxJurisdiction."Meldepflichtige Jurisdiktion");
    ENDE;

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,SalesLine."Line Amount" - SalesLine."Inv. Discount Amount",ExchangeFactor,FALSE);
    // Ende der hinzugefügten Zeile.

    "Line Amount" := SalesLine."Line Amount" / ExchangeFactor;
    „Steuerpflichtig" := SalesLine."Steuerpflichtig";
    Menge := SalesLine."Menge (Basis)";
    "Invoice Discount Amount" := SalesLine."Inv. Discount Amount";
    ...

    Vorhandener Code 2

     ...
    ENDE SONST BEGINNEN
    „Line Amount" := „Line Amount" + (SalesLine."Line Amount" / ExchangeFactor);
    WENN SalesLine„Steuerpflichtig" DANN
    „Steuerpflichtig" := SalesLine."Steuerpflichtig";

    // Folgende Zeile löschen.
    "Tax Base Amount" := "Tax Base Amount" + ((SalesLine."Line Amount" - SalesLine."Inv. Discount Amount") / ExchangeFactor);
    // Ende der gelöschten Zeile.

    „Steuerbetrag" := 0;
    Menge := Menge + SalesLine. „Menge (Basis)";
    „Rechnungsrabattbetrag" := „Rechnungsrabattbetrag" + SalesLine."Inv. Rabattbetrag";
    ÄNDERN;
    ...

    Ersatzcode 2

     ...
    ENDE SONST BEGINNEN
    „Line Amount" := „Line Amount" + (SalesLine."Line Amount" / ExchangeFactor);
    WENN SalesLine„Steuerpflichtig" DANN
    „Steuerpflichtig" := SalesLine."Steuerpflichtig";

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,SalesLine."Line Amount" - SalesLine."Inv. Discount Amount",ExchangeFactor,TRUE);
    // Ende der hinzugefügten Zeile.

    „Steuerbetrag" := 0;
    Menge := Menge + SalesLine. „Menge (Basis)";
    „Rechnungsrabattbetrag" := „Rechnungsrabattbetrag" + SalesLine."Inv. Rabattbetrag";
    ÄNDERN;
    ...
  6. Ändern Sie den Code in der Funktion AddSalesInvoiceLines in der Codeunit „Sales Tax Calculate" (398) wie folgt:
    Vorhandener Code 1

     ...
    „Ist meldepflichtiger Gerichtsstand" :=
    („Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
    ENDE;
    "Line Amount" := SalesInvoiceLine."Line Amount" / ExchangeFactor;

    // Folgende Zeile löschen.
    "Tax Base Amount" := SalesInvoiceLine."VAT Base Amount" / ExchangeFactor;
    // Ende der gelöschten Zeile.

    Menge := SalesInvoiceLine.Quantity;
    „Steuerpflichtig" := SalesInvoiceLine."Steuerpflichtig";
    "Berechnungsreihenfolge" := TaxAreaLine."Berechnungsreihenfolge";
    InsertRec := TRUE;
    ...

    Ersatzcode 1

     ...
    „Ist meldepflichtiger Gerichtsstand" :=
    („Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
    ENDE;
    "Line Amount" := SalesInvoiceLine."Line Amount" / ExchangeFactor;

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,SalesInvoiceLine."VAT-Basisbetrag",ExchangeFactor,FALSE);
    // Ende der hinzugefügten Zeile.

    Menge := SalesInvoiceLine.Quantity;
    „Steuerpflichtig" := SalesInvoiceLine."Steuerpflichtig";
    "Berechnungsreihenfolge" := TaxAreaLine."Berechnungsreihenfolge";
    InsertRec := TRUE;
    ...

    Vorhandener Code 2

     ...
    InsertRec := TRUE;
    EINFÜGUNG;
    ENDE SONST BEGINNEN
    "Line Amount" := "Line Amount" + (SalesInvoiceLine."Line Amount" / ExchangeFactor);

    // Folgende Zeile löschen.
    "Tax Base Amount" := "Tax Base Amount" + (SalesInvoiceLine."VAT Base Amount" / ExchangeFactor);
    // Ende der gelöschten Zeile.

    Menge := Menge + SalesInvoiceLine.Quantity;
    WENN SalesInvoiceLine."Steuerpflichtig" DANN
    „Steuerpflichtig" := SalesInvoiceLine."Steuerpflichtig";
    InsertRec := FALSE;
    ...

    Ersatzcode 2

     ...
    InsertRec := TRUE;
    EINFÜGUNG;
    ENDE SONST BEGINNEN
    "Line Amount" := "Line Amount" + (SalesInvoiceLine."Line Amount" / ExchangeFactor);

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,SalesInvoiceLine."VAT Base Amount",ExchangeFactor,TRUE);
    // Ende der hinzugefügten Zeile.

    Menge := Menge + SalesInvoiceLine.Quantity;
    WENN SalesInvoiceLine."Steuerpflichtig" DANN
    „Steuerpflichtig" := SalesInvoiceLine."Steuerpflichtig";
    InsertRec := FALSE;
    ...
  7. Ändern Sie den Code in der AddSalesCrMemoLines-Funktion in der Sales Tax Calculate Codeunit (398) wie folgt:
    Vorhandener Code 1

     ...
    „Ist meldepflichtiger Gerichtsstand" :=
    („Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
    ENDE;
    "Line Amount" := SalesCrMemoLine."Line Amount" / ExchangeFactor;

    // Folgende Zeile löschen.
    "Tax Base Amount" := SalesCrMemoLine."VAT Base Amount" / ExchangeFactor;
    // Ende der gelöschten Zeile.

    Menge := SalesCrMemoLine.Quantity;
    „Steuerpflichtig" := SalesCrMemoLine."Steuerpflichtig";
    "Berechnungsreihenfolge" := TaxAreaLine."Berechnungsreihenfolge";
    InsertRec := TRUE;
    ...

    Ersatzcode 1

     ...
    „Ist meldepflichtiger Gerichtsstand" :=
    („Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
    ENDE;
    "Line Amount" := SalesCrMemoLine."Line Amount" / ExchangeFactor;

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,SalesCrMemoLine."VAT-Basisbetrag",ExchangeFactor,FALSE);
    // Ende der hinzugefügten Zeile.

    Menge := SalesCrMemoLine.Quantity;
    „Steuerpflichtig" := SalesCrMemoLine."Steuerpflichtig";
    "Berechnungsreihenfolge" := TaxAreaLine."Berechnungsreihenfolge";
    InsertRec := TRUE;
    ...

    Vorhandener Code 2

     ...
    InsertRec := TRUE;
    EINFÜGUNG;
    ENDE SONST BEGINNEN
    "Line Amount" := "Line Amount" + (SalesCrMemoLine."Line Amount" / ExchangeFactor);

    // Folgende Zeile löschen.
    „Steuerbasisbetrag" := „Steuerbasisbetrag" + (SalesCrMemoLine."VAT-Basisbetrag" / ExchangeFactor);
    // Ende der gelöschten Zeile.

    Menge := Menge + SalesCrMemoLine.Quantity;
    WENN SalesCrMemoLine."Steuerpflichtig" DANN
    „Steuerpflichtig" := SalesCrMemoLine."Steuerpflichtig";
    InsertRec := FALSE;
    ...

    Ersatzcode 2

     ...
    InsertRec := TRUE;
    EINFÜGUNG;
    ENDE SONST BEGINNEN
    "Line Amount" := "Line Amount" + (SalesCrMemoLine."Line Amount" / ExchangeFactor);

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,SalesCrMemoLine."VAT-Basisbetrag",ExchangeFactor,TRUE);
    // Ende der hinzugefügten Zeile.

    Menge := Menge + SalesCrMemoLine.Quantity;
    WENN SalesCrMemoLine."Steuerpflichtig" DANN
    „Steuerpflichtig" := SalesCrMemoLine."Steuerpflichtig";
    InsertRec := FALSE;
    ...
  8. Ändern Sie den Code in der AddPurchLine-Funktion in der Sales Tax Calculate Codeunit (398) wie folgt:
    Vorhandener Code 1

     ...
    "Round Tax" := TaxArea."Round Tax";
    TaxJurisdiction.GET("Steuerstandortcode");
    „Ist Berichtspflichtige Jurisdiktion" := („Tax Jurisdiction Code" = TaxJurisdiction."Meldepflichtige Jurisdiktion");
    ENDE;

    // Folgende Zeile löschen.
    "Tax Base Amount" := (PurchLine."Line Amount" - PurchLine."Inv. Discount Amount") / ExchangeFactor;
    // Ende der gelöschten Zeile.

    "Line Amount" := PurchLine."Line Amount" / ExchangeFactor;
    „Steuerpflichtig" := PurchLine."Steuerpflichtig";
    "Use Tax" := PurchLine."Use Tax";
    ...

    Ersatzcode 1

     ...
    "Round Tax" := TaxArea."Round Tax";
    TaxJurisdiction.GET("Steuerstandortcode");
    „Ist Berichtspflichtige Jurisdiktion" := („Tax Jurisdiction Code" = TaxJurisdiction."Meldepflichtige Jurisdiktion");
    ENDE;

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,PurchLine."Line Amount" - PurchLine."Inv. Discount Amount",ExchangeFactor,FALSE);
    // Ende der hinzugefügten Zeile.

    "Line Amount" := PurchLine."Line Amount" / ExchangeFactor;
    „Steuerpflichtig" := PurchLine."Steuerpflichtig";
    "Use Tax" := PurchLine."Use Tax";
    ...

    Vorhandener Code 2

     ...
    ENDE SONST BEGINNEN
    „Line Amount" := „Line Amount" + (PurchLine."Line Amount" / ExchangeFactor);
    WENN PurchLine„Steuerpflichtig" DANN
    „Steuerpflichtig" := PurchLine."Steuerpflichtig";

    // Folgende Zeile löschen.
    "Tax Base Amount" := "Tax Base Amount" + ((PurchLine."Line Amount" - PurchLine."Inv. Discount Amount") / ExchangeFactor);
    // Ende der gelöschten Zeile.

    „Steuerbetrag" := 0;
    Menge := Menge + Einkaufszeile. „Menge (Basis)";
    „Rechnungsrabattbetrag" := „Rechnungsrabattbetrag" + PurchLine."Inv. Rabattbetrag";
    ÄNDERN;
    ...

    Ersatzcode 2

     ...
    ENDE SONST BEGINNEN
    „Line Amount" := „Line Amount" + (PurchLine."Line Amount" / ExchangeFactor);
    WENN PurchLine„Steuerpflichtig" DANN
    „Steuerpflichtig" := PurchLine."Steuerpflichtig";

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,PurchLine."Line Amount" - PurchLine."Inv. Discount Amount",ExchangeFactor,TRUE);
    // Ende der hinzugefügten Zeile.

    „Steuerbetrag" := 0;
    Menge := Menge + Einkaufszeile. „Menge (Basis)";
    „Rechnungsrabattbetrag" := „Rechnungsrabattbetrag" + PurchLine."Inv. Rabattbetrag";
    ÄNDERN;
    ...
  9. Ändern Sie den Code in der Funktion „AddPurchInvoiceLines" in der Codeunit „Sales Tax Calculate" (398) wie folgt:
    Vorhandener Code 1

     ...
    „Ist meldepflichtiger Gerichtsstand" :=
    („Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
    ENDE;
    "Line Amount" := PurchInvLine."Line Amount" / ExchangeFactor;

    // Folgende Zeile löschen.
    "Tax Base Amount" := PurchInvLine."VAT Base Amount" / ExchangeFactor;
    // Ende der gelöschten Zeile.

    Menge := PurchInvLine.Quantity;
    „Steuerpflichtig" := PurchInvLine."Steuerpflichtig";
    "Use Tax" := PurchInvLine."Use Tax";
    ...

    Ersatzcode 1

     ...
    „Ist meldepflichtiger Gerichtsstand" :=
    („Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
    ENDE;
    "Line Amount" := PurchInvLine."Line Amount" / ExchangeFactor;

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,PurchInvLine."VAT-Basisbetrag",ExchangeFactor,FALSE);
    // Ende der hinzugefügten Zeile.

    Menge := PurchInvLine.Quantity;
    „Steuerpflichtig" := PurchInvLine."Steuerpflichtig";
    "Use Tax" := PurchInvLine."Use Tax";
    ...

    Vorhandener Code 2

     ...
    InsertRec := TRUE;
    EINFÜGUNG;
    ENDE SONST BEGINNEN
    "Line Amount" := "Line Amount" + (PurchInvLine."Line Amount" / ExchangeFactor);

    // Folgende Zeile löschen.
    „Tax Base Amount" := „Tax Base Amount" + (PurchInvLine."VAT Base Amount" / ExchangeFactor);
    // Ende der gelöschten Zeile.

    Menge := Menge + PurchInvLine.Quantity;
    WENN PurchInvLine."Steuerpflichtig" DANN
    „Steuerpflichtig" := PurchInvLine."Steuerpflichtig";
    InsertRec := FALSE;
    ...

    Ersatzcode 2

     ...
    InsertRec := TRUE;
    EINFÜGUNG;
    ENDE SONST BEGINNEN
    "Line Amount" := "Line Amount" + (PurchInvLine."Line Amount" / ExchangeFactor);

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,PurchInvLine."VAT Base Amount",ExchangeFactor,TRUE);
    // Ende der hinzugefügten Zeile.

    Menge := Menge + PurchInvLine.Quantity;
    WENN PurchInvLine."Steuerpflichtig" DANN
    „Steuerpflichtig" := PurchInvLine."Steuerpflichtig";
    InsertRec := FALSE;
    ...
  10. Ändern Sie den Code in der Funktion AddPurchCrMemoLines in der Codeunit „Sales Tax Calculate" (398) wie folgt:
    Vorhandener Code 1

     ...
    „Ist meldepflichtiger Gerichtsstand" :=
    („Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
    ENDE;
    "Line Amount" := PurchCrMemoLine."Line Amount" / ExchangeFactor;

    // Folgende Zeile löschen.
    "Tax Base Amount" := PurchCrMemoLine."VAT Base Amount" / ExchangeFactor;
    // Ende der gelöschten Zeile.

    Menge := PurchCrMemoLine.Quantity;
    „Steuerpflichtig" := PurchCrMemoLine."Steuerpflichtig";
    "Use Tax" := PurchCrMemoLine."Use Tax";
    ...

    Ersatzcode 1

     ...
    „Ist meldepflichtiger Gerichtsstand" :=
    („Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
    ENDE;
    "Line Amount" := PurchCrMemoLine."Line Amount" / ExchangeFactor;

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,PurchCrMemoLine."VAT-Basisbetrag",ExchangeFactor,FALSE);
    // Ende der hinzugefügten Zeile.

    Menge := PurchCrMemoLine.Quantity;
    „Steuerpflichtig" := PurchCrMemoLine."Steuerpflichtig";
    "Use Tax" := PurchCrMemoLine."Use Tax";
    ...

    Vorhandener Code 2

     ...
    InsertRec := TRUE;
    EINFÜGUNG;
    ENDE SONST BEGINNEN
    "Line Amount" := "Line Amount" + (PurchCrMemoLine."Line Amount" / ExchangeFactor);

    // Folgende Zeile löschen.
    „Steuerbasisbetrag" := „Steuerbasisbetrag" + (PurchCrMemoLine."VAT-Basisbetrag" / ExchangeFactor);
    // Ende der gelöschten Zeile.

    Menge := Menge + PurchCrMemoLine.Quantity;
    WENN PurchCrMemoLine."Steuerpflichtig" DANN
    „Steuerpflichtig" := PurchCrMemoLine."Steuerpflichtig";
    InsertRec := FALSE;
    ...

    Ersatzcode 2

     ...
    InsertRec := TRUE;
    EINFÜGUNG;
    ENDE SONST BEGINNEN
    "Line Amount" := "Line Amount" + (PurchCrMemoLine."Line Amount" / ExchangeFactor);

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,PurchCrMemoLine."VAT Base Amount",ExchangeFactor,TRUE);
    // Ende der hinzugefügten Zeile.

    Menge := Menge + PurchCrMemoLine.Quantity;
    WENN PurchCrMemoLine."Steuerpflichtig" DANN
    „Steuerpflichtig" := PurchCrMemoLine."Steuerpflichtig";
    InsertRec := FALSE;
    ...
  11. Ändern Sie den Code in der AddServiceLine-Funktion in der Sales Tax Calculate Codeunit (398) wie folgt:
    Vorhandener Code 1

     ...
    "Round Tax" := TaxArea."Round Tax";
    TaxJurisdiction.GET("Steuerstandortcode");
    „Ist Berichtspflichtige Jurisdiktion" := („Tax Jurisdiction Code" = TaxJurisdiction."Meldepflichtige Jurisdiktion");
    ENDE;

    // Folgende Zeile löschen.
    "Tax Base Amount" := (ServiceLine."Line Amount" - ServiceLine."Inv. Discount Amount") / ExchangeFactor;
    // Ende der gelöschten Zeile.

    „Line Amount" := ServiceLine."Line Amount" / ExchangeFactor;
    „Steuerpflichtig" := ServiceLine."Steuerpflichtig";
    Menge := ServiceLine."Menge (Basis)";
    "Invoice Discount Amount" := ServiceLine."Inv. Discount Amount";
    ...

    Ersatzcode 1

     ...
    "Round Tax" := TaxArea."Round Tax";
    TaxJurisdiction.GET("Steuerstandortcode");
    „Ist Berichtspflichtige Jurisdiktion" := („Tax Jurisdiction Code" = TaxJurisdiction."Meldepflichtige Jurisdiktion");
    ENDE;

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,ServiceLine."Line Amount" - ServiceLine."Inv. Discount Amount",ExchangeFactor,FALSE);
    // Ende der hinzugefügten Zeile.

    „Line Amount" := ServiceLine."Line Amount" / ExchangeFactor;
    „Steuerpflichtig" := ServiceLine."Steuerpflichtig";
    Menge := ServiceLine."Menge (Basis)";
    "Invoice Discount Amount" := ServiceLine."Inv. Discount Amount";
    ...

    Vorhandener Code 2

     ...
    ENDE SONST BEGINNEN
    „Line Amount" := „Line Amount" + (ServiceLine."Line Amount" / ExchangeFactor);
    WENN ServiceLine „Steuerpflichtig" DANN
    „Steuerpflichtig" := ServiceLine."Steuerpflichtig";

    // Folgende Zeile löschen.
    „Steuerbasisbetrag" :=
    „Steuerbasisbetrag" + ((ServiceLine."Line Amount" – ServiceLine."Inv. Discount Amount") / ExchangeFactor);
    // Ende der gelöschten Zeile.

    „Steuerbetrag" := 0;
    Menge := Menge + ServiceLine. „Menge (Basis)";
    „Rechnungsrabattbetrag" := „Rechnungsrabattbetrag" + ServiceLine."Inv. Rabattbetrag";
    ÄNDERN;
    ...

    Ersatzcode 2

     ...
    ENDE SONST BEGINNEN
    „Line Amount" := „Line Amount" + (ServiceLine."Line Amount" / ExchangeFactor);
    WENN ServiceLine „Steuerpflichtig" DANN
    „Steuerpflichtig" := ServiceLine."Steuerpflichtig";

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,ServiceLine."Line Amount" - ServiceLine."Inv. Discount Amount",ExchangeFactor,TRUE);
    // Ende der hinzugefügten Zeile.

    „Steuerbetrag" := 0;
    Menge := Menge + ServiceLine. „Menge (Basis)";
    „Rechnungsrabattbetrag" := „Rechnungsrabattbetrag" + ServiceLine."Inv. Rabattbetrag";
    ÄNDERN;
    ...
  12. Ändern Sie den Code in der AddServInvoiceLines-Funktion in der Sales Tax Calculate Codeunit (398) wie folgt:
    Vorhandener Code 1

     ...
    „Ist meldepflichtiger Gerichtsstand" :=
    („Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
    ENDE;
    "Line Amount" := ServInvLine."Line Amount" / ExchangeFactor;

    // Folgende Zeilen löschen.
    "Tax Base Amount" := ServInvLine."VAT Base Amount" / ExchangeFactor;
    Menge := ServInvLine.Quantity;
    „Steuerpflichtig" := ServInvLine."Steuerpflichtig";

    // Ende der gelöschten Zeile.

    "Berechnungsreihenfolge" := TaxAreaLine."Berechnungsreihenfolge";
    InsertRec := TRUE;
    EINFÜGUNG;
    ...

    Ersatzcode 1

     ...
    „Ist meldepflichtiger Gerichtsstand" :=
    („Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
    ENDE;
    "Line Amount" := ServInvLine."Line Amount" / ExchangeFactor;

    // Fügen Sie die folgenden Zeilen hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,ServInvLine."VAT-Basisbetrag",ExchangeFactor,FALSE);
    Menge := ServInvLine.Quantity;
    „Steuerpflichtig" := ServInvLine."Steuerpflichtig";
    // Ende der hinzugefügten Zeilen.

    "Berechnungsreihenfolge" := TaxAreaLine."Berechnungsreihenfolge";
    InsertRec := TRUE;
    EINFÜGUNG;
    ...

    Vorhandener Code 2

     ...
    InsertRec := TRUE;
    EINFÜGUNG;
    ENDE SONST BEGINNEN
    „Line Amount" := „Line Amount" + (ServInvLine."Line Amount" / ExchangeFactor);

    // Folgende Zeile löschen.
    „Steuerbasisbetrag" := „Steuerbasisbetrag" + (ServInvLine."VAT-Basisbetrag" / ExchangeFactor);
    // Ende der gelöschten Zeile.

    Menge := Menge + ServInvLine.Quantity;
    WENN ServInvLine."Steuerpflichtig" DANN
    „Steuerpflichtig" := ServInvLine."Steuerpflichtig";
    InsertRec := FALSE;
    ...

    Ersatzcode 2

     ...
    InsertRec := TRUE;
    EINFÜGUNG;
    ENDE SONST BEGINNEN
    „Line Amount" := „Line Amount" + (ServInvLine."Line Amount" / ExchangeFactor);

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,ServInvLine."VAT Base Amount",ExchangeFactor,TRUE);
    // Ende der hinzugefügten Zeile.

    Menge := Menge + ServInvLine.Quantity;
    WENN ServInvLine."Steuerpflichtig" DANN
    „Steuerpflichtig" := ServInvLine."Steuerpflichtig";
    InsertRec := FALSE;
    ...
  13. Ändern Sie den Code in der AddServCrMemoLines-Funktion in der Sales Tax Calculate Codeunit (398) wie folgt:
    Vorhandener Code 1

     ...
    „Ist meldepflichtiger Gerichtsstand" :=
    („Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
    ENDE;
    "Line Amount" := ServCrMemoLine."Line Amount" / ExchangeFactor;

    // Folgende Zeile löschen.
    "Tax Base Amount" := ServCrMemoLine."VAT Base Amount" / ExchangeFactor;
    // Ende der gelöschten Zeile.

    Menge := ServCrMemoLine.Quantity;
    „Steuerpflichtig" := ServCrMemoLine."Steuerpflichtig";

    "Berechnungsreihenfolge" := TaxAreaLine."Berechnungsreihenfolge";
    ...

    Ersatzcode 1

     ...
    „Ist meldepflichtiger Gerichtsstand" :=
    („Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
    ENDE;
    "Line Amount" := ServCrMemoLine."Line Amount" / ExchangeFactor;

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,ServCrMemoLine."VAT-Basisbetrag",ExchangeFactor,FALSE);
    // Ende der hinzugefügten Zeile.

    Menge := ServCrMemoLine.Quantity;
    „Steuerpflichtig" := ServCrMemoLine."Steuerpflichtig";

    "Berechnungsreihenfolge" := TaxAreaLine."Berechnungsreihenfolge";
    ...

    Vorhandener Code 2

     ...
    InsertRec := TRUE;
    EINFÜGUNG;
    ENDE SONST BEGINNEN
    „Line Amount" := „Line Amount" + (ServCrMemoLine."Line Amount" / ExchangeFactor);

    // Folgende Zeile löschen.
    „Steuerbasisbetrag" := „Steuerbasisbetrag" + (ServCrMemoLine."VAT-Basisbetrag" / ExchangeFactor);
    // Ende der gelöschten Zeile.

    Menge := Menge + ServCrMemoLine.Quantity;
    WENN ServCrMemoLine."Steuerpflichtig" DANN
    „Steuerpflichtig" := ServCrMemoLine."Steuerpflichtig";
    InsertRec := FALSE;
    ...

    Ersatzcode 2

     ...
    InsertRec := TRUE;
    EINFÜGUNG;
    ENDE SONST BEGINNEN
    „Line Amount" := „Line Amount" + (ServCrMemoLine."Line Amount" / ExchangeFactor);

    // Fügen Sie die folgende Zeile hinzu.
    SetTaxBaseAmount(TempSalesTaxLine,ServCrMemoLine."VAT Base Amount",ExchangeFactor,TRUE);
    // Ende der hinzugefügten Zeile.

    Menge := Menge + ServCrMemoLine.Quantity;
    WENN ServCrMemoLine."Steuerpflichtig" DANN
    „Steuerpflichtig" := ServCrMemoLine."Steuerpflichtig";
    InsertRec := FALSE;
    ...
  14. Fügen Sie eine Funktion „SetTaxBaseAmount" in der Codeunit „Sales Tax Calculate" (398) wie folgt hinzu:

     LOKALE VERFAHREN SetTaxBaseAmount@1020031(VAR SalesTaxAmountLine@1020001: Datensatz 10011;Wert@1020000: Dezimal;ExchangeFactor@1020002: Dezimal;Inkrement@1020003: Boolescher Wert);
    START
    BEGINNEN SIE MIT SalesTaxAmountLine
    WENN Inkrement DANN
    „Steuerbasisbetrag FCY" += Wert
    ANDERS
    „Steuerbasisbetrag FCY" := Wert;
    „Tax Base Amount" := „Tax Base Amount FCY" / ExchangeFactor;
    ENDE;
    ENDE;



Voraussetzungen

Um diesen Hotfix anwenden zu können, muss eines der folgenden Produkte installiert sein:

  • Die nordamerikanische Version von Microsoft Dynamics NAV 2009 R2

  • Die nordamerikanische Version von Microsoft Dynamics NAV 2009 Service Pack 1

Informationen zum Entfernen

Sie können diesen Hotfix nicht entfernen.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Gilt für" aufgeführt sind.

Hinweis Dies ist ein „FAST PUBLISH"-Artikel, der direkt von der Microsoft-Supportorganisation erstellt wurde. Die hierin enthaltenen Informationen werden unverändert als Reaktion auf neu auftretende Probleme bereitgestellt. Aufgrund der schnellen Bereitstellung können die Materialien Tippfehler enthalten und jederzeit ohne Vorankündigung überarbeitet werden. Weitere Hinweise finden Sie in den Nutzungsbedingungen .

No comments:

Post a Comment