V poročilu Fill Liquidity Journal (5055250) so prikazane nepravilne vrednosti, če je naročilo z omogočenim predplačilom vključeno v nemško različico programa Microsoft Dynamics NAV 2009

Velja za
Dynamics NAV 2009

Ta članek velja za Microsoft Dynamics NAV za nemške (de)območne nastavitve.

Znaki

Recimo, da dokumente o prodaji in nakupu uporabljate v nemški različici programa Microsoft Dynamics NAV 2009. Imate naročilo z več vrsticami in omogočeno predplačilo. V tem primeru, ko zaženete poročilo »Zapolni dnevnik likvidnosti« (5055250) z navedenim naročilom, so prikazane nepravilne vrednosti.
Do te težave pride pri teh izdelkih:

  • Nemška različica orodja Microsoft Dynamics NAV 2009 R2
  • Nemška različica servisnega paketa SP1 za 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 na vas ne vpliva resno, priporočamo, da počakate na naslednji servisni paket za Microsoft Dynamics NAV 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:

  1. Dodajte novo lokalno spremenljivko v sprožilec »Prodajna linija – OnAfterGetRecord« v poročilu »Zapolni dnevnik likvidnosti« (5055250), določite spremenljivko, kot sledi:

    • Ime: ValutaLCY
    • DataType: Zapis
    • Podvrsta: Valuta (4)
  2. Dodajte novo lokalno spremenljivko v sprožilec »Prodajna linija – OnAfterGetRecord« v poročilu »Zapolni dnevnik likvidnosti« (5055250), določite spremenljivko, kot sledi:

    • Ime: PrevDocNo
    • DataType: Koda
    • Dolžina: 20
  3. Dodajte novo lokalno spremenljivko v sprožilec »Prodajna linija – OnAfterGetRecord« v poročilu »Zapolni dnevnik likvidnosti« (5055250), določite spremenljivko, kot sledi:

    • Ime: AmountLCY
    • DataType: Decimalno
  4. Dodajte novo lokalno spremenljivko v sprožilec »Prodajna linija – OnAfterGetRecord« v poročilu »Zapolni dnevnik likvidnosti« (5055250), določite spremenljivko, kot sledi:

    • Ime: RemainderAmountLCY
    • DataType: Decimalno
  5. Dodajte novo lokalno spremenljivko v sprožilec »Prodajna linija – OnAfterGetRecord« v poročilu »Zapolni dnevnik likvidnosti« (5055250), določite spremenljivko, kot sledi:

    • Ime: PrepmtAmtInclVAT
    • DataType: Decimalno
  6. Spremenite kodo v sprožilcu »Prodajna vrstica – OnAfterGetRecord« v poročilu »Zapolni dnevnik likvidnosti« (5055250) takole:
    Obstoječa koda 1

    ...
    PurchHeader.GET("Purchase Line"."Document Type","Purchase Line"."Document No.");
    WITH LiqLine2 DO BEGIN
    ...
    

    Nadomestna koda 1

    ...
    PurchHeader.GET("Purchase Line"."Document Type","Purchase Line"."Document No.");
    
    // Add the following lines.
    IF (PurchHeader."Currency Code" <> '') AND (PrevDocNo <> PurchHeader."No.") THEN BEGIN
    RemainderAmountLCY := 0;
    PurchHeader.TESTFIELD("Currency Factor");
    CurrencyLCY.InitRoundingPrecision;
    PrevDocNo := PurchHeader."No.";
    END;
    // End of lines.
    
    WITH LiqLine2 DO BEGIN
    ...
    

    Obstoječa koda 2

    ...
    // Delete the following lines.
    IF "Purchase Line"."Prepmt. Amt. Inv." <> 0 THEN BEGIN
    PurchInvHeader.RESET;
    PurchInvHeader.SETCURRENTKEY("Prepayment Order No.");
    PurchInvHeader.SETRANGE("Prepayment Order No.","Purchase Line"."Document No.");
    IF PurchInvHeader.FIND('-') THEN REPEAT
    VendorLedgerEntry.RESET;
    VendorLedgerEntry.SETCURRENTKEY("Document No.");
    VendorLedgerEntry.SETRANGE("Document No.",PurchInvHeader."No.");
    VendorLedgerEntry.SETRANGE("Posting Date",PurchInvHeader."Posting Date");
    IF VendorLedgerEntry.FIND('-') THEN REPEAT
    VendorLedgerEntry.CALCFIELDS("Remaining Amt. (LCY)","Remaining Amount");
    "Amount (Currency)" := "Amount (Currency)" - VendorLedgerEntry."Remaining Amount";
    Amount := Amount - VendorLedgerEntry."Remaining Amt. (LCY)";
    UNTIL VendorLedgerEntry.NEXT = 0;
    UNTIL PurchInvHeader.NEXT = 0;
    END;
    // End of the lines.
    ...
    

    Nadomestna koda 2

    ...
    // Add the following lines.
    PrepmtAmtInclVAT := ROUND("Purchase Line"."Prepmt. Amt. Inv." * (1 + ("Purchase Line"."Prepayment VAT %" / 100)),
    CurrencyLCY."Amount Rounding Precision");
    IF PrepmtAmtInclVAT <> 0 THEN BEGIN
    "Amount (Currency)" := "Amount (Currency)" - PrepmtAmtInclVAT;
    IF PurchHeader."Currency Code" = '' THEN
    Amount := Amount - PrepmtAmtInclVAT
    ELSE BEGIN
    AmountLCY := RemainderAmountLCY + PrepmtAmtInclVAT / PurchHeader."Currency Factor";
    RemainderAmountLCY := AmountLCY - ROUND(AmountLCY,CurrencyLCY."Amount Rounding Precision");
    Amount := Amount - ROUND(AmountLCY,CurrencyLCY."Amount Rounding Precision");
    END;
    END;
    // End of the lines.
    ...
    
  7. Dodajte novo lokalno spremenljivko v sprožilec »PurchaseLine - OnAfterGetRecord« v poročilu »Zapolni dnevnik likvidnosti« (5055250), določite spremenljivko, kot sledi:

    • Ime: ValutaLCY
    • DataType: Zapis
    • Podvrsta: Valuta (4)
  8. Dodajte novo lokalno spremenljivko v sprožilec »PurchaseLine - OnAfterGetRecord« v poročilu »Zapolni dnevnik likvidnosti« (5055250), določite spremenljivko, kot sledi:

    • Ime: PrevDocNo
    • DataType: Koda
    • Dolžina: 20
  9. Dodajte novo lokalno spremenljivko v sprožilec »PurchaseLine - OnAfterGetRecord« v poročilu »Zapolni dnevnik likvidnosti« (5055250), določite spremenljivko, kot sledi:

    • Ime: AmountLCY
    • DataType: Decimalno
  10. Dodajte novo lokalno spremenljivko v sprožilec »PurchaseLine - OnAfterGetRecord« v poročilu »Zapolni dnevnik likvidnosti« (5055250), določite spremenljivko, kot sledi:

    • Ime: RemainderAmountLCY
    • DataType: Decimalno
  11. Dodajte novo lokalno spremenljivko v sprožilec »PurchaseLine - OnAfterGetRecord« v poročilu »Zapolni dnevnik likvidnosti« (5055250), določite spremenljivko, kot sledi:

    • Ime: PrepmtAmtInclVAT
    • DataType: Decimalno
  12. Spremenite kodo v sprožilcu »PurchaseLine - OnAfterGetRecord« v poročilu »Zapolni dnevnik likvidnosti« (5055250), kot je navedeno spodaj:
    Obstoječa koda 1

    ...
    PurchHeader.GET("Purchase Line"."Document Type","Purchase Line"."Document No.");
    WITH LiqLine2 DO BEGIN
    ...
    

    Nadomestna koda 1

    ...
    PurchHeader.GET("Purchase Line"."Document Type","Purchase Line"."Document No.");
    
    // Add the following lines.
    IF (PurchHeader."Currency Code" <> '') AND (PrevDocNo <> PurchHeader."No.") THEN BEGIN
    RemainderAmountLCY := 0;
    PurchHeader.TESTFIELD("Currency Factor");
    CurrencyLCY.InitRoundingPrecision;
    PrevDocNo := PurchHeader."No.";
    END;
    // End of the lines.
    
    WITH LiqLine2 DO BEGIN
    ...
    

    Obstoječa koda 2

    ...
    // Delete the following lines.
    IF "Purchase Line"."Prepmt. Amt. Inv." <> 0 THEN BEGIN
    PurchInvHeader.RESET;
    PurchInvHeader.SETCURRENTKEY("Prepayment Order No.");
    PurchInvHeader.SETRANGE("Prepayment Order No.","Purchase Line"."Document No.");
    IF PurchInvHeader.FIND('-') THEN REPEAT
    VendorLedgerEntry.RESET;
    VendorLedgerEntry.SETCURRENTKEY("Document No.");
    VendorLedgerEntry.SETRANGE("Document No.",PurchInvHeader."No.");
    VendorLedgerEntry.SETRANGE("Posting Date",PurchInvHeader."Posting Date");
    IF VendorLedgerEntry.FIND('-') THEN REPEAT
    VendorLedgerEntry.CALCFIELDS("Remaining Amt. (LCY)","Remaining Amount");
    "Amount (Currency)" := "Amount (Currency)" - VendorLedgerEntry."Remaining Amount";
    Amount := Amount - VendorLedgerEntry."Remaining Amt. (LCY)";
    UNTIL VendorLedgerEntry.NEXT = 0;
    UNTIL PurchInvHeader.NEXT = 0;
    END;
    // End of the lines.
    ...
    

    Nadomestna koda 2

    ...
    // Add the following lines.
    PrepmtAmtInclVAT := ROUND("Purchase Line"."Prepmt. Amt. Inv." * (1 + ("Purchase Line"."Prepayment VAT %" / 100)),
    CurrencyLCY."Amount Rounding Precision");
    IF PrepmtAmtInclVAT <> 0 THEN BEGIN
    "Amount (Currency)" := "Amount (Currency)" + PrepmtAmtInclVAT;
    IF PurchHeader."Currency Code" = '' THEN
    Amount := Amount + PrepmtAmtInclVAT
    ELSE BEGIN
    AmountLCY := RemainderAmountLCY + PrepmtAmtInclVAT / PurchHeader."Currency Factor";
    RemainderAmountLCY := AmountLCY - ROUND(AmountLCY,CurrencyLCY."Amount Rounding Precision");
    Amount := Amount + ROUND(AmountLCY,CurrencyLCY."Amount Rounding Precision");
    END;
    END;
    // End of the lines.
    ...
    

Pogoji

Če želite uporabiti ta sprotni popravek, morate imeti nameščenega enega od teh izdelkov:

  • Nemška različica orodja Microsoft Dynamics NAV 2009 R2
  • Nemška različica servisnega paketa SP1 za Microsoft Dynamics NAV 2009

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«.

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 .