Artikel ini berlaku untuk Microsoft Dynamics NAV untuk semua negara dan semua bahasa lokal.
Gejala
Misalnya Anda menyetel berlaku untuk Oldest sebagai Metode aplikasi untuk vendor di Microsoft Dynamics NAV 2009. Dan Anda mengirim memo kredit satu dan dua faktur menggunakan catatan harian. Sebagai hasilnya, sistem berlaku memo kredit ke faktur kedua. Kemudian, Anda unapply semua dokumen. Dalam situasi ini, ketika Anda menjalankan transaksi reverse fungsi untuk kredit memo baris, sistem membuat entri buku besar tidak diperlukan.
Masalah ini terjadi di dalam produk berikut ini:-
Microsoft Dynamics NAV 2009
-
Microsoft Dynamics NAV 2009 R2
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 2009 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 Dynamics NAV log off sistem. Ini termasuk layanan Microsoft Dynamics NAV aplikasi Server (NAS). 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 ditetapkan 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:-
Ubah kode di fungsi InsertReversalEntry pembalikan entri tabel (179) sebagai berikut:
Kode yang ada 1...CLEAR(DtldCustLedgEntry);
DtldCustLedgEntry.SETCURRENTKEY("Transaction No.","Customer No.","Entry Type"); DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Transaction No.",CustLedgEntry."Transaction No."); DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Customer No.",CustLedgEntry."Customer No."); DtldCustLedgEntry.SETFILTER( DtldCustLedgEntry."Entry Type",'<>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry"); // Delete the following line. IF DtldCustLedgEntry.FIND('-') THEN BEGIN // End of the deleted line. IF RevType = RevType::Register THEN ERROR(Text012,Number); // Delete the following lines. CLEAR(DtldCustLedgEntry); DtldCustLedgEntry.SETCURRENTKEY("Cust. Ledger Entry No."); DtldCustLedgEntry.SETRANGE("Cust. Ledger Entry No.",CustLedgEntry."Entry No."); DtldCustLedgEntry.SETRANGE(Unapplied,TRUE); IF DtldCustLedgEntry.FIND('-') THEN BEGIN REPEAT TempRevertTransactionNo.Number := DtldCustLedgEntry."Transaction No."; IF TempRevertTransactionNo.INSERT THEN; UNTIL DtldCustLedgEntry.NEXT = 0; END; END; // End of the deleted lines. UNTIL CustLedgEntry.NEXT = 0; IF VendLedgEntry.FIND('-') THEN REPEAT CLEAR(ReversalEntry); ...Penggantian kode 1
...CLEAR(DtldCustLedgEntry);
DtldCustLedgEntry.SETCURRENTKEY("Transaction No.","Customer No.","Entry Type"); DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Transaction No.",CustLedgEntry."Transaction No."); DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Customer No.",CustLedgEntry."Customer No."); DtldCustLedgEntry.SETFILTER( DtldCustLedgEntry."Entry Type",'<>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry"); // Add the following line. IF NOT DtldCustLedgEntry.ISEMPTY THEN // End of the added line. IF RevType = RevType::Register THEN ERROR(Text012,Number); // Add the following line. CheckDtldCustLedgEntry(CustLedgEntry); // End of the added line. UNTIL CustLedgEntry.NEXT = 0; IF VendLedgEntry.FIND('-') THEN REPEAT CLEAR(ReversalEntry); ...Kode yang ada 2
...CLEAR(DtldVendLedgEntry);
DtldVendLedgEntry.SETCURRENTKEY("Transaction No.","Vendor No.","Entry Type"); DtldVendLedgEntry.SETRANGE(DtldVendLedgEntry."Transaction No.",VendLedgEntry."Transaction No."); DtldVendLedgEntry.SETRANGE(DtldVendLedgEntry."Vendor No.",VendLedgEntry."Vendor No."); DtldVendLedgEntry.SETFILTER( DtldVendLedgEntry."Entry Type",'<>%1',DtldVendLedgEntry."Entry Type"::"Initial Entry"); // Delete the following line. IF DtldVendLedgEntry.FIND('-') THEN BEGIN // End of the deleted line. IF RevType = RevType::Register THEN ERROR(Text012,Number); // Delete the following lines. CLEAR(DtldVendLedgEntry); DtldVendLedgEntry.SETCURRENTKEY("Vendor Ledger Entry No."); DtldVendLedgEntry.SETRANGE("Vendor Ledger Entry No.",VendLedgEntry."Entry No."); DtldVendLedgEntry.SETRANGE(Unapplied,TRUE); IF DtldVendLedgEntry.FIND('-') THEN BEGIN REPEAT TempRevertTransactionNo.Number := DtldVendLedgEntry."Transaction No."; IF TempRevertTransactionNo.INSERT THEN; UNTIL DtldVendLedgEntry.NEXT = 0; END; END; // End of the deleted lines. UNTIL VendLedgEntry.NEXT = 0; IF BankAccLedgEntry.FIND('-') THEN REPEAT CLEAR(ReversalEntry); ...Penggantian kode 2
...CLEAR(DtldVendLedgEntry);
DtldVendLedgEntry.SETCURRENTKEY("Transaction No.","Vendor No.","Entry Type"); DtldVendLedgEntry.SETRANGE(DtldVendLedgEntry."Transaction No.",VendLedgEntry."Transaction No."); DtldVendLedgEntry.SETRANGE(DtldVendLedgEntry."Vendor No.",VendLedgEntry."Vendor No."); DtldVendLedgEntry.SETFILTER( DtldVendLedgEntry."Entry Type",'<>%1',DtldVendLedgEntry."Entry Type"::"Initial Entry"); // Add the following line. IF NOT DtldVendLedgEntry.ISEMPTY THEN // End of the added line. IF RevType = RevType::Register THEN ERROR(Text012,Number); // Add the following line. CheckDtldVendLedgEntry(VendLedgEntry); // End of the added line. UNTIL VendLedgEntry.NEXT = 0; IF BankAccLedgEntry.FIND('-') THEN REPEAT CLEAR(ReversalEntry); ... -
Ubah kode di fungsi CheckDtldCustLedgEntry pembalikan entri tabel (179) sebagai berikut:
Kode yang ada...LOCAL PROCEDURE CheckDtldCustLedgEntry@2(CustLedgEntry@1000 : Record 21) : Boolean;
VAR DtldCustLedgEntry@1001 : Record 379; BEGIN // Delete the following lines. DtldCustLedgEntry.SETCURRENTKEY("Cust. Ledger Entry No."); DtldCustLedgEntry.SETRANGE("Cust. Ledger Entry No.",CustLedgEntry."Entry No."); IF DtldCustLedgEntry.FIND('-') THEN REPEAT IF (DtldCustLedgEntry."Entry Type" <> DtldCustLedgEntry."Entry Type"::"Initial Entry") AND (NOT DtldCustLedgEntry.Unapplied) THEN ERROR( Text000,CustLedgEntry.TABLECAPTION,CustLedgEntry."Entry No."); UNTIL DtldCustLedgEntry.NEXT = 0; // End of the deleted lines. END; ...Penggantian kode
...LOCAL PROCEDURE CheckDtldCustLedgEntry@2(CustLedgEntry@1000 : Record 21) : Boolean;
VAR DtldCustLedgEntry@1001 : Record 379; BEGIN // Add the following lines. DtldCustLedgEntry.SETCURRENTKEY("Cust. Ledger Entry No.","Entry Type"); DtldCustLedgEntry.SETRANGE("Cust. Ledger Entry No.",CustLedgEntry."Entry No."); DtldCustLedgEntry.SETFILTER("Entry Type",'<>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry"); DtldCustLedgEntry.SETRANGE(Unapplied,FALSE); IF NOT DtldCustLedgEntry.ISEMPTY THEN ERROR(Text000,CustLedgEntry.TABLECAPTION,CustLedgEntry."Entry No."); // End of the added lines. END; ... -
Ubah kode di fungsi CheckDtldVendLedgEntry pembalikan entri tabel (179) sebagai berikut:
Kode yang ada...LOCAL PROCEDURE CheckDtldVendLedgEntry@28(VendLedgEntry@1000 : Record 25) : Boolean;
VAR DtldVendLedgEntry@1001 : Record 380; BEGIN // Delete the following lines. DtldVendLedgEntry.SETCURRENTKEY("Vendor Ledger Entry No."); DtldVendLedgEntry.SETRANGE("Vendor Ledger Entry No.",VendLedgEntry."Entry No."); IF DtldVendLedgEntry.FIND('-') THEN REPEAT IF (DtldVendLedgEntry."Entry Type" <> DtldVendLedgEntry."Entry Type"::"Initial Entry") AND (NOT DtldVendLedgEntry.Unapplied) THEN ERROR( Text000,VendLedgEntry.TABLECAPTION,VendLedgEntry."Entry No."); UNTIL DtldVendLedgEntry.NEXT = 0; // End of the deleted lines. END; ...Penggantian kode
...LOCAL PROCEDURE CheckDtldVendLedgEntry@28(VendLedgEntry@1000 : Record 25) : Boolean;
VAR DtldVendLedgEntry@1001 : Record 380; BEGIN // Add the following lines. DtldVendLedgEntry.SETCURRENTKEY("Vendor Ledger Entry No.","Entry Type"); DtldVendLedgEntry.SETRANGE("Vendor Ledger Entry No.",VendLedgEntry."Entry No."); DtldVendLedgEntry.SETFILTER("Entry Type",'<>%1',DtldVendLedgEntry."Entry Type"::"Initial Entry"); DtldVendLedgEntry.SETRANGE(Unapplied,FALSE); IF NOT DtldVendLedgEntry.ISEMPTY THEN ERROR(Text000,VendLedgEntry.TABLECAPTION,VendLedgEntry."Entry No."); // End of the added lines. END; ...
Prasyarat
Anda harus memiliki Microsoft Dynamics NAV 2009 diinstal untuk menerapkan hotfix ini.
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 Ketentuanuntuk pertimbangan lainnya.