O tranzacție pentru o factură vânzări, care este creat pentru un mijloc fix creează două sau pierderilor tranzacții incorreclty dacă suma TVA pentru achiziționarea de fix este parțial dedusă în versiunea italiană a Microsoft Dynamics NAV


Acest articol se aplică la Microsoft Dynamics NAV pentru setările regionale de limbă italiană (it).

Simptome


Să presupunem că aveți un fix în versiunea italiană a Microsoft Dynamics NAV. Suma TVA (TVA) pentru achiziționarea de fix este reținută parțial. În această situație, dacă se vând fix, tranzacții pentru factură corespunzătoare creează două tranzacții sau pierderilor în loc de o singură tranzacție.
Această problemă se produce în următoarele produse:
  • Versiunea italiană a Microsoft Dynamics NAV 2009 R2
  • Versiunea italiană a Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Versiunea italiană a Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

Rezolvare


Informații despre remedierea rapidă

Un hotfix acceptat este acum disponibil de la Microsoft. Cu toate acestea, acesta este destinat numai corectării problemei descrise în acest articol. Aplicați-o numai pe sistemele care întâmpină această problemă anume. Această remediere rapidă poate să necesite testare 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 versiunea Microsoft Dynamics NAV următoare, care conține această remediere rapidă.

Notă În cazuri speciale, costurile implicate de obicei pentru asistență apeluri pot fi anulate dacă un specialist în asistență tehnică pentru Microsoft Dynamics și produse asociate stabilește că o anumită actualizare va rezolva problema. Se vor aplica costurile uzuale de asistenţă pentru întrebări suplimentare de asistență și pentru probleme ce nu fac obiectul actualizării în cauză.


Informaţii despre instalare

Microsoft furnizează exemple de programare scop ilustrativ, fără nicio garanţie explicită sau implicită. Aceasta include, dar nu se limitează la, garanţiile implicite de vandabilitate sau de potrivire pentru un anumit scop. Acest articol presupune că sunteţi familiarizat cu limbajul de programare care este prezentat şi cu instrumentele utilizate pentru a crea şi a depana proceduri. Specialiștii în asistență Microsoft pot ajuta la explicarea funcționalității unei anumite proceduri, dar nu vor modifica aceste exemple pentru a furniza funcționalitate suplimentară sau pentru a construi proceduri pentru a răspunde cerințelor dvs. specifice.

Notă Înainte de a instala această remediere rapidă, Verificați că toate Microsoft Navision client utilizatorii au făcut Log off sistemul. Aceasta include utilizatorii de client Microsoft Navision Application Services (NAS). Ar trebui să fie singurul client utilizatorului care este conectat când implementați această remediere rapidă.

Pentru a implementa această remediere rapidă, trebuie să aveți o licență de dezvoltare.

Vă recomandăm că contul de utilizator în fereastra Conectări Windows sau în fereastra Conectări bază de date se atribuie "SUPER" rolul ID-ul. În cazul în care contul de utilizator nu poate fi atribuit ID-ul "SUPER" rolul, trebuie să verificați că contul de utilizator are următoarele permisiuni:
  • Modify permisiunea pentru obiectul care se va schimba.
  • Permisiunea de executare pentru obiectul de sistem obiect ID 5210 și pentru obiectul de sistem obiect ID 9015 .


Notă Nu trebuie să aveți drepturi de la magazine de date decât dacă trebuie să efectuați o reparare de date.

Modificări de cod

