Microsoft Dynamics NAV 2009'da yüzde 100 satır indirimi kullanan bir satış faturası, satınalma faturası veya hizmet faturası deftere naklettiğinizde "Defteri kebir girişi tablosunda tutarsızlıklara neden olacağından işlem tamamlanamıyor" hata iletisi

Uygulandığı Öğe
Dynamics NAV 2009 Service Pack 1 Dynamics NAV 2009

Bu makale tüm ülkelerde ve tüm dil yerel ayarlarında Microsoft Microsoft Dynamics için geçerlidir.

Belirtiler

Microsoft Dynamics NAV 2009'da yüzde 100 satır iskontosu olan bir satış faturası, bir satınalma faturası veya hizmet faturası oluşturduğunuzu varsayalım. Faturayı deftere naklettiğinizde aşağıdaki hata iletisini alırsınız:

Not

Defteri kebir Giriş tablosunda tutarsızlıklara neden olacağından işlem tamamlanamaz.
Hatanın nedenini bulmak için TUTARLILIK işlevinin işlemde nerede ve nasıl kullanıldığını kontrol edin.
Sistem yöneticinizle iletişime geçin.
Deftere nakil gibi kapsamlı görevler sırasında tablolar tutarsız olarak işaretlenebilir. Bu, verilerin yanlış güncelleştirilmesini önler.

Bu sorun aşağıdaki ürünlerde oluşur:

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

Çözüm

Düzeltme bilgileri

Artık Microsoft, desteklenen bir düzeltme sunmaktadır. Ancak, yalnızca bu makalede açıklanan sorunu düzeltmeye yöneliktir. Bunu yalnızca bu özel sorunun yaşandığı sistemlere uygulayın. Bu düzeltme için ek sınamalar gerekebilir. Bu nedenle, bu sorundan ciddi bir şekilde etkilenmiyorsanız, bir sonraki Microsoft Dynamics NAV 2009 hizmet paketini veya bu düzeltmeyi içeren bir sonraki Microsoft Dynamics NAV sürümünü beklemenizi öneririz.

Not Özel durumlarda, Microsoft Dynamics ve ilgili ürünler için bir Teknik Destek Uzmanı belirli bir güncelleştirmenin sorunu çözeceğini belirlerse, normalde destek aramaları için yapılan ücretler iptal edilebilir. Ek destek soruları ve söz konusu güncelleştirme için uygun olmayan sorunlara normal destek ücretleri uygulanır.

            
          

Yükleme bilgileri

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; açık veya zımni hiçbir garanti vermez. Bu, satılabilirlik veya belirli bir amaca uygunluk ile ilgili zımni garantileri içerir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama diline ve prosedürler oluşturmak ve prosedürlerde hata ayıklamak için kullanılan araçlara aşina olduğunuzu varsaymaktadır. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler.

Not Bu düzeltmeyi yüklemeden önce, tüm Microsoft Navision istemcisi kullanıcılarının sistem oturumunu kapattığını doğrulayın. Bu, Microsoft Navision Application Services (NAS) istemci kullanıcılarını içerir. Bu düzeltmeyi uyguladığınızda oturum açan tek istemci kullanıcı siz olmalısınız.

Bu düzeltmeyi uygulamak için bir geliştirici lisansınız olmalıdır.

Windows Oturum Açma veya Veritabanı Oturum Açma penceresindeki kullanıcı hesabına "SUPER" rol kimliğinin atanmasını öneririz. Kullanıcı hesabına "SUPER" rol kimliği atanamıyorsa, kullanıcı hesabının aşağıdaki izinlere sahip olduğunu doğrulamanız gerekir:

  • Değiştireceğiniz nesnenin Değiştirme izni.
  • Sistem Nesne Kimliği 5210 nesnesi ve Sistem Nesne Kimliği 9015 nesnesi için Yürütme izni.

                
Not: Veri onarımı gerçekleştirmeniz gerekmediği sürece, veri depoları üzerinde haklarınız olması gerekmez.

Kod değişiklikleri

Not: Kod düzeltmelerini üretim bilgisayarlarınıza uygulamadan önce her zaman denetimli bir ortamda sınayın.
Bu sorunu gidermek için aşağıdaki adımları izleyin:

  1. Sales-Post kod birimindeki (80) BölTutar işlevindeki kodu aşağıdaki gibi değiştirin:
    Mevcut kod 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") -
    …
    

    Değiştirme kodu 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") -
    …
    

    Mevcut kod 2

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

    Değiştirme kodu 2

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

    Mevcut kod 3

    …
                ("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;
    …
    

    Değiştirme kodu 3

    …
                ("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. Purch.-Post kod birimindeki (90) DivideAmount işlevindeki kodu aşağıdaki gibi değiştirin:
    Mevcut kod 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") -
    …
    

    Değiştirme kodu 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") -
    …
    

    Mevcut kod 2

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

    Değiştirme kodu 2

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

    Mevcut kod 3

    …
              ("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;
    …
    

    Değiştirme kodu 3

    …
              ("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. Serv-Post Mgt. kod birimindeki (5986) BölTutarı işlevindeki kodu aşağıdaki gibi değiştirin:
    Mevcut kod 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") -
    …
    

    Değiştirme kodu 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") -
    …
    

    Mevcut kod 2

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

    Değiştirme kodu 2

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

    Mevcut kod 3

    …
                ("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;
    …
    

    Değiştirme kodu 3

    …
                ("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;
    …
    

Önkoşullar

Bu düzeltmeyi uygulamak için aşağıdaki ürünlerden birini yüklemiş olmanız gerekir:

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

                
              

Kaldırma bilgileri

Bu düzeltmeyi kaldıramazsınız.

Durum

Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır.

Not: Bu, doğrudan Microsoft destek kuruluşu tarafından hazırlanmış bir "HIZLI YAYIMLAMA" makalesidir. Burada yer alan bilgiler acil sorunlar karşısında bu şekliyle verilir. Kullanıma sunma hızının bir sonucu olarak, materyaller yazım hataları içerebilir ve herhangi bir zamanda önceden haber verilmeksizin revize edilebilir. Göz önünde bulundurulması gereken diğer hususlar için Kullanım Koşulları'na bakın.