Felmeddelandet "Inv. Radbufferttabellen för förskottsbetalning är tom" visas när du försöker ändra värdet i fältet "Förskott %" på en försäljningsorder i den östeuropeiska versionen av Microsoft Dynamics NAV 2009

Gäller för
Microsoft Dynamics NAV 2009 R2 Dynamics NAV 2009 Service Pack 1

Den här artikeln gäller språkspråket Microsoft Dynamics NAV för Östeuropa (EE).

Symptom

Tänk dig följande scenario i den östeuropeiska versionen av Microsoft Dynamics NAV 2009 Service Pack 1 (SP1) och Microsoft Dynamics NAV 2009 R2:

  • Du har en försäljningsorder som använder en förskottsbetalning.
  • Du skapar en förhandsbokstav. Sedan kan du bokföra och fakturera förskottsbrevet.
  • Du öppnar försäljningsordern igen och försöker sedan ändra värdet i fältet Förskott % i sidhuvudet.

I det här scenariot får du följande felmeddelande:

Obs

Tabellen Inv för förskottsbetalning. Tabellen Radbuffert är tom.

Det här problemet uppstår när du har tillämpat snabbkorrigeringarna på följande KB: KB2543219, KB2546451, KB2546490 och KB2546498.
  Om du vill ha mer information klickar du på följande artikelnummer för att visa artikeln i Microsoft Knowledge Base:

2543219 Du kan inte behandla förbetalda förskottsbetalningar som förväntat i den östeuropeiska versionen av Microsoft Dynamics NAV 2009 R2 Om du vill ha mer information klickar du på följande artikelnummer för att visa artikeln i Microsoft Knowledge Base:

2546451 felmeddelandet "Det finns ingen kundpost i filtret" när du försöker bokföra den återstående kvantiteten av en försäljningsorder i den östeuropeiska versionen av Microsoft Dynamics NAV 2009 Om du vill ha mer information klickar du på följande artikelnummer för att visa artikeln i Microsoft Knowledge Base:

2546490 "Cust. Ledger Entry No. ' [Number]' already exists" felmeddelande när du försöker bokföra en försäljningsorder som använder en förskottsbetalning för brev i den östeuropeiska versionen av Microsoft Dynamics NAV 2009 Om du vill ha mer information klickar du på följande artikelnummer för att visa artikeln i Microsoft Knowledge Base:

2546498 Den bokförda förskottsbetalningen är öppen när du har bokfört fakturan för det slutliga köpet i den östeuropeiska versionen av Microsoft Dynamics NAV 2009

Lösning

Snabbkorrigeringsinformation

En snabbkorrigering som stöds är nu tillgänglig från Microsoft. Det är dock bara avsett att åtgärda problemet som beskrivs i den här artikeln. Använd den bara på system som har det här specifika problemet. Den här snabbkorrigeringen kan få ytterligare tester. Om du inte drabbas hårt av det här problemet rekommenderar vi därför att du väntar på nästa Microsoft Dynamics NAV 2009 Service Pack eller nästa Microsoft Dynamics NAV-version som innehåller den här snabbkorrigeringen.

Obs! I särskilda fall kan avgifter som vanligtvis uppkommer för supportsamtal avbrytas om en teknisk supporttekniker för Microsoft Dynamics och relaterade produkter fastställer att en specifik uppdatering löser problemet. De vanliga supportkostnaderna gäller för ytterligare supportfrågor och problem som inte är berättigade till den aktuella uppdateringen.

            
          

Installationsinformation

Microsoft tillhandahåller endast programmeringsexempel i visningssyfte, utan att någon form av garanti uttrycks eller är underförstådd. Detta omfattar men är inte begränsat till underförstådda garantier för säljbarhet eller lämplighet för ett visst ändamål. Den här artikeln förutsätter att du är bekant med programmeringsspråket som demonstreras och med de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till att förklara funktionaliteten i en viss procedur, men de ändrar inte de här exemplen för att tillhandahålla ytterligare funktioner eller konstruera procedurer för att uppfylla dina specifika krav.

Obs! Innan du installerar den här snabbkorrigeringen kontrollerar du att alla Microsoft Navision-klientanvändare loggas ut från systemet. Detta omfattar användare av Microsoft Navision Application Services (NAS). Du bör vara den enda klientanvändare som är inloggad när du implementerar snabbkorrigeringen.

Om du vill implementera den här snabbkorrigeringen måste du ha en utvecklarlicens.

Vi rekommenderar att användarkontot i fönstret Windows-inloggningar eller i fönstret Databasinloggningar tilldelas roll-ID:t "SUPER". Om användarkontot inte kan tilldelas superroll-ID måste du kontrollera att användarkontot har följande behörigheter:

  • Behörigheten Ändra för det objekt som du kommer att ändra.
  • Körbehörigheten för systemobjekt-ID 5210-objektet och för 9015-objektet Systemobjekt-ID.

                
Obs! Du behöver inte ha rättigheter till datakällorna om du inte behöver utföra datareparation.

Kodändringar

