"前払 Amt 除く VAT"フィールドが正しく計算されない Microsoft Dynamics NAV 2009 年の順序で「前払 %」の値を変更した後


この資料では、すべての国と言語ロケールのすべての Microsoft Dynamics NAV に該当します。

現象


Microsoft Dynamics NAV 2009 年には、次のシナリオを検討してください。
  • 前払 %フィールドが指定されている注文の前払請求書を転記するとします。
  • 部分的出荷し、いくつかのユニットの注文の請求書を送付します。
  • 順序を再オープンします。
  • 順序での前払の割合の値を変更します。
このシナリオでは、 Amt 除く VAT の前払] フィールドが正しく計算されません。さらに、新しい注文の前払請求書を転記するときは、次のエラー メッセージが表示されます。
以外は注文のxxxxに前払金額を転記します。
この問題は、次の製品で発生します。
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 サービス パック 1 (SP1)

解決策


修正プログラムの情報

サポートされている修正プログラムはマイクロソフトから現在入手可能です。ただし、この資料に記載されている問題を解決するためのものはのみ。この特定の問題が発生したシステムにのみ適用してください。この修正プログラムは、今後さらにテストを行うことがあります。この問題で深刻な影響を受けていない場合は、次の Microsoft Dynamics NAV の service pack または修正プログラムを含む次の Microsoft Dynamics NAV バージョン待つことを勧めします。

注: かかる料金が免除されるテクニカル サポート担当者 Microsoft Dynamics および関連製品のことは、通常は特別な場合は、特定の更新プログラムは、問題を解決するにを決定します。追加の質問および問題の特定のアップデートの対象にはなりませんが、通常のサポート料金が適用されます。


インストール情報

マイクロソフトでは解説することのみを目的としてプログラミング例を提供しています。暗示あるいは明示していることに対しての保証はしておりません。ここで言う保証とは、特定の目的に対する商品性や適合性の暗示的保証を含んでいますが、それに限定されるわけではありません。この資料では、例示されているプログラミング言語およびプロシージャの作成やデバッグに使用するツールにお客様が精通していることを前提としています。マイクロソフトのサポート エンジニアは、特定のプロシージャの機能を説明することができますが、機能の追加またはお客様固有の要件を満たすようにプロシージャを作成するこれらの例は変更されません。

注: この修正プログラムをインストールする前に、Microsoft Navision のすべてのクライアント ユーザーがシステムの電源を記録することを確認します。これには、Microsoft Navision アプリケーション サービス (NAS) クライアントのユーザーが含まれます。この修正プログラムを実装すると、ログオンしている唯一のクライアント ユーザーが必要です。

この修正プログラムを実装するには、開発者用のライセンスが必要です。

ユーザー アカウントまたはデータベース ログイン ウィンドウに Windows のログイン ウィンドウにある「スーパー」ロール id を割り当てられていることをお勧めします。ユーザー アカウントには、「スーパー」ロール ID を割り当てることができません、する場合は、ユーザー アカウントが次のアクセス許可を持っているを確認する必要があります。
  • 変更するオブジェクトの変更のアクセス許可。
  • システム オブジェクトの ID 5210オブジェクトおよびシステム オブジェクトの ID 9015オブジェクトの実行が許可されます。


注: データの修復を実行する必要があるない限り、データ ストアへの権限を持っている必要はありません。

コードの変更

