Microsoft Dynamics NAV 2009 Doğu Avrupa sürümünde bir satış siparişinde "Peşinat %" alanındaki değer değiştirmeye çalıştığınızda "Peşinat Fatura Satır arabellek tablosu boştur" hata iletisi


Bu makale Microsoft Dynamics NAV'a Doğu Avrupa (EE) dil yerel ayar için geçerlidir.

Belirtiler


Doğu Avrupa sürüm Microsoft Dynamics NAV 2009 Service Pack 1 (SP1) ve Microsoft Dynamics NAV 2009 R2'de aşağıdaki senaryoyu düşünün:
  • Bir peşinat kullanan bir satış siparişi var.
  • Avans mektubu yarat Daha sonra deftere naklet ve avans harf fatura.
  • Satış siparişi yeniden açın ve değeri başlığındaki Peşinat % alanını değiştirmek deneyin.
Bu senaryoda, aşağıdaki hata iletisini alırsınız:
Peşinat Fatura Satır arabellek tablosu boştur.

Düzeltmeleri aşağıdaki kbit uyguladıktan sonra bu sorun oluşur: KB2543219, KB2546451, KB2546490 ve KB2546498.
Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
2543219 ödemesini peşinat Doğu Avrupa Microsoft Dynamics NAV 2009 R2 sürümünde beklendiği gibi işleyemiyor
Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
2546451 "hiç müşteri yok. Microsoft Dynamics NAV 2009 Doğu Avrupa sürümünde kalan miktar satış siparişinin deftere nakletmeyi denediğinizde filtre içinde defter girişi"hata iletisi
Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
2546490 "Müş. Avans harf peşinat Microsoft Dynamics NAV 2009 Doğu Avrupa sürümü kullanan bir satış siparişi deftere nakletmeyi denediğinizde defter girişinin Giriş No [sayı] zaten var"hata iletisi
Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
2546498 Doğu Avrupa sürümünde Microsoft Dynamics NAV 2009 son satınalma faturası deftere nakledildikten sonra deftere nakledilen peşinat açık kalır

Çözüm


Düzeltme bilgileri

Artık Microsoft tarafından desteklenen bir düzeltme sağlanmaktadır. Ancak bunun yalnızca bu makalede anlatılan sorunu düzeltmesi amaçlanmıştır. Yalnızca bu özel sorunla karşılaşmış olan sistemlere uygulayın. Bu düzeltme ek sınama uygulanabilir. Bu nedenle, bu sorundan ciddi bir şekilde etkilenmiyorsanız, Microsoft Dynamics NAV 2009 sonraki hizmet paketini veya, bu düzeltmeyi içeren bir sonraki Microsoft Dynamics NAV sürümü için beklemek öneririz.

Not: Özel durumlarda, destek aramaları teknik destek uzmanı Microsoft Dynamics ve ilgili ürünlere yönelik iptal edilebilir çözeceğini giderleri belirleyen belirli bir güncelleştirmenin sorununuzu. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.



Yükleme bilgileri

Microsoft, programlama örneklerini yalnızca gösterim amacıyla zımni veya açık garanti olmadan sağlar. Bu, satılabilirlik veya belirli bir amaca uygunluk açısından zımni garantileri içerir ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini, yordamları oluşturmak ve yordamlardan hata ayıklamak için kullanılan araçları bildiğinizi varsayar. Microsoft destek mühendisleri belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilirler, ancak ilave işlevsellik sağlamak için bu örnekleri değiştirmezler veya belirli gereksinimlerinizi karşılayacak şekilde yordamları yapılandırmazlar.

Not: Bu düzeltmeyi yüklemeden önce tüm Microsoft Navision istemcisi kullanıcılar sistem oturum doğrulayın. Bu, Microsoft Navision uygulama Hizmetleri (NAS) istemci kullanıcıları içerir. Bu düzeltmeyi uyguladığınızda yalnızca istemci kullanıcının oturum açmış olması gerekir.

Bu düzeltmeyi uygulamak için bir geliştirici lisansı olması gerekir.

Kullanıcı hesabının Windows oturumu açma penceresini veya veritabanı oturumu açma penceresi "Süper" rol kimliği atanması öneririz Kullanıcı hesabı "Süper" rol Kimliği atanamaz, kullanıcı hesabı aşağıdaki izinlere sahip olduğunu doğrulamanız gerekir:
  • Nesnenin, değiştirme değişiklik yapma izni.
  • Execute izni Sistem nesne kimliği 5210 nesnenin ve nesne kimliği 9015 sistem nesnesi için.


