ドイツ語版 Microsoft Dynamics NAV 2009 に含まれる割引がない請求書の流動性仕訳帳で Fill 関数を実行すると、不適切な流動性日が推奨されます

適用先
Dynamics NAV 2009 Dynamics NAV 2009 Service Pack 1

この記事は、ドイツ語 (de) 言語ロケールの Microsoft Dynamics NAV に適用されます。

現象

ドイツ語バージョンの Microsoft Dynamics NAV では、次のシナリオを検討してください。

  • [割引の検討] 設定は、流動性カードで有効にします。
  • 割引が含まれていない請求書の流動性仕訳帳に対して Fill 関数を実行します。

このシナリオでは、流動性仕訳帳に不適切な流動性日が推奨されます。 流動性日付は、請求書の期日ではなく請求書の転記日と等しくなります。
この問題は、次の製品で発生します。

  • Microsoft Dynamics NAV 2009 R2 のドイツ語バージョン
  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1) のドイツ語バージョン

解決策

修正プログラムの情報

サポートされている修正プログラムが Microsoft から入手できるようになりました。 ただし、この記事で説明されている問題を修正することのみを目的としています。 この特定の問題が発生しているシステムにのみ適用します。 この修正プログラムは、追加のテストを受け取る場合があります。 したがって、この問題の影響を大きく受けない場合は、次の Microsoft Dynamics NAV Service Pack またはこの修正プログラムを含む次の Microsoft Dynamics NAV バージョンを待機することをお勧めします。

注 特別なケースでは、Microsoft Dynamics および関連製品のテクニカル サポート プロフェッショナルが特定の更新プログラムによって問題が解決されると判断した場合、通常はサポート呼び出しに対して発生する料金が取り消されることがあります。 ただし、特定の更新プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。

インストール情報

Microsoft は、明示または黙示の保証なしで、説明のみを目的としてプログラミング例を提供しています。 これには、商品性または特定の目的への適合性に関する暗黙の保証が含まれますが、これらに限定されません。 この記事では、デモンストレーションされているプログラミング言語と、プロシージャの作成とデバッグに使用されるツールについてよく理解していることを前提としています。 マイクロソフト サポート窓口では、特定のプロシージャの機能説明に関するご質問に対して支援いたしますが、本例を特定の目的を満たすために機能を追加したり、プロシージャを構築することは行いません。

注 この修正プログラムをインストールする前に、すべての Microsoft Navision クライアント ユーザーがシステムからログオフされていることを確認します。 これには、Microsoft Navision Application Services (NAS) クライアント ユーザーが含まれます。 この修正プログラムを実装するときにログオンする唯一のクライアント ユーザーである必要があります。

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

[Windows ログイン] ウィンドウまたは [データベース ログイン] ウィンドウのユーザー アカウントに "SUPER" ロール ID を割り当てることをお勧めします。 ユーザー アカウントに "SUPER" ロール ID を割り当てることができない場合は、ユーザー アカウントに次のアクセス許可があることを確認する必要があります。

  • 変更するオブジェクトの [変更] アクセス許可。
  • システム オブジェクト ID 5210 オブジェクトとシステム オブジェクト ID 9015 オブジェクトの Execute アクセス許可。

                
メモ データ修復を実行する必要がない限り、データ ストアに対する権限は必要ありません。

コードの変更

