Sistem menghasilkan jumlah yang salah dalam Jurnal Intrastat jika Anda memposting faktur yang memiliki beberapa nomor Lot untuk baris item dalam versi Bahasa Italia Microsoft Dynamics NAV 2009

Berlaku Untuk
Dynamics NAV 2009

Artikel ini berlaku untuk Microsoft Dynamics NAV untuk lokal bahasa Italia (ini).

Gejala

Pertimbangkan skenario berikut dalam versi Bahasa Italia Microsoft Dynamics NAV 2009 R2 dan Microsoft Dynamics NAV 2009 Service Pack 1 (SP1):

  • Anda membuat faktur untuk item dan mengatur jumlah item ke 2.
  • Anda menetapkan dua nomor Lot untuk baris item dalam kotak dialog Baris Pelacakan Item .
  • Anda menambahkan baris item biaya yang ditetapkan ke setiap item yang ditagih menurut jumlah dalam kotak dialog Tugas Biaya Item .
  • Anda memposting faktur.

Dalam skenario ini, sistem menghasilkan jumlah yang salah dalam Jurnal Intrastat. Jumlah dalam jurnal Intrastat hanya menyertakan biaya untuk satu item yang ditagih secara tidak terduga.

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, ubah kode dalam laporan Dapatkan Entri Buku Besar Item (594). Untuk melakukannya, ikuti langkah-langkah berikut:

  1. Ubah kode dalam item data Angka 2 sebagai berikut:

    1. Hapus variabel global sebagai berikut:
      Kode yang sudah ada

      ...
      SalesShipLine@1130019 : Record 111;
      ReturnRcptHeader@1130011 : Record 6660;
      DocItemSum@1130013 : Decimal;
      CorrectionFound@1130014 : Boolean;
      ItemCharge@1130015 : Record 5800;
      
      // Delete the following line.
      ValueEntry2@1130016 : Record 5802;
      
      IncludeItemCharge@1130017 : Boolean;
      BEGIN
      IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No.");
      IF IntrastatJnlLine2.FINDFIRST THEN
      CurrReport.SKIP;
      ...
      

      Kode pengganti

      ...
      SalesShipLine@1130019 : Record 111;
      ReturnRcptHeader@1130011 : Record 6660;
      DocItemSum@1130013 : Decimal;
      CorrectionFound@1130014 : Boolean;
      ItemCharge@1130015 : Record 5800;
      IncludeItemCharge@1130017 : Boolean;
      BEGIN
      IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No.");
      IF IntrastatJnlLine2.FINDFIRST THEN
      CurrReport.SKIP;
      ...
      
    2. Ubah kode sebagai berikut:
      Kode yang sudah ada 1

      ...
      TotalAmt := 0;
      DocItemSum := 0;
      CorrectionFound := FALSE;
      
      ValueEntry.SETRANGE("Item Ledger Entry No.","Item Ledger Entry"."Entry No.");
      
      // Delete the following lines.
       ValueEntry2.COPYFILTERS(ValueEntry);
       ValueEntry2.SETRANGE("Invoiced Quantity",0);
      // End of the deleted lines.
      
      IF ValueEntry.FINDSET(FALSE,FALSE) THEN BEGIN
      CASE ValueEntry."Item Ledger Entry Type" OF
      ValueEntry."Item Ledger Entry Type" :: Purchase: BEGIN
      IF ValueEntry."Invoiced Quantity" > 0 THEN BEGIN
      ...
      

      Kode pengganti 1

      ...
      TotalAmt := 0;
      DocItemSum := 0;
      CorrectionFound := FALSE;
      
      ValueEntry.SETRANGE("Item Ledger Entry No.","Item Ledger Entry"."Entry No.");
      
      IF ValueEntry.FINDSET(FALSE,FALSE) THEN BEGIN
      CASE ValueEntry."Item Ledger Entry Type" OF
      ValueEntry."Item Ledger Entry Type" :: Purchase: BEGIN
      IF ValueEntry."Invoiced Quantity" > 0 THEN BEGIN
      ...
      

      Kode yang sudah ada 2

      ...
      END;
      IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      TotalAmt,AddCurrencyFactor);
      
      // Delete the following lines.
       ValueEntry2.SETRANGE("Item Ledger Entry Type",ValueEntry."Item Ledger Entry Type");
       IF ValueEntry2.FINDSET THEN BEGIN
       REPEAT
       IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
       ValueEntry2."Cost Amount (Actual)" :=
       CurrExchRate.ExchangeAmtLCYToFCY(
       ValueEntry2."Posting Date",GLSetup."Additional Reporting Currency",
       ValueEntry2."Cost Amount (Actual)",AddCurrencyFactor);
       TotalAmt := TotalAmt + ValueEntry2."Cost Amount (Actual)";
       UNTIL ValueEntry2.NEXT = 0;
       END;
      // End of the deleted lines.
      
      END;
      
      ValueEntry."Item Ledger Entry Type" :: Sale: BEGIN
      IF ValueEntry."Invoiced Quantity" < 0 THEN BEGIN
      SalesInvoiceLine.SETRANGE("Document No.",ValueEntry."Document No.");
      ...
      

      Kode pengganti 2

      ...
      END;
      IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      TotalAmt,AddCurrencyFactor);
      END;
      
      ValueEntry."Item Ledger Entry Type" :: Sale: BEGIN
      IF ValueEntry."Invoiced Quantity" < 0 THEN BEGIN
      SalesInvoiceLine.SETRANGE("Document No.",ValueEntry."Document No.");
      ...
      

      Kode yang sudah ada 3

      ...
      IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      TotalAmt,AddCurrencyFactor);
      
      // Delete the following lines.
       ValueEntry2.SETRANGE("Item Ledger Entry Type",ValueEntry."Item Ledger Entry Type");
       IF ValueEntry2.FINDSET THEN BEGIN
       REPEAT
       IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
       ValueEntry2."Sales Amount (Actual)" :=
       CurrExchRate.ExchangeAmtLCYToFCY(
       ValueEntry2."Posting Date",GLSetup."Additional Reporting Currency",
       ValueEntry2."Sales Amount (Actual)",AddCurrencyFactor);
       TotalAmt := TotalAmt - ValueEntry2."Sales Amount (Actual)";
       UNTIL ValueEntry2.NEXT = 0;
       END;
      // End of the deleted lines.
      
      END;
      ELSE BEGIN
      TotalInvoicedQty := TotalInvoicedQty + ValueEntry."Invoiced Quantity";
      IF NOT IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := TotalAmt + ValueEntry."Cost Amount (Actual)"
      ...
      

      Kode pengganti 3

      ...
      END;
      IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      TotalAmt,AddCurrencyFactor);
      END;
      ELSE BEGIN
      TotalInvoicedQty := TotalInvoicedQty + ValueEntry."Invoiced Quantity";
      IF NOT IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := TotalAmt + ValueEntry."Cost Amount (Actual)"
      ...
      

      Kode yang sudah ada 4

      ...
      CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      ValueEntry."Cost Amount (Actual)",AddCurrencyFactor);
      END;
      END;
      END;
      
      IF ValueEntry."Item Ledger Entry Type" = ValueEntry."Item Ledger Entry Type"::Transfer THEN
      InsertItemJnlLine()
      ELSE BEGIN
      ...
      

      Kode pengganti 4

      ...
      CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      ValueEntry."Cost Amount (Actual)",AddCurrencyFactor);
      END;
      END;
      
      // Add the following line.
      CalcTotalItemChargeAmt;
      
      END;
      
      IF ValueEntry."Item Ledger Entry Type" = ValueEntry."Item Ledger Entry Type"::Transfer THEN
      InsertItemJnlLine()
      ELSE BEGIN
      ...
      
  2. Ubah kode dalam fungsi CalcTotalItemChargeAmt sebagai berikut:
    Kode yang sudah ada

    ...
    IntrastatJnlBatch2.SETRANGE("EU Service",TRUE);
    IntrastatJnlBatch2.SETRANGE("Corrective Entry",FALSE);
    IntrastatJnlBatch2.SETRANGE(Type,IntrastatJnlBatch.Type);
    END;
    
    BEGIN
    END.
    }
    RDLDATA
    {
    ...
    

    Kode pengganti

    ...
    IntrastatJnlBatch2.SETRANGE("EU Service",TRUE);
    IntrastatJnlBatch2.SETRANGE("Corrective Entry",FALSE);
    IntrastatJnlBatch2.SETRANGE(Type,IntrastatJnlBatch.Type);
    END;
    
    
    // Add the following lines.
     LOCAL PROCEDURE CalcTotalItemChargeAmt@1130002();
     VAR
     ValueEntry2@1130001 : Record 5802;
     ActualAmount@1130002 : Decimal;
     BEGIN
     ValueEntry2.COPYFILTERS(ValueEntry);
     ValueEntry2.SETRANGE("Invoiced Quantity",0);
     ValueEntry2.SETRANGE("Item Ledger Entry Type",ValueEntry."Item Ledger Entry Type");
     ValueEntry2.SETRANGE("Item Ledger Entry No.");
     ValueEntry2.SETFILTER("Item Charge No.",'<>%1','');
     ValueEntry2.SETRANGE("Document No.",ValueEntry."Document No.");
     IF ValueEntry2.FINDSET THEN BEGIN
     REPEAT
     ActualAmount := GetActualAmount(ValueEntry2);
     IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
     ActualAmount :=
     CurrExchRate.ExchangeAmtLCYToFCY(
     ValueEntry2."Posting Date",GLSetup."Additional Reporting Currency",
     ActualAmount,AddCurrencyFactor);
     TotalAmt := TotalAmt + ActualAmount;
     UNTIL ValueEntry2.NEXT = 0;
     END;
     END;
    
     LOCAL PROCEDURE GetActualAmount@1130001(ValueEntry2@1170000000 : Record 5802) : Decimal;
     BEGIN
     CASE ValueEntry2."Item Ledger Entry Type" OF
     ValueEntry2."Item Ledger Entry Type"::Sale:
     EXIT(- ValueEntry2."Sales Amount (Actual)");
     ValueEntry2."Item Ledger Entry Type"::Purchase:
     EXIT(ValueEntry2."Cost Amount (Actual)");
     END;
     END;
    // End of the added lines.
    
    BEGIN
    END.
    }
    RDLDATA
    {
    ...
    

Prasyarat

Anda harus memiliki salah satu produk berikut yang terinstal untuk menerapkan hotfix ini:

  • Microsoft Dynamics NAV 2009 R2 versi Italia
  • Microsoft Dynamics NAV 2009 Service Pack 1 versi Italia

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.