Nilai pada kolom "Jumlah sisa" di buku catatan yang dibuat untuk faktur tidak benar meskipun Anda menerapkan perbaikan terbaru 975264 di Microsoft Dynamics NAV 2009


Artikel ini berlaku untuk Microsoft Dynamics NAV untuk semua negara dan semua bahasa lokal.

Gejala


Pertimbangkan skenario berikut ini di Microsoft Dynamics NAV 2009:
  • Anda menerapkan perbaikan terbaru 975264.
    Untuk informasi selengkapnya tentang hotfix 975264, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
    975264 nilai pada kolom "Jumlah sisa" di buku catatan yang dibuat untuk pembayaran tidak benar di Microsoft Dynamics NAV
  • Anda memasukkan nilai di Appln. Mengumpulkan presisi di tab aplikasi di kotak dialog Penataan Buku umum .
  • Anda mengirim faktur penjualan.
  • Anda mengirim jurnal tanda terima kas untuk penjualan faktur.
Dalam skenario ini, nilai dalam kolom Jumlah sisa di entri buku yang bersangkutan tidak benar. Tidak ada nilai yang akan ditampilkan di kolom Jumlah yang tersisa .
Masalah ini terjadi di dalam produk berikut ini:
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Pemecahan masalah


Informasi Hotfix

Sekarang tersedia hotfix yang didukung dari Microsoft. Namun, hanya ditujukan untuk memperbaiki masalah yang dijelaskan di artikel ini. Terapkan hanya ke sistem yang mengalami masalah khusus ini. Perbaikan terbaru ini dapat menerima pengujian tambahan. Oleh karena itu, jika Anda tidak terlalu dipengaruhi oleh masalah ini, kami sarankan Anda menunggu paket layanan Microsoft Dynamics NAV atau versi Microsoft Dynamics NAV berikutnya yang berisi perbaikan terbaru ini.

Catatan Dalam kasus tertentu, biaya yang biasanya diadakan untuk panggilan mungkin dibatalkan apabila profesional dukungan teknis untuk Microsoft Dynamics dan produk-produk terkait dukungan menentukan bahwa pembaruan khusus akan memecahkan masalah Anda. Biaya dukungan biasa akan berlaku untuk pertanyaan dan masalah yang tidak termasuk pada pembaruan tertentu yang dimaksud dukungan tambahan.


Informasi penginstalan

Microsoft menyediakan contoh pemrogaman hanya untuk ilustrasi, tanpa garansi baik tersurat maupun tersirat. Ini mencakup, namun tidak terbatas pada, garansi yang tersirat dapat diperjualbelikan atau kesesuaian untuk tujuan tertentu. Artikel ini menganggap bahwa Anda sudah terbiasa dengan bahasa pemrograman yang ditunjukkan dan terbiasa dengan alat-alat yang digunakan untuk membuat dan prosedur debug. Teknisi dukungan Microsoft dapat membantu menjelaskan fungsionalitas prosedur tertentu, namun mereka tidak akan mengubah contoh tersebut untuk memberikan fungsionalitas tambahan atau menyusun prosedur untuk memenuhi persyaratan khusus Anda.

Catatan Sebelum Anda menginstal perbaikan terbaru ini, verifikasi bahwa semua pengguna klien Microsoft Navision log off sistem. Ini termasuk Microsoft Navision aplikasi Layanan (NAS) klien pengguna. Anda harus klien hanya pengguna yang masuk saat Anda menerapkan perbaikan terbaru ini.

Untuk menerapkan hotfix ini, Anda harus memiliki lisensi pengembang.

Kami menyarankan bahwa akun pengguna di jendela login Windows atau jendela login Database ditetapkan id peran "SUPER" Jika account pengguna tidak dapat menetapkan ID peran "SUPER", Anda harus memverifikasi bahwa account pengguna yang memiliki izin berikut ini:
  • Ubah izin untuk objek yang Anda akan berubah.
  • Izin eksekusi untuk objek sistem objek ID 5210 dan sistem objek ID 9015 objek.


