Sistem tidak bersih pelanggan tagihan kartu referensi dari faktur asli ketika Anda menerapkan transaksi Dishonored di versi Italia Microsoft Dynamics NAV 5.0 Paket Layanan 1

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 2620728 - Melihat produk di mana artikel ini berlaku.
Artikel ini berlaku untuk Microsoft Dynamics NAV untuk lokal bahasa Italia (TI).
Perbesar semua | Perkecil semua

Pada Halaman ini

GEJALA

Pertimbangkan skenario berikut di versi Italia Microsoft Dynamics NAV 5.0 Paket Layanan 1 (SP1):
  • Anda menerapkan transaksi Dishonored.
  • Anda posting transaksi tanda dikeluarkan bank yang sesuai.
  • Anda mengatur pembayaran sebagai entri berlaku bukannya ditolak posted transaksi.
Dalam skenario ini, sistem tidak bersih pelanggan tagihan kartu referensi dari faktur asli.

PEMECAHAN MASALAH

Informasi hotfix

Saat ini tersedia hotfix yang didukung dari Microsoft. Namun, hanya ditujukan untuk memperbaiki masalah yang dijelaskan pada artikel ini. Gunakan hanya pada sistem yang mengalami masalah khusus ini. Hotfix ini akan menerima pengujian tambahan. Oleh karena itu, jika Anda sama sekali tidak dipengaruhi oleh masalah ini, kami menganjurkan Anda menunggu paket layanan Microsoft Dynamics NAV 5.0 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 dikenakan untuk pertanyaan dan masalah dukungan tambahan yang tidak termasuk pada pemutakhiran tertentu yang dimaksud.



Informasi penginstalan

Microsoft menyediakan contoh pemrograman hanya sebagai ilustrasi, tanpa jaminan apa pun baik tersurat maupun tersirat. Ini mencakup, namun tidak terbatas pada, jaminan tersirat mengenai keadaan yang dapat diperjualbelikan atau kesesuaian untuk tujuan tertentu. Artikel ini mengasumsikan bahwa Anda telah terbiasa dengan bahasa pemrograman yang ditunjukkan dan dengan alat yang digunakan untuk membuat dan mendebug prosedur. Teknisi Microsoft dapat membantu menjelaskan fungsionalitas prosedur tertentu, tetapi mereka tidak akan mengubah contoh tersebut untuk menyediakan fungsionalitas tambahan atau membuat prosedur untuk memenuhi kebutuhan spesifik Anda.

Catatan Sebelum Anda menginstal perbaikan terbaru ini, pastikan bahwa semua Microsoft Navision klien pengguna log dari sistem. Ini termasuk Microsoft Navision aplikasi layanan (NAS) klien pengguna. Anda harus klien hanya pengguna yang logon saat Anda menerapkan perbaikan terbaru ini.

Untuk menerapkan perbaikan terbaru ini, Anda harus memiliki lisensi pengembang.

Kami merekomendasikan bahwa account pengguna di jendela Windows login atau di jendela login Database ditetapkan peran ID yang "SUPER". Jika account pengguna tidak dapat ditugaskan "SUPER" peran ID, Anda harus memastikan bahwa account pengguna memiliki izin yang berikut:
  • Ubah izin untuk objek yang Anda akan berubah.
  • Izin mengeksekusi untuk Sistem objek ID 5210 objek dan untuk Sistem objek ID 9015 objek.


Catatan Anda tidak harus memiliki hak untuk data toko kecuali Anda telah melakukan perbaikan data.

Perubahan kode

