이 문서는 모든 국가 및 모든 언어 로캘에 대해 Microsoft Dynamics NAV 2009에 적용됩니다.
증상
Microsoft Dynamics NAV 2009 R2 및 Microsoft Dynamics NAV 2009 SP1(서비스 팩 1)에서 참조 송장의 다른 기간에 유럽 연합(EU) 공급업체에 대한 청구 항목 크레딧 메모를 게시하는 경우 신용 메모 줄은 통계 내 저널에 포함되지 않습니다.
해결 방법
핫픽스 정보
이제 Microsoft에서 지원되는 핫픽스를 사용할 수 있습니다. 그러나 이 문서에 설명된 문제만 수정하기 위한 것입니다. 이 특정 문제가 발생하는 시스템에만 적용합니다. 이 핫픽스는 추가 테스트를 받을 수 있습니다. 따라서 이 문제의 심각한 영향을 받지 않는 경우 다음 Microsoft Dynamics NAV 2009 서비스 팩 또는 이 핫픽스가 포함된 다음 Microsoft Dynamics NAV 버전을 기다리는 것이 좋습니다.
참고 특별한 경우 Microsoft Dynamics 및 관련 제품에 대한 기술 지원 전문가가 특정 업데이트가 문제를 resolve 판단하는 경우 지원 호출에 대해 일반적으로 발생하는 요금이 취소될 수 있습니다. 특정 업데이트가 필요하지 않은 추가 지원 질문과 문제에는 일반 지원 비용이 적용됩니다.
설치 정보
Microsoft는 명시적이거나 묵시적인 보증 없이 설명용으로만 프로그래밍 예제를 제공합니다. 여기에는 상품성 또는 특정 목적에의 적합성에 대한 묵시적 보증이 포함되지만 이에 국한되지 않습니다. 이 문서에서는 설명 중인 프로그래밍 언어와 프로시저를 만들고 디버깅하는 데 사용되는 도구에 대해 잘 알고 있다고 가정합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 프로시저에 대한 기능을 설명할 수 있지만 사용자의 특정 요구 사항에 맞도록 예제를 수정하여 추가 기능을 제공하거나 프로시저를 구성하지는 않습니다.
참고 이 핫픽스를 설치하기 전에 모든 Microsoft Navision 클라이언트 사용자가 시스템에서 로그오프되었는지 확인합니다. 여기에는 NAS(Microsoft Navision Application Services) 클라이언트 사용자가 포함됩니다. 이 핫픽스를 구현할 때 로그온한 유일한 클라이언트 사용자여야 합니다.
이 핫픽스를 구현하려면 개발자 라이선스가 있어야 합니다.
Windows 로그인 창 또는 데이터베이스 로그인 창의 사용자 계정에 "SUPER" 역할 ID가 할당되는 것이 좋습니다. 사용자 계정에 "SUPER" 역할 ID를 할당할 수 없는 경우 사용자 계정에 다음 권한이 있는지 확인해야 합니다.
- 변경할 개체에 대한 수정 권한입니다.
- 시스템 개체 ID 5210 개체 및 System Object ID 9015 개체에 대한 Execute 권한입니다.
참고 데이터 복구를 수행해야 하는 경우가 아니면 데이터 저장소에 대한 권한이 있을 필요가 없습니다.
코드 변경 내용
참고 프로덕션 컴퓨터에 수정 사항을 적용하기 전에 제어된 환경에서 항상 코드 수정을 테스트합니다.
이 문제를 resolve 항목 원장 항목 가져오기 보고서(594)에서 코드를 변경합니다. 그러려면 다음 단계를 따르세요.
다음과 같이 데이터 항목 번호 2의 코드를 변경합니다.
기존 코드 1... SETRANGE("Country/Region Code",''); END; IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No."); IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry"); ...대체 코드 1
... SETRANGE("Country/Region Code",''); END; // Add the following line. IntrastatJnlLine2.SETRANGE("Journal Batch Name",IntrastatJnlBatch.Name); // End of the line. IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No."); IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry"); ...기존 코드 2
... WITH ValueEntry DO BEGIN SETCURRENTKEY("Item Ledger Entry No."); // Delete the following line. SETRANGE("Valuation Date",StartDate,EndDate); // End of the line. SETRANGE("Entry Type","Entry Type"::"Direct Cost"); SETFILTER( "Item Ledger Entry Type",'%1|%2|%3', ...대체 코드 2
... WITH ValueEntry DO BEGIN SETCURRENTKEY("Item Ledger Entry No."); // Add the following line. SETRANGE("Posting Date",StartDate,EndDate); // End of the line. SETRANGE("Entry Type","Entry Type"::"Direct Cost"); SETFILTER( "Item Ledger Entry Type",'%1|%2|%3', ...기존 코드 3
... END; END; // Delete the following lines. OnAfterGetRecord=VAR Location@1000 : Record 14; ItemLedgEntry@1001 : Record 32; Include@1002 : Boolean; BEGIN // End of the lines. IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No."); IF IntrastatJnlLine2.FINDFIRST THEN CurrReport.SKIP; ...대체 코드 3
... END; END; OnAfterGetRecord=BEGIN IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No."); IF IntrastatJnlLine2.FINDFIRST THEN CurrReport.SKIP; ...기존 코드 4
... IF IntrastatJnlLine2.FINDFIRST THEN CurrReport.SKIP; // Delete the following lines. IF "Entry Type" IN ["Entry Type"::Sale,"Entry Type"::Purchase] THEN BEGIN ItemLedgEntry.RESET; ItemLedgEntry.SETCURRENTKEY("Document No.","Document Type"); ItemLedgEntry.SETRANGE("Document No.","Document No."); ItemLedgEntry.SETRANGE("Item No.","Item No."); ItemLedgEntry.SETRANGE(Correction,TRUE); ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Sales Shipment"); IF NOT ItemLedgEntry.ISEMPTY THEN CurrReport.SKIP; ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Sales Return Receipt"); IF NOT ItemLedgEntry.ISEMPTY THEN CurrReport.SKIP; ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Purchase Receipt"); IF NOT ItemLedgEntry.ISEMPTY THEN CurrReport.SKIP; ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Purchase Return Shipment"); IF NOT ItemLedgEntry.ISEMPTY THEN CurrReport.SKIP; END; CASE TRUE OF "Drop Shipment": 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; "Entry Type" = "Entry Type"::Transfer: 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; "Location Code" <> '': 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; // End of the lines. TotalInvoicedQty := 0; TotalAmt := 0; TotalAmtExpected := 0; ...대체 코드 4
... IF IntrastatJnlLine2.FINDFIRST THEN CurrReport.SKIP; // Add the following line. TestILE("Item Ledger Entry"); // End of the line. TotalInvoicedQty := 0; TotalAmt := 0; TotalAmtExpected := 0; ...다음과 같이 데이터 항목 번호 4의 코드를 변경합니다.
기존 코드... { } } } REQUESTFORM { ...대체 코드
... { } } // Add the following lines. { PROPERTIES { DataItemTable=Table5802; DataItemTableView=SORTING(Entry No.); OnPreDataItem=BEGIN SETRANGE("Posting Date",StartDate,EndDate); SETFILTER("Item Charge No.",'<> %1',''); "Item Ledger Entry".SETRANGE("Posting Date"); IntrastatJnlLine2.SETRANGE("Journal Batch Name",IntrastatJnlBatch.Name); IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No."); IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry"); END; OnAfterGetRecord=BEGIN 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; END; } SECTIONS { { PROPERTIES { SectionType=Body; SectionWidth=12000; SectionHeight=846; } CONTROLS { } } } } // End of the lines. } REQUESTFORM { ...TestILE 함수의 코드를 다음과 같이 변경합니다.
기존 코드... END; END; BEGIN END. } ...대체 코드
... END; END; // Add the following lines. PROCEDURE TestILE@5(ILE@1000 : Record 32); VAR ItemLedgEntry@1003 : Record 32; Location@1002 : Record 14; Include@1001 : Boolean; BEGIN WITH ILE DO BEGIN IF "Entry Type" IN ["Entry Type"::Sale,"Entry Type"::Purchase] THEN BEGIN ItemLedgEntry.RESET; ItemLedgEntry.SETCURRENTKEY("Document No.","Document Type"); ItemLedgEntry.SETRANGE("Document No.","Document No."); ItemLedgEntry.SETRANGE("Item No.","Item No."); ItemLedgEntry.SETRANGE(Correction,TRUE); ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Sales Shipment"); IF NOT ItemLedgEntry.ISEMPTY THEN CurrReport.SKIP; ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Sales Return Receipt"); IF NOT ItemLedgEntry.ISEMPTY THEN CurrReport.SKIP; ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Purchase Receipt"); IF NOT ItemLedgEntry.ISEMPTY THEN CurrReport.SKIP; ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Purchase Return Shipment"); IF NOT ItemLedgEntry.ISEMPTY THEN CurrReport.SKIP; END; CASE TRUE OF "Drop Shipment": 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; "Entry Type" = "Entry Type"::Transfer: 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; "Location Code" <> '': 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; END; END; PROCEDURE InsertValueEntryLine@6(); VAR Location@1000 : Record 14; BEGIN 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; END; // End of the lines. BEGIN END. } ...
필수 구성 요소
이 핫픽스를 적용하려면 다음 제품 중 하나가 설치되어 있어야 합니다.
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 서비스 팩 1
제거 정보
이 핫픽스는 제거할 수 없습니다.
상태
Microsoft에서 이는 "적용 대상" 섹션에 나열된 Microsoft 제품에서의 문제임을 확인했습니다.
참고 이 문서는 Microsoft 지원 부서에서 직접 작성한 "빠른 게시" 문서입니다. 여기에 포함된 정보는 새로운 문제에 대한 응답으로 있는 그대로 제공됩니다. 문서를 제공하는 속도로 인해 문서에 오자가 있을 수 있으며 사전 통지 없이 언제든지 수정될 수 있습니다. 다른 고려 사항은 사용 약관을 참조하십시오.