正と負の明細行の正味金額が販売注文のゼロの場合 Microsoft Dynamics NAV の北米バージョンに販売注文明細行の金額を含む税税額のないが表示されます。


この資料は、北アメリカのロケールには、Microsoft Dynamics NAV に適用されます。

現象


Microsoft Dynamics NAV の北アメリカのバージョンでは、販売注文には、0 すべて同じ税の市外局番を使用して販売注文明細行および売上税グループ コードを明細行の売上金額が正と負の売上金額の明細行の合計ネットを想定しています。販売注文を解放する解放の関数を実行すると、システムには、販売注文明細行のいずれかを含む税の金額フィールドに含まれている税額が表示されませんに注意してください。税額陽性とネガの各販売注文明細行に表示されるはずです。
この問題は、次の製品で発生します。
  • 北米バージョンの Microsoft Dynamics NAV 2009 サービス パック 1 (SP1)
  • 北米バージョンの Microsoft Dynamics NAV 2009 の R2
  • Microsoft Dynamics NAV 2009 年の北米バージョン
  • 北米バージョンの Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

解決策


修正プログラムの情報

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

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



インストール情報

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

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

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

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


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

コードの変更

注: 常にテスト コードを修正、管理された環境で適用する前に、運用コンピューターに修正プログラムします。
この問題を解決するには、次の手順を実行します。
  1. テーブル (10011) 内のコードを次のように変更します。

    既存のコード
    ...  FIELDS

    ...
    10042; ;Is Report-to Jurisdiction;Boolean ;CaptionML=ENU=Is Report-to Jurisdiction;
    Editable=No
    ...
    KEYS
    Tax Area Code for Key,Tax Jurisdiction Code,Tax %,Tax Group Code,Expense/Capitalize,Tax Type,Use Tax;
    Clustered=Yes
    ...
    置換用コード
    ...  FIELDS

    ...
    10042; ;Is Report-to Jurisdiction;Boolean ;CaptionML=ENU=Is Report-to Jurisdiction;
    Editable=No

    // Add the following line.
    10043; ;Positive ;Boolean
    // End of the added line.

    ...
    KEYS

    // Add the Positive Field to the keys.
    Tax Area Code for Key,Tax Jurisdiction Code,Tax %,Tax Group Code,Expense/Capitalize,Tax Type,Use Tax,Positive;
    Clustered=Yes
    ...
  2. Codeunit (398) 内のAddSalesLine関数内のコードを次のように変更します。

    既存のコード
    ...    TaxAreaLine.FINDSET;
    REPEAT
    SETRANGE("Tax Jurisdiction Code",TaxAreaLine."Tax Jurisdiction Code");
    "Tax Jurisdiction Code" := TaxAreaLine."Tax Jurisdiction Code";
    IF NOT FINDFIRST THEN BEGIN
    ...
    "Invoice Discount Amount" := SalesLine."Inv. Discount Amount";
    "Calculation Order" := TaxAreaLine."Calculation Order";
    ...
    置換用コード
    ...   TaxAreaLine.FINDSET;
    REPEAT
    SETRANGE("Tax Jurisdiction Code",TaxAreaLine."Tax Jurisdiction Code");

    // Add the following line.
    SETRANGE(Positive, SalesLine."Line Amount" - SalesLine."Inv. Discount Amount" > 0);
    // End of the added line.

    "Tax Jurisdiction Code" := TaxAreaLine."Tax Jurisdiction Code";
    IF NOT FINDFIRST THEN BEGIN
    ...
    "Invoice Discount Amount" := SalesLine."Inv. Discount Amount";
    "Calculation Order" := TaxAreaLine."Calculation Order";

    // Add the following line.
    Positive := SalesLine."Line Amount" - SalesLine."Inv. Discount Amount" > 0;
    // End of the added line.
    ...
  3. Codeunit (398) 内のDistTaxOverSalesLines関数内のコードを次のように変更します。

    既存のコード
    ...         IF (TaxCountry = TaxCountry::US) OR
    // Delete the following line.
    ((TaxCountry = TaxCountry::CA) AND (TaxAreaLine.GET(SalesLine."Tax Area Code","Tax Jurisdiction Code"))) THEN BEGIN
    // End of the deleted line.
    ...
    置換用コード
    ...         IF (TaxCountry = TaxCountry::US) OR
    // Add the following lines.
    ((TaxCountry = TaxCountry::CA) AND (TaxAreaLine.GET(SalesLine."Tax Area Code","Tax Jurisdiction Code"))) AND
    CheckTaxAmtLinePos(SalesLine."Line Amount" - SalesLine."Inv. Discount Amount",
    Positive)
    THEN BEGIN
    // End of the added lines.
    ...
  4. Codeunit (398) で次のようにローカル関数を追加します。
    LOCAL PROCEDURE CheckTaxAmtLinePos(SalesLineAmt: Decimal, TaxAmtLinePos: Boolean):BooleanEXIT(
    ((SalesLineAmt > 0) AND TaxAmtLinePos) OR
    ((SalesLineAmt <0) AND NOT TaxAmtLinePos)
    );


必要条件

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


アンインストール情報

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

状況


マイクロソフトは、この問題を「対象製品」セクションに記載されているマイクロソフト製品の問題として認識しています。

関連情報


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