"Znesek (LCY) mora imeti enak znak kot znesek v Gen. Vrstica dnevnika«, ko knjižite račun za delno odpremljeno prodajno naročilo ali naročilnico, v kateri je polje »Predplačilo%« nastavljeno na 100 v aplikaciji Microsoft Dynamics NAV...

Velja za
Dynamics NAV 2009

Ta članek velja za Microsoft Dynamics NAV za vse države in vse jezikovne območne nastavitve.

Znaki

Predpostavimo, da ustvarite prodajno naročilo, ki ima polje »Vnaprej plačilo«% nastavljeno na 100 v programu Microsoft Dynamics NAV 2009. Nato knjižite račun za predplačilo za prodajno naročilo. Nato odpremo pošiljko delno za prodajno naročilo. V tem primeru, ko knjižite račun za prodajno naročilo, se prikaže to sporočilo o napaki:

Opomba

Znesek (LCY) mora imeti enak znak kot znesek v Gen. Linija revije.

Do te težave pride tudi, ko knjižite račun za delno odpremljeno naročilnico, v katerem je polje »Percent« predplačila nastavljeno na 100.
Ta težava se pojavi v teh izdelkih:

  • Microsoft Dynamics NAV 2009 R2
  • Servisni paket SP1 za Microsoft Dynamics NAV 2009

      

Rešitev

Informacije o sprotnem popravku

Podprt sprotni popravek je zdaj na voljo pri Microsoftu. Vendar pa je namenjen le odpravljanju težave, ki je opisana v tem članku. Uporabite ga samo za sisteme, ki imajo to težavo. Ta sprotni popravek bo morda dodatno preučen. Če vas ta težava ne prizadene, priporočamo, da počakate na naslednji servisni paket za Microsoft Dynamics NAV 2009 ali naslednjo različico storitve Microsoft Dynamics NAV, ki vsebuje ta sprotni popravek.

Opomba V posebnih primerih se lahko stroški, ki običajno nastanejo za klice podpore, prekličejo, če strokovnjak za tehnično podporo za Microsoft Dynamics in sorodne izdelke ugotovi, da bo določena posodobitev odpravila vašo težavo. Običajni stroški podpore bodo veljali za dodatna vprašanja o podpori in težave, ki ne izpolnjujejo pogojev za določeno zadevno posodobitev.

            
          

Informacije o namestitvi

Microsoft ponuja primere programiranja samo za ponazoritev, brez izrecnega ali implicitnega jamstva. To vključuje, vendar ni omejeno na, implicitna jamstva primernosti za prodajo ali primernost za določen namen. V tem članku je predvideno, da ste seznanjeni s programskim jezikom, ki je prikazan, in z orodji, ki se uporabljajo za ustvarjanje in odpravljanje napak v postopkih. Microsoftovi inženirji za podporo vam lahko pomagajo razložiti funkcionalnost določenega postopka, vendar teh primerov ne bodo spremenili, da bi zagotovili dodano funkcionalnost ali ustvarili postopke, ki ustrezajo vašim posebnim zahtevam.

Opomba Preden namestite ta sprotni popravek, preverite, ali so vsi uporabniki odjemalca Microsoft Navision odjavljeni iz sistema. To vključuje uporabnike odjemalcev Microsoft Navision Application Services (NAS). Pri uvedbi tega sprotnega popravka bi morali biti edini uporabnik odjemalca, ki je prijavljen.

Če želite izvesti ta sprotni popravek, morate imeti licenco za razvijalce.

Priporočamo, da se uporabniškemu računu v oknu »Prijave v sistem Windows« ali v oknu »Prijave v zbirko podatkov« dodeli 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 spremenili.
  • Dovoljenje za izvajanje za predmet ID sistemskega objekta 5210 in za predmet ID sistemskega objekta 9015.

                
Opomba Ni vam treba imeti pravic do shramb podatkov, razen če morate opraviti popravilo podatkov.

Spremembe kode

