Ovaj se članak odnosi na Microsoft za sve države i sve jezične regionalne sheme.
Simptomi
Pretpostavimo da knjižite fakturu za narudžbenicu u sustavu Microsoft Dynamics NAV 2009. Zatim fakturirajte redak za naplatu artikala s količinskom vrijednošću navedenom za narudžbenicu. U tom se slučaju prilikom pregledavanja stavke knjige stavki za narudžbenicu vrijednost količine za redak troška artikala ne evidentira. Taj se problem pojavljuje u sljedećim proizvodima:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Service Pack 1
Rješenje
Informacije o hitnom popravku
Microsoft sada nudi podržani hitni popravak. No njegova je namjena samo ispravljanje problema opisanog u ovom članku. Primijenite ga samo na sustave koji imaju taj specifični problem. Ovaj hitni popravak može proći dodatna testiranja. Stoga, ako se ovaj problem ne odnosi ozbiljno, preporučujemo da pričekate sljedeći servisni paket za Microsoft Dynamics NAV 2009 ili sljedeću verziju sustava Microsoft Dynamics NAV koja sadrži ovaj hitni popravak.
Napomena: U posebnim slučajevima, ako stručnjak tehničke podrške za Microsoft Dynamics i povezane proizvode utvrdi da određeno ažuriranje može riješiti problem, poziv službi podrške može biti besplatan. Uobičajene cijene poziva službi za podršku primjenjuju se na dodatna pitanja i probleme koje nemaju veze s pripadnom nadopunom.
Informacije o instalaciji
Microsoft daje primjere programiranja samo za ilustraciju, bez jamstva, bilo izričitog ili prešutnog. To uključuje, bez ograničenja, implicitna jamstva utrživosti ili prikladnosti za određenu svrhu. U članku se podrazumijeva da ste upoznati s programskim jezikom koji se pokazuje te s alatima koji se koriste za stvaranje i ispravljanje pogrešaka procedura. Microsoftovi inženjeri za podršku mogu vam pomoći objasniti funkcionalnost određene procedure, no neće mijenjati te primjere radi pružanja dodatne funkcionalnosti ili konstruirati procedure koji zadovoljavaju vaše specifične zahtjeve.
Napomena Prije nego što instalirate ovaj hitni popravak, provjerite jesu li svi korisnici Microsoft Navision klijenta odjavljeni sa sustava. To obuhvaća korisnike klijentskih usluga Microsoft Navision Application Services (NAS). Trebali biste biti jedini klijentski korisnik prijavljen na vrijeme implementacije ovog hitnog popravka.
Da biste implementirali ovaj hitni popravak, morate imati licencu za razvojne inženjere.
Preporučujemo da se korisničkom računu u prozoru Prijave u sustav Windows ili u prozoru Prijave u bazu podataka dodijeli ID uloge "SUPER". Ako korisničkom računu nije moguće dodijeliti ID uloge "SUPER", morate provjeriti ima li korisnički račun sljedeće dozvole:
- Dozvola za izmjenu objekta koji ćete mijenjati.
- Dozvola za izvršavanje za objekt System Object ID 5210 i za objekt System Object ID 9015
Napomena: nemate pravo na spremišta podataka, osim ako morate popraviti podatke.
Promjene koda
Napomena: uvijek testirajte popravke koda u kontroliranom okruženju prije primjene popravaka na proizvodnim računalima.
Da biste riješili taj problem, učinite sljedeće:
Promijenite kod u okidaču OnRun u jedinici koda Sales-Post (80) na sljedeći način:
Postojeći kod 1... TempPrePmtAmtToDeduct@1003 : Decimal; TransactionLogEntryNo@1024 : Integer; BEGIN IF PostingDateExists AND (ReplacePostingDate OR ("Posting Date" = 0D)) THEN BEGIN ...Zamjenski kod 1
... TempPrePmtAmtToDeduct@1003 : Decimal; TransactionLogEntryNo@1024 : Integer; // Add the following line. SalesLineForCharge@1025 : Record 37; BEGIN IF PostingDateExists AND (ReplacePostingDate OR ("Posting Date" = 0D)) THEN BEGIN ...Postojeći kod 2
... ClearItemChargeAssgntFilter; TempItemChargeAssgntSales.SETCURRENTKEY("Applies-to Doc. Type"); // Delete the following line. TempItemChargeAssgntSales.SETFILTER("Applies-to Doc. Type",'<>%1',"Document Type"); TempItemChargeAssgntSales.SETRANGE("Document Line No.",SalesLine."Line No."); IF TempItemChargeAssgntSales.FINDSET THEN ...Zamjenski kod 2
... ClearItemChargeAssgntFilter; TempItemChargeAssgntSales.SETCURRENTKEY("Applies-to Doc. Type"); TempItemChargeAssgntSales.SETRANGE("Document Line No.",SalesLine."Line No."); IF TempItemChargeAssgntSales.FINDSET THEN ...Postojeći kod 3
... CASE TempItemChargeAssgntSales."Applies-to Doc. Type" OF TempItemChargeAssgntSales."Applies-to Doc. Type"::Shipment: // Delete the following lines. PostItemChargePerShpt(SalesLine); TempItemChargeAssgntSales."Applies-to Doc. Type"::"Return Receipt": PostItemChargePerRetRcpt(SalesLine); END; TempItemChargeAssgntSales.MARK(TRUE); // End of the lines. UNTIL TempItemChargeAssgntSales.NEXT = 0; END; END; ...Zamjenski kod 3
... CASE TempItemChargeAssgntSales."Applies-to Doc. Type" OF TempItemChargeAssgntSales."Applies-to Doc. Type"::Shipment: // Add the following line BEGIN PostItemChargePerShpt(SalesLine); TempItemChargeAssgntSales.MARK(TRUE); END; TempItemChargeAssgntSales."Applies-to Doc. Type"::"Return Receipt": BEGIN PostItemChargePerRetRcpt(SalesLine); TempItemChargeAssgntSales.MARK(TRUE); END; TempItemChargeAssgntSales."Applies-to Doc. Type"::Order, TempItemChargeAssgntSales."Applies-to Doc. Type"::Invoice: BEGIN IF SalesLineForCharge.GET( TempItemChargeAssgntSales."Applies-to Doc. Type", TempItemChargeAssgntSales."Applies-to Doc. No.", TempItemChargeAssgntSales."Applies-to Doc. Line No.") THEN IF (SalesLineForCharge."Qty. to Ship (Base)" = 0) AND (SalesLineForCharge."Qty. to Invoice (Base)" = 0) THEN ERROR(Text054); END; TempItemChargeAssgntSales."Applies-to Doc. Type"::"Return Order", TempItemChargeAssgntSales."Applies-to Doc. Type"::"Credit Memo": BEGIN IF SalesLineForCharge.GET( TempItemChargeAssgntSales."Applies-to Doc. Type", TempItemChargeAssgntSales."Applies-to Doc. No.", TempItemChargeAssgntSales."Applies-to Doc. Line No.") THEN IF (SalesLineForCharge."Return Qty. to Receive (Base)" = 0) AND (SalesLineForCharge."Qty. to Invoice (Base)" = 0) THEN ERROR(Text054); END; END; // End of the lines. UNTIL TempItemChargeAssgntSales.NEXT = 0; END; END; ...Postojeći kod 4
... Text052@1102601000 : TextConst 'ENU=You must assign item charge %1 if you want to invoice it.'; Text053@1102601001 : TextConst 'ENU=You can not invoice item charge %1 because there is no item ledger entry to assign it to.'; PROCEDURE SetPostingDate@1(NewReplacePostingDate@1000 : Boolean;NewReplaceDocumentDate@1001 : Boolean;NewPostingDate@1002 : Date); BEGIN ...Zamjenski kod 4
... Text052@1102601000 : TextConst 'ENU=You must assign item charge %1 if you want to invoice it.'; Text053@1102601001 : TextConst 'ENU=You can not invoice item charge %1 because there is no item ledger entry to assign it to.'; // Add the following line. Text054@1102601002 : TextConst 'ENU=The order line that the item charge has originally been assigned to has been partially or fully posted. You must reassign the item charge to the posted receipt or shipment instead.'; PROCEDURE SetPostingDate@1(NewReplacePostingDate@1000 : Boolean;NewReplaceDocumentDate@1001 : Boolean;NewPostingDate@1002 : Date); BEGIN ...Promijenite kod u okidaču OnRun u jedinici koda Purch.-Post (90) na sljedeći način:
Postojeći kod 1... ICInboxPurchHdr@1012 : Record 436; SalesHeader@1041 : Record 36; UpdateAnalysisView@1002 : Codeunit 410; UpdateItemAnalysisView@1008 : Codeunit 7150; ...Zamjenski kod 1
... ICInboxPurchHdr@1012 : Record 436; SalesHeader@1041 : Record 36; // Add the following line. PurchLineForCharge@1042 : Record 39; UpdateAnalysisView@1002 : Codeunit 410; UpdateItemAnalysisView@1008 : Codeunit 7150; ...Postojeći kod 2
... ClearItemChargeAssgntFilter; TempItemChargeAssgntPurch.SETCURRENTKEY("Applies-to Doc. Type"); // Delete the following line. TempItemChargeAssgntPurch.SETFILTER("Applies-to Doc. Type",'<>%1',"Document Type"); TempItemChargeAssgntPurch.SETRANGE("Document Line No.",PurchLine."Line No."); IF TempItemChargeAssgntPurch.FINDSET THEN ...Zamjenski kod 2
... ClearItemChargeAssgntFilter; TempItemChargeAssgntPurch.SETCURRENTKEY("Applies-to Doc. Type"); TempItemChargeAssgntPurch.SETRANGE("Document Line No.",PurchLine."Line No."); IF TempItemChargeAssgntPurch.FINDSET THEN ...Postojeći kod 3
... CASE TempItemChargeAssgntPurch."Applies-to Doc. Type" OF TempItemChargeAssgntPurch."Applies-to Doc. Type"::Receipt: // Delete the following lines. PostItemChargePerRcpt(PurchLine); TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Transfer Receipt": PostItemChargePerTransfer(PurchLine); TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Shipment": PostItemChargePerRetShpt(PurchLine); TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Sales Shipment": PostItemChargePerSalesShpt(PurchLine); TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Receipt": PostItemChargePerRetRcpt(PurchLine); END; TempItemChargeAssgntPurch.MARK(TRUE); // End of the lines. UNTIL TempItemChargeAssgntPurch.NEXT = 0; END; END; ...Zamjenski kod 3
... CASE TempItemChargeAssgntPurch."Applies-to Doc. Type" OF TempItemChargeAssgntPurch."Applies-to Doc. Type"::Receipt: // Add the following lines. BEGIN PostItemChargePerRcpt(PurchLine); TempItemChargeAssgntPurch.MARK(TRUE); END; TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Transfer Receipt": BEGIN PostItemChargePerTransfer(PurchLine); TempItemChargeAssgntPurch.MARK(TRUE); END; TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Shipment": BEGIN PostItemChargePerRetShpt(PurchLine); TempItemChargeAssgntPurch.MARK(TRUE); END; TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Sales Shipment": BEGIN PostItemChargePerSalesShpt(PurchLine); TempItemChargeAssgntPurch.MARK(TRUE); END; TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Receipt": BEGIN PostItemChargePerRetRcpt(PurchLine); TempItemChargeAssgntPurch.MARK(TRUE); END; TempItemChargeAssgntPurch."Applies-to Doc. Type"::Order, TempItemChargeAssgntPurch."Applies-to Doc. Type"::Invoice: BEGIN IF PurchLineForCharge.GET( TempItemChargeAssgntPurch."Applies-to Doc. Type", TempItemChargeAssgntPurch."Applies-to Doc. No.", TempItemChargeAssgntPurch."Applies-to Doc. Line No.") THEN IF (PurchLineForCharge."Qty. to Receive (Base)" = 0) AND (PurchLineForCharge."Qty. to Invoice (Base)" = 0) THEN ERROR(Text061); END; TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Order", TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Credit Memo": BEGIN IF PurchLineForCharge.GET( TempItemChargeAssgntPurch."Applies-to Doc. Type", TempItemChargeAssgntPurch."Applies-to Doc. No.", TempItemChargeAssgntPurch."Applies-to Doc. Line No.") THEN IF (PurchLineForCharge."Return Qty. to Ship (Base)" = 0) AND (PurchLineForCharge."Qty. to Invoice (Base)" = 0) THEN ERROR(Text061); END; END; // End of the lines. UNTIL TempItemChargeAssgntPurch.NEXT = 0; END; END; ...Postojeći kod 4
... Text059@1102601000 : TextConst 'ENU=You must assign item charge %1 if you want to invoice it.'; Text060@1102601001 : TextConst 'ENU=You can not invoice item charge %1 because there is no item ledger entry to assign it to.'; PROCEDURE SetPostingDate@1(NewReplacePostingDate@1000 : Boolean;NewReplaceDocumentDate@1001 : Boolean;NewPostingDate@1002 : Date); ...Zamjenski kod 4
... Text059@1102601000 : TextConst 'ENU=You must assign item charge %1 if you want to invoice it.'; Text060@1102601001 : TextConst 'ENU=You can not invoice item charge %1 because there is no item ledger entry to assign it to.'; // Add the following line. Text061@1102601002 : TextConst 'ENU=The order line that the item charge has originally been assigned to has been partially or fully posted. You must reassign the item charge to the posted receipt or shipment instead.'; PROCEDURE SetPostingDate@1(NewReplacePostingDate@1000 : Boolean;NewReplaceDocumentDate@1001 : Boolean;NewPostingDate@1002 : Date); ...
Preduvjeti
Da biste primijenili ovaj hitni popravak, morate imati instaliran neki od sljedećih proizvoda:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Service Pack 1
Podaci o uklanjanju
Ovaj hitni popravak ne možete ukloniti.
Status
Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku „Odnosi se na“.
Napomena: Ovo je članak "FAST PUBLISH" stvoren izravno u Microsoftovoj ustanovi za podršku. Ovdje sadržane informacije pružaju se takve kakve jesu kao odgovor na nove probleme. Kao rezultat brzine stavljanja na raspolaganje, materijali mogu sadržavati tipografske pogreške i mogu se revidirati u bilo kojem trenutku bez prethodne najave. Dodatne napomene potražite u Uvjetima korištenja .