Not: Veri onarım gerçekleştirmek zorunda sürece veri depoları haklarına sahip olmanız gerekmez.

Kod değişiklikleri

Not: Her zaman, uygulamadan önce test kodu denetimli bir ortamda üretim bilgisayarlarınıza düzeltmeler giderir.
Bu sorunu gidermek için şu adımları izleyin:
  1. Satış sonrası Peşinatları kod (442) UpdateVATOnLines işlevinde kodu aşağıdaki gibi değiştirin:
    Varolan kodu
    ...     ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision");
    "Prepmt. VAT Base Amt." := NewVATBaseAmount;

    // Delete the following lines.
    IF SalesHeader."Prices Including VAT" THEN
    "Prepmt. Line Amount" := "Prepmt. Amt. Incl. VAT"
    ELSE
    "Prepmt. Line Amount" :=
    ROUND(
    "Prepmt. Amt. Incl. VAT" / (1 + "VAT %" / 100),
    Currency."Amount Rounding Precision");
    // End of the deleted lines.

    IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN
    VATDifference := 0
    ELSE
    ...
    Kod değiştirme
    ...   ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision");
    "Prepmt. VAT Base Amt." := NewVATBaseAmount;

    IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN
    VATDifference := 0
    ELSE
    ...
  2. Satınalma-Post Peşinatları kod (444) UpdateVATOnLines işlevinde kodu aşağıdaki gibi değiştirin:
    Varolan kodu
    ...     ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision");
    "Prepmt. VAT Base Amt." := NewVATBaseAmount;

    // Delete the following lines.
    IF PurchHeader."Prices Including VAT" THEN
    "Prepmt. Line Amount" := "Prepmt. Amt. Incl. VAT"
    ELSE
    "Prepmt. Line Amount" :=
    ROUND(
    "Prepmt. Amt. Incl. VAT" / (1 + "VAT %" / 100),
    Currency."Amount Rounding Precision");
    // End of the deleted lines.

    IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN
    VATDifference := 0
    ELSE
    ...
    Kod değiştirme
    ...   ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision");
    "Prepmt. VAT Base Amt." := NewVATBaseAmount;

    IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN
    VATDifference := 0
    ELSE
    ...
  3. Satış sonrası ilerler kod (26585) PostInvoiceCorrection işlevinde kodu aşağıdaki gibi değiştirin:
    Aşağıdaki genel değişkeni silin:
    • Adı: SumAmountToApply
    • Veri türü: ondalık

    Aşağıdaki genel değişkeni ekleyin:
    • Adı: TempLineRelation
    • DataType:TEMPORARY kaydı (26592)
    :
    Varolan kodu
    ... GLSetup.GET;
    SalesSetup.GET;
    LinkedAdvanceEntry.DELETEALL;

    SalesLine.RESET;
    SalesLine.SETRANGE("Document Type",SalesHeader."Document Type");
    ...
    Kod değiştirme
    ...  GLSetup.GET;
    SalesSetup.GET;
    LinkedAdvanceEntry.DELETEALL;

    // Add the following line.
    TempLineRelation.DELETEALL;

    SalesLine.RESET;
    SalesLine.SETRANGE("Document Type",SalesHeader."Document Type");
    ...
  4. Satış sonrası ilerler kod (26585) PostInvLineCorrection işlevinde kodu aşağıdaki gibi değiştirin:
    Varolan kodu
    ... LineRelation."Deducted Amount" := LineRelation."Deducted Amount" + AmountToDeduct;
    LineRelation.MODIFY;

    // Delete the following line.
    CalcLinkedPmtAmountToApply(LetterLine,AmountToDeduct,LinkedAdvanceEntry);
    IF LetterLine."VAT Amount" <> 0 THEN // NO VAT handling
    PostVATCorrection(
    LetterLine,SalesInvHeader,AmountToDeduct,DocNoForVATCorr,VATAmount,GenJnlPostLine,TempJnlLineDim);
    ...
    Kod değiştirme
    ... LineRelation."Deducted Amount" := LineRelation."Deducted Amount" + AmountToDeduct;
    LineRelation.MODIFY;

    // Add the following lines.
    CalcLinkedPmtAmountToApply(
    LetterLine,
    AmountToDeduct,
    LinkedAdvanceEntry,
    RetrieveSumAmountToApply(LineRelation,AmountToDeduct));
    //End of the added lines.

    IF LetterLine."VAT Amount" <> 0 THEN // NO VAT handling
    PostVATCorrection(
    LetterLine,SalesInvHeader,AmountToDeduct,DocNoForVATCorr,VATAmount,GenJnlPostLine,TempJnlLineDim);
    ...
  5. Satış sonrası ilerler kod (26585) CalcLinkedPmtAmountToApply işlevinde kodu aşağıdaki gibi değiştirin:
    Aşağıdaki parametreyi ekleyin:
    • Adı: SumAmountToApply
    • Veri türü: ondalık

    Varolan kodu
    ... // Delete the following line .      
    SumAmountToApply := SumAmountToApply + TotalAmountToApply;

    IF TotalAmountToApply = 0 THEN
    EXIT;
    SetCurrencyPrecision(LetterLine."Currency Code");
    ...
    Kod değiştirme
    ... IF TotalAmountToApply = 0 THEN
    EXIT;
    SetCurrencyPrecision(LetterLine."Currency Code");
    ...
  6. Satış sonrası ilerler kod (26585) UpdateOrderLine işlevinde kodu aşağıdaki gibi değiştirin:
    Varolan kodu 1
    ...   LineRelation.SETRANGE(Type,LineRelation.Type::Sale);
    LineRelation.SETRANGE("Order No.",SalesLine."Document No.");
    LineRelation.SETRANGE("Order Line No.",SalesLine."Line No.");
    // Delete the following line
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");

    SalesLine."Prepmt. Amount Inv. Incl. VAT" := LineRelation."Invoiced Amount";
    IF PricesInclVAT THEN BEGIN
    ...
    Değiştirme kodu 1
    ... LineRelation.SETRANGE(Type,LineRelation.Type::Sale);
    LineRelation.SETRANGE("Order No.",SalesLine."Document No.");
    LineRelation.SETRANGE("Order Line No.",SalesLine."Line No.");
    // Add the following line
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount",Amount,"Requested Amount");

    SalesLine."Prepmt. Amount Inv. Incl. VAT" := LineRelation."Invoiced Amount";
    IF PricesInclVAT THEN BEGIN
    ...
    Varolan kodu 2
    ...        SalesLine."Prepayment VAT %" / (100 + SalesLine."Prepayment VAT %"),
    Currency."Amount Rounding Precision");
    END ELSE BEGIN
    // Delete the following lines.
    SalesLine."Prepmt. Amt. Inv." :=
    ROUND(LineRelation."Invoiced Amount" / (1 + SalesLine."Prepayment VAT %" / 100),
    Currency."Amount Rounding Precision");
    // End of the deleted lines.
    SalesLine."Prepmt. VAT Amount Inv." :=
    SalesLine."Prepmt. Amount Inv. Incl. VAT" - SalesLine."Prepmt. Amt. Inv.";
    END;
    ...
    Değiştirme kodu 2
    ...        SalesLine."Prepayment VAT %" / (100 + SalesLine."Prepayment VAT %"),
    Currency."Amount Rounding Precision");
    END ELSE BEGIN
    // Add the following lines.
    IF LineRelation."Invoiced Amount" = LineRelation.Amount THEN
    SalesLine."Prepmt. Amt. Inv." := LineRelation."Requested Amount"
    ELSE
    SalesLine."Prepmt. Amt. Inv." :=
    ROUND(LineRelation."Invoiced Amount" / (1 + SalesLine."Prepayment VAT %" / 100),
    Currency."Amount Rounding Precision");
    //End of the added lines.
    SalesLine."Prepmt. VAT Amount Inv." :=
    SalesLine."Prepmt. Amount Inv. Incl. VAT" - SalesLine."Prepmt. Amt. Inv.";
    END;
    ...
  7. Satış sonrası ilerler kod (26585) UpdateLineRelations işlevinde kodu aşağıdaki gibi değiştirin:
    Varolan kodu
    ...   LineRelation.SETRANGE("Letter No.",LetterLine."Letter No.");
    LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No.");
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");
    ...
    Kod değiştirme
    ...// Add the following line
    LineRelation.SETRANGE(Type,LineRelation.Type::Sale);

    LineRelation.SETRANGE("Letter No.",LetterLine."Letter No.");
    LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No.");
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");
    ...
  8. RetrieveSumAmountToApply yordamı Satış sonrası ilerler kod (26585) aşağıdaki gibi oluşturun:
    LOCAL PROCEDURE RetrieveSumAmountToApply@1470050(LineRelation@1470000 : Record 26592;AmountToDeduct@1470001 : Decimal) : Decimal;  BEGIN
    WITH TempLineRelation DO BEGIN
    RESET;
    SETRANGE("Order No.",LineRelation."Order No.");
    SETRANGE("Letter No.",LineRelation."Letter No.");
    IF NOT FINDFIRST THEN BEGIN
    INIT;
    "Order No." := LineRelation."Order No.";
    "Letter No." := LineRelation."Letter No.";
    Amount := AmountToDeduct;
    INSERT;
    END ELSE BEGIN
    Amount := Amount + AmountToDeduct;
    MODIFY;
    END;
    EXIT(Amount);
    END;
    END;

  9. Satınalma-Post ilerler kod (26586) PostInvoiceCorrection işlevinde kodu aşağıdaki gibi değiştirin:
    Aşağıdaki genel değişkeni silin:
    • Adı: SumAmountToApply
    • Veri türü: ondalık

    Aşağıdaki genel değişkeni ekleyin:
    • Adı: TempLineRelation
    • Veri türü: Geçici bir kayıt (26592)

    Varolan kodu
    ... GLSetup.GET;
    PurchSetup.GET;
    LinkedAdvanceEntry.DELETEALL;

    PurchLine.RESET;
    PurchLine.SETRANGE("Document Type",PurchHeader."Document Type");
    ...
    Kod değiştirme
    ...  GLSetup.GET;
    PurchSetup.GET;
    LinkedAdvanceEntry.DELETEALL;
    // Add the following line
    TempLineRelation.DELETEALL;

    PurchLine.RESET;
    PurchLine.SETRANGE("Document Type",PurchHeader."Document Type");
    ...
  10. Satınalma-Post ilerler kod (26586) PostInvLineCorrection işlevinde kodu aşağıdaki gibi değiştirin:
    Varolan kodu
    ...   LineRelation."Deducted Amount" := LineRelation."Deducted Amount" + AmountToDeduct;
    LineRelation.MODIFY;
    // Delete the following line.
    CalcLinkedPmtAmountToApply(LetterLine,AmountToDeduct,LinkedAdvanceEntry);
    IF LetterLine."VAT Amount" <> 0 THEN // NO VAT handling
    PostVATCorrection(
    LetterLine,PurchInvHeader,AmountToDeduct,DocNoForVATCorr,VATAmount,GenJnlPostLine,TempJnlLineDim);
    ...
    Kod değiştirme
    ... LineRelation."Deducted Amount" := LineRelation."Deducted Amount" + AmountToDeduct;
    LineRelation.MODIFY;
    // Add the following lines.
    CalcLinkedPmtAmountToApply(
    LetterLine,
    AmountToDeduct,
    LinkedAdvanceEntry,
    RetrieveSumAmountToApply(LineRelation,AmountToDeduct));
    //End of the added lines.
    IF LetterLine."VAT Amount" <> 0 THEN // NO VAT handling
    PostVATCorrection(
    LetterLine,PurchInvHeader,AmountToDeduct,DocNoForVATCorr,VATAmount,GenJnlPostLine,TempJnlLineDim);
    ...
  11. Satınalma-Post ilerler kod (26586) CalcLinkedPmtAmountToApply işlevinde kodu aşağıdaki gibi değiştirin:
    İşleve aşağıdaki parametreyi ekleyin:
    • Adı: SumAmountToApply
    • Veri türü: ondalık

    Varolan kodu
    ...   IF TotalAmountToApply = 0 THEN
    EXIT;
    // Delete the following lines.
    SumAmountToApply := SumAmountToApply + TotalAmountToApply;
    // End of the deleted lines.

    SetCurrencyPrecision(LetterLine."Currency Code");
    Link.SETRANGE("Entry Type",Link."Entry Type"::"Link To Letter");
    ...
    Kod değiştirme
    ... IF TotalAmountToApply = 0 THEN
    EXIT;

    SetCurrencyPrecision(LetterLine."Currency Code");
    Link.SETRANGE("Entry Type",Link."Entry Type"::"Link To Letter");
    ...
  12. Satınalma-Post ilerler kod (26586) UpdateOrderLine işlevinde kodu aşağıdaki gibi değiştirin:
    Varolan kodu 1
    ...   LineRelation.SETRANGE(Type,LineRelation.Type::Purchase);
    LineRelation.SETRANGE("Order No.",PurchLine."Document No.");
    LineRelation.SETRANGE("Order Line No.",PurchLine."Line No.");
    // Delete the following line.
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");

    PurchLine."Prepmt. Amount Inv. Incl. VAT" := LineRelation."Invoiced Amount";
    IF PricesInclVAT THEN BEGIN
    ...
    Değiştirme kodu 1
    ...  LineRelation.SETRANGE(Type,LineRelation.Type::Purchase);
    LineRelation.SETRANGE("Order No.",PurchLine."Document No.");
    LineRelation.SETRANGE("Order Line No.",PurchLine."Line No.");
    // Add the following line.
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount",Amount,"Requested Amount");

    PurchLine."Prepmt. Amount Inv. Incl. VAT" := LineRelation."Invoiced Amount";
    IF PricesInclVAT THEN BEGIN
    ...

    Varolan kodu 2
    ...         PurchLine."Prepayment VAT %" / (100 + PurchLine."Prepayment VAT %"),
    Currency."Amount Rounding Precision");
    END ELSE BEGIN
    // Delete the following lines.
    PurchLine."Prepmt. Amt. Inv." :=
    ROUND(LineRelation."Invoiced Amount" / (1 + PurchLine."Prepayment VAT %" / 100),
    Currency."Amount Rounding Precision");
    // End of the deleted lines.
    PurchLine."Prepmt. VAT Amount Inv." :=
    PurchLine."Prepmt. Amount Inv. Incl. VAT" - PurchLine."Prepmt. Amt. Inv.";
    END;
    ...
    Değiştirme kodu 2
    ...       PurchLine."Prepayment VAT %" / (100 + PurchLine."Prepayment VAT %"),
    Currency."Amount Rounding Precision");
    END ELSE BEGIN
    // Add the following lines.
    IF LineRelation."Invoiced Amount" = LineRelation.Amount THEN
    PurchLine."Prepmt. Amt. Inv." := LineRelation."Requested Amount"
    ELSE
    PurchLine."Prepmt. Amt. Inv." :=
    ROUND(LineRelation."Invoiced Amount" / (1 + PurchLine."Prepayment VAT %" / 100),
    Currency."Amount Rounding Precision");
    // End of the added lines.
    PurchLine."Prepmt. VAT Amount Inv." :=
    PurchLine."Prepmt. Amount Inv. Incl. VAT" - PurchLine."Prepmt. Amt. Inv.";
    END;
    ...
  13. Satınalma-Post ilerler kod (26586) UpdateLineRelations işlevinde kodu aşağıdaki gibi değiştirin:
    Varolan kodu
    ...  LineRelation.SETRANGE("Letter No.",LetterLine."Letter No.");
    LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No.");
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");
    ...
    Kod değiştirme
    ...// Add the following line.
    LineRelation.SETRANGE(Type,LineRelation.Type::Purchase);
    // End of the added line.

    LineRelation.SETRANGE("Letter No.",LetterLine."Letter No.");
    LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No.");
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");
    ...
  14. RetrieveSumAmountToApply yordamı içinde İlerler satınalma posta kod (26586) aşağıdaki gibi oluşturun:
     LOCAL PROCEDURE RetrieveSumAmountToApply@1470048(LineRelation@1470000 : Record 26592;AmountToDeduct@1470001 : Decimal) : Decimal;  BEGIN
    WITH TempLineRelation DO BEGIN
    RESET;
    SETRANGE("Order No.",LineRelation."Order No.");
    SETRANGE("Letter No.",LineRelation."Letter No.");
    IF NOT FINDFIRST THEN BEGIN
    INIT;
    "Order No." := LineRelation."Order No.";
    "Letter No." := LineRelation."Letter No.";
    Amount := AmountToDeduct;
    INSERT;
    END ELSE BEGIN
    Amount := Amount + AmountToDeduct;
    MODIFY;
    END;
    EXIT(Amount);
    END;
    END;

Önkoşullar

Bu düzeltmeyi uygulamak için aşağıdaki ürünlerden birine sahip olmalıdır:
  • Doğu Avrupa Microsoft Dynamics NAV 2009 Service Pack 1 sürümü
  • Microsoft Dynamics NAV 2009 R2 Doğu Avrupa sürümü
Not: Bu düzeltmeyi uygulamak için aşağıdaki KB düzeltmeleri uygulama: KB2543219, KB2546451, KB2546490 ve KB2546498.

Kaldırma bilgileri

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

Durum


Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.

Başvurular


SE VSTF DynamicsNAV: 261669
Not: Bu, doğrudan Microsoft destek kuruluşu bünyesinde oluşturulan bir "HIZLI YAYIN" makalesidir. Burada yer alan bilgiler, oluşan sorunlara yanıt olarak olduğu gibi sağlanmıştır. Makale hızla kullanıma sunulduğu için materyallerde yazım hataları olabilir ve materyaller bildirilmeksizin herhangi bir zamanda revize edilebilir. Diğer konular için bkz. Kullanım koşulları.