Obs! Testa alltid korrigeringar av kod i en kontrollerad miljö innan du tillämpar korrigeringarna på produktionsdatorerna.
Lös problemet genom att följa de här stegen:

  1. Ändra koden i funktionen UpdateVATOnLines i koduniten Sales-Post prepayments (442) enligt följande:
    Befintlig kod

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

    Ersättningskod

    ...
       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. Ändra koden i funktionen UpdateVATOnLines i koduniten Purchase-Post prepayments (444) enligt följande:
    Befintlig kod

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

    Ersättningskod

    ...
       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. Ändra koden i funktionen PostInvoiceCorrection i koduniten för Sales-Post Förflyttningar (26585) enligt följande:
    Ta bort följande globala variabel:

    • Namn: SumAmountToApply
    • DataType: Decimal

    Lägg till följande globala variabel:

    • Namn: TempLineRelation
    • DataType:TEMPORARY Record (26592)

    :
    Befintlig kod

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

    Ersättningskod

    ...
      GLSetup.GET;
      SalesSetup.GET;
      LinkedAdvanceEntry.DELETEALL;
    
    // Add the following line.        
      TempLineRelation.DELETEALL;
    
      SalesLine.RESET;
      SalesLine.SETRANGE("Document Type",SalesHeader."Document Type");
    ...
    
  4. Ändra koden i funktionen PostInvLineCorrection i koduniten för Sales-Post Förflyttningar (26585) enligt följande:
    Befintlig kod

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

    Ersättningskod

    ...
     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. Ändra koden i funktionen CalcLinkedPmtAmountToApply i koduniten Sales-Post Advances (26585) enligt följande:
    Lägg till följande parameter:

    • Namn: SumAmountToApply
    • DataType: Decimal

    Befintlig kod

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

    Ersättningskod

    ...
     IF TotalAmountToApply = 0 THEN
        EXIT;
      SetCurrencyPrecision(LetterLine."Currency Code");
    ...
    
  6. Ändra koden i funktionen UpdateOrderLine i koduniten Sales-Post Advances (26585) enligt följande:
    Befintlig kod 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
    ...
    

    Ersättningskod 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
    ...
    

    Befintlig kod 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;
    ...
    

    Ersättningskod 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. Ändra koden i funktionen UpdateLineRelations i koduniten för Sales-Post Advances (26585) enligt följande:
    Befintlig kod

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

    Ersättningskod

    ...
    // 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. Skapa proceduren RetrieveSumAmountToApply i codeuniten Sales-Post Advances (26585) enligt följande:

    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. Ändra koden i funktionen PostInvoiceCorrection i koduniten för Purchase-Post Framsteg (26586) enligt följande:
    Ta bort följande globala variabel:

    • Namn: SumAmountToApply
    • DataType: Decimal

    Lägg till följande globala variabel:

    • Namn: TempLineRelation
    • DataType: TILLFÄLLIG post (26592)

    Befintlig kod

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

    Ersättningskod

    ...
      GLSetup.GET;
      PurchSetup.GET;
      LinkedAdvanceEntry.DELETEALL;
    // Add the following line        
      TempLineRelation.DELETEALL;
    
      PurchLine.RESET;
      PurchLine.SETRANGE("Document Type",PurchHeader."Document Type");
    ...
    
  10. Ändra koden i funktionen PostInvLineCorrection i koduniten för Purchase-Post Förflyttningar (26586) enligt följande:
    Befintlig kod

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

    Ersättningskod

    ...
     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. Ändra koden i funktionen CalcLinkedPmtAmountToApply i koduniten Purchase-Post Advances (26586) enligt följande:
    Lägg till följande parameter i funktionen:

    • Namn: SumAmountToApply
    • DataType: Decimal

    Befintlig kod

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

    Ersättningskod

    ...
     IF TotalAmountToApply = 0 THEN
        EXIT;
    
      SetCurrencyPrecision(LetterLine."Currency Code");
      Link.SETRANGE("Entry Type",Link."Entry Type"::"Link To Letter");
    ...
    
  12. Ändra koden i funktionen UpdateOrderLine i koduniten Purchase-Post Advances (26586) enligt följande:
    Befintlig kod 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
    ...
    

    Ersättningskod 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
    ...
    

    Befintlig kod 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;
    ...
    

    Ersättningskod 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. Ändra koden i funktionen UpdateLineRelations i koduniten för Purchase-Post Advances (26586) enligt följande:
    Befintlig kod

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

    Ersättningskod

    ...
    // 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. Skapa proceduren RetrieveSumAmountToApply i codeuniten Purchase-Post Advances (26586) enligt följande:

     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;
    

          

Krav

Du måste ha någon av följande produkter installerade för att kunna använda den här snabbkorrigeringen:

  • Den östeuropeiska versionen av Microsoft Dynamics NAV 2009 Service Pack 1
  • Den östeuropeiska versionen av Microsoft Dynamics NAV 2009 R2

Obs! Om du vill använda den här snabbkorrigeringen måste du använda snabbkorrigeringarna i följande KB: KB2543219, KB2546451, KB2546490 och KB2546498.

Information om borttagning

Du kan inte ta bort den här snabbkorrigeringen.

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".

Referenser

VSTF DynamicsNAV SE: 261669

Obs! Det här är en "FAST PUBLISH"-artikel som skapats direkt från Microsofts supportorganisation. Den information som finns häri tillhandahålls i befintligt format som svar på framväxande problem. Till följd av hur snabbt materialet blir tillgängligt kan materialet innehålla typografiska fel och kan komma att revideras när som helst utan föregående meddelande. Se användningsvillkor för andra överväganden.