Fältet "Förskottsbetalning belopp exklusive moms" beräknas felaktigt när du har ändrat värdet "Förskottsbetalning %" i en order, även om du har installerat snabbkorrigering 2558516 i Microsoft Dynamics NAV 2009


Den här artikeln gäller för Microsoft Dynamics NAV för alla länder och språkversioner.

Symptom


Tänk dig följande situation i Microsoft Dynamics NAV 2009:
  • Du har installerat snabbkorrigering 2558516.
    För mer information klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
    2558516 "Förskottsbetalning belopp exklusive moms" fältet beräknas felaktigt när du ändrar värdet för "Förskottsbetalning %" i en order i Microsoft Dynamics NAV 2009
  • Du bokför en förskottsfaktura för en order som har fältet förskottsbetalning % anges.
  • Du kan delvis leverera och fakturera en del enheter för ordern.
  • Du öppnar ordern.
  • Du ändrar värdet förskottsbetalning % i ordning.
I det här fallet beräknas felaktigt fältet Förskottsbetalning belopp EXKL .
Det här problemet uppstår i följande produkter:
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 servicepack 1 (SP1)

Lösning


Information om snabbkorrigeringen

En snabbkorrigering är nu tillgänglig från Microsoft. Den är endast avsedd att åtgärda det problem som beskrivs i denna artikel. Använd den bara på datorer där detta problem uppstår. Snabbkorrigeringen kan komma att testas igen. Om inte störs alltför mycket av detta problem rekommenderar vi att du väntar på Nästa service pack-versionen för Microsoft Dynamics NAV eller nästa Microsoft Dynamics NAV-version som innehåller den här snabbkorrigeringen.

Obs! I särskilda fall, de avgifter som är normalt för support vara avgiftsfri om en supporttekniker för Microsoft Dynamics och relaterade produkter som bestämmer att en särskild uppdatering kan lösa ditt problem. De vanliga supportkostnaderna gäller för övriga supportfrågor och problem som inte berör den särskilda uppdateringen.


Installationsinformation

Microsoft tillhandahåller programmeringsexempel endast utan garanti varken uttryckliga eller underförstådda. Detta inkluderar men är inte begränsat till, underförstådda garantier om säljbarhet eller lämplighet för ett särskilt ändamål. Den här artikeln förutsätter att du är bekant med det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till med att förklara funktionen hos en viss procedur, men kan inte ändra dessa exempel för att ge ytterligare funktioner eller skapa procedurer som motsvarar dina speciella behov.

Obs! Innan du installerar den här snabbkorrigeringen måste du kontrollera att alla användare av Microsoft Navision-klient har loggat ut. Detta inkluderar Microsoft Navision Application Services (NAS) klientanvändare. Du ska endast klientanvändare som är inloggad när du implementerar den här snabbkorrigeringen.

Om du vill genomföra den här snabbkorrigeringen måste du ha en utvecklarlicens.

Vi rekommenderar att tilldelas användarkontot i fönstret Windows-inloggningar eller i fönstret databasinloggningar "SUPER" roll-ID. Om användarkontot inte kan tilldelas "SUPER" roll-ID måste du kontrollera att användarkontot har följande behörigheter:
  • Ändra behörighet för objektet ändras.
  • Körbehörighet för systemet objektet ID 5210 objektet och objektet System objektet ID 9015 .


Obs! Du har inte behörighet för datalager inte data reparation.

Kod ändras

