Artikel ini berlaku untuk Microsoft untuk semua negara dan semua bahasa lokal.
Gejala
Misalnya Anda memposting faktur untuk pesanan pembelian di Microsoft Dynamics NAV 2009. Kemudian Anda faktur baris biaya item yang memiliki nilai kuantitas yang ditentukan untuk pesanan pembelian. Dalam situasi ini, ketika Anda melihat entri buku besar item untuk pesanan pembelian, nilai kuantitas untuk baris biaya item tidak terdaftar. Masalah ini terjadi pada produk berikut ini:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Paket Layanan 1
Resolusi
Informasi hotfix
Hotfix yang didukung kini tersedia dari Microsoft. Namun, hanya dimaksudkan untuk memperbaiki masalah yang dijelaskan dalam artikel ini. Terapkan hanya ke sistem yang mengalami masalah khusus ini. Hotfix ini mungkin menerima pengujian tambahan. Oleh karena itu, jika Anda tidak terpengaruh oleh masalah ini, kami menyarankan agar Anda menunggu paket layanan Microsoft Dynamics NAV 2009 berikutnya atau versi Microsoft Dynamics NAV berikutnya yang berisi hotfix ini.
Catatan Dalam kasus khusus, biaya yang biasanya ditimbulkan untuk panggilan dukungan mungkin dibatalkan jika Profesional Dukungan Teknis untuk Microsoft Dynamics dan produk terkait menentukan bahwa pembaruan tertentu akan mengatasi masalah Anda. Biaya dukungan biasa akan berlaku untuk pertanyaan dan masalah dukungan tambahan yang tidak memenuhi syarat untuk pembaruan tertentu yang dimaksud.
Informasi penginstalan
Microsoft menyediakan contoh pemrograman untuk ilustrasi saja, tanpa jaminan baik tersurat maupun tersirat. Ini termasuk, tetapi tidak terbatas pada, jaminan tersirat dari kelayakan jual atau kesesuaian untuk tujuan tertentu. Artikel ini mengasumsikan bahwa Anda sudah terbiasa dengan bahasa pemrograman yang ditunjukkan dan dengan alat yang digunakan untuk membuat dan men-debug prosedur. Teknisi dukungan Microsoft dapat membantu menjelaskan fungsionalitas prosedur tertentu, tetapi mereka tidak akan mengubah contoh ini untuk menyediakan fungsionalitas tambahan atau prosedur konstruksi untuk memenuhi persyaratan tertentu Anda.
Catatan Sebelum Anda menginstal hotfix ini, verifikasi bahwa semua pengguna klien Microsoft Navision telah keluar dari sistem. Ini termasuk pengguna klien Microsoft Navision Application Services (NAS). Anda harus menjadi satu-satunya pengguna klien yang masuk ketika Anda menerapkan hotfix ini.
Untuk menerapkan hotfix ini, Anda harus memiliki lisensi pengembang.
Kami menyarankan agar akun pengguna di jendela Windows Logins atau di jendela Login Database diberi ID peran "SUPER". Jika akun pengguna tidak dapat ditetapkan sebagai ID peran "SUPER", Anda harus memverifikasi bahwa akun pengguna memiliki izin berikut:
- Izin Ubah untuk objek yang akan Anda ubah.
- Izin Jalankan untuk objek System Object ID 5210 dan untuk objek System Object ID 9015.
Catatan Anda tidak harus memiliki hak untuk penyimpanan data kecuali Anda harus melakukan perbaikan data.
Perubahan kode
Catatan Selalu uji perbaikan kode di lingkungan terkontrol sebelum Anda menerapkan perbaikan pada komputer produksi Anda.
Untuk mengatasi masalah ini, ikuti langkah-langkah ini:
Ubah kode di pemicu OnRun dalam codeunit Sales-Post (80) sebagai berikut:
Kode yang sudah ada 1... TempPrePmtAmtToDeduct@1003 : Decimal; TransactionLogEntryNo@1024 : Integer; BEGIN IF PostingDateExists AND (ReplacePostingDate OR ("Posting Date" = 0D)) THEN BEGIN ...Kode pengganti 1
... TempPrePmtAmtToDeduct@1003 : Decimal; TransactionLogEntryNo@1024 : Integer; // Add the following line. SalesLineForCharge@1025 : Record 37; BEGIN IF PostingDateExists AND (ReplacePostingDate OR ("Posting Date" = 0D)) THEN BEGIN ...Kode yang sudah ada 2
... ClearItemChargeAssgntFilter; TempItemChargeAssgntSales.SETCURRENTKEY("Applies-to Doc. Type"); // Delete the following line. TempItemChargeAssgntSales.SETFILTER("Applies-to Doc. Type",'<>%1',"Document Type"); TempItemChargeAssgntSales.SETRANGE("Document Line No.",SalesLine."Line No."); IF TempItemChargeAssgntSales.FINDSET THEN ...Kode pengganti 2
... ClearItemChargeAssgntFilter; TempItemChargeAssgntSales.SETCURRENTKEY("Applies-to Doc. Type"); TempItemChargeAssgntSales.SETRANGE("Document Line No.",SalesLine."Line No."); IF TempItemChargeAssgntSales.FINDSET THEN ...Kode yang sudah ada 3
... CASE TempItemChargeAssgntSales."Applies-to Doc. Type" OF TempItemChargeAssgntSales."Applies-to Doc. Type"::Shipment: // Delete the following lines. PostItemChargePerShpt(SalesLine); TempItemChargeAssgntSales."Applies-to Doc. Type"::"Return Receipt": PostItemChargePerRetRcpt(SalesLine); END; TempItemChargeAssgntSales.MARK(TRUE); // End of the lines. UNTIL TempItemChargeAssgntSales.NEXT = 0; END; END; ...Kode pengganti 3
... CASE TempItemChargeAssgntSales."Applies-to Doc. Type" OF TempItemChargeAssgntSales."Applies-to Doc. Type"::Shipment: // Add the following line BEGIN PostItemChargePerShpt(SalesLine); TempItemChargeAssgntSales.MARK(TRUE); END; TempItemChargeAssgntSales."Applies-to Doc. Type"::"Return Receipt": BEGIN PostItemChargePerRetRcpt(SalesLine); TempItemChargeAssgntSales.MARK(TRUE); END; TempItemChargeAssgntSales."Applies-to Doc. Type"::Order, TempItemChargeAssgntSales."Applies-to Doc. Type"::Invoice: BEGIN IF SalesLineForCharge.GET( TempItemChargeAssgntSales."Applies-to Doc. Type", TempItemChargeAssgntSales."Applies-to Doc. No.", TempItemChargeAssgntSales."Applies-to Doc. Line No.") THEN IF (SalesLineForCharge."Qty. to Ship (Base)" = 0) AND (SalesLineForCharge."Qty. to Invoice (Base)" = 0) THEN ERROR(Text054); END; TempItemChargeAssgntSales."Applies-to Doc. Type"::"Return Order", TempItemChargeAssgntSales."Applies-to Doc. Type"::"Credit Memo": BEGIN IF SalesLineForCharge.GET( TempItemChargeAssgntSales."Applies-to Doc. Type", TempItemChargeAssgntSales."Applies-to Doc. No.", TempItemChargeAssgntSales."Applies-to Doc. Line No.") THEN IF (SalesLineForCharge."Return Qty. to Receive (Base)" = 0) AND (SalesLineForCharge."Qty. to Invoice (Base)" = 0) THEN ERROR(Text054); END; END; // End of the lines. UNTIL TempItemChargeAssgntSales.NEXT = 0; END; END; ...Kode yang sudah ada 4
... Text052@1102601000 : TextConst 'ENU=You must assign item charge %1 if you want to invoice it.'; Text053@1102601001 : TextConst 'ENU=You can not invoice item charge %1 because there is no item ledger entry to assign it to.'; PROCEDURE SetPostingDate@1(NewReplacePostingDate@1000 : Boolean;NewReplaceDocumentDate@1001 : Boolean;NewPostingDate@1002 : Date); BEGIN ...Kode pengganti 4
... Text052@1102601000 : TextConst 'ENU=You must assign item charge %1 if you want to invoice it.'; Text053@1102601001 : TextConst 'ENU=You can not invoice item charge %1 because there is no item ledger entry to assign it to.'; // Add the following line. Text054@1102601002 : TextConst 'ENU=The order line that the item charge has originally been assigned to has been partially or fully posted. You must reassign the item charge to the posted receipt or shipment instead.'; PROCEDURE SetPostingDate@1(NewReplacePostingDate@1000 : Boolean;NewReplaceDocumentDate@1001 : Boolean;NewPostingDate@1002 : Date); BEGIN ...Ubah kode dalam pemicu OnRun dalam codeunit Purch.-Post (90) sebagai berikut:
Kode yang sudah ada 1... ICInboxPurchHdr@1012 : Record 436; SalesHeader@1041 : Record 36; UpdateAnalysisView@1002 : Codeunit 410; UpdateItemAnalysisView@1008 : Codeunit 7150; ...Kode pengganti 1
... ICInboxPurchHdr@1012 : Record 436; SalesHeader@1041 : Record 36; // Add the following line. PurchLineForCharge@1042 : Record 39; UpdateAnalysisView@1002 : Codeunit 410; UpdateItemAnalysisView@1008 : Codeunit 7150; ...Kode yang sudah ada 2
... ClearItemChargeAssgntFilter; TempItemChargeAssgntPurch.SETCURRENTKEY("Applies-to Doc. Type"); // Delete the following line. TempItemChargeAssgntPurch.SETFILTER("Applies-to Doc. Type",'<>%1',"Document Type"); TempItemChargeAssgntPurch.SETRANGE("Document Line No.",PurchLine."Line No."); IF TempItemChargeAssgntPurch.FINDSET THEN ...Kode pengganti 2
... ClearItemChargeAssgntFilter; TempItemChargeAssgntPurch.SETCURRENTKEY("Applies-to Doc. Type"); TempItemChargeAssgntPurch.SETRANGE("Document Line No.",PurchLine."Line No."); IF TempItemChargeAssgntPurch.FINDSET THEN ...Kode yang sudah ada 3
... CASE TempItemChargeAssgntPurch."Applies-to Doc. Type" OF TempItemChargeAssgntPurch."Applies-to Doc. Type"::Receipt: // Delete the following lines. PostItemChargePerRcpt(PurchLine); TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Transfer Receipt": PostItemChargePerTransfer(PurchLine); TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Shipment": PostItemChargePerRetShpt(PurchLine); TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Sales Shipment": PostItemChargePerSalesShpt(PurchLine); TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Receipt": PostItemChargePerRetRcpt(PurchLine); END; TempItemChargeAssgntPurch.MARK(TRUE); // End of the lines. UNTIL TempItemChargeAssgntPurch.NEXT = 0; END; END; ...Kode pengganti 3
... CASE TempItemChargeAssgntPurch."Applies-to Doc. Type" OF TempItemChargeAssgntPurch."Applies-to Doc. Type"::Receipt: // Add the following lines. BEGIN PostItemChargePerRcpt(PurchLine); TempItemChargeAssgntPurch.MARK(TRUE); END; TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Transfer Receipt": BEGIN PostItemChargePerTransfer(PurchLine); TempItemChargeAssgntPurch.MARK(TRUE); END; TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Shipment": BEGIN PostItemChargePerRetShpt(PurchLine); TempItemChargeAssgntPurch.MARK(TRUE); END; TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Sales Shipment": BEGIN PostItemChargePerSalesShpt(PurchLine); TempItemChargeAssgntPurch.MARK(TRUE); END; TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Receipt": BEGIN PostItemChargePerRetRcpt(PurchLine); TempItemChargeAssgntPurch.MARK(TRUE); END; TempItemChargeAssgntPurch."Applies-to Doc. Type"::Order, TempItemChargeAssgntPurch."Applies-to Doc. Type"::Invoice: BEGIN IF PurchLineForCharge.GET( TempItemChargeAssgntPurch."Applies-to Doc. Type", TempItemChargeAssgntPurch."Applies-to Doc. No.", TempItemChargeAssgntPurch."Applies-to Doc. Line No.") THEN IF (PurchLineForCharge."Qty. to Receive (Base)" = 0) AND (PurchLineForCharge."Qty. to Invoice (Base)" = 0) THEN ERROR(Text061); END; TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Order", TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Credit Memo": BEGIN IF PurchLineForCharge.GET( TempItemChargeAssgntPurch."Applies-to Doc. Type", TempItemChargeAssgntPurch."Applies-to Doc. No.", TempItemChargeAssgntPurch."Applies-to Doc. Line No.") THEN IF (PurchLineForCharge."Return Qty. to Ship (Base)" = 0) AND (PurchLineForCharge."Qty. to Invoice (Base)" = 0) THEN ERROR(Text061); END; END; // End of the lines. UNTIL TempItemChargeAssgntPurch.NEXT = 0; END; END; ...Kode yang sudah ada 4
... Text059@1102601000 : TextConst 'ENU=You must assign item charge %1 if you want to invoice it.'; Text060@1102601001 : TextConst 'ENU=You can not invoice item charge %1 because there is no item ledger entry to assign it to.'; PROCEDURE SetPostingDate@1(NewReplacePostingDate@1000 : Boolean;NewReplaceDocumentDate@1001 : Boolean;NewPostingDate@1002 : Date); ...Kode pengganti 4
... Text059@1102601000 : TextConst 'ENU=You must assign item charge %1 if you want to invoice it.'; Text060@1102601001 : TextConst 'ENU=You can not invoice item charge %1 because there is no item ledger entry to assign it to.'; // Add the following line. Text061@1102601002 : TextConst 'ENU=The order line that the item charge has originally been assigned to has been partially or fully posted. You must reassign the item charge to the posted receipt or shipment instead.'; PROCEDURE SetPostingDate@1(NewReplacePostingDate@1000 : Boolean;NewReplaceDocumentDate@1001 : Boolean;NewPostingDate@1002 : Date); ...
Prasyarat
Anda harus memiliki salah satu produk berikut yang terinstal untuk menerapkan hotfix ini:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Paket Layanan 1
Informasi penghapusan
Anda tidak dapat menghapus hotfix ini.
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".
Catatan Ini adalah artikel "FAST PUBLISH" yang dibuat langsung dari dalam organisasi dukungan Microsoft. Informasi yang dimuat di sini disediakan sebagaimana adanya sebagai respons terhadap masalah yang muncul. Sebagai akibat dari kecepatan dalam membuatnya tersedia, materi mungkin menyertakan kesalahan pengetikan dan dapat direvisi kapan saja tanpa pemberitahuan. Lihat Ketentuan Penggunaan untuk pertimbangan lain.