メモ 運用環境のコンピューターに修正プログラムを適用する前に、制御された環境でコード修正を常にテストします。
この問題を解決するには、次の手順を実行します。

  1. Cust のコードを変更します。[流動性仕訳帳の記入] レポート (5055250) の [台帳エントリ - OnAfterGetRecord] トリガーを次のように変更します。
    既存のコード

    ...
          "Payment Discount" := "Cust. Ledger Entry"."Original Pmt. Disc. Possible";
        Amount := "Cust. Ledger Entry"."Remaining Amt. (LCY)" - "Payment Discount";
        "Amount (Currency)" := "Cust. Ledger Entry"."Remaining Amount" - "Cust. Ledger Entry"."Original Pmt. Disc. Possible";
    
        // Delete the following line.
        IF "Cust. Ledger Entry"."Pmt. Discount Date" <> 0D THEN BEGIN
    
          "Liquidity Date" := "Cust. Ledger Entry"."Pmt. Discount Date";
        IF Liquidity."Consider Pmt. Disc. Tol. Date" THEN
          "Liquidity Date" := "Cust. Ledger Entry"."Pmt. Disc. Tolerance Date";
        END;
    ...
    
    

    置換コード

    ...
          "Payment Discount" := "Cust. Ledger Entry"."Original Pmt. Disc. Possible";
        Amount := "Cust. Ledger Entry"."Remaining Amt. (LCY)" - "Payment Discount";
        "Amount (Currency)" := "Cust. Ledger Entry"."Remaining Amount" - "Cust. Ledger Entry"."Original Pmt. Disc. Possible";
    
        // Add the following line.
        IF ("Cust. Ledger Entry"."Pmt. Discount Date" <> 0D) AND ("Payment Discount" <> 0) THEN BEGIN
    
          "Liquidity Date" := "Cust. Ledger Entry"."Pmt. Discount Date";
        IF Liquidity."Consider Pmt. Disc. Tol. Date" THEN
          "Liquidity Date" := "Cust. Ledger Entry"."Pmt. Disc. Tolerance Date";
        END;
    ...
    
    
  2. 流動性仕訳帳レポート (5055250) の仕入先台帳エントリ - OnAfterGetRecord トリガーのコードを次のように変更します。
    既存のコード

    ...
          "Payment Discount" := "Vendor Ledger Entry"."Original Pmt. Disc. Possible";
        Amount := "Vendor Ledger Entry"."Remaining Amt. (LCY)" - "Payment Discount";
        "Amount (Currency)" := "Vendor Ledger Entry"."Remaining Amount" - "Vendor Ledger Entry"."Original Pmt. Disc. Possible";
    
        // Delete the following line.
        IF "Vendor Ledger Entry"."Pmt. Discount Date" <> 0D THEN BEGIN
    
          "Liquidity Date" := "Vendor Ledger Entry"."Pmt. Discount Date";
        IF Liquidity."Consider Pmt. Disc. Tol. Date" THEN
          "Liquidity Date" := "Vendor Ledger Entry"."Pmt. Disc. Tolerance Date";
        END;
    ...
    
    

    置換コード

    ...
          "Payment Discount" := "Vendor Ledger Entry"."Original Pmt. Disc. Possible";
        Amount := "Vendor Ledger Entry"."Remaining Amt. (LCY)" - "Payment Discount";
        "Amount (Currency)" := "Vendor Ledger Entry"."Remaining Amount" - "Vendor Ledger Entry"."Original Pmt. Disc. Possible";
    
        // Add the following line.
        IF ("Vendor Ledger Entry"."Pmt. Discount Date" <> 0D) AND ("Payment Discount" <> 0) THEN BEGIN
    
          "Liquidity Date" := "Vendor Ledger Entry"."Pmt. Discount Date";
        IF Liquidity."Consider Pmt. Disc. Tol. Date" THEN
          "Liquidity Date" := "Vendor Ledger Entry"."Pmt. Disc. Tolerance Date";
        END;
    ...
    
    
  3. Fill Liquidity Journal レポート (5055250) の購買明細行 - OnAfterGetRecord トリガーのコードを次のように変更します。
    既存のコード

    ...
      "Due Date" := PurchHeader."Due Date";
      "Document No." := "Purchase Line"."Document No.";
    
      // Delete the following lines.
      IF (PurchHeader."Pmt. Discount Date" <> 0D) AND (Liquidity."Consider Discount") THEN BEGIN
        "Liquidity Date" := PurchHeader."Pmt. Discount Date";
      // End of the lines.
    
        IF Liquidity."Consider Pmt. Disc. Tol. Date" THEN
          "Liquidity Date" := CALCDATE(GLSetup."Payment Discount Grace Period","Liquidity Date");
      END ELSE
        "Liquidity Date" := PurchHeader."Due Date";
    ...
    

    置換コード

    ...
      "Due Date" := PurchHeader."Due Date";
      "Document No." := "Purchase Line"."Document No.";
    
      // Add the following lines.
      IF (PurchHeader."Pmt. Discount Date" <> 0D) AND
        (Liquidity."Consider Discount") AND
        (PurchHeader."Payment Discount %" <> 0)
      THEN BEGIN
        "Liquidity Date" := PurchHeader."Pmt. Discount Date";
      // End of the lines.
    
        IF Liquidity."Consider Pmt. Disc. Tol. Date" THEN
          "Liquidity Date" := CALCDATE(GLSetup."Payment Discount Grace Period","Liquidity Date");
      END ELSE
        "Liquidity Date" := PurchHeader."Due Date";
    ...
    
  4. 塗りつぶし流動性仕訳帳レポート (5055250) の Sales Line - OnAfterGetRecord トリガーのコードを次のように変更します。
    既存のコード

    ...
      "Due Date" := SalesHeader."Due Date";
      "Document No." := "Sales Line"."Document No.";
    
      // Delete the following lines.
      IF (SalesHeader."Pmt. Discount Date" <> 0D) AND (Liquidity."Consider Discount") THEN BEGIN
        "Liquidity Date" := SalesHeader."Pmt. Discount Date";
      // End of the lines.
    
        IF Liquidity."Consider Pmt. Disc. Tol. Date" THEN
          "Liquidity Date" := CALCDATE(GLSetup."Payment Discount Grace Period","Liquidity Date");
      END ELSE
        "Liquidity Date" := SalesHeader."Due Date";
    ...
    

    置換コード

    ...
      "Due Date" := SalesHeader."Due Date";
      "Document No." := "Sales Line"."Document No.";
    
      // Add the following lines.
      IF (SalesHeader."Pmt. Discount Date" <> 0D) AND
        (Liquidity."Consider Discount") AND
        (SalesHeader."Payment Discount %" <> 0)
      THEN BEGIN
        "Liquidity Date" := SalesHeader."Pmt. Discount Date";
      // End of the lines.
    
        IF Liquidity."Consider Pmt. Disc. Tol. Date" THEN
          "Liquidity Date" := CALCDATE(GLSetup."Payment Discount Grace Period","Liquidity Date");
      END ELSE
        "Liquidity Date" := SalesHeader."Due Date";
    ...
    
  5. Fill Liquidity Journal レポート (5055250) のサービスライン - OnAfterGetRecord トリガーのコードを次のように変更します。
    既存のコード

    ...
        Customer.GET(ServiceHeader."Bill-to Customer No.");
        IF Customer."Payment Terms Code" <> '' THEN BEGIN
          PaymentTerms.GET(Customer."Payment Terms Code");
    
          // Delete the following line.
          IF Liquidity."Consider Discount" THEN BEGIN
    
            "Liquidity Date" := CALCDATE(PaymentTerms."Discount Date Calculation",ServiceHeader."Document Date");
            IF Liquidity."Consider Pmt. Disc. Tol. Date" THEN
              "Liquidity Date" := CALCDATE(GLSetup."Payment Discount Grace Period","Liquidity Date");
          END ELSE
    ...
    

    置換コード

    ...
        Customer.GET(ServiceHeader."Bill-to Customer No.");
        IF Customer."Payment Terms Code" <> '' THEN BEGIN
          PaymentTerms.GET(Customer."Payment Terms Code");
    
          // Add the following line.
          IF Liquidity."Consider Discount" AND (ServiceHeader."Payment Discount %" <> 0) THEN BEGIN
    
            "Liquidity Date" := CALCDATE(PaymentTerms."Discount Date Calculation",ServiceHeader."Document Date");
            IF Liquidity."Consider Pmt. Disc. Tol. Date" THEN
              "Liquidity Date" := CALCDATE(GLSetup."Payment Discount Grace Period","Liquidity Date");
          END ELSE
    ...
    
    

前提条件

この修正プログラムを適用するには、次のいずれかの製品がインストールされている必要があります。

  • Microsoft Dynamics NAV 2009 R2 のドイツ語バージョン
  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1) のドイツ語バージョン

              

アンインストール情報

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

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

注: この資料は、"迅速な公開" を目的としてマイクロソフト サポート組織により直接作成されたものです。 ここに含まれる情報は、新しい問題に対応するため、そのままの状態で提供されます。 情報を迅速に公開するため、この資料には誤植などが含まれる可能性があり、また、予告なく改訂される場合があります。 その他の注意事項については、使用条件を参照してください。