Ovaj članak se odnosi na Microsoft Dynamics NAV za lokalni standard italijanskog (it).
Simptomi
Pretpostavimo da kreirate fakturu sa naplatom stavke u italijanskoj verziji usluge Microsoft Dynamics NAV i povežete fakturu sa postojećom pošiljkom za klijenta iz Evropske unije (EU). Kada kreirate Intrastat dnevnik, stavka naplate za knjižno odobrenje se ne dodaje u Intrastat dnevnik.
Ovaj problem se javlja u sledećim proizvodima:
- Italijanska verzija servisnog paketa 1 za Microsoft Dynamics NAV 2009
- Italijanska verzija programa Microsoft Dynamics NAV 2009
- Italijanska verzija servisnog paketa Microsoft Dynamics NAV 5.0 sa servisnim paketom 1
Rešenje
Informacije o hitnim ispravkama
Podržana hitna ispravka je sada dostupna od korporacije Microsoft. Međutim, namena je samo za rešavanje problema koji je opisan u ovom članku. Primenite je samo na sisteme koji imaju ovaj određeni problem. Ova hitna ispravka može proći dodatno testiranje. Stoga, ako ovaj problem ne utiče ozbiljno, preporučujemo da sačekate sledeći servisni paket za Microsoft Dynamics NAV 2009 ili sledeću verziju programa Microsoft Dynamics NAV koja sadrži ovu hitnu ispravku.
Napomena: U posebnim slučajevima, troškovi koji se obično nastaju za pozive podršci mogu biti otkazani ako stručnjak za tehničku podršku za Microsoft Dynamics i srodne proizvode utvrdi da će određena ispravka rešiti problem. Uobičajeni troškovi podrške primenjivaće se na dodatna pitanja podrške i probleme koji ne ispunjavaju uslove za određenu ispravku u pitanju.
Informacije o instalaciji
Microsoft pruža primere programiranja samo za ilustraciju, bez izričite ili podrazumevane garancije. Ovo uključuje, ali nije ograničeno na, podrazumevane garancije o podesnosti za prodaju ili o podesnosti za određenu namenu. U ovom članku se pretpostavlja da ste upoznati sa programskim jezikom koji se demonstrira i sa alatkama koje se koriste za kreiranje procedura i otklanjanje grešaka. Inženjeri Microsoft podrške mogu da vam objasne funkcionalnost određene procedure, ali neće izmeniti ove primere da bi obezbedili dodatnu funkcionalnost ili konstruisali procedure koje ispunjavaju vaše određene zahteve.
Napomena: Pre nego što instalirate ovu hitnu ispravku, proverite da li su svi korisnici Microsoft Navision klijenta odjavljeni iz sistema. To uključuje korisnike Microsoft Navision Application Services (NAS) klijenta. Vi bi trebalo da budete jedini korisnik klijenta koji je prijavljen kada primenjujete ovu hitnu ispravku.
Da biste primenili ovu hitnu ispravku, morate imati licencu za projektante.
Preporučujemo da se korisničkom nalogu u prozoru "Prijavljivanje u operativni sistem Windows" ili u prozoru "Prijavljivanje u bazu podataka" dodeli ID uloge "SUPER". Ako korisničkom nalogu nije moguće dodeliti ID uloge "SUPER", morate da proverite da li korisnički nalog ima sledeće dozvole:
- Dozvola "Izmeni" za objekat koji ćete menjati.
- Dozvola za izvršavanje za objekat sistema ID 5210 i za objekat sistema ID 9015.
Napomena: Ne morate da imate prava na skladišta podataka osim ako ne morate da izvršite popravku podataka.
Promene kodova
Napomena: Popravke kodova uvek testirajte u kontrolisanom okruženju pre nego što ih primenite na računare proizvodnje.
Da biste rešili ovaj problem, promenite kôd u izveštaju "Preuzmi stavke glavne knjige stavki" (594). Pratite ove korake da biste to uradili:
Promenite kôd u okidaču "Stavka stavke – OnPreDataItem" na sledeći način:
Postojeći kôd... 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"); ...Kôd za zamenu
... 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"); ...Izbrišite lokalnu promenljivu koja ima sledeća svojstva iz pokretača "Stavka glavne knjige – OnAfterGetRecord":
- Ime:Lokacija
- DataType:Record
- podtip:Lokacija
Izbrišite lokalnu promenljivu koja ima sledeća svojstva iz pokretača "Stavka glavne knjige – OnAfterGetRecord":
- Ime: ItemLedgEntry
- DataType:Record
- Podtip: Stavka Glavna knjiga Unos
Izbrišite lokalnu promenljivu koja ima sledeća svojstva iz pokretača "Stavka glavne knjige – OnAfterGetRecord":
- Ime:Uključi
- Tip podataka:Bulov
Promenite kôd u stavci stavke knjige – OnAfterGetRecord okidaču na sledeći način:
Postojeći kôd... 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; ...Kôd za zamenu
... 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; ...Promenite kôd u funkciji CheckILE na sledeći način:
Postojeći kôd... // 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 ...Kôd za zamenu
... // 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 ...Kreirajte globalnu funkciju TestILE. Pratite ove korake da biste to uradili:
Dodajte parametar, a zatim navedite parametar na sledeći način:
- Var: Ne
- Ime: ILE
- DataType:Record
- Podtip: Stavka Glavna knjiga Unos
Dodajte lokalnu promenljivu, a zatim navedite promenljivu na sledeći način:
- Ime: ItemLedgEntry
- DataType:Record
- Podtip: Stavka Glavna knjiga Unos
Dodajte lokalnu promenljivu, a zatim navedite promenljivu na sledeći način:
- Ime:Lokacija
- DataType:Record
- podtip:Lokacija
Dodajte lokalnu promenljivu, a zatim navedite promenljivu na sledeći način:
- Ime:Uključi
- Tip podataka:Bulov
Dodajte kôd na sledeći način:
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;
Kreirajte globalnu funkciju "InsertValueEntryLine". Pratite ove korake da biste to uradili:
Dodajte lokalnu promenljivu, a zatim navedite promenljivu na sledeći način:
- Ime:Lokacija
- DataType:Record
- podtip:Lokacija
Dodajte kôd na sledeći način:
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;
Preduslovi
Morate da imate instaliran jedan od sledećih proizvoda da biste primenili ovu hitnu ispravku:
- Italijanska verzija servisnog paketa 1 za Microsoft Dynamics NAV 2009
- Italijanska verzija programa Microsoft Dynamics NAV 2009
- Italijanska verzija servisnog paketa Microsoft Dynamics NAV 5.0 sa servisnim paketom 1
Informacije o uklanjanju
Ne možete da uklonite ovu hitnu ispravku.
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku „Odnosi se na“.
Napomena: Ovo je članak "BRZO OBJAVLJIVANJE" koji je kreiran direktno u okviru organizacije Microsoft podrške. Informacije koje se nalaze ovde pružaju se kakve jesu kao odgovor na nove probleme. Kao rezultat brzine stavljanja na raspolaganje, materijali mogu sadržavati tipografske greške i mogu se revidirati u bilo kom trenutku bez prethodne najave. Pogledajte Uslove korišćenja za druga razmatranja.