Opomba Popravke kode vedno preskusite v nadzorovanem okolju, preden jih uporabite v proizvodnih računalnikih.
Če želite odpraviti to težavo, sledite tem korakom:

  1. Spremenite kodo v postopku CalcVATAmountLines@35 v tabeli "Prodajna vrstica" (37), kot sledi:
    Obstoječa koda

    ...
    END ELSE BEGIN
    CASE "VAT Calculation Type" OF
    "VAT Calculation Type"::"Normal VAT",
    "VAT Calculation Type"::"Reverse Charge VAT":
    BEGIN
    "VAT Base" := "Line Amount" - "Invoice Discount Amount";
    "VAT Amount" :=
    "VAT Difference" +
    ROUND(
    PrevVatAmountLine."VAT Amount" +
    "VAT Base" * "VAT %" / 100 * (1 - SalesHeader."VAT Base Discount %" / 100),
    Currency."Amount Rounding Precision",Currency.VATRoundingDirection);
    "Amount Including VAT" := "Line Amount" - "Invoice Discount Amount" + "VAT Amount";
    IF Positive THEN
    PrevVatAmountLine.INIT
    
    // Delete the following lines.
    ELSE BEGIN
    PrevVatAmountLine := VATAmountLine;
    PrevVatAmountLine."VAT Amount" :=
    ROUND(PrevVatAmountLine."VAT Amount" -
    "VAT Base" * "VAT %" / 100 * (1 - SalesHeader."VAT Base Discount %" / 100),
    Currency."Amount Rounding Precision",Currency.VATRoundingDirection);
    END;
    // End of the lines.
    ...
    

    Nadomestna koda

    ...
    END ELSE BEGIN
    CASE "VAT Calculation Type" OF
    "VAT Calculation Type"::"Normal VAT",
    "VAT Calculation Type"::"Reverse Charge VAT":
    BEGIN
    "VAT Base" := "Line Amount" - "Invoice Discount Amount";
    "VAT Amount" :=
    "VAT Difference" +
    ROUND(
    PrevVatAmountLine."VAT Amount" +
    "VAT Base" * "VAT %" / 100 * (1 - SalesHeader."VAT Base Discount %" / 100),
    Currency."Amount Rounding Precision",Currency.VATRoundingDirection);
    "Amount Including VAT" := "Line Amount" - "Invoice Discount Amount" + "VAT Amount";
    IF Positive THEN
    PrevVatAmountLine.INIT
    
    // Add the following lines.
    ELSE
    IF NOT "Includes Prepayment" THEN BEGIN
    PrevVatAmountLine := VATAmountLine;
    PrevVatAmountLine."VAT Amount" :=
    "VAT Base" * "VAT %" / 100 * (1 - SalesHeader."VAT Base Discount %" / 100);
    PrevVatAmountLine."VAT Amount" :=
    PrevVatAmountLine."VAT Amount" -
    ROUND(PrevVatAmountLine."VAT Amount",Currency."Amount Rounding Precision",Currency.VATRoundingDirection);
    END;
    // End of the lines.
    ... 
    
  2. Spremenite kodo v postopku CalcVATAmountLines@24 v tabeli »Vrstica nakupa« (39), kot sledi:
    Obstoječa koda

    ...
    CASE "VAT Calculation Type" OF
    "VAT Calculation Type"::"Normal VAT",
    "VAT Calculation Type"::"Reverse Charge VAT":
    BEGIN
    "VAT Base" := "Line Amount" - "Invoice Discount Amount";
    "VAT Amount" :=
    "VAT Difference" +
    ROUND(
    PrevVatAmountLine."VAT Amount" +
    "VAT Base" * "VAT %" / 100 * (1 - PurchHeader."VAT Base Discount %" / 100),
    Currency."Amount Rounding Precision",Currency.VATRoundingDirection);
    "Amount Including VAT" := "Line Amount" - "Invoice Discount Amount" + "VAT Amount";
    IF Positive THEN
    PrevVatAmountLine.INIT
    
    // Delete the following lines.
    ELSE BEGIN
    PrevVatAmountLine := VATAmountLine;
    PrevVatAmountLine."VAT Amount" :=
    "VAT Base" * "VAT %" / 100 * (1 - PurchHeader."VAT Base Discount %" / 100);
    PrevVatAmountLine."VAT Amount" :=
    PrevVatAmountLine."VAT Amount" -
    ROUND(PrevVatAmountLine."VAT Amount",Currency."Amount Rounding Precision",Currency.VATRoundingDirection);
    END;
    // End of the lines.
    ...
    

    Nadomestna koda

    ...
    CASE "VAT Calculation Type" OF
    "VAT Calculation Type"::"Normal VAT",
    "VAT Calculation Type"::"Reverse Charge VAT":
    BEGIN
    "VAT Base" := "Line Amount" - "Invoice Discount Amount";
    "VAT Amount" :=
    "VAT Difference" +
    ROUND(
    PrevVatAmountLine."VAT Amount" +
    "VAT Base" * "VAT %" / 100 * (1 - PurchHeader."VAT Base Discount %" / 100),
    Currency."Amount Rounding Precision",Currency.VATRoundingDirection);
    "Amount Including VAT" := "Line Amount" - "Invoice Discount Amount" + "VAT Amount";
    IF Positive THEN
    PrevVatAmountLine.INIT
    
    // Add the following lines.
    ELSE
    IF NOT "Includes Prepayment" THEN BEGIN
    PrevVatAmountLine := VATAmountLine;
    PrevVatAmountLine."VAT Amount" :=
    "VAT Base" * "VAT %" / 100 * (1 - PurchHeader."VAT Base Discount %" / 100);
    PrevVatAmountLine."VAT Amount" :=
    PrevVatAmountLine."VAT Amount" -
    ROUND(PrevVatAmountLine."VAT Amount",Currency."Amount Rounding Precision",Currency.VATRoundingDirection);
    END;
    // End of the lines.
    ...
    
  3. Spremenite kodo v sprožilcu OnRun v kodni enoti »Sales-Post« (80), kot sledi:
    Obstoječa koda 1

    ...
    RemQtyToBeInvoiced := RemQtyToBeInvoiced - QtyToBeInvoiced;
    RemQtyToBeInvoicedBase := RemQtyToBeInvoicedBase - QtyToBeInvoicedBase;
    ReturnRcptLine."Quantity Invoiced" :=
    ReturnRcptLine."Quantity Invoiced" + QtyToBeInvoiced;
    ReturnRcptLine."Qty. Invoiced (Base)" :=
    ReturnRcptLine."Qty. Invoiced (Base)" + QtyToBeInvoicedBase;
    ReturnRcptLine."Return Qty. Rcd. Not Invd." :=
    ReturnRcptLine.Quantity - ReturnRcptLine."Quantity Invoiced";
    ReturnRcptLine.MODIFY;
    IF SalesLine.Type = SalesLine.Type::Item THEN
    PostItemJnlLine(
    SalesLine,
    0,0,
    QtyToBeInvoiced,
    QtyToBeInvoicedBase,
    
    // Delete the following line.
    {ReturnRcptLine."Item Rcpt. Entry No."}
    
    ItemEntryRelation."Item Entry No.",'',TempInvoicingSpecification);
    IF TrackingSpecificationExists THEN
    EndLoop := (TempInvoicingSpecification.NEXT = 0)
    ELSE
    EndLoop :=
    (ReturnRcptLine.NEXT = 0) OR (ABS(RemQtyToBeInvoiced) <= ABS(SalesLine."Return Qty. to Receive"));
    UNTIL EndLoop;
    END ELSE
    ERROR(
    Text025,
    SalesLine."Return Receipt Line No.",SalesLine."Return Receipt No.");
    END;
    ...
    

    Nadomestna koda 1

    ...
    RemQtyToBeInvoiced := RemQtyToBeInvoiced - QtyToBeInvoiced;
    RemQtyToBeInvoicedBase := RemQtyToBeInvoicedBase - QtyToBeInvoicedBase;
    ReturnRcptLine."Quantity Invoiced" :=
    ReturnRcptLine."Quantity Invoiced" + QtyToBeInvoiced;
    ReturnRcptLine."Qty. Invoiced (Base)" :=
    ReturnRcptLine."Qty. Invoiced (Base)" + QtyToBeInvoicedBase;
    ReturnRcptLine."Return Qty. Rcd. Not Invd." :=
    ReturnRcptLine.Quantity - ReturnRcptLine."Quantity Invoiced";
    ReturnRcptLine.MODIFY;
    IF SalesLine.Type = SalesLine.Type::Item THEN
    PostItemJnlLine(
    SalesLine,
    0,0,
    QtyToBeInvoiced,
    QtyToBeInvoicedBase,
    ItemEntryRelation."Item Entry No.",'',TempInvoicingSpecification);
    IF TrackingSpecificationExists THEN
    EndLoop := (TempInvoicingSpecification.NEXT = 0)
    ELSE
    EndLoop :=
    (ReturnRcptLine.NEXT = 0) OR (ABS(RemQtyToBeInvoiced) <= ABS(SalesLine."Return Qty. to Receive"));
    UNTIL EndLoop;
    END ELSE
    ERROR(
    Text025,
    SalesLine."Return Receipt Line No.",SalesLine."Return Receipt No.");
    END;
    ...
    

    Obstoječa koda 2

    ...
    RemQtyToBeInvoiced := RemQtyToBeInvoiced - QtyToBeInvoiced;
    RemQtyToBeInvoicedBase := RemQtyToBeInvoicedBase - QtyToBeInvoicedBase;
    SalesShptLine."Quantity Invoiced" :=
    SalesShptLine."Quantity Invoiced" - QtyToBeInvoiced;
    SalesShptLine."Qty. Invoiced (Base)" :=
    SalesShptLine."Qty. Invoiced (Base)" - QtyToBeInvoicedBase;
    SalesShptLine."Qty. Shipped Not Invoiced" :=
    SalesShptLine.Quantity - SalesShptLine."Quantity Invoiced";
    SalesShptLine.MODIFY;
    IF SalesLine.Type = SalesLine.Type::Item THEN
    PostItemJnlLine(
    SalesLine,
    0,0,
    QtyToBeInvoiced,
    QtyToBeInvoicedBase,
    
    // Delete the following line.
    {SalesShptLine."Item Shpt. Entry No."}
    
    ItemEntryRelation."Item Entry No.",'',TempInvoicingSpecification);
    IF TrackingSpecificationExists THEN
    EndLoop := (TempInvoicingSpecification.NEXT = 0)
    ELSE
    EndLoop :=
    (SalesShptLine.NEXT = 0) OR (ABS(RemQtyToBeInvoiced) <= ABS(SalesLine."Qty. to Ship"))
    UNTIL EndLoop;
    END ELSE
    ERROR(
    Text026,
    SalesLine."Shipment Line No.",SalesLine."Shipment No.");
    END;
    

    Nadomestna koda 2

    ...
    RemQtyToBeInvoiced := RemQtyToBeInvoiced - QtyToBeInvoiced;
    RemQtyToBeInvoicedBase := RemQtyToBeInvoicedBase - QtyToBeInvoicedBase;
    SalesShptLine."Quantity Invoiced" :=
    SalesShptLine."Quantity Invoiced" - QtyToBeInvoiced;
    SalesShptLine."Qty. Invoiced (Base)" :=
    SalesShptLine."Qty. Invoiced (Base)" - QtyToBeInvoicedBase;
    SalesShptLine."Qty. Shipped Not Invoiced" :=
    SalesShptLine.Quantity - SalesShptLine."Quantity Invoiced";
    SalesShptLine.MODIFY;
    IF SalesLine.Type = SalesLine.Type::Item THEN
    PostItemJnlLine(
    SalesLine,
    0,0,
    QtyToBeInvoiced,
    QtyToBeInvoicedBase,
    ItemEntryRelation."Item Entry No.",'',TempInvoicingSpecification);
    IF TrackingSpecificationExists THEN
    EndLoop := (TempInvoicingSpecification.NEXT = 0)
    ELSE
    EndLoop :=
    (SalesShptLine.NEXT = 0) OR (ABS(RemQtyToBeInvoiced) <= ABS(SalesLine."Qty. to Ship"))
    UNTIL EndLoop;
    END ELSE
    ERROR(
    Text026,
    SalesLine."Shipment Line No.",SalesLine."Shipment No.");
    END;
    ...
    
  4. Spremenite kodo v lokalnem postopku AdjustPrepmtAmountLCY@84 v kodni enoti "Sales-Post" (80), kot sledi:
    Obstoječa koda 1

    ...
    TempPrepmtDeductLCYSalesLine.SETRANGE("Attached to Line No.",PrepmtSalesLine."Line No.");
    IF TempPrepmtDeductLCYSalesLine.FINDSET(TRUE) THEN
    REPEAT
    SalesLine := TempPrepmtDeductLCYSalesLine;
    SalesLine.FIND;
    IF SalesLine."Document Type" = SalesLine."Document Type"::Invoice THEN
    GetSalesOrderLine(SalesLine,SalesLine);
    DeductionFactor :=
    SalesLine."Prepmt Amt to Deduct" /
    (SalesLine."Prepmt. Amt. Inv." - SalesLine."Prepmt Amt Deducted");
    ...
    

    Nadomestna koda 1

    ...
    TempPrepmtDeductLCYSalesLine.SETRANGE("Attached to Line No.",PrepmtSalesLine."Line No.");
    IF TempPrepmtDeductLCYSalesLine.FINDSET(TRUE) THEN
    REPEAT
    SalesLine := TempPrepmtDeductLCYSalesLine;
    SalesLine.FIND;
    IF SalesLine."Document Type" = SalesLine."Document Type"::Invoice THEN
    GetSalesOrderLine(SalesLine,SalesLine);
    
    // Add the following line.
    SalesLine."Prepmt Amt to Deduct" := CalcPrepmtAmtToDeduct(SalesLine);
    
    DeductionFactor :=
    SalesLine."Prepmt Amt to Deduct" /
    (SalesLine."Prepmt. Amt. Inv." - SalesLine."Prepmt Amt Deducted");
    ...
    

    Obstoječa koda 2

    ...
    IF ABS(TotalPrepmtVATAmtLCYDifference) <= GLSetup."Amount Rounding Precision" THEN
    TotalPrepmtVATAmtLCYDifference := 0;
    PrepmtSalesLine."Prepmt. VAT Amount Inv. (LCY)" := TotalPrepmtVATAmtLCYDifference;
    NewAmountIncludingVAT := PrepmtSalesLine.Amount + TotalPrepmtVATAmtLCY + TotalPrepmtVATAmtLCYDifference;
    Increment(TotalSalesLineLCY."Amount Including VAT",PrepmtSalesLine."Amount Including VAT" - NewAmountIncludingVAT);
    PrepmtSalesLine."Amount Including VAT" := NewAmountIncludingVAT;
    END;
    END;
    LOCAL PROCEDURE GetSalesOrderLine@85(VAR SalesOrderLine@1000 : Record 37;SalesLine@1001 : Record 37);
    ...
    

    Nadomestna koda 2

    ...
    IF ABS(TotalPrepmtVATAmtLCYDifference) <= GLSetup."Amount Rounding Precision" THEN
    TotalPrepmtVATAmtLCYDifference := 0;
    PrepmtSalesLine."Prepmt. VAT Amount Inv. (LCY)" := TotalPrepmtVATAmtLCYDifference;
    NewAmountIncludingVAT := PrepmtSalesLine.Amount + TotalPrepmtVATAmtLCY + TotalPrepmtVATAmtLCYDifference;
    Increment(TotalSalesLineLCY."Amount Including VAT",PrepmtSalesLine."Amount Including VAT" - NewAmountIncludingVAT);
    
    // Add the following lines.
    IF SalesLine."Currency Code" = '' THEN
    TotalSalesLine."Amount Including VAT" := TotalSalesLineLCY."Amount Including VAT";
    // End of the lines.
    
    PrepmtSalesLine."Amount Including VAT" := NewAmountIncludingVAT;
    END;
    END;
    
    // Add the following lines.
    PROCEDURE CalcPrepmtAmtToDeduct@71(SalesLine@1000 : Record 37) : Decimal;
    VAR
    AllowedQtyToInvoice@1001 : Decimal;
    BEGIN
    WITH SalesLine DO BEGIN
    AllowedQtyToInvoice := "Qty. Shipped Not Invoiced";
    IF SalesHeader.Ship THEN
    AllowedQtyToInvoice := AllowedQtyToInvoice + "Qty. to Ship";
    IF "Qty. to Invoice" > AllowedQtyToInvoice THEN BEGIN
    "Qty. to Invoice" := AllowedQtyToInvoice;
    CalcPrepaymentToDeduct;
    END;
    EXIT("Prepmt Amt to Deduct");
    END;
    END;
    // End of the lines.
    
    LOCAL PROCEDURE GetSalesOrderLine@85(VAR SalesOrderLine@1000 : Record 37;SalesLine@1001 : Record 37);
    ...
    
  5. Spremenite kodo v sprožilcu OnRun v kodni enoti "Purch.-Post" (90), kot sledi:
    Obstoječa koda 1

    ...
    RemQtyToBeInvoiced := RemQtyToBeInvoiced - QtyToBeInvoiced;
    RemQtyToBeInvoicedBase := RemQtyToBeInvoicedBase - QtyToBeInvoicedBase;
    ReturnShptLine."Quantity Invoiced" :=
    ReturnShptLine."Quantity Invoiced" - QtyToBeInvoiced;
    ReturnShptLine."Qty. Invoiced (Base)" :=
    ReturnShptLine."Qty. Invoiced (Base)" - QtyToBeInvoicedBase;
    ReturnShptLine."Return Qty. Shipped Not Invd." :=
    ReturnShptLine.Quantity - ReturnShptLine."Quantity Invoiced";
    ReturnShptLine.MODIFY;
    IF PurchLine.Type = PurchLine.Type::Item THEN
    PostItemJnlLine(
    PurchLine,
    0,0,
    QtyToBeInvoiced,QtyToBeInvoicedBase,
    
    // Delete the following line.
    {ReturnShptLine."Item Shpt. Entry No."}
    
    ItemEntryRelation."Item Entry No.",'',TempInvoicingSpecification);
    IF TrackingSpecificationExists THEN
    ...
    

    Nadomestna koda 1

    ...
    RemQtyToBeInvoiced := RemQtyToBeInvoiced - QtyToBeInvoiced;
    RemQtyToBeInvoicedBase := RemQtyToBeInvoicedBase - QtyToBeInvoicedBase;
    ReturnShptLine."Quantity Invoiced" :=
    ReturnShptLine."Quantity Invoiced" - QtyToBeInvoiced;
    ReturnShptLine."Qty. Invoiced (Base)" :=
    ReturnShptLine."Qty. Invoiced (Base)" - QtyToBeInvoicedBase;
    ReturnShptLine."Return Qty. Shipped Not Invd." :=
    ReturnShptLine.Quantity - ReturnShptLine."Quantity Invoiced";
    ReturnShptLine.MODIFY;
    IF PurchLine.Type = PurchLine.Type::Item THEN
    PostItemJnlLine(
    PurchLine,
    0,0,
    QtyToBeInvoiced,QtyToBeInvoicedBase,
    ItemEntryRelation."Item Entry No.",'',TempInvoicingSpecification);
    IF TrackingSpecificationExists THEN
    ...
    

    Obstoječa koda 2

    ...
    RemQtyToBeInvoiced := RemQtyToBeInvoiced - QtyToBeInvoiced;
    RemQtyToBeInvoicedBase := RemQtyToBeInvoicedBase - QtyToBeInvoicedBase;
    PurchRcptLine."Quantity Invoiced" := PurchRcptLine."Quantity Invoiced" + QtyToBeInvoiced;
    PurchRcptLine."Qty. Invoiced (Base)" := PurchRcptLine."Qty. Invoiced (Base)" + QtyToBeInvoicedBase;
    PurchRcptLine."Qty. Rcd. Not Invoiced" :=
    PurchRcptLine.Quantity - PurchRcptLine."Quantity Invoiced";
    PurchRcptLine.MODIFY;
    IF PurchLine.Type = PurchLine.Type::Item THEN
    PostItemJnlLine(
    PurchLine,
    0,0,
    QtyToBeInvoiced,QtyToBeInvoicedBase,
    
    // Delete the following line.
    {PurchRcptLine."Item Rcpt. Entry No."}
    
    ItemEntryRelation."Item Entry No.",'',TempInvoicingSpecification);
    IF TrackingSpecificationExists THEN
    ...
    

    Nadomestna koda 2

    ...
    RemQtyToBeInvoiced := RemQtyToBeInvoiced - QtyToBeInvoiced;
    RemQtyToBeInvoicedBase := RemQtyToBeInvoicedBase - QtyToBeInvoicedBase;
    PurchRcptLine."Quantity Invoiced" := PurchRcptLine."Quantity Invoiced" + QtyToBeInvoiced;
    PurchRcptLine."Qty. Invoiced (Base)" := PurchRcptLine."Qty. Invoiced (Base)" + QtyToBeInvoicedBase;
    PurchRcptLine."Qty. Rcd. Not Invoiced" :=
    PurchRcptLine.Quantity - PurchRcptLine."Quantity Invoiced";
    PurchRcptLine.MODIFY;
    IF PurchLine.Type = PurchLine.Type::Item THEN
    PostItemJnlLine(
    PurchLine,
    0,0,
    QtyToBeInvoiced,QtyToBeInvoicedBase,
    ItemEntryRelation."Item Entry No.",'',TempInvoicingSpecification);
    IF TrackingSpecificationExists THEN
    ...
    
  6. Kodo v lokalnem postopku AdjustPrepmtAmountLCY@84 v kodni enoti "Purch.-Post" (90) spremenite na naslednji način:
    Obstoječa koda 1

    ...
    TempPrepmtDeductLCYPurchLine.SETRANGE("Attached to Line No.",PrepmtPurchLine."Line No.");
    IF TempPrepmtDeductLCYPurchLine.FINDSET(TRUE) THEN
    REPEAT
    PurchLine := TempPrepmtDeductLCYPurchLine;
    PurchLine.FIND;
    IF PurchLine."Document Type" = PurchLine."Document Type"::Invoice THEN
    GetPurchOrderLine(PurchLine,PurchLine);
    DeductionFactor :=
    PurchLine."Prepmt Amt to Deduct" /
    (PurchLine."Prepmt. Amt. Inv." - PurchLine."Prepmt Amt Deducted");
    PrepmtAmtLCYDifference :=
    ...
    

    Nadomestna koda 1

    ...
    TempPrepmtDeductLCYPurchLine.SETRANGE("Attached to Line No.",PrepmtPurchLine."Line No.");
    IF TempPrepmtDeductLCYPurchLine.FINDSET(TRUE) THEN
    REPEAT
    PurchLine := TempPrepmtDeductLCYPurchLine;
    PurchLine.FIND;
    IF PurchLine."Document Type" = PurchLine."Document Type"::Invoice THEN
    GetPurchOrderLine(PurchLine,PurchLine);
    
    // Add the following line.
    PurchLine."Prepmt Amt to Deduct" := CalcPrepmtAmtToDeduct(PurchLine);
    
    DeductionFactor :=
    PurchLine."Prepmt Amt to Deduct" /
    (PurchLine."Prepmt. Amt. Inv." - PurchLine."Prepmt Amt Deducted");
    PrepmtAmtLCYDifference :=
    ...
    

    Obstoječa koda 2

    ...
    IF ABS(TotalPrepmtVATAmtLCYDifference) <= GLSetup."Amount Rounding Precision" THEN
    TotalPrepmtVATAmtLCYDifference := 0;
    PrepmtPurchLine."Prepmt. VAT Amount Inv. (LCY)" := -TotalPrepmtVATAmtLCYDifference;
    NewAmountIncludingVAT := PrepmtPurchLine.Amount - (TotalPrepmtVATAmtLCY + TotalPrepmtVATAmtLCYDifference);
    Increment(TotalPurchLineLCY."Amount Including VAT",-(PrepmtPurchLine."Amount Including VAT" - NewAmountIncludingVAT));
    PrepmtPurchLine."Amount Including VAT" := NewAmountIncludingVAT;
    END;
    END;
    LOCAL PROCEDURE GetPurchOrderLine@85(VAR PurchOrderLine@1000 : Record 39;PurchLine@1001 : Record 39);
    ...
    

    Nadomestna koda 2

    ...
    IF ABS(TotalPrepmtVATAmtLCYDifference) <= GLSetup."Amount Rounding Precision" THEN
    TotalPrepmtVATAmtLCYDifference := 0;
    PrepmtPurchLine."Prepmt. VAT Amount Inv. (LCY)" := -TotalPrepmtVATAmtLCYDifference;
    NewAmountIncludingVAT := PrepmtPurchLine.Amount - (TotalPrepmtVATAmtLCY + TotalPrepmtVATAmtLCYDifference);
    Increment(TotalPurchLineLCY."Amount Including VAT",-(PrepmtPurchLine."Amount Including VAT" - NewAmountIncludingVAT));
    
    // Add the following lines.
    IF PurchLine."Currency Code" = '' THEN
    TotalPurchLine."Amount Including VAT" := TotalPurchLineLCY."Amount Including VAT";
    // End of the lines.
    
    PrepmtPurchLine."Amount Including VAT" := NewAmountIncludingVAT;
    END;
    END;
    
    // Add the following lines.
    LOCAL PROCEDURE CalcPrepmtAmtToDeduct@71(PurchLine@1000 : Record 39) : Decimal;
    VAR
    AllowedQtyToInvoice@1001 : Decimal;
    BEGIN
    WITH PurchLine DO BEGIN
    AllowedQtyToInvoice := "Qty. Rcd. Not Invoiced";
    IF PurchHeader.Receive THEN
    AllowedQtyToInvoice := AllowedQtyToInvoice + "Qty. to Receive";
    IF "Qty. to Invoice" > AllowedQtyToInvoice THEN BEGIN
    "Qty. to Invoice" := AllowedQtyToInvoice;
    CalcPrepaymentToDeduct;
    END;
    EXIT("Prepmt Amt to Deduct");
    END;
    END;
    // End of the lines.
    
    LOCAL PROCEDURE GetPurchOrderLine@85(VAR PurchOrderLine@1000 : Record 39;PurchLine@1001 : Record 39);
    ...
    

Pogoji

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

  • Microsoft Dynamics NAV 2009 R2
  • Servisni paket SP1 za Microsoft Dynamics NAV 2009

Podatki 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«, ustvarjen neposredno v Microsoftovi organizaciji za podporo. Informacije, ki jih vsebuje ta dokument, so na voljo kot odgovor na nastajajoča vprašanja. Zaradi hitrosti dajanja na voljo lahko gradivo vsebuje tipografske napake in jih je mogoče kadar koli brez predhodnega obvestila revidirati. Za druge pomisleke glejte Pogoje uporabe .