"A tranzakciót nem lehet befejezni, mert inkonzisztenciákat okozna a főkönyvi bevitel táblázatában" hibaüzenet jelenik meg a Microsoft Dynamics NAV 2009 rendszerben feladott értékesítési számla, beszerzési számla vagy szolgáltatási számla feladásakor

Hatókör
Dynamics NAV 2009 Service Pack 1 Dynamics NAV 2009

Ez a cikk a Microsoft Dynamics szolgáltatásra vonatkozik minden országban és nyelvi beállítás esetén.

Tünetek

Tegyük fel, hogy a Microsoft Dynamics NAV 2009 rendszerben értékesítési számlát, beszerzési számlát vagy szolgáltatási számlát hoz létre, amely 100 százalékos sorkedvezményt tartalmaz. A számla feladásakor a következő hibaüzenet jelenik meg:

Megjegyzés

A tranzakciót nem lehet befejezni, mert inkonzisztenciákat okozna a Főkönyvi bevitel táblában.
Ellenőrizze, hogy hol és hogyan használja a KONZISZTENS függvényt a tranzakcióban a hiba okának meghatározásához.
Forduljon a rendszergazdához.
A táblázatok megjelölhetők következetlenként átfogó feladatok, például közzététel során. Ez megakadályozza az adatok helytelen frissítését.

Ez a probléma a következő termékekben fordul elő:

  • Microsoft Dynamics NAV 2009 Service Pack 1
  • Microsoft Dynamics NAV 2009

Megoldás

Gyorsjavítással kapcsolatos információk

A Microsoft már elérhető egy támogatott gyorsjavítást kínál. Ez azonban csak a cikkben ismertetett probléma megoldására szolgál. Csak olyan rendszerekre alkalmazza, amelyek tapasztalják ezt a problémát. Előfordulhat, hogy a gyorsjavítás további tesztelésen eshet át. Ezért ha nem érinti súlyosan ez a probléma, azt javasoljuk, hogy várja meg a Microsoft Dynamics NAV 2009 következő szervizcsomagját, illetve a Microsoft Dynamics NAV következő olyan verzióját, amely tartalmazza ezt a gyorsjavítást.

Megjegyzés: Különleges esetekben a támogatási hívások szokásos díjai törölhetők, ha a Microsoft Dynamics és a kapcsolódó termékek terméktámogatási szakértője úgy ítéli meg, hogy egy adott frissítés megoldja a problémát. A szokásos támogatási költségek olyan további támogatási kérdések és problémák esetén merülnek fel, amelyek nem felelnek meg a kérdéses frissítés feltételeinek.

            
          

Telepítési információk

A Microsoft csak illusztrációs céllal kínál programozási példákat, kifejezett vagy vélelmezett garancia nélkül. Ez magában foglalja, de nem kizárólagosan a forgalmazhatóságra vagy az adott célra való alkalmasságra vonatkozó vélelmezett garanciát. Ez a cikk feltételezi, hogy ismeri a bemutatott programozási nyelvet, valamint az eljárások létrehozásához és hibakereséséhez használt eszközöket. A Microsoft támogatási szakemberei segíthetnek elmagyarázni egy adott eljárás funkcionalitását, de nem módosítják a példákat, hogy további funkciókat biztosítsanak, és nem építenek ki eljárásokat az egyéni igényekre.

Megjegyzés: A gyorsjavítás telepítése előtt győződjön meg arról, hogy a Microsoft Navision-ügyfél összes felhasználója kijelentkezett a rendszerről. Ide tartoznak a Microsoft Navision Application Services (NAS) kliens felhasználói is. A gyorsjavítás telepítésekor csak Ön lehet az, aki be van jelentkezve.

A gyorsjavítás implementálásához fejlesztői licenccel kell rendelkeznie.

Javasoljuk, hogy a Windows Bejelentkezések ablakában vagy az Adatbázis-bejelentkezések ablakban látható felhasználói fiókhoz rendelje a "SUPER" szerepkörazonosítót. Ha a felhasználói fiókhoz nem rendelhető a "SUPER" szerepkörazonosító, ellenőriznie kell, hogy a felhasználói fiók rendelkezik-e az alábbi engedélyekkel:

  • A módosítani kívánt objektum Módosítás engedélye.
  • Végrehajtási engedély az 5210-es rendszerazonosítójú objektumhoz és a 9015-ös rendszerobjektum-azonosítójú objektumhoz.

                
Megjegyzés: Az adattárakhoz csak akkor kell jogokkal rendelkeznie, ha adatokat kell javítást végeznie.

Kódváltozások

