Suma de bază nu este calculată pentru tranzacția de TVA complet din modelul 320 atunci când rulați raportul Declarație de TVA în versiunea spaniolă de Microsoft Dynamics NAV 2009 Service Pack 1

Se aplică la
Dynamics NAV 2009 Service Pack 1

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

Simptome

Atunci când rulați raportul Extras de TVA în versiunea spaniolă de Microsoft Dynamics NAV 2009 Service Pack 1 (SP1), suma de bază nu este calculată pentru tranzacția de TVA completă din modelul 320.

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 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:

  1. Modificați codul din funcția CalcLineTotal2C din raportul Declarație TVA (12) după cum urmează:
    Cod existent

    ...
                  IF VATStmtLine2."Amount Type" = VATStmtLine2."Amount Type"::"Amount+Base" THEN BEGIN
                    VATEntry.CALCSUMS(Amount,Base,"Additional-Currency Amount","Additional-Currency Base");
                    Amount := ConditionalAdd(0,VATEntry.Amount,VATEntry."Additional-Currency Amount");
    
    // Delete the following line.
                     Base := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
    
                  END;
                  CalculateTotalAmount(VATStmtLine2);
                END;
    ...
    
    

    Codul de înlocuire

    ...
                  IF VATStmtLine2."Amount Type" = VATStmtLine2."Amount Type"::"Amount+Base" THEN BEGIN
                    VATEntry.CALCSUMS(Amount,Base,"Additional-Currency Amount","Additional-Currency Base");
                    Amount := ConditionalAdd(0,VATEntry.Amount,VATEntry."Additional-Currency Amount");
    
    // Add the following lines.
                    IF VATEntry."VAT Calculation Type" = VATEntry."VAT Calculation Type"::"Full VAT" THEN
                       Base := ConditionalAdd(0,CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry.Amount,UseAmtsInAddCurr),
                         CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry."Additional-Currency Amount",UseAmtsInAddCurr))
                     ELSE
                       Base := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
    // End of the lines.
    
                  END;
                  CalculateTotalAmount(VATStmtLine2);
                END;
    ...
    
    
  2. Modificați codul din funcția CalcLineTotal din raportul Declarație TVA (12) după cum urmează:
    Cod existent 1

    ...
                      BEGIN
                        VATEntry.CALCSUMS(Base,Amount,"Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
                      END;
                    VATStmtLine2."Amount Type"::"Unrealized Amount":
                      BEGIN
    ...
    
    

    Cod de înlocuire 1

    ...
                      BEGIN
                        VATEntry.CALCSUMS(Base,Amount,"Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
    
    // Add the following lines.
                         IF VATEntry."VAT Calculation Type" = VATEntry."VAT Calculation Type"::"Full VAT" THEN BEGIN
                           Base := ConditionalAdd(0,CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry.Amount,UseAmtsInAddCurr),
                             CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry."Additional-Currency Amount",UseAmtsInAddCurr));
                           Amount := Amount + Base;
                         END;
    // End of the lines.
    
                      END;
                    VATStmtLine2."Amount Type"::"Unrealized Amount":
                      BEGIN
    ...
    
    

    Cod existent 2

    ...
                      END;
                   VATStmtLine2."Amount Type"::"Amount+Base":
                     BEGIN
    
    // Delete the following lines.
                       VATEntry.CALCSUMS(Amount,Base,VATEntry."Additional-Currency Amount",VATEntry."Additional-Currency Base");
                       IF VATPostSetup.GET(VATEntry."VAT Bus. Posting Group",VATEntry."VAT Prod. Posting Group") THEN BEGIN
                         IF VATPostSetup."VAT+EC %" <> 0 THEN BEGIN
                           VATAmount := (VATEntry.Amount / VATPostSetup."VAT+EC %") * VATEntry."VAT %";
                           VATAmountAC := (VATEntry."Additional-Currency Amount" / VATPostSetup."VAT+EC %")* VATEntry."VAT %";
                          END;
                          Amount := ConditionalAdd(0,VATAmount,VATAmountAC);
                      END;
                       Base := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
                       Amount := Amount + Base;
    // End of the lines.
    
                    END;
    
                  END;
    ...
    
    

    Codul de înlocuire 2

    ...
                      END;
                   VATStmtLine2."Amount Type"::"Amount+Base":
                     BEGIN
    
    // Add the following lines.
                        VATEntry.CALCSUMS(Amount,Base,VATEntry."Additional-Currency Amount",VATEntry."Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Amount,VATEntry."Additional-Currency Amount");
                        IF VATEntry."VAT Calculation Type" = VATEntry."VAT Calculation Type"::"Full VAT" THEN
                          Base := ConditionalAdd(0,CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry.Amount,UseAmtsInAddCurr),
                            CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry."Additional-Currency Amount",UseAmtsInAddCurr))
                        ELSE
                          Base := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
                        Amount := Amount + Base;
    // End of the lines.
    
                    END;
    
                  END;
    ...
    
    

    Cod existent 3

    ...
                       BEGIN
                        VATEntry.CALCSUMS(Base,"Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
                      END;
                    VATStmtLine2."Amount Type"::"Unrealized Amount":
                      BEGIN
    ...
    
    

    Codul de înlocuire 3

    ...
                      BEGIN
                        VATEntry.CALCSUMS(Base,"Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
    
    // Add the following lines.
                         IF VATEntry."VAT Calculation Type" = VATEntry."VAT Calculation Type"::"Full VAT" THEN BEGIN
                           Base := ConditionalAdd(0,CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry.Amount,UseAmtsInAddCurr),
                             CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry."Additional-Currency Amount",UseAmtsInAddCurr));
                           Amount := Amount + Base;
                         END;
    // End of the lines.
    
                      END;
                    VATStmtLine2."Amount Type"::"Unrealized Amount":
                      BEGIN
    ...
    
    

    Cod existent 4

    ...
                      END;
                   VATStmtLine2."Amount Type"::"Amount+Base":
                     BEGIN
    
    // Delete the following lines.
                       VATEntry.CALCSUMS(Amount,Base,VATEntry."Additional-Currency Amount",VATEntry."Additional-Currency Base");
                       IF VATPostSetup.GET(VATEntry."VAT Bus. Posting Group",VATEntry."VAT Prod. Posting Group") THEN BEGIN
                         IF VATPostSetup."VAT+EC %" <> 0 THEN BEGIN
                           VATAmount := (VATEntry.Amount / VATPostSetup."VAT+EC %") * VATEntry."EC %";
                           VATAmountAC := (VATEntry."Additional-Currency Amount" / VATPostSetup."VAT+EC %")* VATEntry."EC %";
                         END;
                         Amount := ConditionalAdd(0,VATAmount,VATAmountAC);
                       END;
                       Base := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
                       Amount := Amount + Base;
                     END;
    // End of the lines.
    
                  END;
    ...
    
    

    Codul de înlocuire 4

    ...
                      END;
                   VATStmtLine2."Amount Type"::"Amount+Base":
                     BEGIN
    
    // Add the following lines.
                        VATEntry.CALCSUMS(Amount,Base,VATEntry."Additional-Currency Amount",VATEntry."Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Amount,VATEntry."Additional-Currency Amount");
                        IF VATEntry."VAT Calculation Type" = VATEntry."VAT Calculation Type"::"Full VAT" THEN
                          Base := ConditionalAdd(0,CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry.Amount,FALSE),
                            CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry."Additional-Currency Amount",FALSE))
                        ELSE
                          Base := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
                        Amount := Amount + Base;
                      END
    // End of the lines.
    
                  END;
    ...
    
    
  3. Modificați codul proprietăților din raportul de declarație telematică TVA (10715) după cum urmează:
    Cod existent

    ...
                          Header := Text1100000
                        ELSE
                          Header := Text1100001 + "VAT Declaration Line".GETFILTER("Date Filter");
                      END;
    
          OnPostReport=BEGIN
    ...
    
    

    Codul de înlocuire

    ...
                          Header := Text1100000
                        ELSE
                          Header := Text1100001 + "VAT Declaration Line".GETFILTER("Date Filter");
    
    // Add the following lines.
                         GLSetup.GET;
                         IF PrintAmtInAddCurr THEN
                           Currency.GET(GLSetup."Additional Reporting Currency");
    // End of the lines.
    
                      END;
    
          OnPostReport=BEGIN
    ...
    
    
  4. Adăugați o variabilă globală în raportul Declarație TVA telematică (10715), apoi specificați variabila după cum urmează:

    • Nume:Monedă
    • Tip de date:Înregistrare
  5. Modificați codul din funcția CalcTotLine din Raportul de declarație TVA telematic (10715), după cum urmează:
    Cod existent 1

    ...
                      BEGIN
                        VATEntry.CALCSUMS(Base,"Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
                      END;
                    VATStatementLine2."Amount Type"::"Unrealized Amount":
                      BEGIN
    ...
    
    

    Cod de înlocuire 1

    ...
                      BEGIN
                        VATEntry.CALCSUMS(Base,"Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
    
    // Add the following lines.
                          IF VATEntry."VAT Calculation Type" = VATEntry."VAT Calculation Type"::"Full VAT" THEN BEGIN
                            Base := ConditionalAdd(0,CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry.Amount,PrintAmtInAddCurr),
                              CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry."Additional-Currency Amount",PrintAmtInAddCurr));
                            Amount := Amount + Base;
                          END;
    // End of the lines.
    
                      END;
                    VATStatementLine2."Amount Type"::"Unrealized Amount":
                      BEGIN
    ...
    
    

    Cod existent 2

    ...
                      BEGIN
                        VATEntry.CALCSUMS(Amount,Base,"Additional-Currency Amount","Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Amount,VATEntry."Additional-Currency Amount");
    
    // Delete the following line.
                         Base := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
    
                      END;
                  END;
                  CalcTotAmount(VATStatementLine2,TotalAmount);
    ...
    
    

    Codul de înlocuire 2

    ...
                      BEGIN
                        VATEntry.CALCSUMS(Amount,Base,"Additional-Currency Amount","Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Amount,VATEntry."Additional-Currency Amount");
    
    // Add the following lines.
                          IF VATEntry."VAT Calculation Type" = VATEntry."VAT Calculation Type"::"Full VAT" THEN
                            Base := ConditionalAdd(0,CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry.Amount,PrintAmtInAddCurr),
                              CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry."Additional-Currency Amount",PrintAmtInAddCurr))
                          ELSE
                            Base := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
                          Amount := Amount + Base;
    // End of the lines.
    
                      END;
                  END;
                  CalcTotAmount(VATStatementLine2,TotalAmount);
    ...
    
    

    Cod existent 3

    ...
                      BEGIN
                        VATEntry.CALCSUMS(Base,"Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
                      END;
                    VATStatementLine2."Amount Type"::"Unrealized Amount":
                      BEGIN
    ...
    
    

    Codul de înlocuire 3

    ...
                      BEGIN
                        VATEntry.CALCSUMS(Base,"Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
    
    // Add the following lines.
                          IF VATEntry."VAT Calculation Type" = VATEntry."VAT Calculation Type"::"Full VAT" THEN BEGIN
                            Base := ConditionalAdd(0,CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry.Amount,PrintAmtInAddCurr),
                              CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry."Additional-Currency Amount",PrintAmtInAddCurr));
                            Amount := Amount + Base;
                          END;
    // End of the lines.
    
                      END;
                    VATStatementLine2."Amount Type"::"Unrealized Amount":
                      BEGIN
    ...
    
    

    Cod existent 4

    ...
                      BEGIN
                        VATEntry.CALCSUMS(Amount,Base,"Additional-Currency Amount","Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Amount,VATEntry."Additional-Currency Amount");
    
    // Delete the following line.
                         Base := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
    
                      END;
                  END;
                  CalcTotAmount(VATStatementLine2,TotalAmount);
    ...
    
    

    Codul de înlocuire 4

    ...
                      BEGIN
                        VATEntry.CALCSUMS(Amount,Base,"Additional-Currency Amount","Additional-Currency Base");
                        Amount := ConditionalAdd(0,VATEntry.Amount,VATEntry."Additional-Currency Amount");
    
    // Add the following lines.
                          IF VATEntry."VAT Calculation Type" = VATEntry."VAT Calculation Type"::"Full VAT" THEN
                            Base := ConditionalAdd(0,CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry.Amount,PrintAmtInAddCurr),
                              CalcTotalVATBase(VATEntry."VAT %",VATEntry."EC %",VATEntry."Additional-Currency Amount",PrintAmtInAddCurr))
                          ELSE
                            Base := ConditionalAdd(0,VATEntry.Base,VATEntry."Additional-Currency Base");
                          Amount := Amount + Base;
    // End of the lines.
    
                      END;
                  END;
                  CalcTotAmount(VATStatementLine2,TotalAmount);
    ...
    
    
  6. Modificați codul din funcția CalcTotalVATBase din raportul de declarație TVA telematic (10715) după cum urmează:
    Cod existent

    ...
            OutFile := Text1100006 + "VAT Declaration Line"."Statement Name" + Text1100007
          END;
    
          BEGIN
          END.
        }
    ...
    
    

    Codul de înlocuire

    ...
            OutFile := Text1100006 + "VAT Declaration Line"."Statement Name" + Text1100007
          END;
    
    // Add the following lines. 
            PROCEDURE CalcTotalVATBase@1100000(VAT@1100000 : Decimal;EC@1100001 : Decimal;VATAmount@1100002 : Decimal;UseAddCurr@1100003 : Boolean) VATBase : Decimal;
            BEGIN
              IF (VAT + EC) = 0 THEN
                EXIT;
              IF UseAddCurr THEN
                EXIT(ROUND(100 * VATAmount / (VAT + EC),Currency."Amount Rounding Precision"))
              ELSE
                EXIT(ROUND(100 * VATAmount / (VAT + EC),GLSetup."Amount Rounding Precision"));
            END;
    
    // End of the lines.
    
          BEGIN
          END.
        }
    ...
    
    

Notă Controlul se află lângă ultimul câmp al secțiunii.

Cerințe preliminare

Trebuie să aveți versiunea în spaniolă de Microsoft Dynamics NAV 2009 Service Pack 1 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.