注: 常にテスト コードを修正、管理された環境で適用する前に、運用コンピューターに修正プログラムします。
この問題を解決するには、次の手順を実行します。
  1. 販売明細行のテーブル (37) のUpdateAmounts関数内のコードを次のように変更します。
    既存のコード
    ...IF "Quantity Invoiced" = 0 THEN BEGIN
    "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision");
    IF "Prepmt. Line Amount" < "Prepmt. Amt. Inv." THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text049,"Prepmt. Amt. Inv."));
    END ELSE BEGIN

    // Delete the following lines.
    IF "Prepayment %" <> 0 THEN
    "Prepmt. Line Amount" := "Prepmt. Amt. Inv." +
    ROUND("Line Amount" * (Quantity - "Quantity Invoiced") / Quantity * "Prepayment %" / 100,
    Currency."Amount Rounding Precision")
    ELSE
    "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision");
    // End of the lines.

    IF "Prepmt. Line Amount" > "Line Amount" THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text049,"Prepmt. Line Amount"));
    END;
    END;
    InitOutstandingAmount;
    ...
    置換用コード
    ...IF "Quantity Invoiced" = 0 THEN BEGIN
    "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision");
    IF "Prepmt. Line Amount" < "Prepmt. Amt. Inv." THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text049,"Prepmt. Amt. Inv."));
    END ELSE BEGIN

    // Add the following lines.
    IF "Prepayment %" <> 0 THEN BEGIN
    IF "Prepayment %" = xRec."Prepayment %" THEN
    "Prepmt. Line Amount" :=
    ROUND("Line Amount" * (Quantity - "Quantity Invoiced") / Quantity * "Prepayment %" / 100,
    Currency."Amount Rounding Precision")
    ELSE
    "Prepmt. Line Amount" := "Prepmt. Line Amount" +
    ROUND("Line Amount" * (Quantity - "Quantity Invoiced") / Quantity * ABS("Prepayment %" - xRec."Prepayment %") / 100,
    Currency."Amount Rounding Precision");
    END ELSE
    "Prepmt. Line Amount" := 0;
    // End of the lines.

    IF "Prepmt. Line Amount" > "Line Amount" THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text049,"Prepmt. Line Amount"));
    END;
    END;
    InitOutstandingAmount;

    ...
  2. (39) 購買注文明細行のテーブル内のUpdateAmounts関数内のコードを次のように変更します。
    既存のコード
    ...IF "Quantity Invoiced" = 0 THEN BEGIN
    "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision");
    IF "Prepmt. Line Amount" < "Prepmt. Amt. Inv." THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text037,"Prepmt. Amt. Inv."));
    END ELSE BEGIN

    // Delete the following lines.
    IF "Prepayment %" <> 0 THEN
    "Prepmt. Line Amount" := "Prepmt. Amt. Inv." +
    ROUND("Line Amount" * (Quantity - "Quantity Invoiced") / Quantity * "Prepayment %" / 100,
    Currency."Amount Rounding Precision")
    ELSE
    "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision");
    // End of the lines.

    IF "Prepmt. Line Amount" > "Line Amount" THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text037,"Prepmt. Line Amount"));
    END;
    END;
    IF PurchHeader.Status = PurchHeader.Status::Released THEN
    ...
    置換用コード
    ...IF "Quantity Invoiced" = 0 THEN BEGIN
    "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision");
    IF "Prepmt. Line Amount" < "Prepmt. Amt. Inv." THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text037,"Prepmt. Amt. Inv."));
    END ELSE BEGIN

    // Add the following lines.
    IF "Prepayment %" <> 0 THEN BEGIN
    IF "Prepayment %" = xRec."Prepayment %" THEN
    "Prepmt. Line Amount" :=
    ROUND("Line Amount" * (Quantity - "Quantity Invoiced") / Quantity * "Prepayment %" / 100,
    Currency."Amount Rounding Precision")
    ELSE
    "Prepmt. Line Amount" := "Prepmt. Line Amount" +
    ROUND("Line Amount" * ((Quantity - "Quantity Invoiced") / Quantity) * (("Prepayment %" - xRec."Prepayment %") / 100),
    Currency."Amount Rounding Precision");
    END ELSE
    "Prepmt. Line Amount" := 0;
    // End of the lines.

    IF "Prepmt. Line Amount" > "Line Amount" THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text037,"Prepmt. Line Amount"));
    END;
    END;
    IF PurchHeader.Status = PurchHeader.Status::Released THEN
    ...

必要条件

この修正プログラムを適用するのにはインストールされている製品は次のいずれかが必要です。
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 サービス パック 1 (SP1)

アンインストール情報

この修正プログラムを削除することはできません。

状況


マイクロソフトは、この問題を「対象製品」セクションに記載されているマイクロソフト製品の問題として認識しています。
注: これは、マイクロソフト サポートの組織内から直接作成した「高速公開」の資料です。ここに含まれる情報は、新たに発生している問題に応じて現状のまま提供されています。速やかに利用できるようにした結果として、内容には誤植が含まれている可能性があり、事前告知なしで改訂する場合があります。その他の考慮事項については、使用条件を参照してください。