Megjegyzés: Mindig ellenőrzött környezetben tesztelje a kódjavításokat, mielőtt telepítené őket az üzemi számítógépekre.
A probléma megoldásához hajtsa végre az alábbi lépéseket:

  1. Módosítsa a kódot a Sales-Post kódegységben (80) a következőképpen:
    Meglévő kód: 1

    …
              ("Line Amount" - "Inv. Discount Amount") /
              (TempVATAmountLine."Line Amount" - TempVATAmountLine."Invoice Discount Amount");
          END;
          "Amount Including VAT" :=
            ROUND(TempVATAmountLineRemainder."Amount Including VAT",Currency."Amount Rounding Precision");
          Amount :=
            ROUND("Amount Including VAT",Currency."Amount Rounding Precision") -
    …
    

    Helyettesítő kód 1

    …
              ("Line Amount" - "Inv. Discount Amount") /
              (TempVATAmountLine."Line Amount" - TempVATAmountLine."Invoice Discount Amount");
          END;
          IF "Line Discount %" <> 100 THEN
          "Amount Including VAT" :=
              ROUND(TempVATAmountLineRemainder."Amount Including VAT",Currency."Amount Rounding Precision")
          ELSE
            "Amount Including VAT" := 0;
          Amount :=
            ROUND("Amount Including VAT",Currency."Amount Rounding Precision") -
    …
    

    Meglévő 2. kód

    …
        END ELSE BEGIN
          IF "VAT Calculation Type" = "VAT Calculation Type"::"Full VAT" THEN BEGIN
            "Amount Including VAT" := "Line Amount" - "Inv. Discount Amount";
            Amount := 0;
            "VAT Base Amount" := 0;
          END ELSE BEGIN
    …
    

    2-es helyettesítő kód

    …
        END ELSE BEGIN
          IF "VAT Calculation Type" = "VAT Calculation Type"::"Full VAT" THEN BEGIN
            IF "Line Discount %" <> 100 THEN
              "Amount Including VAT" := "Line Amount" - "Inv. Discount Amount"
            ELSE
              "Amount Including VAT" := 0;
            Amount := 0;
            "VAT Base Amount" := 0;
          END ELSE BEGIN
    …
    

    Meglévő 3-as kód

    …
                ("Line Amount" - "Inv. Discount Amount") /
                (TempVATAmountLine."Line Amount" - TempVATAmountLine."Invoice Discount Amount");
            "Amount Including VAT" :=
              Amount + ROUND(TempVATAmountLineRemainder."VAT Amount",Currency."Amount Rounding Precision");
            TempVATAmountLineRemainder."VAT Amount" :=
              TempVATAmountLineRemainder."VAT Amount" - "Amount Including VAT" + Amount;
          END;
    …
    

    3-as helyettesítő kód

    …
                ("Line Amount" - "Inv. Discount Amount") /
                (TempVATAmountLine."Line Amount" - TempVATAmountLine."Invoice Discount Amount");
          IF "Line Discount %" <> 100 THEN
            "Amount Including VAT" :=
                Amount + ROUND(TempVATAmountLineRemainder."VAT Amount",Currency."Amount Rounding Precision")
            ELSE
              "Amount Including VAT" := 0;
            TempVATAmountLineRemainder."VAT Amount" :=
              TempVATAmountLineRemainder."VAT Amount" - "Amount Including VAT" + Amount;
          END;
    …
    
  2. Módosítsa a kódot a DivideAmount függvényben a Purch.-Postal Codeunit (90) értékben a következőképpen:
    Meglévő kód: 1

    …
              (TempVATAmountLine."Line Amount" - TempVATAmountLine."Invoice Discount Amount");
          END;
          "Amount Including VAT" :=
            ROUND(TempVATAmountLineRemainder."Amount Including VAT",Currency."Amount Rounding Precision");
          Amount :=
            ROUND("Amount Including VAT",Currency."Amount Rounding Precision") -
    …
    

    Helyettesítő kód 1

    …
              (TempVATAmountLine."Line Amount" - TempVATAmountLine."Invoice Discount Amount");
          END;
          IF "Line Discount %" <> 100 THEN
            "Amount Including VAT" :=
              ROUND(TempVATAmountLineRemainder."Amount Including VAT",Currency."Amount Rounding Precision")
          ELSE
            "Amount Including VAT" := 0;
          Amount :=
            ROUND("Amount Including VAT",Currency."Amount Rounding Precision") -
    …
    

    Meglévő 2. kód

    …
        END ELSE BEGIN
          IF "VAT Calculation Type" = "VAT Calculation Type"::"Full VAT" THEN BEGIN
            "Amount Including VAT" := "Line Amount" - "Inv. Discount Amount";
            Amount := 0;
            "VAT Base Amount" := 0;
          END ELSE BEGIN
    …
    

    2-es helyettesítő kód

    …
        END ELSE BEGIN
          IF "VAT Calculation Type" = "VAT Calculation Type"::"Full VAT" THEN BEGIN
            IF "Line Discount %" <> 100 THEN
              "Amount Including VAT" := "Line Amount" - "Inv. Discount Amount"
            ELSE
              "Amount Including VAT" := 0;
            Amount := 0;
            "VAT Base Amount" := 0;
          END ELSE BEGIN
    …
    

    Meglévő 3-as kód

    …
              ("Line Amount" - "Inv. Discount Amount") /
              (TempVATAmountLine."Line Amount" - TempVATAmountLine."Invoice Discount Amount");
            "Amount Including VAT" :=
              Amount + ROUND(TempVATAmountLineRemainder."VAT Amount",Currency."Amount Rounding Precision");
            TempVATAmountLineRemainder."VAT Amount" :=
              TempVATAmountLineRemainder."VAT Amount" - "Amount Including VAT" + Amount;
          END;
    …
    

    3-as helyettesítő kód

    …
              ("Line Amount" - "Inv. Discount Amount") /
              (TempVATAmountLine."Line Amount" - TempVATAmountLine."Invoice Discount Amount");
            IF "Line Discount %" <> 100 THEN
              "Amount Including VAT" :=
                Amount + ROUND(TempVATAmountLineRemainder."VAT Amount",Currency."Amount Rounding Precision")
            ELSE
              "Amount Including VAT" := 0;
            TempVATAmountLineRemainder."VAT Amount" :=
              TempVATAmountLineRemainder."VAT Amount" - "Amount Including VAT" + Amount;
          END;
    …
    
  3. Módosítsa a kódot a DivideAmount függvényben a Serv-Post Mgt. codeunit (5986) a következők szerint:
    Meglévő kód: 1

    …
              ("Line Amount" - "Inv. Discount Amount") /
              (TempVATAmountLine."Line Amount" - TempVATAmountLine."Invoice Discount Amount");
          END;
          "Amount Including VAT" :=
            ROUND(TempVATAmountLineRemainder."Amount Including VAT",Currency."Amount Rounding Precision");
          Amount :=
            ROUND("Amount Including VAT",Currency."Amount Rounding Precision") -
    …
    

    Helyettesítő kód 1

    …
              ("Line Amount" - "Inv. Discount Amount") /
              (TempVATAmountLine."Line Amount" - TempVATAmountLine."Invoice Discount Amount");
          END;
          IF "Line Discount %" <> 100 THEN
            "Amount Including VAT" :=
              ROUND(TempVATAmountLineRemainder."Amount Including VAT",Currency."Amount Rounding Precision")
          ELSE
            "Amount Including VAT" := 0;
          Amount :=
            ROUND("Amount Including VAT",Currency."Amount Rounding Precision") -
    …
    

    Meglévő 2. kód

    …
        END ELSE BEGIN
          IF "VAT Calculation Type" = "VAT Calculation Type"::"Full VAT" THEN BEGIN
            "Amount Including VAT" := "Line Amount" - "Inv. Discount Amount";
            Amount := 0;
            "VAT Base Amount" := 0;
          END ELSE BEGIN
    …
    

    2-es helyettesítő kód

    …
        END ELSE BEGIN
          IF "VAT Calculation Type" = "VAT Calculation Type"::"Full VAT" THEN BEGIN
            IF "Line Discount %" <> 100 THEN
              "Amount Including VAT" := "Line Amount" - "Inv. Discount Amount"
            ELSE
              "Amount Including VAT" := 0;
            Amount := 0;
            "VAT Base Amount" := 0;
          END ELSE BEGIN
    …
    

    Meglévő 3-as kód

    …
                ("Line Amount" - "Inv. Discount Amount") /
                (TempVATAmountLine."Line Amount" - TempVATAmountLine."Invoice Discount Amount");
            "Amount Including VAT" :=
              Amount + ROUND(TempVATAmountLineRemainder."VAT Amount",Currency."Amount Rounding Precision");
            TempVATAmountLineRemainder."VAT Amount" :=
              TempVATAmountLineRemainder."VAT Amount" - "Amount Including VAT" + Amount;
          END;
    …
    

    3-as helyettesítő kód

    …
                ("Line Amount" - "Inv. Discount Amount") /
                (TempVATAmountLine."Line Amount" - TempVATAmountLine."Invoice Discount Amount");
            IF "Line Discount %" <> 100 THEN
              "Amount Including VAT" :=
                Amount + ROUND(TempVATAmountLineRemainder."VAT Amount",Currency."Amount Rounding Precision")
            ELSE
              "Amount Including VAT" := 0;
            TempVATAmountLineRemainder."VAT Amount" :=
              TempVATAmountLineRemainder."VAT Amount" - "Amount Including VAT" + Amount;
          END;
    …
    

Előfeltételek

A gyorsjavítás alkalmazásához az alábbi termékek egyikének telepítve kell lennie:

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Microsoft Dynamics NAV 2009

                
              

Eltávolítással kapcsolatos információk

Ez a gyorsjavítás nem távolítható el.

Állapot

A Microsoft megerősítette, hogy ez egy olyan probléma a Microsoft-termékekben, amely az „Érintett szolgáltatás“ című szakaszban van felsorolva.

Megjegyzés: Ez egy "GYORS KÖZZÉTÉTELŰ" cikk, amelyet közvetlenül a Microsoft támogatási szervezete készített. A dokumentumban szereplő információkat adott formában bocsátjuk rendelkezésre, a felmerülő problémákra adott válaszként. A rendelkezésre bocsátás gyorsasága következtében az anyagok sajtóhibákat tartalmazhatnak, és bármikor, előzetes értesítés nélkül felülvizsgálhatók. További szempontokat a használati feltételekben talál.