Dieser Artikel bezieht sich auf Microsoft Dynamics NAV für das Gebietsschema in der indischen Sprache (in).
Symptome
Angenommen, Sie haben eine Zahlung mit einer Dienststeuer, die in der indischen Version von Microsoft Dynamics NAV 2009 angegeben ist. Sie erstellen eine Einkaufsrechnung mit mehreren Zeilen mit unterschiedlichen Dimensionswerten, die für die Zahlung gelten sollen. In diesem Fall erhalten Sie beim Posten der Kaufrechnung die folgende Fehlermeldung:
Hinweis
Das Angewendete Zahlungsdokument xxxx sollte den Betrag für die Anwendung nicht größer als den Betrag aufweisen.
Dieses Problem tritt in den folgenden Produkten auf:
- Die indische Version von Microsoft Dynamics NAV 2009 R2
- Die indische Version von Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
Lösung
Hotfixinformationen
Ein unterstützter Hotfix ist jetzt bei Microsoft verfügbar. Es dient jedoch nur zur Behebung des problems, das in diesem Artikel beschrieben wird. Wenden Sie sie nur auf Systeme an, bei denen dieses spezifische Problem auftritt. Dieser Hotfix erhält möglicherweise zusätzliche Tests. Wenn Sie von diesem Problem nicht stark betroffen sind, empfiehlt es sich daher, auf das nächste Microsoft Dynamics NAV Service Pack oder die nächste Microsoft Dynamics NAV-Version zu warten, die diesen Hotfix enthält.
Hinweis In besonderen Fällen können Gebühren, die normalerweise für Supportanrufe anfallen, storniert werden, wenn ein Technischer Supportmitarbeiter für Microsoft Dynamics und zugehörige Produkte feststellt, dass ihr Problem durch ein bestimmtes Update behoben wird. PLEASE DO NOT TRANSLATE. DOES NOT APPLY TO GERMAN.
Informationen zur Installation
Microsoft stellt Programmierbeispiele nur zur Veranschaulichung zur Verfügung, ohne ausdrückliche oder stillschweigende Garantie. Dies schließt die stillschweigende Gewährleistung der Marktgängigkeit oder der Eignung für einen bestimmten Zweck ein, ist aber nicht darauf beschränkt. In diesem Artikel wird davon ausgegangen, dass Sie mit der vorgestellten Programmiersprache und den Werkzeugen zum Erstellen und Debuggen von Prozeduren vertraut sind. Die Microsoft Support-Spezialisten können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, jedoch werden sie diese Beispiele nicht in Bezug auf eine erweiterte Funktionalität verändern, noch werden sie Prozeduren entwickeln, die auf Ihre besonderen Bedürfnisse zugeschnitten sind.
Hinweis Überprüfen Sie vor der Installation dieses Hotfixs, ob alle Microsoft Navision-Clientbenutzer vom System abgemeldet sind. Dies schließt Microsoft Navision Application Services (NAS)-Clientbenutzer ein. Sie sollten der einzige Clientbenutzer sein, der angemeldet ist, wenn Sie diesen Hotfix implementieren.
Um diesen Hotfix implementieren zu können, benötigen Sie eine Entwicklerlizenz.
Es wird empfohlen, dem Benutzerkonto im Fenster Windows-Anmeldungen oder im Fenster Datenbankanmeldungen die Rollen-ID "SUPER" zuzuweisen. Wenn dem Benutzerkonto die Rollen-ID "SUPER" nicht zugewiesen werden kann, müssen Sie überprüfen, ob das Benutzerkonto über die folgenden Berechtigungen verfügt:
- Die Berechtigung Ändern für das Objekt, das Sie ändern.
- Die Execute-Berechtigung für das Systemobjekt-ID 5210-Objekt und für das Systemobjekt-ID 9015-Objekt.
Hinweis Sie benötigen keine Rechte für die Datenspeicher, 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 Ihre Produktionscomputer anwenden.
Gehen Sie wie folgt vor, um das Problem zu beheben:
Ändern Sie den Code in der FillInvPostingBuffer-Funktion in der Purch.-Post codeunit (90) wie folgt:
Vorhandener Code... InvPostingBuffer[1].SetTaxAmountswithVAT(AmountLoadedonInventory,InputOutputTaxAmount,CapitalGoods,VatablePurchaseTaxAmount,0); IF (PurchLine."Service Tax Amount" <> 0) THEN BEGIN FillSTaxPostingBuffer(PurchLine,PurchLineACY); // Delete the following lines. STaxPostingBuffer2.TRANSFERFIELDS(STaxPostingBuffer[1]); STaxPostingBuffer2.Amount := // End of the lines. STaxPostingBuffer2."Service Tax Base Amount" + STaxPostingBuffer2."Service Tax Amount" + STaxPostingBuffer2."Service Tax eCess Amount" + STaxPostingBuffer2."Service Tax SHE Cess Amount"; IF NOT STaxPostingBuffer2.INSERT THEN STaxPostingBuffer2.MODIFY; END; ...Ersetzungscode
... InvPostingBuffer[1].SetTaxAmountswithVAT(AmountLoadedonInventory,InputOutputTaxAmount,CapitalGoods,VatablePurchaseTaxAmount,0); IF (PurchLine."Service Tax Amount" <> 0) THEN BEGIN FillSTaxPostingBuffer(PurchLine,PurchLineACY); // Add the following lines. STaxPostingBuffer2.TRANSFERFIELDS(STaxPostingBuffer[2]); STaxPostingBuffer2.Amount := STaxPostingBuffer2.Amount + // End of the lines. STaxPostingBuffer2."Service Tax Base Amount" + STaxPostingBuffer2."Service Tax Amount" + STaxPostingBuffer2."Service Tax eCess Amount" + STaxPostingBuffer2."Service Tax SHE Cess Amount"; IF NOT STaxPostingBuffer2.INSERT THEN STaxPostingBuffer2.MODIFY; END; ...Ändern Sie den Code in der UpdSvcTaxPostingBuffer-Funktion in der Purch.-Post codeunit (90) wie folgt:
Vorhandener Code... END; LOCAL PROCEDURE UpdSvcTaxPostingBuffer@1280031(); VAR TempDimBuf@1280001 : TEMPORARY Record 360; // Delete the following line. EntryNo@1280000 : Integer; BEGIN TempDocDim.RESET; TempDocDim.SETRANGE("Table ID",DATABASE::"Purchase Line"); TempDocDim.SETRANGE("Line No.",PurchLine."Line No."); IF TempDocDim.FIND('-') THEN ...Ersetzungscode
... END; LOCAL PROCEDURE UpdSvcTaxPostingBuffer@1280031(); VAR TempDimBuf@1280001 : TEMPORARY Record 360; // Add the following line. EntryNo1@1280000 : Integer; BEGIN TempDocDim.RESET; TempDocDim.SETRANGE("Table ID",DATABASE::"Purchase Line"); TempDocDim.SETRANGE("Line No.",PurchLine."Line No."); IF TempDocDim.FIND('-') THEN ...Ändern Sie den Code in der UpdSvcTaxPostingBuffer-Funktion in der Purch.-Post codeunit (90) wie folgt:
Vorhandener Code... TempDimBuf."Table ID" := TempDocDim."Table ID"; TempDimBuf."Dimension Code" := TempDocDim."Dimension Code"; TempDimBuf."Dimension Value Code" := TempDocDim."Dimension Value Code"; TempDimBuf.INSERT; UNTIL TempDocDim.NEXT = 0; // Delete the following lines. EntryNo := DimBufMgt.FindDimensions(TempDimBuf); IF EntryNo = 0 THEN EntryNo := DimBufMgt.InsertDimensions(TempDimBuf); // End of the lines. SvcTaxPostingBuffer[1]."Dimension Entry No." := EntryNo; SvcTaxPostingBuffer[2] := SvcTaxPostingBuffer[1]; IF SvcTaxPostingBuffer[2].FIND THEN BEGIN SvcTaxPostingBuffer[2]."Service Tax Base Amount" := SvcTaxPostingBuffer[2]."Service Tax Base Amount" + SvcTaxPostingBuffer[1]."Service Tax Base Amount"; ...Ersetzungscode
... TempDimBuf."Table ID" := TempDocDim."Table ID"; TempDimBuf."Dimension Code" := TempDocDim."Dimension Code"; TempDimBuf."Dimension Value Code" := TempDocDim."Dimension Value Code"; TempDimBuf.INSERT; UNTIL TempDocDim.NEXT = 0; // Add the following lines. EntryNo1 := DimBufMgt.FindDimensions(TempDimBuf); IF EntryNo1 = 0 THEN EntryNo1 := DimBufMgt.InsertDimensions(TempDimBuf); // End of the lines. SvcTaxPostingBuffer[1]."Dimension Entry No." := EntryNo; SvcTaxPostingBuffer[2] := SvcTaxPostingBuffer[1]; IF SvcTaxPostingBuffer[2].FIND THEN BEGIN SvcTaxPostingBuffer[2]."Service Tax Base Amount" := SvcTaxPostingBuffer[2]."Service Tax Base Amount" + SvcTaxPostingBuffer[1]."Service Tax Base Amount"; ...Ändern Sie den Code in der UpdSTaxPostingBuffer-Funktion in der Purch.-Post codeunit (90) wie folgt:
Vorhandener Code... END; LOCAL PROCEDURE UpdSTaxPostingBuffer@1500010(); VAR TempDimBuf@1500001 : TEMPORARY Record 360; // Delete the following line. EntryNo@1500000 : Integer; BEGIN TempDocDim.RESET; TempDocDim.SETRANGE("Table ID",DATABASE::"Purchase Line"); TempDocDim.SETRANGE("Line No.",PurchLine."Line No."); IF TempDocDim.FIND('-') THEN ...Ersetzungscode
... END; LOCAL PROCEDURE UpdSTaxPostingBuffer@1500010(); VAR TempDimBuf@1500001 : TEMPORARY Record 360; // Add the following line. EntryNo1@1500000 : Integer; BEGIN TempDocDim.RESET; TempDocDim.SETRANGE("Table ID",DATABASE::"Purchase Line"); TempDocDim.SETRANGE("Line No.",PurchLine."Line No."); IF TempDocDim.FIND('-') THEN ...Ändern Sie den Code in der UpdSTaxPostingBuffer-Funktion in der Purch.-Post codeunit (90) wie folgt:
Vorhandener Code... TempDimBuf."Table ID" := TempDocDim."Table ID"; TempDimBuf."Dimension Code" := TempDocDim."Dimension Code"; TempDimBuf."Dimension Value Code" := TempDocDim."Dimension Value Code"; TempDimBuf.INSERT; UNTIL TempDocDim.NEXT = 0; // Delete the following lines. EntryNo := DimBufMgt.FindDimensions(TempDimBuf); IF EntryNo = 0 THEN EntryNo := DimBufMgt.InsertDimensions(TempDimBuf); // End of the lines. STaxPostingBuffer[1]."Dimension Entry No." := EntryNo; STaxPostingBuffer[2] := STaxPostingBuffer[1]; IF STaxPostingBuffer[2].FIND THEN BEGIN STaxPostingBuffer[2]."Service Tax Base Amount" := STaxPostingBuffer[2]."Service Tax Base Amount" + STaxPostingBuffer[1]."Service Tax Base Amount"; ...Ersetzungscode
... TempDimBuf."Table ID" := TempDocDim."Table ID"; TempDimBuf."Dimension Code" := TempDocDim."Dimension Code"; TempDimBuf."Dimension Value Code" := TempDocDim."Dimension Value Code"; TempDimBuf.INSERT; UNTIL TempDocDim.NEXT = 0; // Add the following lines. EntryNo1 := DimBufMgt.FindDimensions(TempDimBuf); IF EntryNo1 = 0 THEN EntryNo1 := DimBufMgt.InsertDimensions(TempDimBuf); // End of the lines. STaxPostingBuffer[1]."Dimension Entry No." := EntryNo; STaxPostingBuffer[2] := STaxPostingBuffer[1]; IF STaxPostingBuffer[2].FIND THEN BEGIN STaxPostingBuffer[2]."Service Tax Base Amount" := STaxPostingBuffer[2]."Service Tax Base Amount" + STaxPostingBuffer[1]."Service Tax Base Amount"; ...Ändern Sie den Code in der UpdSTaxApplicationBuffer2-Funktion in der Purch.-Post codeunit (90) wie folgt:
Vorhandener Code... END; LOCAL PROCEDURE UpdSTaxApplicationBuffer2@1500020(); VAR TempDimBuf@1500001 : TEMPORARY Record 360; // Delete the following line. EntryNo@1500000 : Integer; BEGIN TempDocDim.RESET; TempDocDim.SETRANGE("Table ID",DATABASE::"Purchase Line"); TempDocDim.SETRANGE("Line No.",PurchLine."Line No."); IF TempDocDim.FIND('-') THEN ...Ersetzungscode
... END; LOCAL PROCEDURE UpdSTaxApplicationBuffer2@1500020(); VAR TempDimBuf@1500001 : TEMPORARY Record 360; // Add the following line. EntryNo1@1500000 : Integer; BEGIN TempDocDim.RESET; TempDocDim.SETRANGE("Table ID",DATABASE::"Purchase Line"); TempDocDim.SETRANGE("Line No.",PurchLine."Line No."); IF TempDocDim.FIND('-') THEN ...Ändern Sie den Code in der UpdSTaxApplicationBuffer2-Funktion in der Purch.-Post codeunit (90) wie folgt:
Vorhandener Code... TempDimBuf."Table ID" := TempDocDim."Table ID"; TempDimBuf."Dimension Code" := TempDocDim."Dimension Code"; TempDimBuf."Dimension Value Code" := TempDocDim."Dimension Value Code"; TempDimBuf.INSERT; UNTIL TempDocDim.NEXT = 0; // Delete the following lines. EntryNo := DimBufMgt.FindDimensions(TempDimBuf); IF EntryNo = 0 THEN EntryNo := DimBufMgt.InsertDimensions(TempDimBuf); // End of the lines. STaxPostingBuffer[1]."Dimension Entry No." := EntryNo; STaxPostingBuffer[2] := STaxPostingBuffer[1]; IF STaxPostingBuffer[2].FIND THEN BEGIN STaxPostingBuffer[2]."Service Tax Base Amount" := ...Ersetzungscode
... TempDimBuf."Table ID" := TempDocDim."Table ID"; TempDimBuf."Dimension Code" := TempDocDim."Dimension Code"; TempDimBuf."Dimension Value Code" := TempDocDim."Dimension Value Code"; TempDimBuf.INSERT; UNTIL TempDocDim.NEXT = 0; // Add the following lines. EntryNo1 := DimBufMgt.FindDimensions(TempDimBuf); IF EntryNo1 = 0 THEN EntryNo1 := DimBufMgt.InsertDimensions(TempDimBuf); // End of the lines. STaxPostingBuffer[1]."Dimension Entry No." := EntryNo; STaxPostingBuffer[2] := STaxPostingBuffer[1]; IF STaxPostingBuffer[2].FIND THEN BEGIN STaxPostingBuffer[2]."Service Tax Base Amount" := ...Ändern Sie den Code in der Funktion CheckAmounttoApplyofApplPmt in purch.-Post codeunit (90) wie folgt:
Vorhandener Code... BEGIN ExecuteForLookup := ApplLookupOk; END; PROCEDURE CheckAmounttoApplyofApplPmt@1500018(OldVendLedgEntry@1500001 : Record 25;ServiceTaxEntry@1500000 : Record 16473); BEGIN STaxPostingBuffer2.RESET; STaxPostingBuffer2.SETRANGE("Service Tax Group Code",ServiceTaxEntry."Service Tax Group Code"); STaxPostingBuffer2.SETRANGE("Service Tax Registration No.",ServiceTaxEntry."Service Tax Registration No."); ...Ersetzungscode
... BEGIN ExecuteForLookup := ApplLookupOk; END; PROCEDURE CheckAmounttoApplyofApplPmt@1500018(OldVendLedgEntry@1500001 : Record 25;ServiceTaxEntry@1500000 : Record 16473); // Add the following lines. VAR STAmount@1600000 : Decimal; // End of the lines. BEGIN STaxPostingBuffer2.RESET; STaxPostingBuffer2.SETRANGE("Service Tax Group Code",ServiceTaxEntry."Service Tax Group Code"); STaxPostingBuffer2.SETRANGE("Service Tax Registration No.",ServiceTaxEntry."Service Tax Registration No."); ...Ändern Sie den Code in der Funktion CheckAmounttoApplyofApplPmt in purch.-Post codeunit (90) wie folgt:
Vorhandener Code... STaxPostingBuffer2.RESET; STaxPostingBuffer2.SETRANGE("Service Tax Group Code",ServiceTaxEntry."Service Tax Group Code"); STaxPostingBuffer2.SETRANGE("Service Tax Registration No.",ServiceTaxEntry."Service Tax Registration No."); // Delete the following lines. IF STaxPostingBuffer2.FINDFIRST THEN BEGIN IF OldVendLedgEntry."Amount to Apply" > STaxPostingBuffer2.Amount THEN ERROR(Text16520,OldVendLedgEntry."Document No.",STaxPostingBuffer2.Amount) IF STaxPostingBuffer2.FINDFIRST THEN BEGIN IF OldVendLedgEntry."Amount to Apply" > STaxPostingBuffer2.Amount THEN ERROR(Text16520,OldVendLedgEntry."Document No.",STaxPostingBuffer2.Amount) ELSE STaxPostingBuffer2.Amount -= OldVendLedgEntry."Amount to Apply"; STaxPostingBuffer2.MODIFY; END ELSE STaxPostingBuffer2.Amount -= OldVendLedgEntry."Amount to Apply"; STaxPostingBuffer2.MODIFY; // End of the lines. END ...Ersetzungscode
... STaxPostingBuffer2.RESET; STaxPostingBuffer2.SETRANGE("Service Tax Group Code",ServiceTaxEntry."Service Tax Group Code"); STaxPostingBuffer2.SETRANGE("Service Tax Registration No.",ServiceTaxEntry."Service Tax Registration No."); // Add the following lines. IF STaxPostingBuffer2.FINDSET THEN BEGIN REPEAT STAmount += STaxPostingBuffer2.Amount; STaxPostingBuffer2.MODIFY; UNTIL STaxPostingBuffer2.NEXT = 0; IF OldVendLedgEntry."Amount to Apply" > STAmount THEN ERROR(Text16520,OldVendLedgEntry."Document No.",STAmount) ELSE STaxPostingBuffer2.Amount -= OldVendLedgEntry."Amount to Apply"; // End of the lines. END ...
Voraussetzungen
Sie müssen eines der folgenden Produkte installiert haben, um diesen Hotfix anwenden zu können:
- Die indische Version von Microsoft Dynamics NAV 2009 R2
- Die indische Version von Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
Informationen zur Deinstallation
Sie können diesen Hotfix nicht entfernen.
Status
Microsoft hat bestätigt, dass dies ein Problem bei den Microsoft-Produkten ist, die im Abschnitt „Gilt für“ aufgeführt sind.
Hinweis: Dies ist ein Artikel vom Typ "SCHNELL VERÖFFENTLICHEN", der direkt in der Microsoft-Supportorganisation erstellt wurde. Die Informationen in diesem Artikel werden ohne Gewähr als Reaktion auf auftretende Probleme bereitgestellt. Aufgrund ihrer schnellen Bereitstellung können sie typografische Fehler enthalten und jederzeit ohne vorherige Ankündigung geändert werden. Andere Überlegungen finden Sie unter Nutzungsbedingungen.