Poruka o grešci "Tabela predplatne međumemorije je prazna" kada pokušate da promenite vrednost u polju "Prepayment %" na prodajnoj porudžbini u istočnoevropskoj verziji usluge Microsoft Dynamics NAV 2009

Primenjuje se na
Microsoft Dynamics NAV 2009 R2 Dynamics NAV 2009 Service Pack 1

Ovaj članak se odnosi na lokalni standard jezika za Microsoft Dynamics NAV za istočnu Evropu (EE).

Simptomi

Razmotrite sledeći scenario u istočnoevropskoj verziji programa Microsoft Dynamics NAV 2009 servisni paket 1 (SP1) i Microsoft Dynamics NAV 2009 R2:

  • Imate ulazni nalog koji koristi plaćanje unapred.
  • Vi kreirate pismo unapred. Zatim pošaljete i fakturišete pismo unapred.
  • Ponovo otvorite ulazni nalog, a zatim pokušajte da promenite vrednost u polju " % unapred plaćenog " u zaglavlju.

U ovom slučaju dobijate sledeću poruku o grešci:

Napomena

Tabela "Prepayment Inv. Line Buffer" je prazna.

Ovaj problem se javlja kada primenite hitne ispravke u sledećim bazama znanja: KB2543219, KB2546451, KB2546490 i KB2546498.
  Više informacija potražite u sledećem broju članka da biste videli članak u Microsoft bazi znanja:

2543219 Ne možete da obradite preplaćenu avansnu otplatu na očekivani način u istočnoevropskoj verziji usluge Microsoft Dynamics NAV 2009 R2 Više informacija potražite u sledećem broju članka da biste videli članak u Microsoft bazi znanja:

2546451 poruku o grešci "Ne postoji Cust. Ledger Entry within the filter" prilikom pokušaja knjiženja preostale količine ulazne porudžbine u istočnoevropskoj verziji usluge Microsoft Dynamics NAV 2009 Više informacija potražite u sledećem broju članka da biste videli članak u Microsoft bazi znanja:

2546490 "Cust. Ledger Entry No. ' [Broj]' već postoji" prilikom pokušaja knjiženja ulazne porudžbine koja koristi avansno pismo prepayment u istočnoevropskoj verziji sistema Microsoft Dynamics NAV 2009 Više informacija potražite u sledećem broju članka da biste videli članak u Microsoft bazi znanja:

2546498 Objavljena prepaid ostaje otvorena nakon što zakažete konačnu fakturu za kupovinu u istočnoevropskoj verziji usluge Microsoft Dynamics NAV 2009

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.
Pratite ove korake da biste rešili problem:

  1. Promenite kôd u funkciji UpdateVATOnLines u kodnoj jedinici Sales-Post Prepayments (442) na sledeći način:
    Postojeći kôd

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

    Kôd za zamenu

    ...
       ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision");
      "Prepmt. VAT Base Amt." := NewVATBaseAmount;
    
      IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN
        VATDifference := 0
      ELSE
    ...
    
  2. Promenite kôd u funkciji UpdateVATOnLines u kodnoj jedinici Purchase-Post Prepayments (444) na sledeći način:
    Postojeći kôd

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

    Kôd za zamenu

    ...
       ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision");
      "Prepmt. VAT Base Amt." := NewVATBaseAmount;
    
      IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN
        VATDifference := 0
      ELSE
    ...
    
  3. Promenite kôd u funkciji PostInvoiceCorrection u kodnoj jedinici Sales-Post Advances (26585) na sledeći način:
    Izbrišite sledeću globalnu promenljivu:

    • Ime: SumAmountToApply
    • Tip podataka: Decimalni broj

    Dodajte sledeću globalnu promenljivu:

    • Ime: TempLineRelation
    • Tip podataka:PRIVREMENI zapis (26592)

    :
    Postojeći kôd

    ...
     GLSetup.GET;
      SalesSetup.GET;
      LinkedAdvanceEntry.DELETEALL;
    
      SalesLine.RESET;
      SalesLine.SETRANGE("Document Type",SalesHeader."Document Type"); 
    ...
    

    Kôd za zamenu

    ...
      GLSetup.GET;
      SalesSetup.GET;
      LinkedAdvanceEntry.DELETEALL;
    
    // Add the following line.        
      TempLineRelation.DELETEALL;
    
      SalesLine.RESET;
      SalesLine.SETRANGE("Document Type",SalesHeader."Document Type");
    ...
    
  4. Promenite kôd u funkciji PostInvLineCorrection u Sales-Post Advances codeunit (26585) na sledeći način:
    Postojeći kôd

    ...
     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); 
    ...
    

    Kôd za zamenu

    ...
     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);
    ...
    
  5. Promenite kôd u funkciji CalcLinkedPmtAmountToApply u Sales-Post Advances kodnoj jedinici (26585) na sledeći način:
    Dodajte sledeći parametar:

    • Ime: SumAmountToApply
    • Tip podataka: Decimalni broj

    Postojeći kôd

    ...
     // Delete the following line .      
      SumAmountToApply := SumAmountToApply + TotalAmountToApply;
    
      IF TotalAmountToApply = 0 THEN
        EXIT;
      SetCurrencyPrecision(LetterLine."Currency Code");
    ...
    

    Kôd za zamenu

    ...
     IF TotalAmountToApply = 0 THEN
        EXIT;
      SetCurrencyPrecision(LetterLine."Currency Code");
    ...
    
  6. Promenite kôd u funkciji UpdateOrderLine u Sales-Post Advances kodnoj jedinici (26585) na sledeći način:
    Postojeći kôd 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
    ...
    

    Kôd za zamenu 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
    ...
    

    Postojeći kôd 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;
    ...
    

    Kôd zamene 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;
    ...
    
  7. Promenite kôd u funkciji UpdateLineRelationships u Sales-Post Advances codeunit (26585) na sledeći način:
    Postojeći kôd

    ...
       LineRelation.SETRANGE("Letter No.",LetterLine."Letter No.");
      LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No.");
      LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");
    ...
    

    Kôd za zamenu

    ...
    // 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");
    ...
    
  8. Kreirajte proceduru RetrieveSumAmountToApply u kodnoj jedinici Sales-Post Advances (26585) na sledeći način:

    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;
    
    
  9. Promenite kôd u funkciji PostInvoiceCorrection u kodnoj jedinici Purchase-Post Advances (26586) na sledeći način:
    Izbrišite sledeću globalnu promenljivu:

    • Ime: SumAmountToApply
    • Tip podataka: Decimalni broj

    Dodajte sledeću globalnu promenljivu:

    • Ime: TempLineRelation
    • Tip podataka: PRIVREMENI zapis (26592)

    Postojeći kôd

    ...
     GLSetup.GET;
      PurchSetup.GET;
      LinkedAdvanceEntry.DELETEALL;
    
      PurchLine.RESET;
      PurchLine.SETRANGE("Document Type",PurchHeader."Document Type");
    ...
    

    Kôd za zamenu

    ...
      GLSetup.GET;
      PurchSetup.GET;
      LinkedAdvanceEntry.DELETEALL;
    // Add the following line        
      TempLineRelation.DELETEALL;
    
      PurchLine.RESET;
      PurchLine.SETRANGE("Document Type",PurchHeader."Document Type");
    ...
    
  10. Promenite kôd u funkciji PostInvLineCorrection u Purchase-Post Advances kodnoj jedinici (26586) na sledeći način:
    Postojeći kôd

    ...
       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);
    ...
    

    Kôd za zamenu

    ...
     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);
    ...
    
  11. Promenite kôd u funkciji CalcLinkedPmtAmountToApply u Purchase-Post Advances kodnoj jedinici (26586) na sledeći način:
    Dodajte sledećeg parametra funkciji:

    • Ime: SumAmountToApply
    • Tip podataka: Decimalni broj

    Postojeći kôd

    ...
       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");
    ...
    

    Kôd za zamenu

    ...
     IF TotalAmountToApply = 0 THEN
        EXIT;
    
      SetCurrencyPrecision(LetterLine."Currency Code");
      Link.SETRANGE("Entry Type",Link."Entry Type"::"Link To Letter");
    ...
    
  12. Promenite kôd u funkciji UpdateOrderLine u Purchase-Post Advances kodnoj jedinici (26586) na sledeći način:
    Postojeći kôd 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
    ...
    

    Kôd za zamenu 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
    ...
    

    Postojeći kôd 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;
    ...
    

    Kôd zamene 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;
    ...
    
  13. Promenite kôd u funkciji UpdateLineRelationships u Purchase-Post Advances kodnoj jedinici (26586) na sledeći način:
    Postojeći kôd

    ...
      LineRelation.SETRANGE("Letter No.",LetterLine."Letter No.");
      LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No.");
      LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");
    ...
    

    Kôd za zamenu

    ...
    // 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");
    ...
    
  14. Kreirajte proceduru RetrieveSumAmountToApply u kodnoj jedinici Purchase-Post Advances (26586) na sledeći način:

     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;
    

          

Preduslovi

Morate da imate instaliran jedan od sledećih proizvoda da biste primenili ovu hitnu ispravku:

  • Istočnoevropska verzija usluge Microsoft Dynamics NAV 2009 sa servisnim paketom 1
  • Istočnoevropska verzija sistema Microsoft Dynamics NAV 2009 R2

Napomena: Da biste primenili ovu hitnu ispravku, morate da primenite hitne ispravke iz sledeće baze znanja: KB2543219, KB2546451, KB2546490 i KB2546498.

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

Reference

VSTF DynamicsNAV SE: 261669

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.