"Pengiriman Penjualan [Shipment_No], baris tidak. [Line_No] tidak disalin karena jumlah penuh pada baris dokumen yang diposting sudah diterapkan secara manual" ketika Anda menjalankan fungsi Salin Dokumen pada pengembalian penjualan parsial di Microsoft Dynamics NAV

Berlaku Untuk
Dynamics NAV 2009

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

Gejala

Misalnya Anda mengaktifkan pengaturan Pembalikan Biaya yang Tepat dalam kotak dialog Penyiapan Penjualan & Dapat Diterima di Microsoft Dynamics NAV. Dalam situasi ini, saat Anda menjalankan fungsi Salin Dokumen pada pengembalian penjualan parsial, Anda menerima pesan kesalahan berikut:

Catatan

Shipment_No Pengiriman Penjualan, baris no. Line_No tidak disalin karena jumlah penuh pada baris dokumen yang diposting sudah diterapkan secara manual.

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. Namun, 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:

  1. Hapus variabel global berikut dalam codeunit Copy Document Mgt. (6620):

    Text030@1025 : TextConst 'ENU=%1 %2, line no. %3 is not copied because the full quantity on the posted document line is already manually applied.';
    Text031@1038 : TextConst 'ENU=Return document line contains only the original document line quantity, that is not already manually applied.';
    SomeAreFixed@1045 : Boolean;
    CopyDimensions@1050 : Boolean;
    
    
  2. Tambahkan variabel global berikut dalam codeunit Copy Document Mgt. (6620):

    Text030@1025 : TextConst 'ENU=One or more return document lines were not copied. This is because quantities on the posted document line are already fully or partially applied and therefore the Exact Cost Reversing Link could not be created.';
    Text031@1038 : TextConst 'ENU=Return document line contains only the original document line quantity, that is not already manually applied.';
     SomeAreFixed@1045 : Boolean;
    CopyDimensions@1050 : Boolean;
    WarningDone@1051 : Boolean;
    LinesApplied@1052 : Boolean;
    
    
  3. Ubah kode dalam fungsi SplitPstdSalesLinesPerILE dalam codeunit Copy Document Mgt. (6620) sebagai berikut:
    Kode yang sudah ada 1

    ...
                IF "Shipped Qty. Not Returned" = 0 THEN
    
    // Delete the following lines.
                 ERROR(Text030,"Document Type","Document No.","Document Line No.");
               FromSalesLineBuf := FromSalesLine; 
               IF -"Shipped Qty. Not Returned" < ABS(FromSalesLine."Quantity (Base)") THEN BEGIN
                 IF FromSalesLine."Quantity (Base)" > 0 THEN
                   FromSalesLineBuf."Quantity (Base)" := -"Shipped Qty. Not Returned"
                 ELSE
                   FromSalesLineBuf."Quantity (Base)" := "Shipped Qty. Not Returned";
                 IF FromSalesLineBuf."Qty. per Unit of Measure" = 0 THEN
                   FromSalesLineBuf.Quantity := FromSalesLineBuf."Quantity (Base)"
                 ELSE
                   FromSalesLineBuf.Quantity :=
                     ROUND(FromSalesLineBuf."Quantity (Base)" / FromSalesLineBuf."Qty. per Unit of Measure",0.00001);
               END;
               FromSalesLine."Quantity (Base)" := FromSalesLine."Quantity (Base)" - FromSalesLineBuf."Quantity (Base)";
               FromSalesLine.Quantity := FromSalesLine.Quantity - FromSalesLineBuf.Quantity;
               FromSalesLineBuf."Appl.-from Item Entry" := "Entry No.";
               FromSalesLineBuf."Line No." := NextLineNo;
               NextLineNo := NextLineNo + 1;
               FromSalesLineBuf."Document No." := "Document No.";
               IF GetSalesDocType(ItemLedgEntry) IN
                  [FromSalesLineBuf."Document Type"::Order,FromSalesLineBuf."Document Type"::"Return Order"]
               THEN
                 FromSalesLineBuf."Shipment Line No." := 1;
    
               IF NOT FromShptOrRcpt THEN
                 UpdateRevSalesLineAmount(
                   FromSalesLineBuf,OrgQtyBase,
                   FromSalesHeader."Prices Including VAT",ToSalesHeader."Prices Including VAT");
    
               FromSalesLineBuf.INSERT;
    // End of the lines.
    
              UNTIL (NEXT = 0) OR (FromSalesLine."Quantity (Base)" = 0);
    ...
    
    

    Kode pengganti 1

    ...
                IF "Shipped Qty. Not Returned" = 0 THEN
    
    // Add the following lines.
                 LinesApplied := TRUE;
               IF "Shipped Qty. Not Returned" < 0 THEN BEGIN
                 FromSalesLineBuf := FromSalesLine;
    
                 IF -"Shipped Qty. Not Returned" < ABS(FromSalesLine."Quantity (Base)") THEN BEGIN
                   IF FromSalesLine."Quantity (Base)" > 0 THEN
                     FromSalesLineBuf."Quantity (Base)" := -"Shipped Qty. Not Returned"
                   ELSE
                     FromSalesLineBuf."Quantity (Base)" := "Shipped Qty. Not Returned";
                   IF FromSalesLineBuf."Qty. per Unit of Measure" = 0 THEN
                     FromSalesLineBuf.Quantity := FromSalesLineBuf."Quantity (Base)"
                   ELSE
                     FromSalesLineBuf.Quantity :=
                       ROUND(FromSalesLineBuf."Quantity (Base)" / FromSalesLineBuf."Qty. per Unit of Measure",0.00001);
                 END;
                 FromSalesLine."Quantity (Base)" := FromSalesLine."Quantity (Base)" - FromSalesLineBuf."Quantity (Base)";
                 FromSalesLine.Quantity := FromSalesLine.Quantity - FromSalesLineBuf.Quantity;
                 FromSalesLineBuf."Appl.-from Item Entry" := "Entry No.";
                 FromSalesLineBuf."Line No." := NextLineNo;
                 NextLineNo := NextLineNo + 1;
                 FromSalesLineBuf."Document No." := "Document No.";
                 IF GetSalesDocType(ItemLedgEntry) IN
                    [FromSalesLineBuf."Document Type"::Order,FromSalesLineBuf."Document Type"::"Return Order"]
                 THEN
                   FromSalesLineBuf."Shipment Line No." := 1;
    
                 IF NOT FromShptOrRcpt THEN
                   UpdateRevSalesLineAmount(
                     FromSalesLineBuf,OrgQtyBase,
                     FromSalesHeader."Prices Including VAT",ToSalesHeader."Prices Including VAT");
    
                 FromSalesLineBuf.INSERT;
               END;
    // End of the lines.
    
              UNTIL (NEXT = 0) OR (FromSalesLine."Quantity (Base)" = 0);
    ...
    
    

    Kode yang sudah ada 2

    ...
                MissingExCostRevLink := TRUE;
            END;
    ...
    
    

    Kode pengganti 2

    ...
                MissingExCostRevLink := TRUE;
    
    // Add the following line.
             CheckUnappliedLines(LinesApplied,MissingExCostRevLink);
    
            END;
    ...
    
    
  4. Ubah kode dalam fungsi SplitPstdPurchLinesPerILE dalam codeunit Copy Document Mgt. (6620) sebagai berikut:
    Kode yang sudah ada 1

    ...
            ApplyRec@1011 : Record 339;
    
    // Delete the following line.
           AllAreFixed@1012 : Boolean;
    
          BEGIN
    ...
    
    

    Kode pengganti 1

    ...
            ApplyRec@1011 : Record 339;
          BEGIN
    ...
    
    

    Kode yang sudah ada 2

    ...
              REPEAT
    
    // Delete the following lines.
               IF "Remaining Quantity" = 0 THEN BEGIN
                 AllAreFixed := TRUE;
                 ApplyRec.AppliedOutbndEntryExists("Entry No.",FALSE);
                 IF ApplyRec.FINDFIRST THEN
                   REPEAT
                     AllAreFixed := AllAreFixed AND ApplyRec.Fixed;
                   UNTIL ApplyRec.NEXT = 0;
                 IF AllAreFixed THEN
                   ERROR(Text030,"Document Type","Document No.","Document Line No.");
               END;
    // End of the lines.
    
                IF NOT ApplyFully THEN BEGIN
    ...
    
    

    Kode pengganti 2

    ...
              REPEAT
                IF NOT ApplyFully THEN BEGIN
    ...
    
    

    Kode yang sudah ada 3

    ...
            END;
    ...
    
    

    Kode pengganti 3

    ...
            END;
    
    // Add the following line.
           CheckUnappliedLines(SkippedLine,MissingExCostRevLink);
    
    ...
    
    
  5. Ubah kode dalam fungsi CheckUnappliedLines dalam codeunit Copy Document Mgt. (6620) sebagai berikut:
    Kode yang sudah ada

    ...
          BEGIN
    ...
    
    

    Kode pengganti

    ...
    
    // Add the following lines.
         LOCAL PROCEDURE CheckUnappliedLines@86(SkippedLine@1000 : Boolean;VAR MissingExCostRevLink@1001 : Boolean);
         BEGIN
           IF SkippedLine AND MissingExCostRevLink THEN BEGIN
             IF NOT WarningDone THEN
               MESSAGE(Text030);
             MissingExCostRevLink := FALSE;
             WarningDone := TRUE;
           END;
         END;
    
    // End of the lines.
    
          BEGIN
    ...
    
    

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.