Acest articol se aplică la Microsoft Dynamics NAV pentru toate țările și setările regionale de limbă.
Simptome
Luați în considerare următorul scenariu în Microsoft Dynamics NAV 2009:
- Aplicați remedieri rapide 2558516.
Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:
2558516 Câmpul "Plată în avans fără TVA" se calculează incorect după ce modificați valoarea "% de plată în avans" într-o comandă în Microsoft Dynamics NAV 2009 - Înregistrați o factură de plată anticipată pentru o comandă care are câmpul % de plată anticipată specificat.
- Expediați parțial și facturați unele unități pentru comandă.
- Redeschideți comanda.
- Puteți modifica valoarea procentului de plată în avans din comandă.
În acest scenariu, câmpul Plată în avans Fără TVA este calculat incorect.
Această problemă apare în cazul următoarelor produse:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
Rezolvare
Informații despre remedierea rapidă
O remediere rapidă acceptată este acum disponibilă de la Microsoft. Însă, scopul său este doar să corecteze problema descrisă în acest articol. Aplicați-o doar sistemelor care se confruntă cu această problemă specifică. Această remediere rapidă poate fi testată suplimentar. De aceea, dacă nu sunteți grav afectat de această problemă, vă recomandăm să așteptați următorul pachet Service Pack Microsoft Dynamics NAV sau următoarea versiune Microsoft Dynamics NAV care conține această remediere rapidă.
Notă În cazuri speciale, costurile implicate de obicei pentru apelurile de asistență pot fi revocate dacă un specialist în asistență tehnică pentru Microsoft Dynamics și produsele asociate stabilește că o anumită actualizare va rezolva problema. Costurile uzuale de suport se vor aplica pentru întrebări suplimentare de suport și pentru probleme ce nu fac obiectul actualizării în chestiune.
Informații despre instalare
Microsoft oferă exemple de programare numai în scop ilustrativ, fără nicio garanție explicită sau implicită. Aceasta include, dar nu se limitează la, garanțiile implicite de vandabilitate sau adecvare pentru un anumit scop. Acest articol presupune că sunteți familiarizat cu limbajul de programare prezentat și cu instrumentele utilizate pentru a crea și a depana proceduri. Inginerii de asistență Microsoft pot ajuta la explicarea funcționalității unei anumite proceduri, însă nu vor modifica aceste exemple pentru a furniza funcționalitate suplimentară și nu vor construi proceduri pentru a răspunde cerințelor dvs. specifice.
Notă Înainte de a instala această remediere rapidă, verificați dacă toți utilizatorii clientului Microsoft Navision sunt deconectați de la sistem. Printre aceștia se numără utilizatorii clienților Microsoft Navision Application Services (NAS). Ar trebui să fiți singurul utilizator client conectat atunci când implementați această remediere rapidă.
Pentru a implementa această remediere rapidă, trebuie să aveți o licență de dezvoltator.
Recomandăm ca contului de utilizator din fereastra Conectări Windows sau din fereastra Conectări bază de date să primească ID-ul de rol "SUPER". În cazul în care contului de utilizator nu i se poate atribui ID-ul de rol "SUPER", trebuie să verificați dacă acel cont de utilizator are următoarele permisiuni:
- Permisiunea Modificare pentru obiectul pe care îl veți modifica.
- Permisiunea de executare pentru obiectul cu ID obiect de sistem 5210 și pentru obiectul ID obiect de sistem 9015.
Notă: nu trebuie să aveți drepturi asupra depozitelor de date decât dacă trebuie să efectuați repararea datelor.
Modificări de cod
Notă: testați întotdeauna remedierile de cod într-un mediu controlat înainte de a aplica remedierile la computerele de producție.
Pentru a rezolva această problemă, urmați acești pași:
Modificați codul din funcția UpdateAmounts din tabelul Linie de vânzări (37) după cum urmează:
Cod existent... 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 ...Codul de înlocuire
... 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 ...Modificați codul din funcția UpdateAmounts din tabelul Linie de achiziție (39) după cum urmează:
Cod existent... 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; ...Codul de înlocuire
... 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; ...Modificați codul din funcția Code din unitatea de cod Sales-Post Plăți anticipate (442) după cum urmează:
Cod existent... 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; ...Codul de înlocuire
... 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; ...Modificați codul din funcția Code din unitatea de cod Purchase-Post Plăți anticipate (444) după cum urmează:
Cod existent... 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; ...Codul de înlocuire
... 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; ...
Cerințe preliminare
Trebuie să aveți instalat unul dintre următoarele produse pentru a aplica această remediere rapidă:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
Eliminarea informațiilor
Nu puteți elimina această remediere rapidă.
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft care sunt listate în secțiunea „Se aplică la”.
Notă: Acesta este un articol "PUBLICARE RAPIDĂ" creat direct din cadrul organizației de asistență Microsoft. Informațiile din acest document sunt furnizate ca atare ca răspuns la problemele apărute. Ca urmare a vitezei de punere la dispoziție, materialele pot include erori tipografice și pot fi revizuite în orice moment fără preaviz. Consultați Condițiile de utilizare pentru alte considerente.