イタリア語バージョンの Microsoft Dynamics NAV で Intrastat 仕訳帳を作成する場合、クレジット メモの請求明細はイントラステータス 仕訳帳に追加されません

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

この記事は、イタリア語 (it) 言語ロケールの Microsoft Dynamics NAV に適用されます。

現象

イタリア語バージョンの Microsoft Dynamics NAV で品目請求を使用する請求書を作成し、その請求書を欧州連合 (EU) 顧客の既存の出荷にリンクするとします。 イントラステータス仕訳帳を登録すると、与信メモの請求明細はイントラステータス仕訳帳に追加されません。
この問題は、次の製品で発生します。

  • Microsoft Dynamics NAV 2009 Service Pack 1 のイタリア語バージョン
  • Microsoft Dynamics NAV 2009 のイタリア語バージョン
  • Microsoft Dynamics NAV 5.0 Service Pack 1 のイタリア語バージョン

解決策

修正プログラムの情報

サポートされている修正プログラムが 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 アクセス許可。

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

コードの変更

メモ 運用環境のコンピューターに修正プログラムを適用する前に、制御された環境でコード修正を常にテストします。
この問題を解決するには、項目台帳エントリの取得レポート (594) のコードを変更します。 手順は次のとおりです。

  1. 項目台帳エントリ - OnPreDataItem トリガーのコードを次のように変更します。
    既存のコード

    ...
    END;
    
    IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No.");
    IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry");
    
    WITH ValueEntry DO BEGIN
      SETCURRENTKEY("Item Ledger Entry No.");
    
    // Delete the following line.
      SETRANGE("Valuation Date",StartDate,EndDate);
    
      SETRANGE("Entry Type","Entry Type"::"Direct Cost");
    ...
    
    

    置換コード

    ...
    END;
    
    // Add the following line.
    IntrastatJnlLine2.SETRANGE(IntrastatJnlLine2."Journal Batch Name",IntrastatJnlBatch.Name); 
    
    IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No.");
    IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry");
    
    WITH ValueEntry DO BEGIN
      SETCURRENTKEY("Item Ledger Entry No.");
    
    // Add the following line.
      SETRANGE("Posting Date",StartDate,EndDate);
    
      SETRANGE("Entry Type","Entry Type"::"Direct Cost");
    ...
    
    
  2. 項目台帳エントリ - OnAfterGetRecord トリガーから、次のプロパティを持つローカル変数を削除します。

    • Name:Location
    • DataType:Record
    • サブタイプ:場所
  3. 項目台帳エントリ - OnAfterGetRecord トリガーから、次のプロパティを持つローカル変数を削除します。

    • Name:ItemLedgEntry
    • DataType:Record
    • サブタイプ:項目台帳エントリ
  4. 項目台帳エントリ - OnAfterGetRecord トリガーから、次のプロパティを持つローカル変数を削除します。

    • Name:Include
    • DataType:Boolean
  5. 項目台帳エントリ - OnAfterGetRecord トリガーのコードを次のように変更します。
    既存のコード

    ...
    IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No.");
    IF IntrastatJnlLine2.FINDFIRST THEN
      CurrReport.SKIP;
    
    // Delete the following lines.
                               IF "Drop Shipment" THEN BEGIN
                                 IF ("Country/Region Code" = CompanyInfo."Country/Region Code") OR
                                    ("Country/Region Code" = '')
                                 THEN
                                   CurrReport.SKIP;
                                 IF "Applies-to Entry" = 0 THEN BEGIN
                                   ItemLedgEntry.SETCURRENTKEY("Item No.","Posting Date");
                                   ItemLedgEntry.SETRANGE("Item No.","Item No.");
                                   ItemLedgEntry.SETRANGE("Posting Date","Posting Date");
                                   ItemLedgEntry.SETRANGE("Applies-to Entry","Entry No.");
                                   ItemLedgEntry.FINDFIRST;
                                 END ELSE
                                   ItemLedgEntry.GET("Applies-to Entry");
                                 IF (ItemLedgEntry."Country/Region Code" <> CompanyInfo."Country/Region Code") AND
                                    (ItemLedgEntry."Country/Region Code" <> '')
                                 THEN
                                   CurrReport.SKIP;
                               END ELSE IF "Entry Type" = "Entry Type"::Transfer THEN BEGIN
                                 IF ("Country/Region Code" = CompanyInfo."Country/Region Code") OR
                                    ("Country/Region Code" = '')
                                 THEN
                                   CurrReport.SKIP;
                                 IF "Transfer Order No." = '' THEN BEGIN
                                   Location.GET("Location Code");
                                   IF (Location."Country/Region Code" <> '') AND
                                      (Location."Country/Region Code" <> CompanyInfo."Country/Region Code")
                                   THEN
                                     CurrReport.SKIP;
                                 END ELSE BEGIN
                                   ItemLedgEntry.SETRANGE("Transfer Order No.","Transfer Order No.");
                                   ItemLedgEntry.SETFILTER("Country/Region Code",'%1 | %2','',CompanyInfo."Country/Region Code");
                                   IF ItemLedgEntry.FINDSET THEN
                                     REPEAT
                                       Location.GET(ItemLedgEntry."Location Code");
                                       IF Location."Use As In-Transit" THEN
                                         Include:= TRUE;
                                     UNTIL Include OR (ItemLedgEntry.NEXT = 0);
                                   IF NOT Include THEN
                                     CurrReport.SKIP;
                                 END;
                               END ELSE IF "Location Code" <> '' THEN BEGIN
                                 Location.GET("Location Code");
                                 CheckILE(Location."Country/Region Code");
                               END ELSE BEGIN
                                   IF "Entry Type" = "Entry Type"::Purchase THEN
                                     CheckILE(CompanyInfo."Ship-to Country/Region Code");
                                   IF "Entry Type" = "Entry Type"::Sale THEN
                                     CheckILE(CompanyInfo."Country/Region Code");
                               END;
    // End of the lines.
    
    TotalInvoicedQty := 0;
    ...
    
    

    置換コード

    ...
    IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No.");
    IF IntrastatJnlLine2.FINDFIRST THEN
      CurrReport.SKIP;
    
    
    TotalInvoicedQty := 0;
    ....
    
    Create a new DataItem as follow:
    DataItem Name
    Value Entry <Value Entry>
    
    Click Propriety and set:
    DataItemTableView = SORTING(Entry No.)
    
    In the Value Entry - OnPreDataItem() add the following code lines:
    
    SETRANGE("Posting Date",StartDate,EndDate);
    SETFILTER("Item Charge No.",'<> %1','');
    "Item Ledger Entry".SETRANGE("Posting Date");
    
    IntrastatJnlLine2.SETRANGE(IntrastatJnlLine2."Journal Batch Name",IntrastatJnlBatch.Name);
    IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No.");
    IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry");
    
    In the Value Entry - OnAfterGetRecord() trigger add the following code lines:
    
    
    IntrastatJnlLine2.SETRANGE("Source Entry No.","Item Ledger Entry No.");
    IF IntrastatJnlLine2.FINDFIRST THEN
      CurrReport.SKIP;
    
    IF "Item Ledger Entry".GET("Item Ledger Entry No.")
    THEN BEGIN
      IF ("Item Ledger Entry"."Posting Date" > StartDate) AND ("Item Ledger Entry"."Posting Date" < EndDate) THEN
        CurrReport.SKIP;
      IF "Country/Region".GET("Item Ledger Entry"."Country/Region Code") THEN
        IF "Country/Region"."EU Country/Region Code" = '' THEN
          CurrReport.SKIP;
      TestILE("Item Ledger Entry");
    
    InsertValueEntryLine;
    END;
    ...
    
    
  6. CheckILE 関数のコードを次のように変更します。
    既存のコード

    ...
    // Delete the following lines.
    IF NOT ((("Item Ledger Entry"."Country/Region Code" = CompanyInfo."Country/Region Code") 
    OR  
                 ("Item Ledger Entry"."Country/Region Code" = '')) XOR   
                 ((CountryRegionCode = CompanyInfo."Country/Region Code") OR 
                 (CountryRegionCode = '')))  
    // End of the lines.
    
    
    THEN
    ...
    
    

    置換コード

    ...
    // Add the following lines.
    IF ("Item Ledger Entry"."Country/Region Code" IN [CompanyInfo."Country/Region Code",'']) =  
       (CountryRegionCode IN [CompanyInfo."Country/Region Code",''])  
    // End of the lines.
    
    THEN
    ...
    
    
  7. TestILE グローバル関数を作成します。 手順は次のとおりです。

    1. パラメーターを追加し、次のようにパラメーターを指定します。

      • Var: いいえ
      • 名前: ILE
      • DataType:Record
      • サブタイプ: 項目台帳エントリ
    2. ローカル変数を追加し、次のように変数を指定します。

      • Name:ItemLedgEntry
      • DataType:Record
      • サブタイプ:項目台帳エントリ
    3. ローカル変数を追加し、次のように変数を指定します。

      • Name:Location
      • DataType:Record
      • サブタイプ:場所
    4. ローカル変数を追加し、次のように変数を指定します。

      • Name:Include
      • DataType:Boolean
    5. 次のようにコードを追加します。

      WITH ILE DO BEGIN
        IF "Drop Shipment" THEN BEGIN
          IF ("Country/Region Code" = CompanyInfo."Country/Region Code") OR
             ("Country/Region Code" = '')
          THEN
            CurrReport.SKIP;
          IF "Applies-to Entry" = 0 THEN BEGIN
            ItemLedgEntry.SETCURRENTKEY("Item No.","Posting Date");
            ItemLedgEntry.SETRANGE("Item No.","Item No.");
            ItemLedgEntry.SETRANGE("Posting Date","Posting Date");
            ItemLedgEntry.SETRANGE("Applies-to Entry","Entry No.");
            ItemLedgEntry.FINDFIRST;
          END ELSE
            ItemLedgEntry.GET("Applies-to Entry");
          IF (ItemLedgEntry."Country/Region Code" <> CompanyInfo."Country/Region Code") AND
             (ItemLedgEntry."Country/Region Code" <> '')
          THEN
            CurrReport.SKIP;
        END ELSE IF "Entry Type" = "Entry Type"::Transfer THEN BEGIN
          IF ("Country/Region Code" = CompanyInfo."Country/Region Code") OR
             ("Country/Region Code" = '')
          THEN
            CurrReport.SKIP;
          IF "Transfer Order No." = '' THEN BEGIN
            Location.GET("Location Code");
            IF (Location."Country/Region Code" <> '') AND
               (Location."Country/Region Code" <> CompanyInfo."Country/Region Code")
            THEN
              CurrReport.SKIP;
          END ELSE BEGIN
            ItemLedgEntry.SETRANGE("Transfer Order No.","Transfer Order No.");
            ItemLedgEntry.SETFILTER("Country/Region Code",'%1 | %2','',CompanyInfo."Country/Region Code");
            IF ItemLedgEntry.FINDSET THEN
              REPEAT
                Location.GET(ItemLedgEntry."Location Code");
                IF Location."Use As In-Transit" THEN
                  Include:= TRUE;
              UNTIL Include OR (ItemLedgEntry.NEXT = 0);
            IF NOT Include THEN
              CurrReport.SKIP;
          END;
        END ELSE IF "Location Code" <> '' THEN BEGIN
          Location.GET("Location Code");
          CheckILE(Location."Country/Region Code");
        END ELSE BEGIN
          IF "Entry Type" = "Entry Type"::Purchase THEN
            CheckILE(CompanyInfo."Ship-to Country/Region Code");
          IF "Entry Type" = "Entry Type"::Sale THEN
            CheckILE(CompanyInfo."Country/Region Code");
        END;
      END;
      
      
  8. InsertValueEntryLine グローバル関数を作成します。 手順は次のとおりです。

    1. ローカル変数を追加し、次のように変数を指定します。

      • Name:Location
      • DataType:Record
      • サブタイプ:場所
    2. 次のようにコードを追加します。

      GetGLSetup;
      WITH IntrastatJnlLine DO BEGIN
        INIT;
        "Line No." := "Line No." + 10000;
        Date := "Value Entry"."Posting Date";
        "Country/Region Code" := "Item Ledger Entry"."Country/Region Code";
        "Transaction Type" := "Item Ledger Entry"."Transaction Type";
        "Transport Method" := "Item Ledger Entry"."Transport Method";
        "Source Entry No." := "Item Ledger Entry"."Entry No.";
        Quantity := "Item Ledger Entry".Quantity;
        "Document No." := "Value Entry"."Document No.";
        "Item No." := "Item Ledger Entry"."Item No.";
        "Entry/Exit Point" := "Item Ledger Entry"."Entry/Exit Point";
        Area := "Item Ledger Entry".Area;
        "Transaction Specification" := "Item Ledger Entry"."Transaction Specification";
        Amount := ROUND(ABS("Value Entry"."Sales Amount (Actual)"),1);
      
        IF Quantity < 0 THEN
          Type := Type::Shipment
        ELSE
          Type := Type::Receipt;
      
        IF ("Country/Region Code" = '') OR
           ("Country/Region Code" = CompanyInfo."Country/Region Code")
        THEN BEGIN
          IF "Item Ledger Entry"."Location Code" = '' THEN
            "Country/Region Code" := CompanyInfo."Ship-to Country/Region Code"
          ELSE BEGIN
            Location.GET("Item Ledger Entry"."Location Code");
            "Country/Region Code" := Location."Country/Region Code"
          END;
        END;
      
        VALIDATE("Item No.");
        "Source Type" := "Source Type"::"Item entry";
        VALIDATE(Quantity,ROUND(ABS(Quantity),0.00001));
        VALIDATE("Cost Regulation %",IndirectCostPctReq);
      
        INSERT;
      END;
      
      

          

前提条件

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

  • Microsoft Dynamics NAV 2009 Service Pack 1 のイタリア語バージョン
  • Microsoft Dynamics NAV 2009 のイタリア語バージョン
  • Microsoft Dynamics NAV 5.0 Service Pack 1 のイタリア語バージョン

アンインストール情報

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

状態

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

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