Gejala
Setelah Anda menginstal KB3034441 dalam versi bahasa Spanyol Microsoft Dynamics NAV 2009, ketika Anda menerapkan pembayaran normal dan tagihan dari vendor atau pelanggan buku entri, entri G L dikirim merujuk kedua ke akun yang sama, yang tidak benar. Ikuti langkah-langkah di bagian perubahan kode untuk memecahkan masalah ini. Masalah ini terjadi di dalam produk berikut ini:
-
Versi bahasa Spanyol Microsoft Dynamics NAV 2009 R2
-
Versi bahasa Spanyol Microsoft Dynamics NAV 2009 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 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 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:-
Ubah kode di PostDtldCustLedgEntries fungsi dalam Kejadian Jnl.-posting baris codeunit (12) sebagai berikut:
Kode yang ada 1...LOCAL PROCEDURE PostDtldCustLedgEntries@46(GenJnlLine2@1000 : Record 81;VAR DtldCVLedgEntryBuf@1001 : Record 383;CustPostingGr@1002 : Record 92;GLSetup@1003 : Record 98;NextTransactionNo@1004 : Integer;CustLedgEntryInserted@1012 : Boolean);
VAR DtldCustLedgEntry@1005 : Record 379; Currency@1007 : Record 4; GenPostingSetup@1008 : Record 252; TotalAmountLCY@1009 : Decimal; TotalAmountAddCurr@1010 : Decimal; PaymentDiscAcc@1011 : Code[20]; DtldCustLedgEntryNoOffset@1006 : Integer; PaymentTolAcc@1013 : Code[20]; ...Penggantian kode 1
...LOCAL PROCEDURE PostDtldCustLedgEntries@46(GenJnlLine2@1000 : Record 81;VAR DtldCVLedgEntryBuf@1001 : Record 383;CustPostingGr@1002 : Record 92;GLSetup@1003 : Record 98;NextTransactionNo@1004 : Integer;CustLedgEntryInserted@1012 : Boolean);
VAR DtldCustLedgEntry@1005 : Record 379; Currency@1007 : Record 4; GenPostingSetup@1008 : Record 252; // Add the following line. DtldCustLedgEntry3@1100044 : Record 379; // End of the added line. TotalAmountLCY@1009 : Decimal; TotalAmountAddCurr@1010 : Decimal; PaymentDiscAcc@1011 : Code[20]; DtldCustLedgEntryNoOffset@1006 : Integer; PaymentTolAcc@1013 : Code[20]; ...Kode yang ada 2
...ReceivableAccAmtLCY@1100001 : Decimal;
ReceivableAccAmtAddCurr@1100000 : Decimal; DtldCustLedgEntry2@1100003 : TEMPORARY Record 379; ExistDtldCVLedgEntryBuf@1000003 : Boolean; FindBill@1100004 : Boolean; BEGIN TotalAmountLCY := 0; TotalAmountAddCurr := 0; PositiveLCYAppAmt := 0; PositiveACYAppAmt := 0; ...Penggantian kode 2
...ReceivableAccAmtLCY@1100001 : Decimal;
ReceivableAccAmtAddCurr@1100000 : Decimal; DtldCustLedgEntry2@1100003 : TEMPORARY Record 379; ExistDtldCVLedgEntryBuf@1000003 : Boolean; FindBill@1100004 : Boolean; // Add the following line. EntryUnapplied@1100051 : Boolean; // End of the added line. BEGIN TotalAmountLCY := 0; TotalAmountAddCurr := 0; PositiveLCYAppAmt := 0; PositiveACYAppAmt := 0; ...Kode yang ada 3
... TotalAmountAddCurr := 0;
PositiveLCYAppAmt := 0; PositiveACYAppAmt := 0; NegativeLCYAppAmt := 0; NegativeACYAppAmt := 0; IF GenJnlLine2."Account Type" = GenJnlLine2."Account Type"::Customer THEN BEGIN IF DtldCustLedgEntry.FINDLAST THEN DtldCustLedgEntryNoOffset := DtldCustLedgEntry."Entry No." ELSE ...Penggantian kode 3
...TotalAmountAddCurr := 0;
PositiveLCYAppAmt := 0; PositiveACYAppAmt := 0; NegativeLCYAppAmt := 0; NegativeACYAppAmt := 0; // Add the following line. EntryUnapplied := FALSE; // End of the added line. IF GenJnlLine2."Account Type" = GenJnlLine2."Account Type"::Customer THEN BEGIN IF DtldCustLedgEntry.FINDLAST THEN DtldCustLedgEntryNoOffset := DtldCustLedgEntry."Entry No." ELSE ...Ada kode 4
... END;
InsertGLEntry(TRUE); GenJnlLine."Posting Date" := OriginalPostingDate; END; // Delete the following line. PostReceivableDocs(GenJnlLine); // End of the deleted line. IF NOT GLEntryTmp.FINDFIRST AND ExistDtldCVLedgEntryBuf THEN BEGIN InitGLEntry(CustPostingGr."Receivables Account",PositiveLCYAppAmt,PositiveACYAppAmt,FALSE,TRUE); InsertGLEntry(FALSE); InitGLEntry(CustPostingGr."Receivables Account",NegativeLCYAppAmt,NegativeACYAppAmt,FALSE,TRUE); ...Penggantian kode 4
... END;
InsertGLEntry(TRUE); GenJnlLine."Posting Date" := OriginalPostingDate; END; // Add the following lines. WITH DtldCustLedgEntry3 DO BEGIN SETCURRENTKEY("Cust. Ledger Entry No."); SETRANGE("Cust. Ledger Entry No.",DtldCustLedgEntry."Cust. Ledger Entry No."); SETFILTER("Applies-to Bill No.",'<>%1',''); SETRANGE(Unapplied,TRUE); EntryUnapplied := NOT ISEMPTY; END; PostReceivableDocs(EntryUnapplied); // End of the added lines. IF NOT GLEntryTmp.FINDFIRST AND ExistDtldCVLedgEntryBuf THEN BEGIN InitGLEntry(CustPostingGr."Receivables Account",PositiveLCYAppAmt,PositiveACYAppAmt,FALSE,TRUE); InsertGLEntry(FALSE); InitGLEntry(CustPostingGr."Receivables Account",NegativeLCYAppAmt,NegativeACYAppAmt,FALSE,TRUE); ... -
Ubah kode di PostDtldVendLedgEntries fungsi dalam Kejadian Jnl.-posting baris codeunit (12) sebagai berikut:
Kode yang ada 1... PROCEDURE PostDtldVendLedgEntries@32(GenJnlLine2@1000 : Record 81;VAR DtldCVLedgEntryBuf@1001 : Record 383;VendPostingGr@1002 : Record 93;NextTransactionNo@1003 : Integer;VendLedgEntryInserted@1011 : Boolean);
VAR DtldVendLedgEntry@1004 : Record 380; Currency@1006 : Record 4; GenPostingSetup@1007 : Record 252; TotalAmountLCY@1008 : Decimal; TotalAmountAddCurr@1009 : Decimal; PaymentDiscAcc@1010 : Code[20]; DtldVendLedgEntryNoOffset@1005 : Integer; PaymentTolAcc@1012 : Code[20]; ...Penggantian kode 1
...PROCEDURE PostDtldVendLedgEntries@32(GenJnlLine2@1000 : Record 81;VAR DtldCVLedgEntryBuf@1001 : Record 383;VendPostingGr@1002 : Record 93;NextTransactionNo@1003 : Integer;VendLedgEntryInserted@1011 : Boolean);
VAR DtldVendLedgEntry@1004 : Record 380; Currency@1006 : Record 4; GenPostingSetup@1007 : Record 252; // Add the following line. DtldVendLedgEntry3@1100055 : Record 380; // End of the added line. TotalAmountLCY@1008 : Decimal; TotalAmountAddCurr@1009 : Decimal; PaymentDiscAcc@1010 : Code[20]; DtldVendLedgEntryNoOffset@1005 : Integer; PaymentTolAcc@1012 : Code[20]; ...Kode yang ada 2
...PayableAccAmtLCY@1100002 : Decimal;
PayableAccAmtAddCurr@1100010 : Decimal; DtldVendLedgEntry2@1100003 : Record 380; ExistDtldCVLedgEntryBuf@1100004 : Boolean; FindBill@1100005 : Boolean; BEGIN TotalAmountLCY := 0; TotalAmountAddCurr := 0; PositiveLCYAppAmt := 0; PositiveACYAppAmt := 0; ...Penggantian kode 2
...PayableAccAmtLCY@1100002 : Decimal;
PayableAccAmtAddCurr@1100010 : Decimal; DtldVendLedgEntry2@1100003 : Record 380; ExistDtldCVLedgEntryBuf@1100004 : Boolean; FindBill@1100005 : Boolean; // Add the following line. EntryUnapplied@1100051 : Boolean; // End of the added line. BEGIN TotalAmountLCY := 0; TotalAmountAddCurr := 0; PositiveLCYAppAmt := 0; PositiveACYAppAmt := 0; ...Kode yang ada 3
...TotalAmountAddCurr := 0;
PositiveLCYAppAmt := 0; PositiveACYAppAmt := 0; NegativeLCYAppAmt := 0; NegativeACYAppAmt := 0; IF GenJnlLine2."Account Type" = GenJnlLine2."Account Type"::Vendor THEN BEGIN IF DtldVendLedgEntry.FINDLAST THEN DtldVendLedgEntryNoOffset := DtldVendLedgEntry."Entry No." ELSE ...Penggantian kode 3
...TotalAmountAddCurr := 0;
PositiveLCYAppAmt := 0; PositiveACYAppAmt := 0; NegativeLCYAppAmt := 0; NegativeACYAppAmt := 0; // Add the following line. EntryUnapplied := FALSE; // End of the added line. IF GenJnlLine2."Account Type" = GenJnlLine2."Account Type"::Vendor THEN BEGIN IF DtldVendLedgEntry.FINDLAST THEN DtldVendLedgEntryNoOffset := DtldVendLedgEntry."Entry No." ELSE ...Ada kode 4
...END;
InsertGLEntry(TRUE); GenJnlLine."Posting Date" := OriginalPostingDate; END; // Delete the following line. PostPayableDocs(GenJnlLine); // End of the deleted line. IF NOT GLEntryTmp.FINDFIRST AND ExistDtldCVLedgEntryBuf THEN BEGIN InitGLEntry(VendPostingGr."Payables Account",PositiveLCYAppAmt,PositiveACYAppAmt,FALSE,TRUE); InsertGLEntry(FALSE); InitGLEntry(VendPostingGr."Payables Account",NegativeLCYAppAmt,NegativeACYAppAmt,FALSE,TRUE); ...Penggantian kode 4
...END;
InsertGLEntry(TRUE); GenJnlLine."Posting Date" := OriginalPostingDate; END; // Add the following lines. WITH DtldVendLedgEntry3 DO BEGIN SETCURRENTKEY("Vendor Ledger Entry No."); SETRANGE("Vendor Ledger Entry No.",DtldVendLedgEntry."Vendor Ledger Entry No."); SETFILTER("Applies-to Bill No.",'<>%1',''); SETRANGE(Unapplied,TRUE); EntryUnapplied := NOT ISEMPTY; END; PostPayableDocs(EntryUnapplied); // End of the added lines. IF NOT GLEntryTmp.FINDFIRST AND ExistDtldCVLedgEntryBuf THEN BEGIN InitGLEntry(VendPostingGr."Payables Account",PositiveLCYAppAmt,PositiveACYAppAmt,FALSE,TRUE); InsertGLEntry(FALSE); InitGLEntry(VendPostingGr."Payables Account",NegativeLCYAppAmt,NegativeACYAppAmt,FALSE,TRUE); ... -
Ubah kode di PostPayableDocs fungsi dalam Kejadian Jnl.-posting baris codeunit (12) sebagai berikut:
Kode yang ada 1...ELSE
VATEntry."Bill-to/Pay-to No." := GenJnlLine2."Account No."; END; END; // Delete the following line. LOCAL PROCEDURE PostPayableDocs@1100009(VAR GenJnlLine@1100000 : Record 81); // End of the deleted line. BEGIN IF (DocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) THEN IF NextEntryNo2 = NextEntryNo THEN NextEntryNo := NextEntryNo - 1; IF DocAmountLCY <> 0 THEN BEGIN ...Penggantian kode 1
...ELSE
VATEntry."Bill-to/Pay-to No." := GenJnlLine2."Account No."; END; END; // Add the following line. LOCAL PROCEDURE PostPayableDocs@1100009(EntryUnapplied@1100001 : Boolean); // End of the added line. BEGIN IF (DocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) THEN IF NextEntryNo2 = NextEntryNo THEN NextEntryNo := NextEntryNo - 1; IF DocAmountLCY <> 0 THEN BEGIN ...Kode yang ada 2
...BEGIN
IF (DocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) THEN IF NextEntryNo2 = NextEntryNo THEN NextEntryNo := NextEntryNo - 1; IF DocAmountLCY <> 0 THEN BEGIN // Delete the following lines. // VSTF330588.begin //IF (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::Invoice) THEN BEGIN IF (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::Invoice) OR (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::" ") THEN BEGIN // VSTF330588.end // End of the deleted lines. VendPostingGr.TESTFIELD("Payables Account"); InitGLEntry(VendPostingGr."Payables Account",DocAmountLCY,DocAmtCalcAddCurrency(DocAmountLCY),TRUE,TRUE); GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type"; GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No."; InsertGLEntry(TRUE); ...Penggantian kode 2
...BEGIN
IF (DocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) THEN IF NextEntryNo2 = NextEntryNo THEN NextEntryNo := NextEntryNo - 1; IF DocAmountLCY <> 0 THEN BEGIN // Add the following lines. IF (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::Invoice) OR EntryUnapplied THEN BEGIN // End of the added lines. VendPostingGr.TESTFIELD("Payables Account"); InitGLEntry(VendPostingGr."Payables Account",DocAmountLCY,DocAmtCalcAddCurrency(DocAmountLCY),TRUE,TRUE); GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type"; GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No."; InsertGLEntry(TRUE); ... -
Ubah kode di PostReceivableDocs fungsi dalam Kejadian Jnl.-posting baris codeunit (12) sebagai berikut:
Kode yang ada 1... GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";
InsertGLEntry(TRUE); END; END; // Delete the following line. LOCAL PROCEDURE PostReceivableDocs@1100003(VAR GenJnlLine@1100000 : Record 81); // End of the deleted line. BEGIN IF (DocAmountLCY <> 0) OR (DiscDocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) OR (RejDocAmountLCY <> 0) OR (DiscRiskFactAmountLCY <> 0) OR (DiscUnriskFactAmountLCY <> 0) OR (CollFactAmountLCY <> 0) THEN IF NextEntryNo2 = NextEntryNo THEN NextEntryNo := NextEntryNo - 1; ...Penggantian kode 1
...GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";
InsertGLEntry(TRUE); END; END; // Add the following line. LOCAL PROCEDURE PostReceivableDocs@1100003(EntryUnapplied@1100001 : Boolean); // End of the added line. BEGIN IF (DocAmountLCY <> 0) OR (DiscDocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) OR (RejDocAmountLCY <> 0) OR (DiscRiskFactAmountLCY <> 0) OR (DiscUnriskFactAmountLCY <> 0) OR (CollFactAmountLCY <> 0) THEN IF NextEntryNo2 = NextEntryNo THEN NextEntryNo := NextEntryNo - 1; ...Kode yang ada 2
...IF (DocAmountLCY <> 0) OR (DiscDocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) OR (RejDocAmountLCY <> 0) OR
(DiscRiskFactAmountLCY <> 0) OR (DiscUnriskFactAmountLCY <> 0) OR (CollFactAmountLCY <> 0) THEN IF NextEntryNo2 = NextEntryNo THEN NextEntryNo := NextEntryNo - 1; IF DocAmountLCY <> 0 THEN BEGIN // Delete the following lines. // VSTF330588.begin //IF (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::Invoice) THEN BEGIN IF (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::Invoice) OR (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::" ") THEN BEGIN // VSTF330588.end // End of the deleted lines. CustPostingGr.TESTFIELD("Receivables Account"); InitGLEntry(CustPostingGr."Receivables Account",DocAmountLCY,DocAmtCalcAddCurrency(DocAmountLCY),TRUE,TRUE); GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type"; GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No."; InsertGLEntry(TRUE); ...Penggantian kode 2
...IF (DocAmountLCY <> 0) OR (DiscDocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) OR (RejDocAmountLCY <> 0) OR
(DiscRiskFactAmountLCY <> 0) OR (DiscUnriskFactAmountLCY <> 0) OR (CollFactAmountLCY <> 0) THEN IF NextEntryNo2 = NextEntryNo THEN NextEntryNo := NextEntryNo - 1; IF DocAmountLCY <> 0 THEN BEGIN // Add the following lines. IF (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::Invoice) OR EntryUnapplied THEN BEGIN // End of the added lines. CustPostingGr.TESTFIELD("Receivables Account"); InitGLEntry(CustPostingGr."Receivables Account",DocAmountLCY,DocAmtCalcAddCurrency(DocAmountLCY),TRUE,TRUE); GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type"; GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No."; InsertGLEntry(TRUE); ...
Prasyarat
Anda harus memiliki salah satu produk berikut ini diinstal untuk menerapkan perbaikan terbaru ini:
-
Versi bahasa Spanyol Microsoft Dynamics NAV 2009 R2
-
Versi bahasa Spanyol Microsoft Dynamics NAV 2009 SP1
Selain itu, Anda harus memiliki KB3034441 diinstal.
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.