この記事は、イタリア語 (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) のコードを変更します。 手順は次のとおりです。
項目台帳エントリ - 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"); ...項目台帳エントリ - OnAfterGetRecord トリガーから、次のプロパティを持つローカル変数を削除します。
- Name:Location
- DataType:Record
- サブタイプ:場所
項目台帳エントリ - OnAfterGetRecord トリガーから、次のプロパティを持つローカル変数を削除します。
- Name:ItemLedgEntry
- DataType:Record
- サブタイプ:項目台帳エントリ
項目台帳エントリ - OnAfterGetRecord トリガーから、次のプロパティを持つローカル変数を削除します。
- Name:Include
- DataType:Boolean
項目台帳エントリ - 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; ...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 ...TestILE グローバル関数を作成します。 手順は次のとおりです。
パラメーターを追加し、次のようにパラメーターを指定します。
- Var: いいえ
- 名前: ILE
- DataType:Record
- サブタイプ: 項目台帳エントリ
ローカル変数を追加し、次のように変数を指定します。
- Name:ItemLedgEntry
- DataType:Record
- サブタイプ:項目台帳エントリ
ローカル変数を追加し、次のように変数を指定します。
- Name:Location
- DataType:Record
- サブタイプ:場所
ローカル変数を追加し、次のように変数を指定します。
- Name:Include
- DataType:Boolean
次のようにコードを追加します。
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;
InsertValueEntryLine グローバル関数を作成します。 手順は次のとおりです。
ローカル変数を追加し、次のように変数を指定します。
- Name:Location
- DataType:Record
- サブタイプ:場所
次のようにコードを追加します。
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 製品の問題であることを確認しました。
注: この資料は、"迅速な公開" を目的としてマイクロソフト サポート組織により直接作成されたものです。 ここに含まれる情報は、新しい問題に対応するため、そのままの状態で提供されます。 情報を迅速に公開するため、この資料には誤植などが含まれる可能性があり、また、予告なく改訂される場合があります。 その他の注意事項については、使用条件を参照してください。