Catatan Selalu menguji kode perbaikan dalam lingkungan yang terkendali sebelum Anda menerapkan perbaikan untuk komputer produksi.
Untuk mengatasi masalah ini, ikuti langkah-langkah berikut:
  1. Mengubah kode CustPostApplyCustLedgEntry fungsi dalam kejadian Jnl.-baris posting codeunit (12) sebagai berikut:
    Kode yang ada
    ...
                CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,GLSetup."Appln. Rounding Precision");
              TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,FALSE);
              CustLedgEntry.MODIFY;
    
    // Delete the following line.
                 IF (CustLedgEntry."Document Type" = CustLedgEntry."Document Type"::Dishonored) THEN
    
                ApplyBill(CustLedgEntry,OldCustLedgEntry);
      
              PostDtldCustLedgEntries(
    ...
    
    Penggantian kode
    ...
                CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,GLSetup."Appln. Rounding Precision");
              TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,FALSE);
              CustLedgEntry.MODIFY;
    
    // Add the following lines.
                IF (CustLedgEntry."Document Type" = CustLedgEntry."Document Type"::Dishonored) OR
                   (CustLedgEntry."Document Type" = CustLedgEntry."Document Type"::Payment) THEN
    // End of the lines.
    
                ApplyBill(CustLedgEntry,OldCustLedgEntry);
      
              PostDtldCustLedgEntries(
    ...
    
  2. Mengubah kode UnapplyCustLedgEntry fungsi dalam kejadian Jnl.-baris posting codeunit (12) sebagai berikut:
    Ada kode 1
    ...
            CreditAddjustment@1016 : Decimal;
            CreditAddjustmentAddCurr@1015 : Decimal;
            OldCustLedgEntry@1130000 : Record 21;
    
    // Delete the following line.
            BEGIN
    
            GenJnlLine.TRANSFERFIELDS(GenJnlLine2);
            IF GenJnlLine."Document Date" = 0D THEN
              GenJnlLine."Document Date" := GenJnlLine."Posting Date";
    ...
    
    Penggantian kode 1
    ...
            CreditAddjustment@1016 : Decimal;
            CreditAddjustmentAddCurr@1015 : Decimal;
            OldCustLedgEntry@1130000 : Record 21;
    
    // Add the following lines.
              UnAppliedBill@1130001 : Boolean;
            BEGIN
              UnAppliedBill := FALSE;
    // End of the lines.
    
            GenJnlLine.TRANSFERFIELDS(GenJnlLine2);
            IF GenJnlLine."Document Date" = 0D THEN
              GenJnlLine."Document Date" := GenJnlLine."Posting Date";
    ...
    
    Kode yang sudah ada 2
    ...
              IF DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::Application THEN BEGIN
                CustLedgEntry.GET(DtldCustLedgEntry2."Cust. Ledger Entry No.");
    
    // Delete the following lines.
                  IF (CustLedgEntry."Document Type" = CustLedgEntry."Document Type"::Dishonored) THEN
                    UnApplyBill(CustLedgEntry,OldCustLedgEntry);
    // End of the lines.
    
                CustLedgEntry."Remaining Pmt. Disc. Possible" := DtldCustLedgEntry2."Remaining Pmt. Disc. Possible";
                CustLedgEntry."Max. Payment Tolerance" := DtldCustLedgEntry2."Max. Payment Tolerance";
                CustLedgEntry."Accepted Payment Tolerance" := 0;
    ...
    
    Penggantian kode 2
    ...
              IF DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::Application THEN BEGIN
                CustLedgEntry.GET(DtldCustLedgEntry2."Cust. Ledger Entry No.");
    
    // Add the following lines.
                  IF ((CustLedgEntry."Document Type" = CustLedgEntry."Document Type"::Dishonored) OR
                      (CustLedgEntry."Document Type" = CustLedgEntry."Document Type"::Payment)) AND
                     NOT UnAppliedBill
                  THEN BEGIN
                    UnApplyBill(CustLedgEntry,OldCustLedgEntry);
                    UnAppliedBill := TRUE;
                  END;
    // End of the lines.
    
                CustLedgEntry."Remaining Pmt. Disc. Possible" := DtldCustLedgEntry2."Remaining Pmt. Disc. Possible";
                CustLedgEntry."Max. Payment Tolerance" := DtldCustLedgEntry2."Max. Payment Tolerance";
                CustLedgEntry."Accepted Payment Tolerance" := 0;
    ...
    
  3. Mengubah kode ApplyBill fungsi dalam kejadian Jnl.-baris posting codeunit (12) sebagai berikut:
    Ada kode 1
    ...
          END;
      
          PROCEDURE ApplyBill@1130004(VAR NewCustLedgEntry@1130001 : Record 21;VAR OldCustLedgEntry@1130000 : Record 21);
    
    // Delete the following lines.
            VAR
              OldCustLedgEntry2@1130002 : Record 21;
              DetCustLedgEntry@1130003 : Record 379;
            BEGIN
              OldCustLedgEntry.RESET;
              OldCustLedgEntry.SETCURRENTKEY("Closed by Entry No.");
              OldCustLedgEntry.SETRANGE("Closed by Entry No.",NewCustLedgEntry."Entry No.");
              IF OldCustLedgEntry.FIND('-') THEN
                REPEAT
                  OldCustLedgEntry2.SETCURRENTKEY("Document Type","Document No.","Document Occurrence","Customer No.",Open);
                  OldCustLedgEntry2.SETRANGE("Document Type",OldCustLedgEntry."Document Type to Close");
                  OldCustLedgEntry2.SETRANGE("Document No.",OldCustLedgEntry."Document No. to Close");
                  OldCustLedgEntry2.SETRANGE("Document Occurrence",OldCustLedgEntry."Document Occurrence to Close");
                  OldCustLedgEntry2.SETRANGE("Customer No.",OldCustLedgEntry."Customer No.");
                  OldCustLedgEntry2.SETRANGE(Open,TRUE);
                  IF OldCustLedgEntry2.FIND('-') THEN BEGIN
                    OldCustLedgEntry."Bank Receipt Issued" := OldCustLedgEntry2."Bank Receipt Issued";
                    OldCustLedgEntry."Bank Receipt Temp. No." := OldCustLedgEntry2."Bank Receipt Temp. No.";
                    OldCustLedgEntry."Bank Receipts List No." := OldCustLedgEntry2."Bank Receipts List No.";
                    OldCustLedgEntry."Customer Bill No." := OldCustLedgEntry2."Customer Bill No.";
                    OldCustLedgEntry.MODIFY;
        
                    OldCustLedgEntry2."Bank Receipt Issued" := FALSE;
                    OldCustLedgEntry2."Bank Receipt Temp. No." := '';
                    OldCustLedgEntry2."Bank Receipts List No." := '';
                    OldCustLedgEntry2."Customer Bill No." := '';
                    OldCustLedgEntry2."Allow Issue" := FALSE;
                    OldCustLedgEntry2.MODIFY;
        
                    DetCustLedgEntry.SETCURRENTKEY("Cust. Ledger Entry No.","Entry Type","Posting Date");
                    DetCustLedgEntry.SETRANGE("Cust. Ledger Entry No.",OldCustLedgEntry2."Entry No.");
                    DetCustLedgEntry.SETRANGE("Entry Type",DetCustLedgEntry."Entry Type" :: "Initial Entry");
                    IF DetCustLedgEntry.FIND('-') THEN BEGIN
                      DetCustLedgEntry."Bank Receipt Issued" := FALSE;
                      DetCustLedgEntry.MODIFY;
                    END;
                  END;
                UNTIL OldCustLedgEntry.NEXT = 0;
    // End of the lines.
    
          END;
      
          PROCEDURE SetCheckDim@1130005(CheckDimTmp@1130000 : Boolean);
    ...
    
    Penggantian kode 1
    ...
          END;
      
          PROCEDURE ApplyBill@1130004(VAR NewCustLedgEntry@1130001 : Record 21;VAR OldCustLedgEntry@1130000 : Record 21);
    
    // Add the following lines.
            BEGIN
              IF NewCustLedgEntry."Document Type" = NewCustLedgEntry."Document Type"::Dishonored THEN BEGIN
                OldCustLedgEntry.RESET;
                OldCustLedgEntry.SETCURRENTKEY("Closed by Entry No.");
                OldCustLedgEntry.SETRANGE("Closed by Entry No.",NewCustLedgEntry."Entry No.");
                IF OldCustLedgEntry.FINDSET THEN
                  REPEAT
                    HandleApplyBill(OldCustLedgEntry,FALSE);
                  UNTIL OldCustLedgEntry.NEXT = 0;
              END ELSE
                IF NOT NewCustLedgEntry.Open THEN
                  HandleApplyBill(NewCustLedgEntry,FALSE);
    // End of the lines.
    
          END;
      
          PROCEDURE SetCheckDim@1130005(CheckDimTmp@1130000 : Boolean);
    ...
    
    Kode yang sudah ada 2
    ...
          END;
      
          PROCEDURE UnApplyBill@1130006(VAR NewCustLedgEntry@1130001 : Record 21;VAR OldCustLedgEntry@1130000 : Record 21);
    
    // Delete the following lines.
            VAR
              OldCustLedgEntry2@1130002 : Record 21;
              DetCustLedgEntry@1130003 : Record 379;
            BEGIN
              OldCustLedgEntry.RESET;
              OldCustLedgEntry.SETCURRENTKEY("Closed by Entry No.");
              OldCustLedgEntry.SETRANGE("Closed by Entry No.",NewCustLedgEntry."Entry No.");
              IF OldCustLedgEntry.FIND('-') THEN
                REPEAT
                  OldCustLedgEntry2.SETCURRENTKEY("Document Type","Document No.","Document Occurrence","Customer No.",Open);
                  OldCustLedgEntry2.SETRANGE("Document Type",OldCustLedgEntry."Document Type to Close");
                  OldCustLedgEntry2.SETRANGE("Document No.",OldCustLedgEntry."Document No. to Close");
                  OldCustLedgEntry2.SETRANGE("Document Occurrence",OldCustLedgEntry."Document Occurrence to Close");
                  OldCustLedgEntry2.SETRANGE("Customer No.",OldCustLedgEntry."Customer No.");
                  OldCustLedgEntry2.SETRANGE(Open,TRUE);
                  IF OldCustLedgEntry2.FIND('-') THEN BEGIN
                    OldCustLedgEntry2."Bank Receipt Issued" := OldCustLedgEntry."Bank Receipt Issued";
                    OldCustLedgEntry2."Bank Receipt Temp. No." := OldCustLedgEntry."Bank Receipt Temp. No.";
                    OldCustLedgEntry2."Bank Receipts List No." := OldCustLedgEntry."Bank Receipts List No.";
                    OldCustLedgEntry2."Customer Bill No." := OldCustLedgEntry."Customer Bill No.";
                    OldCustLedgEntry2."Allow Issue" := TRUE;
                    OldCustLedgEntry2.MODIFY;
        
                    OldCustLedgEntry."Bank Receipt Issued" := FALSE;
                    OldCustLedgEntry."Bank Receipt Temp. No." := '';
                    OldCustLedgEntry."Bank Receipts List No." := '';
                    OldCustLedgEntry."Customer Bill No." := '';
                    OldCustLedgEntry.MODIFY;
        
                    DetCustLedgEntry.SETCURRENTKEY("Cust. Ledger Entry No.","Entry Type","Posting Date");
                    DetCustLedgEntry.SETRANGE("Cust. Ledger Entry No.",OldCustLedgEntry2."Entry No.");
                    DetCustLedgEntry.SETRANGE("Entry Type",DetCustLedgEntry."Entry Type" :: "Initial Entry");
                    IF DetCustLedgEntry.FIND('-') THEN BEGIN
                      DetCustLedgEntry."Bank Receipt Issued" := TRUE;
                      DetCustLedgEntry.MODIFY;
                    END;
                  END;
                UNTIL OldCustLedgEntry.NEXT = 0;
    // End of the lines.
    
          END;
    ...
    
    Penggantian kode 2
    ...
          END;
      
          PROCEDURE UnApplyBill@1130006(VAR NewCustLedgEntry@1130001 : Record 21;VAR OldCustLedgEntry@1130000 : Record 21);
    
    // Add the following lines.
            BEGIN
              IF NewCustLedgEntry."Document Type" = NewCustLedgEntry."Document Type"::Dishonored THEN BEGIN
                OldCustLedgEntry.RESET;
                OldCustLedgEntry.SETCURRENTKEY("Closed by Entry No.");
                OldCustLedgEntry.SETRANGE("Closed by Entry No.",NewCustLedgEntry."Entry No.");
                IF OldCustLedgEntry.FINDSET THEN
                  REPEAT
                    HandleApplyBill(OldCustLedgEntry,TRUE);
                  UNTIL OldCustLedgEntry.NEXT = 0;
              END ELSE
                HandleApplyBill(NewCustLedgEntry,TRUE);
    // End of the lines.
    
          END;
    ...
    
  4. Mengubah kode dokumentasi dalam kejadian Jnl.-baris posting codeunit (12) sebagai berikut:
    Kode yang ada
    ...
          END;
      
          BEGIN
          END.
        }
      }
    ...
    
    Penggantian kode
    ...
          END;
     
    // Add the following lines. 
            LOCAL PROCEDURE HandleApplyBill@1130007(VAR CustLedgEntry@1130001 : Record 21;IsUnApply@1130000 : Boolean);
            VAR
              OldCustLedgEntry2@1130002 : Record 21;
              DetCustLedgEntry@1130003 : Record 379;
            BEGIN
              OldCustLedgEntry2.SETCURRENTKEY("Document Type","Document No.","Document Occurrence","Customer No.",Open);
              OldCustLedgEntry2.SETRANGE("Document Type",CustLedgEntry."Document Type to Close");
              OldCustLedgEntry2.SETRANGE("Document No.",CustLedgEntry."Document No. to Close");
              OldCustLedgEntry2.SETRANGE("Document Occurrence",CustLedgEntry."Document Occurrence to Close");
              OldCustLedgEntry2.SETRANGE("Customer No.",CustLedgEntry."Customer No.");
              OldCustLedgEntry2.SETRANGE(Open,TRUE);
              IF IsUnApply THEN BEGIN
                IF OldCustLedgEntry2.FINDFIRST AND CustLedgEntry."Bank Receipt Issued" THEN BEGIN
                  OldCustLedgEntry2."Bank Receipt Issued" := CustLedgEntry."Bank Receipt Issued";
                  OldCustLedgEntry2."Bank Receipt Temp. No." := CustLedgEntry."Bank Receipt Temp. No.";
                  OldCustLedgEntry2."Bank Receipts List No." := CustLedgEntry."Bank Receipts List No.";
                  OldCustLedgEntry2."Customer Bill No." := CustLedgEntry."Customer Bill No.";
                  OldCustLedgEntry2."Allow Issue" := TRUE;
                  OldCustLedgEntry2.MODIFY;
        
                  CustLedgEntry."Bank Receipt Issued" := FALSE;
                  CustLedgEntry."Bank Receipt Temp. No." := '';
                  CustLedgEntry."Bank Receipts List No." := '';
                  CustLedgEntry."Customer Bill No." := '';
                  CustLedgEntry.MODIFY;
        
                  DetCustLedgEntry.SETCURRENTKEY("Cust. Ledger Entry No.","Entry Type","Posting Date");
                  DetCustLedgEntry.SETRANGE("Cust. Ledger Entry No.",OldCustLedgEntry2."Entry No.");
                  DetCustLedgEntry.SETRANGE("Entry Type",DetCustLedgEntry."Entry Type" :: "Initial Entry");
                  IF DetCustLedgEntry.FINDFIRST THEN BEGIN
                    DetCustLedgEntry."Bank Receipt Issued" := TRUE;
                    DetCustLedgEntry.MODIFY;
                  END;
                END;
              END ELSE BEGIN
                IF OldCustLedgEntry2.FINDFIRST THEN BEGIN
                  CustLedgEntry."Bank Receipt Issued" := OldCustLedgEntry2."Bank Receipt Issued";
                  CustLedgEntry."Bank Receipt Temp. No." := OldCustLedgEntry2."Bank Receipt Temp. No.";
                  CustLedgEntry."Bank Receipts List No." := OldCustLedgEntry2."Bank Receipts List No.";
                  CustLedgEntry."Customer Bill No." := OldCustLedgEntry2."Customer Bill No.";
                  CustLedgEntry.MODIFY;
        
                  OldCustLedgEntry2."Bank Receipt Issued" := FALSE;
                  OldCustLedgEntry2."Bank Receipt Temp. No." := '';
                  OldCustLedgEntry2."Bank Receipts List No." := '';
                  OldCustLedgEntry2."Customer Bill No." := '';
                  OldCustLedgEntry2."Allow Issue" := FALSE;
                  OldCustLedgEntry2.MODIFY;
        
                  DetCustLedgEntry.SETCURRENTKEY("Cust. Ledger Entry No.","Entry Type","Posting Date");
                  DetCustLedgEntry.SETRANGE("Cust. Ledger Entry No.",OldCustLedgEntry2."Entry No.");
                  DetCustLedgEntry.SETRANGE("Entry Type",DetCustLedgEntry."Entry Type" :: "Initial Entry");
                  IF DetCustLedgEntry.FINDFIRST THEN BEGIN
                    DetCustLedgEntry."Bank Receipt Issued" := FALSE;
                    DetCustLedgEntry.MODIFY;
                  END;
                END;
              END;
            END;
    // End of the lines.
    
          BEGIN
          END.
        }
      }
    ...
    

Prasyarat

Anda harus memiliki versi Italia Microsoft Dynamics NAV 5.0 Paket Layanan 1 terinstal untuk menggunakan perbaikan terbaru ini.

Informasi penghapusan

Anda tidak dapat menghapus perbaikan terbaru ini.

STATUS

Microsoft telah mengkonfirmasi bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana didaftar di dalam bagian "Berlaku untuk".
Catatan Ini adalah "Cepat MEMPUBLIKASIKAN" artikel yang dibuat langsung dari dalam organisasi dukungan Microsoft. Informasi yang tercantum di sini disediakan sebagai-dalam menanggapi masalah muncul. Sebagai hasil dari kecepatan membuatnya tersedia, bahan-bahan yang mungkin termasuk kesalahan ketik dan dapat direvisi setiap saat tanpa pemberitahuan. Lihat Persyaratan penggunaan untuk pertimbangan lain.

Properti

ID Artikel: 2620728 - Kajian Terakhir: 19 Oktober 2011 - Revisi: 1.0
Berlaku bagi:
  • Microsoft Dynamics NAV 5.0 Service Pack 1
Kata kunci: 
kbqfe kbmbscodefix kbmbsmigrate kbsurveynew kbmt KB2620728 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:2620728

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com