Notă Întotdeauna test cod remediază într-un mediu controlat înainte de a aplica remedieri pentru computerele de producție.
Pentru a rezolva această problemă, urmați acești pași:
  1. Modificați codul din elementul date numărul 3 în foaia de carte cont - imprimare raport (12109) după cum urmează:
    Cod existent
    ...CurrReport.CREATETOTALS(Amount,IcreasesAmnt,DecreasesAmnt,"Additional-Currency Amount");
    END;

    // Delete the following lines.
    OnAfterGetRecord=BEGIN
    CALCFIELDS(Amount,"Debit Amount","Credit Amount","Additional-Currency Amount");

    IF NOT UseAmtsInAddCurr THEN BEGIN
    Amnt := Amnt + Amount;
    IF Amount > 0 THEN
    IcreasesAmnt := Amount
    ELSE
    DecreasesAmnt := ABS(Amount);
    END ELSE BEGIN
    Amnt := Amnt + "Additional-Currency Amount";
    IF "Additional-Currency Amount" > 0 THEN
    IcreasesAmnt := "Additional-Currency Amount"
    ELSE
    DecreasesAmnt := ABS("Additional-Currency Amount");
    END;
    // End of the lines.

    END;

    DataItemLinkReference=G/L Account;
    ...
    Cod de înlocuire
    ...CurrReport.CREATETOTALS(Amount,IcreasesAmnt,DecreasesAmnt,"Additional-Currency Amount");
    END;

    // Add the following lines.
    OnAfterGetRecord=VAR
    GroupAmount@1130001 : Decimal;
    BEGIN
    CALCFIELDS(Amount,"Debit Amount","Credit Amount","Additional-Currency Amount");
    IF TempGLBookEntry.GET("Entry No.") THEN
    CurrReport.SKIP
    ELSE BEGIN
    GroupAmount := GroupBookEntry("GL Book Entry",UseAmtsInAddCurr);
    Amnt += GroupAmount;
    IF GroupAmount > 0 THEN BEGIN
    IcreasesAmnt := ABS(GroupAmount);
    DecreasesAmnt := 0;
    END ELSE BEGIN
    IcreasesAmnt := 0;
    DecreasesAmnt := ABS(GroupAmount);
    END;
    END;
    // End of the lines.

    END;

    DataItemLinkReference=G/L Account;
    ...
  2. Modificați codul din secțiunile de date element numărul 3 în foaia de carte cont - imprimare raport (12109) după cum urmează:
    Cod existent
    ...{ 1130104;TextBox ;18000;423 ;1800 ;423 ;SourceExpr=Amnt;
    AutoFormatType=1;
    DataSetFieldName=Amnt_Control1130104 }

    // Delete the following line.
    { 1130105;TextBox ;18000;846 ;1800 ;423 ;SourceExpr=StartOnHand + Amount;

    AutoFormatType=1;
    DataSetFieldName=StartOnHand___Amount_Control1130105 }
    ...
    Cod de înlocuire
    ...{ 1130104;TextBox ;18000;423 ;1800 ;423 ;SourceExpr=Amnt;
    AutoFormatType=1;
    DataSetFieldName=Amnt_Control1130104 }

    // Add the following line.
    { 1130105;TextBox ;18000;846 ;1800 ;423 ;SourceExpr=StartOnHand + IcreasesAmnt - DecreasesAmnt;

    AutoFormatType=1;
    DataSetFieldName=StartOnHand___Amount_Control1130105 }
    { 1130111;TextBox ;0 ;846 ;150 ;423 ;Name=TotalAmount;
    ...
  3. Adăugați o nouă variabilă globală în foaia de carte cont - imprimare raport (12109), și apoi specificați variabila după cum urmează:
    • Nume: TempGLBookEntry
    • Tip de date: temporare înregistrare
    • Subtip: GL Book Entry (12144)
  4. Adăugați o funcție locală în foaia de carte cont - imprimare raport (12109) după cum urmează:
    LOCAL PROCEDURE GroupBookEntry@1130001(GLBookEntry@1130001 : Record 12144;UseAmtsInAddCurr@1130002 : Boolean) GroupAmount@1130003 : Decimal;VAR
    GLBookEntry1@1130004 : Record 12144;
    BEGIN
    GLBookEntry1.SETRANGE("G/L Account No.",GLBookEntry."G/L Account No.");
    GLBookEntry1.SETRANGE("Transaction No.",GLBookEntry."Transaction No.");
    IF GLBookEntry1.FINDSET THEN
    REPEAT
    TempGLBookEntry."Entry No." := GLBookEntry1."Entry No.";
    TempGLBookEntry.INSERT;
    GLBookEntry1.CALCFIELDS(Amount,"Additional-Currency Amount");
    IF UseAmtsInAddCurr THEN
    GroupAmount := GroupAmount + GLBookEntry1."Additional-Currency Amount"
    ELSE
    GroupAmount := GroupAmount + GLBookEntry1.Amount;
    UNTIL GLBookEntry1.NEXT = 0;
    EXIT(GroupAmount);
    END;
  5. Modificați codul din elementul date numărul 2 în cartea contabil - imprimare raport (12121) după cum urmează:
    Cod existent 1
    ...END;
    END;

    // Delete the following lines.
    OnAfterGetRecord=BEGIN
    IF ReportType = ReportType::Reprint THEN
    LastNo := "Progressive No."
    ELSE
    LastNo := LastNo + 1;
    // End of the lines.

    TotalDebit := TotalDebit + "Debit Amount";
    TotalCredit := TotalCredit + "Credit Amount";
    ...
    Înlocuirea cod 1
    ...END;
    END;

    // Add the following lines.
    OnAfterGetRecord=VAR
    GroupAmount@1130001 : Decimal;
    BEGIN
    // End of the lines.

    TotalDebit := TotalDebit + "Debit Amount";
    TotalCredit := TotalCredit + "Credit Amount";
    ...
    Cod existent 2
    ...END;
    "Source Type" :: "Fixed Asset":
    BEGIN
    FA.GET("Source No.");
    Descr := FA.Description;
    END;
    ...
    Înlocuirea cod 2
    ...END;
    "Source Type" :: "Fixed Asset":
    BEGIN

    // Add the following lines.
    IF TempGLBookEntry.GET("Entry No.") THEN
    CurrReport.SKIP
    ELSE BEGIN
    GroupAmount := GroupBookEntry("GL Book Entry");
    IF GroupAmount > 0 THEN BEGIN
    "Debit Amount" := GroupAmount;
    "Credit Amount" := 0;
    END ELSE BEGIN
    "Debit Amount" := 0;
    "Credit Amount" := GroupAmount;
    END;
    END;
    // End of the lines.

    FA.GET("Source No.");
    Descr := FA.Description;
    END;
    ...
    Cod existent 3
    ...ELSE
    Descr := '';
    END;


    IF (NOT CurrReport.PREVIEW) AND
    (ReportType = ReportType::"Final Print")
    THEN BEGIN
    ...
    Înlocuirea cod 3
    ...ELSE
    Descr := '';
    END;

    // Add the following lines.
    IF ReportType = ReportType::Reprint THEN
    LastNo := "Progressive No."
    ELSE
    LastNo := LastNo + 1;
    // End of the lines.

    IF (NOT CurrReport.PREVIEW) AND
    (ReportType = ReportType::"Final Print")
    THEN BEGIN
    ...
  6. Adăugați o nouă variabilă globală în cartea contabil - imprimare raport (12121) și apoi specificați variabila după cum urmează:
    • Nume: TempGLBookEntry
    • Tip de date: temporare înregistrare
    • Subtip: GL Book Entry (12144)
  7. Modificați codul din documentația în cartea contabil - imprimare raport (12121) după cum urmează:
    Cod existent
    ...EndDate := Date."Period Start" - 1;
    END;
    ...
    Cod de înlocuire
    ...EndDate := Date."Period Start" - 1;
    END;

    // Add the following lines.
    LOCAL PROCEDURE GroupBookEntry@1130002(GLBookEntry@1130001 : Record 12144) GroupAmount@1130002 : Decimal;
    VAR
    GLBookEntry1@1130003 : Record 12144;
    BEGIN
    GLBookEntry1.SETRANGE("G/L Account No.",GLBookEntry."G/L Account No.");
    GLBookEntry1.SETRANGE("Transaction No.",GLBookEntry."Transaction No.");
    IF GLBookEntry1.FINDSET THEN
    REPEAT
    TempGLBookEntry."Entry No." := GLBookEntry1."Entry No.";
    TempGLBookEntry.INSERT;
    GLBookEntry1.CALCFIELDS(Amount);
    GroupAmount := GroupAmount + GLBookEntry1.Amount;
    UNTIL GLBookEntry1.NEXT = 0;
    EXIT(GroupAmount);
    END;
    // End of the lines.
    ...

Cerințe preliminare

Trebuie să aveți unul dintre următoarele produse instalate pentru a aplica această remediere rapidă:
  • Versiunea italiană a Microsoft Dynamics NAV 2009 R2
  • Versiunea italiană a Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Versiunea italiană a Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

Eliminare informaţii

Nu se poate elimina această remediere rapidă.

Stare


Microsoft a confirmat că aceasta este o problemă cu produsele Microsoft enumerate în secţiunea „Se aplică la".
Notă Acesta este un articol "rapid publicat" creat direct în cadrul organizației de asistență Microsoft. Informațiile conținute în acest document sunt furnizate ca răspuns la problemele care apar. Ca rezultat al vitezei în a-l face disponibil, materialele pot include erori tipografice și pot fi revizuite în orice moment, fără notificare. Consultați Termenii de utilizare pentru alte considerații.