Ez a cikk a Microsoft Dynamics NAV 2009 minden országra és nyelvi beállításra vonatkozik.
Tünetek
Ha egy Európai Uniós (EU) szállító terhelési tétel jóváírási értesítését a hivatkozó számla eltérő időszakában adja fel a Microsoft Dynamics NAV 2009 R2 rendszerben és a Microsoft Dynamics NAV 2009 Service Pack 1 (SP1) rendszerben, a jóváírási értesítés sor nem szerepel az Intrastat naplóban.
Megoldás
Gyorsjavítással kapcsolatos információk
A Microsoft már elérhető egy támogatott gyorsjavítást kínál. Ez azonban csak a cikkben ismertetett probléma megoldására szolgál. Csak olyan rendszerekre alkalmazza, amelyek tapasztalják ezt a problémát. Előfordulhat, hogy a gyorsjavítás további tesztelésen eshet át. Ezért ha nem érinti súlyosan ez a probléma, azt javasoljuk, hogy várja meg a Microsoft Dynamics NAV 2009 következő szervizcsomagját, illetve a Microsoft Dynamics NAV következő olyan verzióját, amely tartalmazza ezt a gyorsjavítást.
Megjegyzés: Különleges esetekben a támogatási hívások szokásos díjai törölhetők, ha a Microsoft Dynamics és a kapcsolódó termékek terméktámogatási szakértője úgy ítéli meg, hogy egy adott frissítés megoldja a problémát. A szokásos támogatási költségek olyan további támogatási kérdések és problémák esetén merülnek fel, amelyek nem felelnek meg a kérdéses frissítés feltételeinek.
Telepítési információk
A Microsoft csak illusztrációs céllal kínál programozási példákat, kifejezett vagy vélelmezett garancia nélkül. Ez magában foglalja, de nem kizárólagosan a forgalmazhatóságra vagy az adott célra való alkalmasságra vonatkozó vélelmezett garanciát. Ez a cikk feltételezi, hogy ismeri a bemutatott programozási nyelvet, valamint az eljárások létrehozásához és hibakereséséhez használt eszközöket. A Microsoft támogatási szakemberei segíthetnek elmagyarázni egy adott eljárás funkcionalitását, de nem módosítják a példákat, hogy további funkciókat biztosítsanak, és nem építenek ki eljárásokat az egyéni igényekre.
Megjegyzés: A gyorsjavítás telepítése előtt győződjön meg arról, hogy a Microsoft Navision-ügyfél összes felhasználója kijelentkezett a rendszerről. Ide tartoznak a Microsoft Navision Application Services (NAS) kliens felhasználói is. A gyorsjavítás telepítésekor csak Ön lehet az, aki be van jelentkezve.
A gyorsjavítás implementálásához fejlesztői licenccel kell rendelkeznie.
Javasoljuk, hogy a Windows Bejelentkezések ablakában vagy az Adatbázis-bejelentkezések ablakban látható felhasználói fiókhoz rendelje a "SUPER" szerepkörazonosítót. Ha a felhasználói fiókhoz nem rendelhető a "SUPER" szerepkörazonosító, ellenőriznie kell, hogy a felhasználói fiók rendelkezik-e az alábbi engedélyekkel:
- A módosítani kívánt objektum Módosítás engedélye.
- Végrehajtási engedély az 5210-es rendszerazonosítójú objektumhoz és a 9015-ös rendszerobjektum-azonosítójú objektumhoz.
Megjegyzés: Az adattárakhoz csak akkor kell jogokkal rendelkeznie, ha adatokat kell javítást végeznie.
Kódváltozások
Megjegyzés: Mindig ellenőrzött környezetben tesztelje a kódjavításokat, mielőtt telepítené őket az üzemi számítógépekre.
A probléma megoldásához módosítsa a kódot a Cikkfőkönyv-bejegyzések beolvasása jelentésben (594). Ehhez kövesse az alábbi lépéseket:
Módosítsa a 2-es adatelem kódját a következők szerint:
Meglévő kód: 1... SETRANGE("Country/Region Code",''); END; IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No."); IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry"); ...Helyettesítő kód 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"); ...Meglévő 2. kód
... 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-es helyettesítő kód
... 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', ...Meglévő 3-as kód
... 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-as helyettesítő kód
... END; END; OnAfterGetRecord=BEGIN IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No."); IF IntrastatJnlLine2.FINDFIRST THEN CurrReport.SKIP; ...Meglévő 4-es kód
... 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-es helyettesítő kód
... IF IntrastatJnlLine2.FINDFIRST THEN CurrReport.SKIP; // Add the following line. TestILE("Item Ledger Entry"); // End of the line. TotalInvoicedQty := 0; TotalAmt := 0; TotalAmtExpected := 0; ...Módosítsa a 4-es adatszámú kódját a következők szerint:
Meglévő kód... { } } } REQUESTFORM { ...Helyettesítő kód
... { } } // 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 { ...Módosítsa a kódot a TestILE függvényben a következők szerint:
Meglévő kód... END; END; BEGIN END. } ...Helyettesítő kód
... 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. } ...
Előfeltételek
A gyorsjavítás alkalmazásához az alábbi termékek egyikének telepítve kell lennie:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Service Pack 1
Eltávolítással kapcsolatos információk
Ez a gyorsjavítás nem távolítható el.
Állapot
A Microsoft megerősítette, hogy ez egy olyan probléma a Microsoft-termékekben, amely az „Érintett szolgáltatás“ című szakaszban van felsorolva.
Megjegyzés: Ez egy "GYORS KÖZZÉTÉTELŰ" cikk, amelyet közvetlenül a Microsoft támogatási szervezete készített. A dokumentumban szereplő információkat adott formában bocsátjuk rendelkezésre, a felmerülő problémákra adott válaszként. A rendelkezésre bocsátás gyorsasága következtében az anyagok sajtóhibákat tartalmazhatnak, és bármikor, előzetes értesítés nélkül felülvizsgálhatók. További szempontokat a használati feltételekben talál.