Acest articol se aplică la Microsoft Dynamics NAV pentru setările regionale de limbă cehă (cz).
Simptome
Să presupunem că înregistrați o factură de achiziție într-o monedă străină, utilizând o valoare ajustată a TVA pe valoarea adăugată (LCY) în versiunea cehă a Microsoft Dynamics NAV 2009 R2. Apoi postați o plată utilizând un alt curs de schimb. În această situație, atunci când aplicați plata la factura de achiziție, diferența din valoarea TVA dintre TVA inițial și TVA ajustat este înregistrată în contul de rotunjire în locul contului de câștig/pierdere realizat.
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ă această problemă nu vă afectează grav, vă recomandăm să așteptați următorul pachet Service Pack Microsoft Dynamics NAV 2009 sau versiunea următoare 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 vă pot ajuta să explicați funcționalitatea unei anumite proceduri. Totuși, 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 Dynamics NAV sunt deconectați de la sistem. Printre acestea se numără serviciile Microsoft Dynamics NAV Application Server (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 ID obiect de sistem 9015
obiect.
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 InsertVAT din generație. Unitatea de cod Jnl.-Post Line (12), după cum urmează:
Cod existent... VATEntry."Customs Procedure Code" := "Customs Procedure Code"; VATEntry."Registration No." := "Registration No."; // Delete the following lines. IF "VAT Difference" = 0 THEN VATDifferenceLCY := 0 ELSE IF "Currency Code" = '' THEN VATDifferenceLCY := "VAT Difference" ELSE VATDifferenceLCY := ROUND( CurrExchRate.ExchangeAmtFCYToLCY( "Posting Date","Currency Code","VAT Difference", CurrExchRate.ExchangeRate("Posting Date","Currency Code"))); IF ("VAT Amount (LCY)" <> CalculatedVATAmountLCY) AND ("Currency Code" <> '') THEN VATDifferenceLCY := "VAT Amount (LCY)" - CalculatedVATAmountLCY; // End of the deleted lines. IF "VAT Calculation Type" = "VAT Calculation Type"::"Sales Tax" THEN BEGIN ...Codul de înlocuire
... VATEntry."Customs Procedure Code" := "Customs Procedure Code"; VATEntry."Registration No." := "Registration No."; // Add the following line. VATDifferenceLCY := CalcVATDiffLCY; // End of the added line. IF "VAT Calculation Type" = "VAT Calculation Type"::"Sales Tax" THEN BEGIN ...Modificați codul din funcția CalcCurrencyRealizedGainLoss din gener. Unitatea de cod Jnl.-Post Line (12), după cum urmează:
Cod existent... RealizedGainLossLCY := // Delete the following line. AppliedAmountLCY - ROUND(AppliedAmount / CVLedgEntryBuf."Adjusted Currency Factor"); // End of the deleted line. IF RealizedGainLossLCY <> 0 THEN BEGIN ...Codul de înlocuire
... RealizedGainLossLCY := // Add the following lines. AppliedAmountLCY - ROUND(AppliedAmount / CVLedgEntryBuf."Adjusted Currency Factor") + CalcVATDiffFromVATEntry(CVLedgEntryBuf); // End of the added lines. IF RealizedGainLossLCY <> 0 THEN BEGIN ...Creați două funcții noi în fișierul Gen. Unitatea de cod Jnl.-Post Line (12), după cum urmează:
LOCAL PROCEDURE CalcVATDiffFromVATEntry@1220002(CVLedgEntryBuf@1220002 : Record 382) VATDiffAmt : Decimal; VAR CalcVATEntry@1220001 : Record 254; BEGIN IF NOT (CVLedgEntryBuf."Document Type" IN [CVLedgEntryBuf."Document Type"::Invoice,CVLedgEntryBuf."Document Type"::"Credit Memo"]) THEN EXIT; WITH CalcVATEntry DO BEGIN SETRANGE("Transaction No.",CVLedgEntryBuf."Transaction No."); IF FINDSET THEN REPEAT VATDiffAmt := VATDiffAmt + "VAT Difference"; UNTIL NEXT = 0; END; END; LOCAL PROCEDURE CalcVATDiffLCY@1220000() VATDifferenceLCY : Decimal; BEGIN WITH GenJnlLine DO BEGIN IF ("VAT Difference" = 0) AND ("VAT Difference (LCY)" = 0) THEN EXIT(0); IF ("VAT Amount (LCY)" <> CalculatedVATAmountLCY) AND ("Currency Code" <> '') THEN EXIT("VAT Amount (LCY)" - CalculatedVATAmountLCY); IF ("VAT Difference" = 0) AND ("VAT Difference (LCY)" <> 0) THEN VATDifferenceLCY := "VAT Difference (LCY)" ELSE IF "Currency Code" = '' THEN VATDifferenceLCY := "VAT Difference" ELSE VATDifferenceLCY := ROUND( CurrExchRate.ExchangeAmtFCYToLCY( "Posting Date","Currency Code","VAT Difference", CurrExchRate.ExchangeRate("Posting Date","Currency Code"))); END; END;Modificați codul din funcția OnRun din unitatea de cod Sales-Post (80) după cum urmează:
Cod existent... GenJnlLine."VAT Difference" := InvPostingBuffer[1]."VAT Difference"; GenJnlLine."VAT Posting" := GenJnlLine."VAT Posting"::"Manual VAT Entry"; ...Codul de înlocuire
... GenJnlLine."VAT Difference" := InvPostingBuffer[1]."VAT Difference"; // Add the following line. GenJnlLine."VAT Difference (LCY)" := InvPostingBuffer[1]."VAT Difference (LCY)"; // End of the added line. GenJnlLine."VAT Posting" := GenJnlLine."VAT Posting"::"Manual VAT Entry"; ...Modificați codul din funcția OnRun din unitatea de cod Purch.-Post (90), după cum urmează:
Cod existent... GenJnlLine."VAT Difference" := InvPostingBuffer[1]."VAT Difference"; TransferNonDedVAT(GenJnlLine,InvPostingBuffer[1]); ...Codul de înlocuire
... GenJnlLine."VAT Difference" := InvPostingBuffer[1]."VAT Difference"; // Add the following lines. GenJnlLine."VAT Difference (LCY)" := InvPostingBuffer[1]."VAT Difference (LCY)"; // End of the added line. TransferNonDedVAT(GenJnlLine,InvPostingBuffer[1]); ...
Cerințe preliminare
Trebuie să aveți versiunea cehă de Microsoft Dynamics NAV 2009 R2 instalată pentru a aplica această remediere rapidă.
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.