Obs! Alltid åtgärdas testa koden i en kontrollerad miljö innan du installerar korrigeringar för produktionsdatorer.
Lös problemet så här:
  1. Ändra koden i funktionen UpdateAmounts i tabellen Försäljningsrad (37) enligt följande:
    Befintlig kod
    ...FIELDERROR("Unit Price",STRSUBSTNO(Text047,FIELDCAPTION("Prepayment %")));
    END;
    IF SalesHeader."Document Type" <> SalesHeader."Document Type"::Invoice THEN BEGIN
    "Prepayment VAT Difference" := 0;

    // Delete the following lines.
    IF "Quantity Invoiced" = 0 THEN BEGIN
    "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision");
    IF "Prepmt. Line Amount" < "Prepmt. Amt. Inv." THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text049,"Prepmt. Amt. Inv."));
    END ELSE BEGIN
    IF "Prepayment %" <> 0 THEN
    "Prepmt. Line Amount" := "Prepmt. Amt. Inv." +
    ROUND("Line Amount" * (Quantity - "Quantity Invoiced") / Quantity * "Prepayment %" / 100,
    Currency."Amount Rounding Precision")
    ELSE
    "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision");
    IF "Prepmt. Line Amount" > "Line Amount" THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text049,"Prepmt. Line Amount"));
    END;
    // End of the lines.

    END;
    InitOutstandingAmount;
    IF (CurrFieldNo <> 0) AND
    NOT ((Type = Type::Item) AND (CurrFieldNo = FIELDNO("No.")) AND (Quantity <> 0) AND
    ...
    Ersättningskod
    ...FIELDERROR("Unit Price",STRSUBSTNO(Text047,FIELDCAPTION("Prepayment %")));
    END;
    IF SalesHeader."Document Type" <> SalesHeader."Document Type"::Invoice THEN BEGIN
    "Prepayment VAT Difference" := 0;

    // Add the following lines.
    "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision");
    IF "Prepmt. Line Amount" < "Prepmt. Amt. Inv." THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text049,"Prepmt. Amt. Inv."));
    // End of the lines.

    END;
    InitOutstandingAmount;
    IF (CurrFieldNo <> 0) AND
    NOT ((Type = Type::Item) AND (CurrFieldNo = FIELDNO("No.")) AND (Quantity <> 0) AND
    ...
  2. Ändra koden i funktionen UpdateAmounts i tabellen Inköpsrad (39) på följande sätt:
    Befintlig kod
    ...FIELDERROR("Direct Unit Cost",STRSUBSTNO(Text043,FIELDCAPTION("Prepayment %")));
    END;
    IF PurchHeader."Document Type" <> PurchHeader."Document Type"::Invoice THEN BEGIN
    "Prepayment VAT Difference" := 0;

    // Delete the following lines.
    IF "Quantity Invoiced" = 0 THEN BEGIN
    "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision");
    IF "Prepmt. Line Amount" < "Prepmt. Amt. Inv." THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text037,"Prepmt. Amt. Inv."));
    END ELSE BEGIN
    IF "Prepayment %" <> 0 THEN
    "Prepmt. Line Amount" := "Prepmt. Amt. Inv." +
    ROUND("Line Amount" * (Quantity - "Quantity Invoiced") / Quantity * "Prepayment %" / 100,
    Currency."Amount Rounding Precision")
    ELSE
    "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision");
    IF "Prepmt. Line Amount" > "Line Amount" THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text037,"Prepmt. Line Amount"));
    END;
    // End of the lines.

    END;
    IF PurchHeader.Status = PurchHeader.Status::Released THEN
    UpdateVATAmounts;
    ...
    Ersättningskod
    ...FIELDERROR("Direct Unit Cost",STRSUBSTNO(Text043,FIELDCAPTION("Prepayment %")));
    END;
    IF PurchHeader."Document Type" <> PurchHeader."Document Type"::Invoice THEN BEGIN
    "Prepayment VAT Difference" := 0;

    // Add the following lines.
    "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision");
    IF "Prepmt. Line Amount" < "Prepmt. Amt. Inv." THEN
    FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text037,"Prepmt. Amt. Inv."));
    // End of the lines.

    END;
    IF PurchHeader.Status = PurchHeader.Status::Released THEN
    UpdateVATAmounts;
    ...
  3. Ändra koden i funktionen kod i kodmodulen försäljningspost förskottsbetalningar (442) enligt följande:
    Befintlig kod
    ...REPEAT
    IF SalesLine."Prepmt. Line Amount" <> SalesLine."Prepmt. Amt. Inv." THEN BEGIN
    SalesLine."Prepmt. Amt. Inv." := SalesLine."Prepmt. Line Amount";
    SalesLine."Prepmt. Amount Inv. Incl. VAT" := SalesLine."Prepmt. Amt. Incl. VAT";

    // Delete the following line.
    SalesLine.CalcPrepaymentToDeduct;

    SalesLine."Prepmt VAT Diff. to Deduct" :=
    SalesLine."Prepmt VAT Diff. to Deduct" + SalesLine."Prepayment VAT Difference";
    SalesLine."Prepayment VAT Difference" := 0;
    SalesLine.MODIFY;
    ...
    Ersättningskod
    ...REPEAT
    IF SalesLine."Prepmt. Line Amount" <> SalesLine."Prepmt. Amt. Inv." THEN BEGIN
    SalesLine."Prepmt. Amt. Inv." := SalesLine."Prepmt. Line Amount";
    SalesLine."Prepmt. Amount Inv. Incl. VAT" := SalesLine."Prepmt. Amt. Incl. VAT";

    // Add the following line.
    SalesLine."Prepmt Amt to Deduct" := SalesLine."Prepmt. Amt. Inv." - SalesLine."Prepmt Amt Deducted";

    SalesLine."Prepmt VAT Diff. to Deduct" :=
    SalesLine."Prepmt VAT Diff. to Deduct" + SalesLine."Prepayment VAT Difference";
    SalesLine."Prepayment VAT Difference" := 0;
    SalesLine.MODIFY;
    ...
  4. Ändra koden i funktionen kod i kodmodulen inköpet Bokför förskottsbetalningar (444) enligt följande:
    Befintlig kod
    ...REPEAT
    IF PurchLine."Prepmt. Line Amount" <> PurchLine."Prepmt. Amt. Inv." THEN BEGIN
    PurchLine."Prepmt. Amt. Inv." := PurchLine."Prepmt. Line Amount";
    PurchLine."Prepmt. Amount Inv. Incl. VAT" := PurchLine."Prepmt. Amt. Incl. VAT";

    // Delete the following line.
    PurchLine.CalcPrepaymentToDeduct;

    PurchLine."Prepmt VAT Diff. to Deduct" :=
    PurchLine."Prepmt VAT Diff. to Deduct" + PurchLine."Prepayment VAT Difference";
    PurchLine."Prepayment VAT Difference" := 0;
    PurchLine.MODIFY;
    ...
    Ersättningskod
    ...REPEAT
    IF PurchLine."Prepmt. Line Amount" <> PurchLine."Prepmt. Amt. Inv." THEN BEGIN
    PurchLine."Prepmt. Amt. Inv." := PurchLine."Prepmt. Line Amount";
    PurchLine."Prepmt. Amount Inv. Incl. VAT" := PurchLine."Prepmt. Amt. Incl. VAT";

    // Add the following line.
    PurchLine."Prepmt Amt to Deduct" := PurchLine."Prepmt. Amt. Inv." - PurchLine."Prepmt Amt Deducted";

    PurchLine."Prepmt VAT Diff. to Deduct" :=
    PurchLine."Prepmt VAT Diff. to Deduct" + PurchLine."Prepayment VAT Difference";
    PurchLine."Prepayment VAT Difference" := 0;
    PurchLine.MODIFY;
    ...

Förutsättningar

Du måste ha någon av följande produkter som har installerat den här snabbkorrigeringen:
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 servicepack 1 (SP1)

Information om borttagning

Du kan inte ta bort den här snabbkorrigeringen.

Status


Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet "Gäller".
Obs! Detta är en "SNABBPUBLICERING"-artikel skapad direkt från Microsoft support-organisationen. Informationen häri tillhandahålls i befintligt skick som svar på nya problem. Till följd av hastigheten för att göra det tillgängligt kan materialet innehålla typografiska fel och kan ändras när som helst utan föregående meddelande. Se Villkoren för användning för andra överväganden.