デンマーク語バージョンの Microsoft Dynamics NAV で、負の売上請求明細行金額を含む電子請求書を作成することはできません

適用先
Dynamics NAV 2009 Microsoft Dynamics NAV 5.0

この記事は、デンマーク語 (dk) 言語ロケールの Microsoft Dynamics NAV に適用されます。

現象

デンマーク語バージョンの Microsoft Dynamics NAV で、負の売上請求明細行金額を含む電子請求書を作成することはできません。 ただし、合計金額が正の場合は、負の明細行金額を含む電子請求書を作成できます。
この問題は、次の製品で発生します。

  • デンマーク語バージョンの Microsoft Dynamics NAV 2009 R2
  • デンマーク語バージョンの Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • デンマーク語バージョンの Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

解決策

修正プログラムの情報

サポートされている修正プログラムが Microsoft から入手できるようになりました。 ただし、この記事で説明されている問題を修正することのみを目的としています。 この特定の問題が発生しているシステムにのみ適用します。 この修正プログラムは、追加のテストを受け取る場合があります。 したがって、この問題の影響を大きく受けない場合は、次の Microsoft Dynamics NAV 2009 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. OIOUBL Check Sales Header codeunit (13602) の [Text Constat] タブのグローバル値を次のように変更します。
    既存の値
    テキスト 000 ='DAN=Bel›bet i feltet %1 p† linje nummer %2 m† ikke v're negativt. Hvis du vil bogf›re en refusion, skal du oprette en kreditnota.;ENU=行番号 %2 の %1 フィールドの金額を負にすることはできません。 払い戻しを転記するには、クレジット メモを作成します。';置換値
    Text000 = 'DAN=Bel›bet i feltet %1 p† linje nummer %2 m† ikke v're negativt. Hvis du vil bogf›re en refusion, skal du oprette en kreditnota.;ENU=合計金額を負にすることはできません。 払い戻しを転記するには、クレジット メモを作成します。';

  2. OIOUBL Check Sales Header codeunit (13602) の CheckSalesLines 関数に新しいローカル変数を追加し、変数を次のように指定します。

    • 名前: LineAmount
    • DataType: Decimal
  3. OIOUBL Check Sales Header codeunit (13602) の CheckSalesLines 関数のコードを次のように変更します。
    既存のコード

    ...
    EmptyLineFound := FALSE;
    WITH SalesLine DO BEGIN
    RESET;
    SETRANGE("Document Type",SalesHeader."Document Type");
    SETRANGE("Document No.",SalesHeader."No.");
    IF FIND('-') THEN REPEAT
    IF (Type <> Type::" ") AND ("No." <> '') AND ("Unit of Measure" = '') THEN
    ERROR(Text13612,"Document Type","Document No.",FIELDCAPTION("Unit of Measure"));
    IF Description = '' THEN
    IF (Type <> Type::" ") AND ("No." <> '') THEN
    ERROR(Text13608,"Document Type","Document No.",
    FIELDCAPTION(Type),FIELDCAPTION("No."),FIELDCAPTION(Description));
    
    // Delete the following lines.
    IF "Line Amount" < 0 THEN 
    ERROR(Text000,FIELDCAPTION("Line Amount"),"Line No."); 
    // End of the lines.
    
    LineAmount += "Line Amount";
    IF (Type = Type::" ") OR ("No." = '')
    THEN EmptyLineFound := TRUE;
    UNTIL (NEXT = 0);
    
    IF EmptyLineFound THEN
    ...
    

    置換コード

    ...
    EmptyLineFound := FALSE;
    
    // Add the following line.
    CLEAR(LineAmount);
    
    WITH SalesLine DO BEGIN
    RESET;
    SETRANGE("Document Type",SalesHeader."Document Type");
    SETRANGE("Document No.",SalesHeader."No.");
    IF FIND('-') THEN REPEAT
    IF (Type <> Type::" ") AND ("No." <> '') AND ("Unit of Measure" = '') THEN
    ERROR(Text13612,"Document Type","Document No.",FIELDCAPTION("Unit of Measure"));
    IF Description = '' THEN
    IF (Type <> Type::" ") AND ("No." <> '') THEN
    ERROR(Text13608,"Document Type","Document No.",
    FIELDCAPTION(Type),FIELDCAPTION("No."),FIELDCAPTION(Description));
    LineAmount += "Line Amount";
    IF (Type = Type::" ") OR ("No." = '')
    THEN EmptyLineFound := TRUE;
    UNTIL (NEXT = 0);
    
    // Add the following lines.
    IF LineAmount < 0 THEN 
    ERROR(Text000);
    // End of the lines.
    
    IF EmptyLineFound THEN
    ...
    
  4. OIOUBL Check Service Header codeunit (13613) の [Text Constat] タブのグローバル値を次のように変更します。
    既存の値
    テキスト 000 ='DAN=Bel›bet i feltet %1 p† linje nummer %2 m† ikke v're negativt. Hvis du vil bogf›re en refusion, skal du oprette en kreditnota.;ENU=行番号 %2 の %1 フィールドの金額を負にすることはできません。 払い戻しを転記するには、クレジット メモを作成します。';置換値
    Text000 = 'DAN=Bel›bet i feltet %1 p† linje nummer %2 m† ikke v're negativt. Hvis du vil bogf›re en refusion, skal du oprette en kreditnota.;ENU=合計金額を負にすることはできません。 払い戻しを転記するには、クレジット メモを作成します。';

  5. OIOUBL Check Service Header codeunit (13613) の CheckServiceLines 関数に新しいローカル変数を追加し、次のように変数を指定します。

    • 名前: LineAmount
    • DataType: Decimal
  6. OIOUBL Check Service Header codeunit (13613) の CheckServiceLines 関数のコードを次のように変更します。
    既存のコード

    ...
    EmptyLineFound := FALSE;
    WITH ServiceLine DO BEGIN
    RESET;
    SETRANGE("Document Type",ServiceHeader."Document Type");
    SETRANGE("Document No.",ServiceHeader."No.");
    IF FIND('-') THEN REPEAT
    IF (Type <> Type::" ") AND ("No." <> '') AND ("Unit of Measure" = '') THEN
    ERROR(Text13612,"Document Type","Document No.",FIELDCAPTION("Unit of Measure"));
    IF Description = '' THEN
    IF (Type <> Type::" ") AND ("No." <> '') THEN
    ERROR(Text13608,"Document Type","Document No.",
    FIELDCAPTION(Type),FIELDCAPTION("No."),FIELDCAPTION(Description));
    
    // Delete the following lines.
    IF "Line Amount" < 0 THEN 
    ERROR(Text000,FIELDCAPTION("Line Amount"),"Line No.");
    // End of the lines.
    
    IF (Type = Type::" ") OR ("No." = '')
    THEN EmptyLineFound := TRUE;
    UNTIL (NEXT = 0);
    
    IF EmptyLineFound THEN
    ...
    

    置換コード

    ...
    EmptyLineFound := FALSE;
    
    // Add the following line.
    CLEAR(LineAmount); 
    
    WITH ServiceLine DO BEGIN
    RESET;
    SETRANGE("Document Type",ServiceHeader."Document Type");
    SETRANGE("Document No.",ServiceHeader."No.");
    IF FIND('-') THEN REPEAT
    IF (Type <> Type::" ") AND ("No." <> '') AND ("Unit of Measure" = '') THEN
    ERROR(Text13612,"Document Type","Document No.",FIELDCAPTION("Unit of Measure"));
    IF Description = '' THEN
    IF (Type <> Type::" ") AND ("No." <> '') THEN
    ERROR(Text13608,"Document Type","Document No.",
    FIELDCAPTION(Type),FIELDCAPTION("No."),FIELDCAPTION(Description));
    
    // Add the following line.
    LineAmount += "Line Amount";
    
    IF (Type = Type::" ") OR ("No." = '')
    THEN EmptyLineFound := TRUE;
    UNTIL (NEXT = 0);
    
    // Add the following lines.
    IF LineAmount < 0 THEN
    ERROR(Text000);
    // End of the lines.
    
    IF EmptyLineFound THEN
    ...
    

前提条件

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

  • デンマーク語バージョンの Microsoft Dynamics NAV 2009 R2
  • デンマーク語バージョンの Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • デンマーク語バージョンの Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

アンインストール情報

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

状態

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

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