Satıcıyı Öner ÖdemelerÖdemeler raporu (393), Microsoft Dynamics NAV 2009 R2'de Satıcı Öncelikleri ayarı etkinleştirildiğinde beklenmedik bir şekilde eksi bakiyesi olan bir satıcı için ödeme yapılmasını önerir

Uygulandığı Öğe
Dynamics NAV 2009

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

Belirtiler

Microsoft Dynamics NAV 2009 R2'de düzeltme 2623584 uyguladığınızı varsayalım. Satıcı Öncelikleri ayarının etkinleştirildiği Satıcı Öner PaymentsÖdemeler raporunu (393) çalıştırdığınızda, Satıcıyı Öner PaymentsÖdemeler raporu (393), beklenmedik bir şekilde eksi bakiyesi olan bir satıcı için ödeme önerir.
  Düzeltme 2623584 hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

2623584 "Satıcı Ödemeler Öner" raporu (393), Microsoft Dynamics NAV'da Satıcı Öncelikleri'ni kullanırsanız beklenmedik bir şekilde ödeme olarak eksi bakiye önerir

Çö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 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. Suggest Vendor PaymentsÖdemeler raporuna (393) genel bir değişken ekleyin ve ardından değişkeni aşağıdaki gibi belirtin:

    • Adı: VendorBalance@1065
    • Veri Türü: Ondalık
  2. Satıcı Öner ÖdemelerÖdemeler raporundaki (393) Satıcı - OnAfterGetRecord tetikleyicisindeki kodu aşağıdaki gibi değiştirin:
    Mevcut kod

    ...
    // Delete the following lines.
    IF StopPayments THEN
    CurrReport.BREAK;
    Window.UPDATE(1,"No.");
    GetVendLedgEntries(TRUE,FALSE);
    GetVendLedgEntries(FALSE,FALSE);
    CheckAmounts(FALSE);
    ClearNegative;
    // End of the lines.
    ...
    

    Değişim kodu

    ...
    // Add the following lines.
    CLEAR(VendorBalance);
    CALCFIELDS("Balance (LCY)");
    VendorBalance := "Balance (LCY)";
    IF StopPayments THEN
    CurrReport.BREAK;
    Window.UPDATE(1,"No.");
    IF VendorBalance > 0 THEN BEGIN
    GetVendLedgEntries(TRUE,FALSE);
    GetVendLedgEntries(FALSE,FALSE);
    CheckAmounts(FALSE);
    ClearNegative;
    END;
    // End of the lines.
    ...
    
  3. Satıcıyı Öner PaymentsÖdemeler raporundaki (393) Satıcı - OnPostDataItem tetikleyicisindeki kodu aşağıdaki gibi değiştirin:
    Mevcut kod

    ...
    COPYFILTERS(Vend2);
    SETCURRENTKEY(Priority);
    SETRANGE(Priority,0);
    IF FIND('-') THEN
    REPEAT
    
    // Delete the following lines.
    Window.UPDATE(1,"No.");
    GetVendLedgEntries(TRUE,FALSE);
    GetVendLedgEntries(FALSE,FALSE);
    CheckAmounts(FALSE);
    ClearNegative;
    // End of the lines.
    
    UNTIL (NEXT = 0) OR StopPayments;
    END;
    IF UsePaymentDisc AND NOT StopPayments THEN BEGIN
    RESET;
    COPYFILTERS(Vend2);
    Window.OPEN(Text007);
    IF FIND('-') THEN
    REPEAT
    
    // Delete the following lines.
    Window.UPDATE(1,"No.");
    PayableVendLedgEntry.SETRANGE("Vendor No.","No.");
    GetVendLedgEntries(TRUE,TRUE);
    GetVendLedgEntries(FALSE,TRUE);
    CheckAmounts(TRUE);
    UNTIL (NEXT = 0) OR StopPayments;
    END;
    ClearNegative;
    // End of the lines.
    
    JnlLineDim.LOCKTABLE;
    ...
    

    Değişim kodu

    ...
    COPYFILTERS(Vend2);
    SETCURRENTKEY(Priority);
    SETRANGE(Priority,0);
    IF FIND('-') THEN
    REPEAT
    
    // Add the following lines.
    CLEAR(VendorBalance);
    CALCFIELDS("Balance (LCY)");
    VendorBalance := "Balance (LCY)";
    IF VendorBalance > 0 THEN BEGIN
    Window.UPDATE(1,"No.");
    GetVendLedgEntries(TRUE,FALSE);
    GetVendLedgEntries(FALSE,FALSE);
    CheckAmounts(FALSE);
    ClearNegative;
    END;
    // End of the lines.
    
    UNTIL (NEXT = 0) OR StopPayments;
    END;
    IF UsePaymentDisc AND NOT StopPayments THEN BEGIN
    RESET;
    COPYFILTERS(Vend2);
    Window.OPEN(Text007);
    IF FIND('-') THEN
    REPEAT
    
    // Add the following lines.
    CLEAR(VendorBalance);
    CALCFIELDS("Balance (LCY)");
    VendorBalance := "Balance (LCY)";
    Window.UPDATE(1,"No.");
    PayableVendLedgEntry.SETRANGE("Vendor No.","No.");
    IF VendorBalance > 0 THEN BEGIN
    GetVendLedgEntries(TRUE,TRUE);
    GetVendLedgEntries(FALSE,TRUE);
    CheckAmounts(TRUE);
    ClearNegative;
    END;
    UNTIL (NEXT = 0) OR StopPayments;
    END ELSE
    IF FIND('-') THEN
    REPEAT
    ClearNegative;
    UNTIL NEXT = 0;
    // End of the lines.
    
    JnlLineDim.LOCKTABLE;
    ...
    
  4. Suggest Vendor PaymentsÖdemeler raporundaki (393) ClearNegative fonksiyonundaki kodu aşağıdaki gibi değiştirin:
    Mevcut kod

    ...
    CLEAR(PayableVendLedgEntry);
    PayableVendLedgEntry.SETRANGE("Vendor No.",Vendor."No.");
    WHILE PayableVendLedgEntry.NEXT <> 0 DO BEGIN
    TempCurrency.Code := PayableVendLedgEntry."Currency Code";
    CurrencyBalance := 0;
    
    // Delete the following line.
    PayableVendLedgEntry2 := PayableVendLedgEntry;
    
    IF TempCurrency.INSERT THEN BEGIN
    PayableVendLedgEntry.SETRANGE("Currency Code",PayableVendLedgEntry."Currency Code");
    REPEAT
    CurrencyBalance := CurrencyBalance + PayableVendLedgEntry."Amount (LCY)"
    UNTIL PayableVendLedgEntry.NEXT = 0;
    IF CurrencyBalance < 0 THEN
    PayableVendLedgEntry.DELETEALL;
    PayableVendLedgEntry.SETRANGE("Currency Code");
    PayableVendLedgEntry := PayableVendLedgEntry2;
    END;
    END;
    PayableVendLedgEntry.RESET;
    ...
    

    Değişim kodu

    ...
    CLEAR(PayableVendLedgEntry);
    PayableVendLedgEntry.SETRANGE("Vendor No.",Vendor."No.");
    WHILE PayableVendLedgEntry.NEXT <> 0 DO BEGIN
    TempCurrency.Code := PayableVendLedgEntry."Currency Code";
    CurrencyBalance := 0;
    IF TempCurrency.INSERT THEN BEGIN
    PayableVendLedgEntry.SETRANGE("Currency Code",PayableVendLedgEntry."Currency Code");
    REPEAT
    CurrencyBalance := CurrencyBalance + PayableVendLedgEntry."Amount (LCY)"
    UNTIL PayableVendLedgEntry.NEXT = 0;
    IF CurrencyBalance < 0 THEN
    PayableVendLedgEntry.DELETEALL;
    PayableVendLedgEntry.SETRANGE("Currency Code");
    PayableVendLedgEntry := PayableVendLedgEntry2;
    END;
    END;
    PayableVendLedgEntry.RESET;
    ...
    

Önkoşullar

Bu düzeltmeyi uygulamak için Microsoft Dynamics NAV 2009 R2 yüklü olmalıdır.

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.