Catatan Anda tidak harus memiliki hak untuk penyimpanan data kecuali jika Anda harus melakukan perbaikan data.

Perubahan kode

Catatan Selalu menguji kode perbaikan di lingkungan yang dikontrol sebelum menerapkan perbaikan untuk komputer produksi.
Untuk mengatasi masalah ini, ikuti langkah-langkah berikut:
  1. Ubah kode di memicu PostCust dalam Kejadian Jnl.-posting baris codeunit (12) sebagai berikut:
    Kode yang ada
    ...// Post the application
    ApplyCustLedgEntry(

    // Delete the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,GLSetup."Appln. Rounding Precision");

    // Post customer entry
    ...
    Penggantian kode
    ...// Post the application
    ApplyCustLedgEntry(

    // Add the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine);

    // Post customer entry
    ...
  2. Ubah kode di memicu PostVend dalam Kejadian Jnl.-posting baris codeunit (12) sebagai berikut:
    Kode yang ada
    ...// Post the application
    ApplyVendLedgEntry(

    // Delete the following lines.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,
    GLSetup."Appln. Rounding Precision");
    // End of the lines.

    // Post Vendor entry
    ...
    Penggantian kode
    ...// Post the application
    ApplyVendLedgEntry(

    // Add the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine);

    // Post Vendor entry
    ...
  3. Menambahkan parameter lokal baru di ApplyCustLedgEntry fungsi dalam Kejadian Jnl.-posting baris codeunit (12), dan kemudian Tentukan parameter sebagai berikut:
    • Var: No
    • Nama: ApplnRoundingPrecision
    • DataType: desimal
  4. Menambahkan variabel lokal baru di ApplyCustLedgEntry fungsi dalam Kejadian Jnl.-posting baris codeunit (12), kemudian tetapkan variabel sebagai berikut:
    • Nama: ApplnRoundingPrecision
    • DataType: desimal
  5. Ubah kode di ApplyCustLedgEntry fungsi dalam Kejadian Jnl.-posting baris codeunit (12) sebagai berikut:
    Kode yang ada 1
    ...NewCVLedgEntryBuf2 := NewCVLedgEntryBuf;

    // Delete the following lines.
    IF NewCVLedgEntryBuf."Currency Code" <> '' THEN BEGIN
    Management of application of already posted entries
    IF NewCVLedgEntryBuf."Currency Code" <> ApplnCurrency.Code THEN
    ApplnCurrency.GET(NewCVLedgEntryBuf."Currency Code");
    ApplnRoundingPrecision := ApplnCurrency."Appln. Rounding Precision";
    END ELSE
    ApplnRoundingPrecision := GLSetup."Appln. Rounding Precision";
    // End of the lines.

    ApplyingDate := GenJnlLine."Posting Date";

    IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN
    ...
    Penggantian kode 1
    ...NewCVLedgEntryBuf2 := NewCVLedgEntryBuf;

    ApplyingDate := GenJnlLine."Posting Date";

    IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN
    ...
    Kode yang ada 2
    ...// Management of posting in multiple currencies
    OldCVLedgEntryBuf2 := OldCVLedgEntryBuf;
    OldCVLedgEntryBuf.COPYFILTER(Positive,OldCVLedgEntryBuf2.Positive);

    IF NewCVLedgEntryBuf."Currency Code" <> OldCVLedgEntryBuf2."Currency Code" THEN BEGIN

    ...
    Penggantian kode 2
    ...// Management of posting in multiple currencies
    OldCVLedgEntryBuf2 := OldCVLedgEntryBuf;
    OldCVLedgEntryBuf.COPYFILTER(Positive,OldCVLedgEntryBuf2.Positive);

    // Add the following line.
    GetApplnRoundPrecision(ApplnRoundingPrecision,NewCVLedgEntryBuf,OldCVLedgEntryBuf);

    IF NewCVLedgEntryBuf."Currency Code" <> OldCVLedgEntryBuf2."Currency Code" THEN BEGIN
    ...
  6. Ubah kode di CustPostApplyCustLedgEntry fungsi dalam Kejadian Jnl.-posting baris codeunit (12) sebagai berikut:
    Kode yang ada
    ...// Post the application
    CustLedgEntry.CALCFIELDS(
    Amount,"Amount (LCY)","Remaining Amount","Remaining Amt. (LCY)",
    "Original Amount","Original Amt. (LCY)");
    TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,TRUE);
    ApplyCustLedgEntry(

    // Delete the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,GLSetup."Appln. Rounding Precision");

    TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,FALSE);
    CustLedgEntry.MODIFY;
    ...
    Penggantian kode
    ...// Post the application
    CustLedgEntry.CALCFIELDS(
    Amount,"Amount (LCY)","Remaining Amount","Remaining Amt. (LCY)",
    "Original Amount","Original Amt. (LCY)");
    TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,TRUE);
    ApplyCustLedgEntry(

    // Add the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine);

    TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,FALSE);
    CustLedgEntry.MODIFY;
    ...
  7. Menambahkan parameter lokal baru di ApplyVendLedgEntry fungsi dalam Kejadian Jnl.-posting baris codeunit (12), dan kemudian Tentukan parameter sebagai berikut:
    • Var: No
    • Nama: ApplnRoundingPrecision
    • DataType: desimal
  8. Menambahkan variabel lokal baru di ApplyVendLedgEntry fungsi dalam Kejadian Jnl.-posting baris codeunit (12), kemudian tetapkan variabel sebagai berikut:
    • Nama: ApplnRoundingPrecision
    • DataType: desimal
  9. Ubah kode di ApplyVendLedgEntry fungsi dalam Kejadian Jnl.-posting baris codeunit (12) sebagai berikut:
    Kode yang ada 1
    ...NewCVLedgEntryBuf2 := NewCVLedgEntryBuf;

    // Delete the following lines.
    IF NewCVLedgEntryBuf."Currency Code" <> '' THEN BEGIN
    // Management of application of already posted entries
    IF NewCVLedgEntryBuf."Currency Code" <> ApplnCurrency.Code THEN
    ApplnCurrency.GET(NewCVLedgEntryBuf."Currency Code");
    ApplnRoundingPrecision := ApplnCurrency."Appln. Rounding Precision";
    END ELSE
    ApplnRoundingPrecision := GLSetup."Appln. Rounding Precision";
    // End of the lines.

    ApplyingDate := GenJnlLine."Posting Date";

    IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN
    ...
    Penggantian kode 1
    ...NewCVLedgEntryBuf2 := NewCVLedgEntryBuf;

    ApplyingDate := GenJnlLine."Posting Date";

    IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN
    ...
    Kode yang ada 2
    ...// Management of posting in multiple currencies
    OldCVLedgEntryBuf2 := OldCVLedgEntryBuf;
    OldCVLedgEntryBuf.COPYFILTER(Positive,OldCVLedgEntryBuf2.Positive);

    IF NewCVLedgEntryBuf."Currency Code" <> OldCVLedgEntryBuf2."Currency Code" THEN BEGIN
    ...
    Penggantian kode 2
    ...// Management of posting in multiple currencies
    OldCVLedgEntryBuf2 := OldCVLedgEntryBuf;
    OldCVLedgEntryBuf.COPYFILTER(Positive,OldCVLedgEntryBuf2.Positive);

    // Add the following line.
    GetApplnRoundPrecision(ApplnRoundingPrecision,NewCVLedgEntryBuf,OldCVLedgEntryBuf);

    IF NewCVLedgEntryBuf."Currency Code" <> OldCVLedgEntryBuf2."Currency Code" THEN BEGIN
    ...
  10. Ubah kode di VendPostApplyVendLedgEntry fungsi dalam Kejadian Jnl.-posting baris codeunit (12) sebagai berikut:
    Kode yang ada
    ...// Post the application
    VendLedgEntry.CALCFIELDS(
    Amount,"Amount (LCY)","Remaining Amount","Remaining Amt. (LCY)",
    "Original Amount","Original Amt. (LCY)");
    TransferVendLedgEntry(CVLedgEntryBuf,VendLedgEntry,TRUE);
    ApplyVendLedgEntry(

    // Delete the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,GLSetup."Appln. Rounding Precision");

    TransferVendLedgEntry(CVLedgEntryBuf,VendLedgEntry,FALSE);
    ...
    Penggantian kode
    ...// Post the application
    VendLedgEntry.CALCFIELDS(
    Amount,"Amount (LCY)","Remaining Amount","Remaining Amt. (LCY)",
    "Original Amount","Original Amt. (LCY)");
    TransferVendLedgEntry(CVLedgEntryBuf,VendLedgEntry,TRUE);
    ApplyVendLedgEntry(

    // Add the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine);

    TransferVendLedgEntry(CVLedgEntryBuf,VendLedgEntry,FALSE);
    ...
  11. Membuat fungsi GetApplnRoundPrecision baru dalam Kejadian Jnl.-posting baris codeunit (12). Untuk membuat fungsi, ikuti langkah-langkah berikut:
    1. Menambahkan parameter lokal baru di fungsi GetApplnRoundPrecision dalam Kejadian Jnl.-posting baris codeunit (12), dan kemudian Tentukan parameter sebagai berikut:
      • Var: ya
      • Nama: ApplnRoundingPrecision
      • DataType: desimal
    2. Menambahkan parameter lokal baru di fungsi GetApplnRoundPrecision dalam Kejadian Jnl.-posting baris codeunit (12), dan kemudian Tentukan parameter sebagai berikut:
      • Var: No
      • Nama: NewCVLedgEntryBuf
      • DataType: catatan
      • Subtipe: CV buku catatan Buffer
    3. Menambahkan parameter lokal baru di fungsi GetApplnRoundPrecision dalam Kejadian Jnl.-posting baris codeunit (12), dan kemudian Tentukan parameter sebagai berikut:
      • Var: No
      • Nama: OldCVLedgEntryBuf
      • DataType: catatan
      • Subtipe: CV buku catatan Buffer
    4. Menambahkan variabel lokal baru di fungsi GetApplnRoundPrecision dalam Kejadian Jnl.-posting baris codeunit (12), kemudian tetapkan variabel sebagai berikut:
      • Nama: CurrencyExistInledger
      • DataType: Boolean
    5. Menambahkan variabel lokal baru di fungsi GetApplnRoundPrecision dalam Kejadian Jnl.-posting baris codeunit (12), kemudian tetapkan variabel sebagai berikut:
      • Nama: CurrencyCode
      • DataType: kode
      • Panjang: 20
    6. Menambahkan kode berikut dalam fungsi GetApplnRoundPrecision di kejadian Jnl.-posting baris codeunit (12):
      IF NewCVLedgEntryBuf."Currency Code" <> '' THENCurrencyCode := NewCVLedgEntryBuf."Currency Code"
      ELSE
      CurrencyCode := OldCVLedgEntryBuf."Currency Code";
      IF CurrencyCode <> ApplnCurrency.Code THEN
      CurrencyExistInledger := ApplnCurrency.GET(CurrencyCode);

      IF CurrencyExistInledger THEN BEGIN
      IF ApplnCurrency."Appln. Rounding Precision" <> 0 THEN
      ApplnRoundingPrecision := ApplnCurrency."Appln. Rounding Precision"
      ELSE
      ApplnRoundingPrecision := GLSetup."Appln. Rounding Precision";
      END;

Prasyarat

Anda harus memiliki salah satu produk berikut ini diinstal untuk menerapkan perbaikan terbaru ini:
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Informasi penghapusan

Anda tidak dapat menghapus hotfix ini.

Status


Microsoft telah memastikan bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".
Catatan Ini adalah artikel "Penerbitan cepat" dibuat langsung dari dalam organisasi dukungan Microsoft. Informasi yang terkandung di dalamnya disediakan sebagai tanggapan masalah yang muncul. Sebagai akibat dari kecepatan untuk menjadikannya tersedia, materi dapat mengandung kesalahan ketik dan dapat direvisi setiap saat tanpa pemberitahuan. Lihat Ketentuan untuk pertimbangan lainnya.