Ta članek velja za jezikovne nastavitve za Microsoft Dynamics NAV za vzhodno Evropo (EE).
Znaki
Oglejte si naslednji scenarij v vzhodnoevropski različici izdelka Microsoft Dynamics NAV 2009 s servisnim paketom SP1 in programom Microsoft Dynamics NAV 2009 R2:
- Imate prodajni nalog, ki uporablja predplačilo.
- Ustvarite vnaprejšnje pismo. Nato pismo o predplačilu objavite in zaračunate.
- Znova odprite prodajni nalog in nato poskusite spremeniti vrednost v polju »% predplačila « v glavi.
V tem scenariju lahko prejmete to sporočilo o napaki:
Opomba
Tabela predplačila Inv. Line Buffer je prazna.
Do te težave pride, ko uporabite sprotne popravke v teh posodobitvah KB: KB2543219, KB2546451, KB2546490 in KB2546498.
Če želite več informacij, kliknite to številko članka za ogled člankov iz Microsoftove zbirke znanja:
2543219 V vzhodnoevropski različici izdelka Microsoft Dynamics NAV 2009 R2 ni mogoče obdelati preplačanega predplačila Če želite več informacij, kliknite to številko članka iz Microsoftove zbirke znanja:
Ko poskušate objaviti preostalo količino prodajnega naloga v vzhodnoevropski različici programa Microsoft Dynamics NAV 2009, se 2546451 sporočilo o napaki »Ni zaloge. Ledger Entry within the filter« (Vnos glavne knjige v filtru), ko poskušate objaviti preostalo količino prodajnega naloga v vzhodnoevropski različici programa Microsoft Dynamics NAV 2009 Če želite več informacij, kliknite to številko članka iz Microsoftove zbirke znanja:
2546490 "Cust. Ledger Entry No. ' [Število]' že obstaja«, ko poskušate objaviti prodajni nalog, ki uporablja predplačilo z predplačilom v vzhodnoevropski različici programa Microsoft Dynamics NAV 2009 Če želite več informacij, kliknite to številko članka iz Microsoftove zbirke znanja:
2546498 Knjiženo predplačilo ostane odprto, ko objavite končni račun za nakup v vzhodnoevropski različici programa Microsoft Dynamics NAV 2009
Rešitev
Informacije o sprotnih popravkih
Microsoft zdaj ponuja podprt sprotni popravek. Vendar pa je njegov namen le odpraviti težavo, ki je opisana v tem članku. Uporabite ga samo v sistemih, v katerih se je spopadalo s to določeno težavo. Ta sprotni popravek bo morda dodatno pretestiran. Če ta težava ne vpliva resno, priporočamo, da počakate na naslednji servisni paket za Microsoft Dynamics NAV 2009 ali naslednjo različico Microsoft Dynamics NAV, ki vsebuje ta hitri popravek.
Opomba V posebnih primerih so klici za podporo, v katere so običajno vključeni stroški, lahko brezplačni, če strokovnjak za tehnično podporo za Microsoft Dynamics in sorodne izdelke ugotovi, da neka posodobitev lahko odpravi vašo težavo. Običajni stroški podpore veljajo za dodatna vprašanja o podpori in težavah, ki niso povezana z določeno posodobitvijo.
Informacije o namestitvi
Microsoft ponuja primere programiranja samo za ponazoritev, brez izrecnega ali naznačenega jamstva. To vključuje, vendar ni omejeno na, naznačena jamstva glede primernosti za prodajo ali določen namen. V tem članku predvidevamo, da poznate programski jezik, ki je predstavljen, in orodja, ki se uporabljajo za ustvarjanje postopkov in njihovo odpravljanje napak. Microsoftovi inženirji za podporo vam lahko pomagajo razložiti delovanje določenega postopka, vendar teh primerov ne bodo spremenili, da bi zagotovili dodatno funkcionalnost ali ustvarili postopke, ki izpolnjujejo vaše določene zahteve.
Opomba Preden namestite ta hitri popravek, preverite, ali so vsi uporabniki odjemalca Microsoft Navision odjavljeni iz sistema. To vključuje uporabnike odjemalskih storitev Microsoft Navision Application Services (NAS). Ko uvedete ta sprotni popravek, morate biti edini odjemalski uporabnik, ki je prijavljen.
Če želite uvesti ta sprotni popravek, morate imeti licenco za razvijalce.
Priporočamo, da uporabniškemu računu v oknu »Prijave v Windows« ali »Prijave v zbirko podatkov« dodelite ID vloge »SUPER«. Če uporabniškemu računu ni mogoče dodeliti ID-ja vloge »SUPER«, morate preveriti, ali ima uporabniški račun ta dovoljenja:
- Dovoljenje »Spremeni« za predmet, ki ga boste spreminjali.
- Dovoljenje za izvajanje za predmet »Sistemski predmet z ID-jem 5210« in za predmet »Sistemski predmet z ID-jem 9015«.
Opomba: Če morate popraviti podatke, vam ni treba imeti pravic do podatkovnih shramb.
Spremembe kode
Opomba: Popravke kode vedno preskusite v nadzorovanem okolju, preden jih uporabite v produkcijskih računalnikih.
To težavo odpravite tako:
Spremenite kodo v funkciji »UpdateVATOnLines« v Sales-Post Predplačila codeunit (442) tako:
Obstoječa koda... ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision"); "Prepmt. VAT Base Amt." := NewVATBaseAmount; // Delete the following lines. IF SalesHeader."Prices Including VAT" THEN "Prepmt. Line Amount" := "Prepmt. Amt. Incl. VAT" ELSE "Prepmt. Line Amount" := ROUND( "Prepmt. Amt. Incl. VAT" / (1 + "VAT %" / 100), Currency."Amount Rounding Precision"); // End of the deleted lines. IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN VATDifference := 0 ELSE ...Nadomestna koda
... ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision"); "Prepmt. VAT Base Amt." := NewVATBaseAmount; IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN VATDifference := 0 ELSE ...Spremenite kodo v funkciji »UpdateVATOnLines« v Purchase-Post Koda predplačil (444) na ta način:
Obstoječa koda... ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision"); "Prepmt. VAT Base Amt." := NewVATBaseAmount; // Delete the following lines. IF PurchHeader."Prices Including VAT" THEN "Prepmt. Line Amount" := "Prepmt. Amt. Incl. VAT" ELSE "Prepmt. Line Amount" := ROUND( "Prepmt. Amt. Incl. VAT" / (1 + "VAT %" / 100), Currency."Amount Rounding Precision"); // End of the deleted lines. IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN VATDifference := 0 ELSE ...Nadomestna koda
... ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision"); "Prepmt. VAT Base Amt." := NewVATBaseAmount; IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN VATDifference := 0 ELSE ...Spremenite kodo v funkciji PostInvoiceCorrection v enoti kode Sales-Post Advances (26585) tako:
Izbrišite to globalno spremenljivko:- Ime: SumAmountToApply
- DataType: Decimalno
Dodajte to globalno spremenljivko:
- Ime: TempLineRelation
- DataType:TEMPORARY Record (26592)
:
Obstoječa koda... GLSetup.GET; SalesSetup.GET; LinkedAdvanceEntry.DELETEALL; SalesLine.RESET; SalesLine.SETRANGE("Document Type",SalesHeader."Document Type"); ...Nadomestna koda
... GLSetup.GET; SalesSetup.GET; LinkedAdvanceEntry.DELETEALL; // Add the following line. TempLineRelation.DELETEALL; SalesLine.RESET; SalesLine.SETRANGE("Document Type",SalesHeader."Document Type"); ...Kodo v funkciji PostInvLineCorrection v enoti kode Sales-Post Advances (26585) spremenite tako:
Obstoječa koda... LineRelation."Deducted Amount" := LineRelation."Deducted Amount" + AmountToDeduct; LineRelation.MODIFY; // Delete the following line. CalcLinkedPmtAmountToApply(LetterLine,AmountToDeduct,LinkedAdvanceEntry); IF LetterLine."VAT Amount" <> 0 THEN // NO VAT handling PostVATCorrection( LetterLine,SalesInvHeader,AmountToDeduct,DocNoForVATCorr,VATAmount,GenJnlPostLine,TempJnlLineDim); ...Nadomestna koda
... LineRelation."Deducted Amount" := LineRelation."Deducted Amount" + AmountToDeduct; LineRelation.MODIFY; // Add the following lines. CalcLinkedPmtAmountToApply( LetterLine, AmountToDeduct, LinkedAdvanceEntry, RetrieveSumAmountToApply(LineRelation,AmountToDeduct)); //End of the added lines. IF LetterLine."VAT Amount" <> 0 THEN // NO VAT handling PostVATCorrection( LetterLine,SalesInvHeader,AmountToDeduct,DocNoForVATCorr,VATAmount,GenJnlPostLine,TempJnlLineDim); ...Spremenite kodo v funkciji CalcLinkedPmtAmountToApply v enoti kode Sales-Post Advances (26585) tako:
Dodajte ta parameter:- Ime: SumAmountToApply
- DataType: Decimalno
Obstoječa koda
... // Delete the following line . SumAmountToApply := SumAmountToApply + TotalAmountToApply; IF TotalAmountToApply = 0 THEN EXIT; SetCurrencyPrecision(LetterLine."Currency Code"); ...Nadomestna koda
... IF TotalAmountToApply = 0 THEN EXIT; SetCurrencyPrecision(LetterLine."Currency Code"); ...Spremenite kodo v funkciji »UpdateOrderLine« v enoti kode Sales-Post Advances (26585) na ta način:
Obstoječa koda 1... LineRelation.SETRANGE(Type,LineRelation.Type::Sale); LineRelation.SETRANGE("Order No.",SalesLine."Document No."); LineRelation.SETRANGE("Order Line No.",SalesLine."Line No."); // Delete the following line LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount"); SalesLine."Prepmt. Amount Inv. Incl. VAT" := LineRelation."Invoiced Amount"; IF PricesInclVAT THEN BEGIN ...Nadomestna koda 1
... LineRelation.SETRANGE(Type,LineRelation.Type::Sale); LineRelation.SETRANGE("Order No.",SalesLine."Document No."); LineRelation.SETRANGE("Order Line No.",SalesLine."Line No."); // Add the following line LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount",Amount,"Requested Amount"); SalesLine."Prepmt. Amount Inv. Incl. VAT" := LineRelation."Invoiced Amount"; IF PricesInclVAT THEN BEGIN ...Obstoječa koda 2
... SalesLine."Prepayment VAT %" / (100 + SalesLine."Prepayment VAT %"), Currency."Amount Rounding Precision"); END ELSE BEGIN // Delete the following lines. SalesLine."Prepmt. Amt. Inv." := ROUND(LineRelation."Invoiced Amount" / (1 + SalesLine."Prepayment VAT %" / 100), Currency."Amount Rounding Precision"); // End of the deleted lines. SalesLine."Prepmt. VAT Amount Inv." := SalesLine."Prepmt. Amount Inv. Incl. VAT" - SalesLine."Prepmt. Amt. Inv."; END; ...Nadomestna koda 2
... SalesLine."Prepayment VAT %" / (100 + SalesLine."Prepayment VAT %"), Currency."Amount Rounding Precision"); END ELSE BEGIN // Add the following lines. IF LineRelation."Invoiced Amount" = LineRelation.Amount THEN SalesLine."Prepmt. Amt. Inv." := LineRelation."Requested Amount" ELSE SalesLine."Prepmt. Amt. Inv." := ROUND(LineRelation."Invoiced Amount" / (1 + SalesLine."Prepayment VAT %" / 100), Currency."Amount Rounding Precision"); //End of the added lines. SalesLine."Prepmt. VAT Amount Inv." := SalesLine."Prepmt. Amount Inv. Incl. VAT" - SalesLine."Prepmt. Amt. Inv."; END; ...Spremenite kodo v funkciji »UpdateLineRelations« v enoti kode programa Sales-Post Advances (26585) tako:
Obstoječa koda... LineRelation.SETRANGE("Letter No.",LetterLine."Letter No."); LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No."); LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount"); ...Nadomestna koda
... // Add the following line LineRelation.SETRANGE(Type,LineRelation.Type::Sale); LineRelation.SETRANGE("Letter No.",LetterLine."Letter No."); LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No."); LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount"); ...Ustvarite proceduro »RetrieveSumAmountToApply« v kodni enoti Sales-Post Advances (26585) tako:
LOCAL PROCEDURE RetrieveSumAmountToApply@1470050(LineRelation@1470000 : Record 26592;AmountToDeduct@1470001 : Decimal) : Decimal; BEGIN WITH TempLineRelation DO BEGIN RESET; SETRANGE("Order No.",LineRelation."Order No."); SETRANGE("Letter No.",LineRelation."Letter No."); IF NOT FINDFIRST THEN BEGIN INIT; "Order No." := LineRelation."Order No."; "Letter No." := LineRelation."Letter No."; Amount := AmountToDeduct; INSERT; END ELSE BEGIN Amount := Amount + AmountToDeduct; MODIFY; END; EXIT(Amount); END; END;Spremenite kodo v funkciji PostInvoiceCorrection v enoti kode Purchase-Post Advances (26586) tako:
Izbrišite to globalno spremenljivko:- Ime: SumAmountToApply
- DataType: Decimalno
Dodajte to globalno spremenljivko:
- Ime: TempLineRelation
- DataType: ZAČASNI zapis (26592)
Obstoječa koda
... GLSetup.GET; PurchSetup.GET; LinkedAdvanceEntry.DELETEALL; PurchLine.RESET; PurchLine.SETRANGE("Document Type",PurchHeader."Document Type"); ...Nadomestna koda
... GLSetup.GET; PurchSetup.GET; LinkedAdvanceEntry.DELETEALL; // Add the following line TempLineRelation.DELETEALL; PurchLine.RESET; PurchLine.SETRANGE("Document Type",PurchHeader."Document Type"); ...Spremenite kodo v funkciji PostInvLineCorrection v enoti kode Purchase-Post Advances (26586) tako:
Obstoječa koda... LineRelation."Deducted Amount" := LineRelation."Deducted Amount" + AmountToDeduct; LineRelation.MODIFY; // Delete the following line. CalcLinkedPmtAmountToApply(LetterLine,AmountToDeduct,LinkedAdvanceEntry); IF LetterLine."VAT Amount" <> 0 THEN // NO VAT handling PostVATCorrection( LetterLine,PurchInvHeader,AmountToDeduct,DocNoForVATCorr,VATAmount,GenJnlPostLine,TempJnlLineDim); ...Nadomestna koda
... LineRelation."Deducted Amount" := LineRelation."Deducted Amount" + AmountToDeduct; LineRelation.MODIFY; // Add the following lines. CalcLinkedPmtAmountToApply( LetterLine, AmountToDeduct, LinkedAdvanceEntry, RetrieveSumAmountToApply(LineRelation,AmountToDeduct)); //End of the added lines. IF LetterLine."VAT Amount" <> 0 THEN // NO VAT handling PostVATCorrection( LetterLine,PurchInvHeader,AmountToDeduct,DocNoForVATCorr,VATAmount,GenJnlPostLine,TempJnlLineDim); ...Spremenite kodo v funkciji CalcLinkedPmtAmountToApply v enoti kode Purchase-Post Advances (26586) na ta način:
Funkciji dodajte ta parameter:- Ime: SumAmountToApply
- DataType: Decimalno
Obstoječa koda
... IF TotalAmountToApply = 0 THEN EXIT; // Delete the following lines. SumAmountToApply := SumAmountToApply + TotalAmountToApply; // End of the deleted lines. SetCurrencyPrecision(LetterLine."Currency Code"); Link.SETRANGE("Entry Type",Link."Entry Type"::"Link To Letter"); ...Nadomestna koda
... IF TotalAmountToApply = 0 THEN EXIT; SetCurrencyPrecision(LetterLine."Currency Code"); Link.SETRANGE("Entry Type",Link."Entry Type"::"Link To Letter"); ...Spremenite kodo v funkciji »UpdateOrderLine« v enoti kode Purchase-Post Advances (26586) tako:
Obstoječa koda 1... LineRelation.SETRANGE(Type,LineRelation.Type::Purchase); LineRelation.SETRANGE("Order No.",PurchLine."Document No."); LineRelation.SETRANGE("Order Line No.",PurchLine."Line No."); // Delete the following line. LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount"); PurchLine."Prepmt. Amount Inv. Incl. VAT" := LineRelation."Invoiced Amount"; IF PricesInclVAT THEN BEGIN ...Nadomestna koda 1
... LineRelation.SETRANGE(Type,LineRelation.Type::Purchase); LineRelation.SETRANGE("Order No.",PurchLine."Document No."); LineRelation.SETRANGE("Order Line No.",PurchLine."Line No."); // Add the following line. LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount",Amount,"Requested Amount"); PurchLine."Prepmt. Amount Inv. Incl. VAT" := LineRelation."Invoiced Amount"; IF PricesInclVAT THEN BEGIN ...Obstoječa koda 2
... PurchLine."Prepayment VAT %" / (100 + PurchLine."Prepayment VAT %"), Currency."Amount Rounding Precision"); END ELSE BEGIN // Delete the following lines. PurchLine."Prepmt. Amt. Inv." := ROUND(LineRelation."Invoiced Amount" / (1 + PurchLine."Prepayment VAT %" / 100), Currency."Amount Rounding Precision"); // End of the deleted lines. PurchLine."Prepmt. VAT Amount Inv." := PurchLine."Prepmt. Amount Inv. Incl. VAT" - PurchLine."Prepmt. Amt. Inv."; END; ...Nadomestna koda 2
... PurchLine."Prepayment VAT %" / (100 + PurchLine."Prepayment VAT %"), Currency."Amount Rounding Precision"); END ELSE BEGIN // Add the following lines. IF LineRelation."Invoiced Amount" = LineRelation.Amount THEN PurchLine."Prepmt. Amt. Inv." := LineRelation."Requested Amount" ELSE PurchLine."Prepmt. Amt. Inv." := ROUND(LineRelation."Invoiced Amount" / (1 + PurchLine."Prepayment VAT %" / 100), Currency."Amount Rounding Precision"); // End of the added lines. PurchLine."Prepmt. VAT Amount Inv." := PurchLine."Prepmt. Amount Inv. Incl. VAT" - PurchLine."Prepmt. Amt. Inv."; END; ...Spremenite kodo v funkciji »UpdateLineRelations« v enoti kode programa Purchase-Post Advances (26586) tako:
Obstoječa koda... LineRelation.SETRANGE("Letter No.",LetterLine."Letter No."); LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No."); LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount"); ...Nadomestna koda
... // Add the following line. LineRelation.SETRANGE(Type,LineRelation.Type::Purchase); // End of the added line. LineRelation.SETRANGE("Letter No.",LetterLine."Letter No."); LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No."); LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount"); ...Postopek »RetrieveSumAmountToApply« v enoti kode Purchase-Post Advances (26586) ustvarite tako:
LOCAL PROCEDURE RetrieveSumAmountToApply@1470048(LineRelation@1470000 : Record 26592;AmountToDeduct@1470001 : Decimal) : Decimal; BEGIN WITH TempLineRelation DO BEGIN RESET; SETRANGE("Order No.",LineRelation."Order No."); SETRANGE("Letter No.",LineRelation."Letter No."); IF NOT FINDFIRST THEN BEGIN INIT; "Order No." := LineRelation."Order No."; "Letter No." := LineRelation."Letter No."; Amount := AmountToDeduct; INSERT; END ELSE BEGIN Amount := Amount + AmountToDeduct; MODIFY; END; EXIT(Amount); END; END;
Pogoji
Če želite uporabiti ta sprotni popravek, morate imeti nameščenega enega od teh izdelkov:
- Vzhodnoevropska različica servisnega paketa SP1 za Microsoft Dynamics NAV 2009
- Vzhodnoevropska različica orodja Microsoft Dynamics NAV 2009 R2
Opomba Če želite uporabiti ta sprotni popravek, morate namestiti sprotne popravke v naslednji zbirki znanja: KB2543219, KB2546451, KB2546490 in KB2546498.
Informacije o odstranitvi
Tega sprotnega popravka ne morete odstraniti.
Stanje
Microsoft je potrdil, da gre za težavo v Microsoftovih izdelkih, ki so navedeni v razdelku »Velja za«.
Sklici
VSTF DynamicsNAV SE: 261669
Opomba: To je članek »FAST PUBLISH«, ki je bil ustvarjen neposredno v organizaciji za Microsoftovo podporo. Informacije v tem dokumentu so na voljo takšne, kot odgovor na nastajajoče težave. Zaradi hitrosti njihove razpoložljivosti lahko gradivo vsebuje tipkarske napake in jih je mogoče kadarkoli pregledati brez obvestila. Za druga priporočila si oglejte Pogoje uporabe .