Questo articolo si applica a Microsoft Dynamics NAV per tutti i paesi e tutte le impostazioni locali della lingua.
Sintomi
Si supponga di creare un ordine cliente con il campo Pagamento anticipato% impostato su 100 in Microsoft Dynamics NAV 2009. Si registra quindi la fattura di pagamento anticipato per l'ordine cliente. Successivamente, si registra la spedizione in parte per l'ordine cliente. In questo caso, quando si registra la fattura per l'ordine cliente, viene visualizzato il messaggio di errore seguente:
Nota
Importo (VL) deve avere lo stesso segno dell'importo nella generazione. Riga di registrazione.
Questo problema si verifica anche quando si registra una fattura per un ordine di acquisto parzialmente spedito in cui il campo Percentuale di pagamento anticipato è impostato su 100.
Questo problema si verifica nei prodotti seguenti:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Service Pack 1
Risoluzione
Informazioni sull'aggiornamento rapido
È ora disponibile un hotfix supportato da Microsoft. Tuttavia, è destinato solo a correggere il problema descritto in questo articolo. Applicala solo ai sistemi che stanno riscontrando questo problema specifico. Questo hotfix potrebbe ricevere ulteriori test. Pertanto, se non sei gravemente interessato da questo problema, ti consigliamo di attendere il prossimo Service Pack di Microsoft Dynamics NAV 2009 o la prossima versione di Microsoft Dynamics NAV che contiene questo hotfix.
Nota In casi speciali, gli addebiti normalmente sostenuti per le chiamate al supporto tecnico possono essere annullati se un professionista del supporto tecnico per Microsoft Dynamics e i prodotti correlati determinano che un aggiornamento specifico risolverà il problema. I soliti costi del supporto verranno applicati a domande e problemi di supporto aggiuntivi che non sono idonei per l'aggiornamento specifico in questione.
Informazioni sull'installazione
Microsoft fornisce esempi di programmazione a titolo puramente illustrativo, senza alcuna garanzia espressa o implicita. Ciò include, a titolo esemplificativo e non esaustivo, le garanzie implicite di commerciabilità o idoneità a uno scopo particolare. Questo articolo presuppone che si abbia familiarità con il linguaggio di programmazione oggetto della dimostrazione e con gli strumenti utilizzati per la creazione e il debug delle procedure. I tecnici del supporto Tecnico Microsoft possono spiegare le funzionalità di una particolare procedura, ma non modificarli per fornire funzionalità aggiuntive o creare procedure in base a specifici requisiti.
Nota Prima di installare questo hotfix, verificare che tutti gli utenti client di Microsoft Navision siano disconnessi dal sistema. Sono inclusi gli utenti client di Microsoft Navision Application Services (NAS). Dovresti essere l'unico utente client connesso quando implementi questo hotfix.
Per implementare questo hotfix, è necessario disporre di una licenza per sviluppatori.
È consigliabile assegnare l'ID ruolo "SUPER" all'account utente nella finestra Accessi di Windows o nella finestra Accessi database. Se all'account utente non è possibile assegnare l'ID ruolo "SUPER", è necessario verificare che l'account utente disponga delle autorizzazioni seguenti:
- Autorizzazione modifica per l'oggetto che si desidera modificare.
- Autorizzazione Execute per l'oggetto System Object ID 5210 e per l'oggetto System Object ID 9015.
Nota: non è necessario disporre dei diritti per gli archivi dati a meno che non sia necessario eseguire il ripristino dei dati.
Modifiche al codice
Nota Verifica sempre le correzioni del codice in un ambiente controllato prima di applicare le correzioni ai computer di produzione.
Per risolvere il problema, attenersi alla procedura seguente:
Modificare il codice della routine CalcVATAmountLines@35 nella tabella "Riga vendite" (37) nel modo seguente:
Codice esistente... 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. ...Codice sostitutivo
... 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. ...Modificare il codice della procedura CalcVATAmountLines@24 nella tabella "Riga acquisto" (39) nel modo seguente:
Codice esistente... 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. ...Codice sostitutivo
... 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. ...Modificare il codice nel trigger OnRun nella codeunit "Sales-Post" (80) come segue:
Codice esistente 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; ...Codice di sostituzione 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; ...Codice esistente 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;Codice di sostituzione 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; ...Modificare il codice nella routine locale AdjustPrepmtAmountLCY@84 nella codeunit "Sales-Post" (80) come segue:
Codice esistente 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"); ...Codice di sostituzione 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"); ...Codice esistente 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); ...Codice di sostituzione 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); ...Modificare il codice nel trigger OnRun nella codeunit "Purch.-Post" (90) come segue:
Codice esistente 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 ...Codice di sostituzione 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 ...Codice esistente 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 ...Codice di sostituzione 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 ...Modificare il codice nella AdjustPrepmtAmountLCY@84 routine locale nella codeunit "Purch.-Post" (90) come segue:
Codice esistente 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 := ...Codice di sostituzione 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 := ...Codice esistente 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); ...Codice di sostituzione 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); ...
Prerequisiti
Per applicare questo hotfix, è necessario che sia installato uno dei prodotti seguenti:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Service Pack 1
Informazioni sulla rimozione
Non è possibile rimuovere questo hotfix.
Stato
Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".
Nota Questo è un articolo "FAST PUBLISH" creato direttamente dall'organizzazione di supporto Microsoft. Le informazioni contenute nel presente documento vengono fornite così come sono in risposta ai problemi emergenti. A causa della velocità di reso disponibile, i materiali possono includere errori tipografici e possono essere modificati in qualsiasi momento senza preavviso. Per altre considerazioni, vedere Condizioni per l'utilizzo .